**GSoC 2020 Week-2**

Part of this week was spent in getting the PR for `ParametricRegion`

merged. I made some fixes to get the failing tests to pass. I also added the docstring.

### ParametricIntegral

I started working on the `ParametricIntegral`

class. `ParametricIntegral`

class returns the integral of a scalar or vector field over a region defined parametrically. It should be able to calculate line, surface, or volume integral depending on the nature of the parametric region. To identify the nature of the region, the `dimensions`

property needs to be added in the `ParametricRegion`

class.

I started with writing the test cases to avoid my previous mistake of working on the implementation before deciding the API. The API of the ParametricIntegral class:

```
ParametricIntegral(field, parametricregion)
```

Some examples:

```
>>> curve = ParametricRegion((3*t - 2, t + 1), {t: (1, 2)})
>>> ParametricIntegral(C.x, curve)
5*sqrt(10)/2
>>> semisphere = ParametricRegion((theta, pi), (2*sin(phi)*cos(theta), 2*sin(phi)*sin(theta), 2*cos(phi)),\
{theta: (0, 2*pi), phi: (0, pi/2)})
>>> ParametricIntegral(C.z, semisphere)
8*pi
```

I initially thought to make it a subclass of `Integral`

as the `ParametricIntegral`

is a kind of integral. But there was no reuse of any code from `Integral`

in the `ParametricIntegral`

so decided against it.

A rough sketch of the algorithm to calculate integral is described below:

- Replace the base scalars in the field with their definition in terms of parameters and obtain the parametric representation of the field.
- Form the position vector of the region using definition tuple and base vectors determined from the field.
- Depending on the type of region, calculate the derivative of the position vector, or find the normal vector or calculate dV using Jacobian.
- Calculate the integrand using dot product or multiplication with the parametric field.
- Use the
`integrate`

function to calculate the integral. - If the
`integrate`

function can evaluate the integral, return it otherwise return an object of the`ParametricRegion`

class.

We also had discussion on whether swapping the upper and lower limit has any affect on the result of a vector integral. For multiple integrals, the sign of the result changes when the upper and lower bound of a parameter are interchanged. I do not think we came to any conclusion. But this won’t matter for integrals over parametric regions as the bounds are directly defined by the user.

### Next week’s goal

I will start working on the implementation of the `ParametricIntegral`

class. I am also trying to get more involved in SymPy outside of my GSoC project. I hope I can become a contributing member of the community.

## Leave a comment