desc.grid.ConcentricGrid

class desc.grid.ConcentricGrid(L, M, N, NFP=1, sym=False, axis=False, node_pattern='jacobi')Source

Grid in which the nodes are arranged in concentric circles.

Nodes are arranged concentrically within each toroidal cross-section, with more nodes per flux surface at larger radius. Typically used as the solution grid, cannot be easily used for plotting due to non-uniform spacing.

Parameters:
  • L (int) – radial grid resolution

  • M (int) – poloidal grid resolution

  • N (int) – toroidal grid resolution

  • NFP (int) – number of field periods (Default = 1)

  • sym (bool) – True for poloidal up/down symmetry, False otherwise. Default is False. Whether to truncate the poloidal domain to [0, π] ⊂ [0, 2π) to take advantage of poloidal up/down symmetry, which is a stronger condition than stellarator symmetry. Still, when stellarator symmetry exists, flux surface integrals and volume integrals are invariant to this truncation.

  • axis (bool) – True to include the magnetic axis, False otherwise (Default = False)

  • node_pattern ({'cheb1', 'cheb2', 'jacobi', linear}) –

    pattern for radial coordinates

    • 'cheb1': Chebyshev-Gauss-Lobatto nodes scaled to r=[0,1]

    • 'cheb2': Chebyshev-Gauss-Lobatto nodes scaled to r=[-1,1]

    • 'jacobi': Radial nodes are roots of Shifted Jacobi polynomial of degree M+1 r=(0,1), and angular nodes are equispaced 2(M+1) per surface

    • 'ocs': optimal concentric sampling to minimize the condition number of the resulting transform matrix, for doing inverse transform.

    • linear : linear spacing in r=[0,1]

Methods

change_resolution(L, M, N[, NFP])

Change the resolution of the grid.

compress(x[, surface_label])

Return elements of x at indices of unique surface label values.

copy([deepcopy])

Return a (deep)copy of this object.

copy_data_from_other(x, other_grid[, ...])

Copy data x from other_grid to this grid at matching surface label.

equiv(other)

Compare equivalence between DESC objects.

expand(x[, surface_label])

Expand x by duplicating elements to match the grid's pattern.

get_label(label)

Get general label that specifies direction given label.

load(load_from[, file_format])

Initialize from file.

meshgrid_flatten(x, order)

Flatten data to match standard ordering.

meshgrid_reshape(x, order)

Reshape data to match grid coordinates.

replace_at_axis(x, y[, copy])

Replace elements of x with elements of y at the axis of grid.

save(file_name[, file_format, file_mode])

Save the object.

Attributes

L

Radial grid resolution.

M

Poloidal grid resolution.

N

Toroidal grid resolution.

NFP

Number of (toroidal) field periods.

axis

Indices of nodes at magnetic axis.

can_fft2

Whether this grid is compatible with 2D FFT.

coordinates

Coordinates specified by the nodes.

fft_poloidal

whether this grid is compatible with fft in the poloidal direction.

fft_toroidal

whether this grid is compatible with fft in the toroidal direction.

inverse_alpha_idx

Indices that recover field line poloidal angles.

inverse_poloidal_idx

Indices that recover the unique poloidal coordinates.

inverse_rho_idx

Indices of unique_rho_idx that recover the rho coordinates.

inverse_theta_PEST_idx

Indices that recover unique straight field line poloidal angles.

inverse_theta_idx

Indices that recover unique theta coordinates.

inverse_zeta_idx

Indices of unique_zeta_idx that recover the zeta coordinates.

is_meshgrid

Whether this grid is a tensor-product grid.

node_pattern

Pattern for placement of nodes in (rho,theta,zeta).

nodes

Node coordinates, in (rho,theta,zeta).

num_alpha

Number of unique field line poloidal angles.

num_nodes

Total number of nodes.

num_poloidal

Number of unique poloidal angle coordinates.

num_rho

Number of unique rho coordinates.

num_theta

Number of unique theta coordinates.

num_theta_PEST

Number of unique straight field line poloidal angles.

num_zeta

Number of unique zeta coordinates.

period

Periodicity of coordinates.

spacing

Quadrature weights for integration over surfaces.

sym

True for poloidal up/down symmetry, False otherwise.

unique_alpha_idx

Indices of unique field line poloidal angles.

unique_poloidal_idx

Indices of unique poloidal angle coordinates.

unique_rho_idx

Indices of unique rho coordinates.

unique_theta_PEST_idx

Indices of unique straight field line poloidal angles.

unique_theta_idx

Indices of unique theta coordinates.

unique_zeta_idx

Indices of unique zeta coordinates.

weights

Weight for each node, either exact quadrature or volume based.