# 4.2.5. pde.grids.cylindrical module¶

Cylindrical grids with azimuthal symmetry

class CylindricalGrid(*args, **kwargs)[source]

3-dimensional cylindrical grid assuming polar symmetry

Deprecated since version 0.14: (2021-05-21) Use CylindricalSymGrid instead.

class deprecated since 2021-05-21

deprecated: bool = True
class CylindricalSymGrid(radius: float, bounds_z: , shape: Tuple[int, int], periodic_z: bool = False)[source]

3-dimensional cylindrical grid assuming polar symmetry

The polar symmetry implies that states only depend on the radial and axial coordinates $$r$$ and $$z$$, respectively. These are discretized uniformly as

\begin{align*} r_i &= \left(i + \frac12\right) \Delta r &&\quad \text{for} \quad i = 0, \ldots, N_r - 1 &&\quad \text{with} \quad \Delta r = \frac{R}{N_r} \\ z_j &= z_\mathrm{min} + \left(j + \frac12\right) \Delta z &&\quad \text{for} \quad j = 0, \ldots, N_z - 1 &&\quad \text{with} \quad \Delta z = \frac{z_\mathrm{max} - z_\mathrm{min}}{N_z} \end{align*}

where $$R$$ is the radius of the cylindrical grid, $$z_\mathrm{min}$$ and $$z_\mathrm{max}$$ denote the respective lower and upper bounds of the axial direction, so that $$z_\mathrm{max} - z_\mathrm{min}$$ is the total height. The two axes are discretized by $$N_r$$ and $$N_z$$ support points, respectively.

Warning

The order of components in the vector and tensor fields defined on this grid is different than in ordinary math. While it is common to use $$(r, \phi, z)$$, we here use the order $$(r, z, \phi)$$. It might thus be best to access components by name instead of index, e.g., use field['z'] instead of field.

Parameters

• bounds_z (tuple) – The lower and upper bound of the z-axis

• shape (tuple) – The number of support points in r and z direction, respectively.

• periodic_z (bool) – Determines whether the z-axis has periodic boundary conditions.

axes: List[str] = ['r', 'z']
axes_symmetric: List[str] = ['phi']

The names of the additional axes that the fields do not depend on, e.g. along which they are constant.

Type

list

cell_to_point(cells: numpy.ndarray, cartesian: bool = True) [source]

convert cell coordinates to real coordinates

This function returns points restricted to the x-z plane, i.e., the y-coordinate will be zero.

Parameters
• cells (ndarray) – Indices of the cells whose center coordinates are requested. This can be float values to indicate positions relative to the cell center.

• cartesian (bool) – Determines whether the point is returned in Cartesian coordinates or grid coordinates.

Returns

The center points of the respective cells

Return type

ndarray

cell_volume_data: Sequence[FloatNumerical]

the volumes of all cells

Type

ndarray

contains_point(point: numpy.ndarray) [source]

check whether the point is contained in the grid

Parameters

point (ndarray) – Coordinates of the point

coordinate_constraints: List[int] = [0, 1]
difference_vector_real(p1: numpy.ndarray, p2: numpy.ndarray) [source]

return the vector pointing from p1 to p2.

In case of periodic boundary conditions, the shortest vector is returned

Parameters
Returns

The difference vectors between the points with periodic boundary conditions applied.

Return type

ndarray

dim: int = 3
classmethod from_state(state: Dict[str, Any]) [source]

create a field from a stored state.

Parameters

state (dict) – The state from which the grid is reconstructed.

get_boundary_conditions(bc: BoundariesData = 'auto_periodic_neumann', rank: int = 0) [source]

constructs boundary conditions from a flexible data format

Parameters
• bc (str or list or tuple or dict) – The boundary conditions applied to the field. Boundary conditions are generally given as a list with one condition for each axis. For periodic axis, only periodic boundary conditions are allowed (indicated by ‘periodic’). For non-periodic axes, different boundary conditions can be specified for the lower and upper end (using a tuple of two conditions). For instance, Dirichlet conditions enforcing a value NUM (specified by {‘value’: NUM}) and Neumann conditions enforcing the value DERIV for the derivative in the normal direction (specified by {‘derivative’: DERIV}) are supported. Note that the special value ‘natural’ imposes periodic boundary conditions for periodic axis and a vanishing derivative otherwise. More information can be found in the boundaries documentation.

• rank (int) – The tensorial rank of the value associated with the boundary conditions.

Raises
• ValueError – If the data given in bc cannot be read

• PeriodicityError – If the boundaries are not compatible with the periodic axes of the grid.

get_cartesian_grid(mode: str = 'valid') [source]

return a Cartesian grid for this Cylindrical one

Parameters

mode (str) – Determines how the grid is determined. Setting it to ‘valid’ only returns points that are fully resolved in the cylindrical grid, e.g., the cylinder is circumscribed. Conversely, ‘full’ returns all data, so the cylinder is inscribed.

Returns

The requested grid

Return type

pde.grids.cartesian.CartesianGrid

get_image_data(data: numpy.ndarray) Dict[str, Any][source]

return a 2d-image of the data

Parameters

data (ndarray) – The values at the grid points

Returns

A dictionary with information about the image, which is convenient for plotting.

get_line_data(data: numpy.ndarray, extract: str = 'auto') Dict[str, Any][source]

return a line cut for the cylindrical grid

Parameters
• data (ndarray) – The values at the grid points

• extract (str) –

Determines which cut is done through the grid. Possible choices are (default is cut_axial):

• cut_z or cut_axial: values along the axial coordinate for $$r=0$$.

• project_z or project_axial: average values for each axial position (radial average).

• project_r or project_radial: average values for each radial position (axial average)

Returns

A dictionary with information about the line cut, which is convenient for plotting.

get_random_point(boundary_distance: float = 0, cartesian: bool = True, avoid_center: bool = False, rng: = None) [source]

return a random point within the grid

Note that these points will be uniformly distributed on the radial axis, which implies that they are not uniformly distributed in the volume.

Parameters
• boundary_distance (float) – The minimal distance this point needs to have from all boundaries.

• cartesian (bool) – Determines whether the point is returned in Cartesian coordinates or grid coordinates.

• avoid_center (bool) – Determines whether the boundary distance should also be kept from the center, i.e., whether points close to the center are returned.

• rng (Generator) – Random number generator (default: default_rng())

Returns

The coordinates of the point

Return type

ndarray

get_subgrid(indices: ) [source]

return a subgrid of only the specified axes

Parameters

indices (list) – Indices indicating the axes that are retained in the subgrid

Returns

CartesianGrid or PolarSymGrid: The subgrid

iter_mirror_points(point: numpy.ndarray, with_self: bool = False, only_periodic: bool = True) [source]

generates all mirror points corresponding to point

Parameters
• point (ndarray) – the point within the grid

• with_self (bool) – whether to include the point itself

• only_periodic (bool) – whether to only mirror along periodic axes

Returns

A generator yielding the coordinates that correspond to mirrors

property length: float

length of the cylinder

Type

float

num_axes: int = 2
periodic: List[bool]
point_from_cartesian(points: numpy.ndarray) [source]

convert points given in Cartesian coordinates to this grid

This function returns points restricted to the x-z plane, i.e., the y-coordinate will be zero.

Parameters

points (ndarray) – Points given in Cartesian coordinates.

Returns

Points given in the coordinates of the grid

Return type

ndarray

point_to_cartesian(points: numpy.ndarray) [source]

convert coordinates of a point to Cartesian coordinates

Parameters

points (ndarray) – Points given in the coordinates of the grid

Returns

The Cartesian coordinates of the point

Return type

ndarray

point_to_cell(points: numpy.ndarray) [source]

Determine cell(s) corresponding to given point(s)

This function respects periodic boundary conditions, but it does not throw an error when coordinates lie outside the bcs (for non-periodic axes).

Parameters

points (ndarray) – Real coordinates

Returns

The indices of the respective cells

Return type

ndarray

polar_coordinates_real(origin: numpy.ndarray, *, ret_angle: bool = False) [source]

return spherical coordinates associated with the grid

Parameters
• origin (ndarray) – Coordinates of the origin at which the polar coordinate system is anchored. Note that this must be of the form [0, 0, z_val], where only z_val can be chosen freely.

• ret_angle (bool) – Determines whether the azimuthal angle is returned alongside the distance. If False only the distance to the origin is returned for each support point of the grid. If True, the distance and angles are returned.

Type

float

property state: Dict[str, Any]

the state of the grid

Type

state

property volume: float

total volume of the grid

Type

float