|
Extension: Geometries
#include "dg/geometries/geometries.h"
|
Namespaces | |
| namespace | circular |
| namespace | guenter |
| Contains the Guenter type flux functions. | |
| namespace | mod |
| A modification flux function. | |
| namespace | polynomial |
| A polynomial approximation type flux function. | |
| namespace | solovev |
| Contains the solovev state type flux function. | |
| namespace | taylor |
| Contains the Cerfon Taylor state type flux functions. | |
| namespace | toroidal |
| namespace | x |
Classes | |
| struct | aCylindricalFunctor |
| Represent functions written in cylindrical coordinates that are independent of the angle phi serving as both 2d and 3d functions. More... | |
| struct | aRealGenerator2d |
| The abstract generator base class. More... | |
| struct | aRealGeneratorX2d |
| The abstract generator base class. More... | |
| struct | BFieldP |
| \( B^\varphi = R_0I/R^2\) More... | |
| struct | BFieldR |
| \( B^R = R_0\psi_Z /R\) More... | |
| struct | BFieldT |
| \( B^{\theta} = B^R\partial_R\theta + B^Z\partial_Z\theta\) More... | |
| struct | BFieldZ |
| \( B^Z = -R_0\psi_R /R\) More... | |
| struct | BHatP |
| \( \hat b^\varphi = B^\varphi/|B|\) More... | |
| struct | BHatPR |
| \( \partial_R \hat b^\varphi\) More... | |
| struct | BHatPZ |
| \( \partial_Z \hat b^\varphi\) More... | |
| struct | BHatR |
| \( b^R = B^R/|B|\) More... | |
| struct | BHatRR |
| \( \partial_R b^R\) More... | |
| struct | BHatRZ |
| \( \partial_Z b^R\) More... | |
| struct | BHatZ |
| \( b^Z = B^Z/|B|\) More... | |
| struct | BHatZR |
| \( \partial_R b^Z\) More... | |
| struct | BHatZZ |
| \( \partial_Z b^Z\) More... | |
| struct | Bmodule |
| \( |B| = R_0\sqrt{I^2+(\nabla\psi)^2}/R \) More... | |
| struct | BR |
| \( \frac{\partial |B| }{ \partial R} \) More... | |
| struct | BZ |
| \( \frac{\partial |B| }{ \partial Z} \) More... | |
| struct | Constant |
| \( f(x,y) = c\) More... | |
| struct | CurvatureKappaR |
| Approximate \( \mathcal{K}^{R}_{\vec{\kappa}}=0 \). More... | |
| struct | CurvatureKappaZ |
| Approximate \( \mathcal{K}^{Z}_{\vec{\kappa}} \). More... | |
| struct | CurvatureNablaBR |
| Approximate \( \mathcal{K}^{R}_{\nabla B} \). More... | |
| struct | CurvatureNablaBZ |
| Approximate \( \mathcal{K}^{Z}_{\nabla B} \). More... | |
| struct | CylindricalFunctorsLvl1 |
| This struct bundles a function and its first derivatives. More... | |
| struct | CylindricalFunctorsLvl2 |
| This struct bundles a function and its first and second derivatives. More... | |
| struct | CylindricalSymmTensorLvl1 |
| struct | CylindricalVectorLvl0 |
| struct | CylindricalVectorLvl1 |
| This struct bundles a vector field and its divergence. More... | |
| struct | Divb |
| \( \nabla \cdot \vec b \) More... | |
| struct | DivCurvatureKappa |
| Approximate \( \vec{\nabla}\cdot \mathcal{K}_{\vec{\kappa}} \). More... | |
| struct | DivCurvatureNablaB |
| Approximate \( \vec{\nabla}\cdot \mathcal{K}_{\nabla B} \). More... | |
| struct | DivLiseikinX |
| The x-component of the divergence of the Liseikin monitor metric. More... | |
| struct | DivLiseikinY |
| The y-component of the divergence of the Liseikin monitor metric. More... | |
| struct | DivVVP |
| \( \nabla\cdot\left( \frac{ \hat b }{\hat b^\varphi}\right)\) More... | |
| struct | DS |
| Class for the evaluation of parallel derivatives. More... | |
| struct | DSPGenerator |
| A transformed field grid generator. More... | |
| struct | Fieldaligned |
| Create and manage interpolation matrices from fieldline integration. More... | |
| struct | FluxGenerator |
| A symmetry flux generator. More... | |
| struct | FluxSurfaceAverage |
| Flux surface average (differential volume average) over quantity \( \langle f\rangle(\psi_0) = \frac{1}{A} \int dR dZ \delta(\psi_p(R,Z)-\psi_0) f(R,Z)H(R,Z) \). More... | |
| struct | FluxSurfaceIntegral |
| Flux surface integral of the form \( \int dR dZ f(R,Z) \delta(\psi_p(R,Z)-\psi_0) g(R,Z) \). More... | |
| struct | FluxVolumeIntegral |
| Flux volume integral of the form \( \int dR dZ f(R,Z) \Theta(\psi_p(R,Z)-\psi_0) g(R,Z) \). More... | |
| struct | GradLnB |
| \( \nabla_\parallel \ln{(B)} \) More... | |
| struct | Hector |
| The High PrEcision Conformal grid generaTOR. More... | |
| struct | Hoo |
| Inertia factor \( \mathcal I_0 = B^2/(R_0^2|\nabla\psi_p|^2)\). More... | |
| struct | InvB |
| \( |B|^{-1} = R/R_0\sqrt{I^2+(\nabla\psi)^2} \) More... | |
| struct | LaplacePsip |
| \( \Delta\psi_p = \psi_R/R + \psi_{RR}+\psi_{ZZ} \) More... | |
| struct | Liseikin_XX |
| The xx-component of the Liseikin monitor metric. More... | |
| struct | Liseikin_XY |
| The xy-component of the Liseikin monitor metric. More... | |
| struct | Liseikin_YY |
| The yy-component of the Liseikin monitor metric. More... | |
| struct | LnB |
| \( \ln{|B|} \) More... | |
| struct | LogPolarGenerator |
| Log Polar coordinates (conformal) More... | |
| struct | MagneticFieldParameters |
| Meta-data about the magnetic field in particular the flux function. More... | |
| struct | NablaPsiInv |
| A weight function for the Hector algorithm. More... | |
| struct | NablaPsiInvX |
| Derivative of the weight function. More... | |
| struct | NablaPsiInvY |
| Derivative of the weight function. More... | |
| struct | Periodify |
| This function extends another function beyond the grid boundaries. More... | |
| struct | PolarGenerator |
| Polar coordinates. More... | |
| struct | RealCurvilinearGrid2d |
| A two-dimensional grid based on curvilinear coordinates. More... | |
| struct | RealCurvilinearGridX2d |
| A two-dimensional grid based on curvilinear coordinates. More... | |
| struct | RealCurvilinearMPIGrid2d |
| A two-dimensional MPI grid based on curvilinear coordinates. More... | |
| struct | RealCurvilinearProductGrid3d |
| A 2x1 curvilinear product space grid. More... | |
| struct | RealCurvilinearProductGridX3d |
| A three-dimensional grid based on curvilinear coordinates. More... | |
| struct | RealCurvilinearProductMPIGrid3d |
| A 2x1 curvilinear product space MPI grid. More... | |
| struct | RealCurvilinearRefinedGridX2d |
| A two-dimensional grid based on curvilinear coordinates. More... | |
| struct | RealCurvilinearRefinedProductGridX3d |
| A three-dimensional grid based on curvilinear coordinates. More... | |
| struct | RealCylindricalFunctor |
Inject both 2d and 3d operator() to a 2d functor. More... | |
| struct | RhoP |
| \( \sqrt{1. - \psi_p/ \psi_{p,O}} \) More... | |
| struct | Ribeiro |
| A two-dimensional grid based on "almost-conformal" coordinates by Ribeiro and Scott 2010. More... | |
| struct | RibeiroFluxGenerator |
| Same as the Ribeiro class but uses \( \zeta = f_0 (\psi_p - \psi_0)\) as a flux label directly. More... | |
| struct | RibeiroX |
| A two-dimensional grid based on "almost-conformal" coordinates by Ribeiro and Scott 2010. More... | |
| struct | SafetyFactor |
| Evaluation of the safety factor q based on direct integration of \( q(\psi_0) = \frac{1}{2\pi} \int d\Theta \frac{B^\varphi}{B^\Theta} \). More... | |
| struct | SafetyFactorAverage |
| Class for the evaluation of the safety factor q based on a flux-surface integral \( q(\psi_0) = \frac{1}{2\pi} \int dRdZ \frac{I(\psi_p)}{R} \delta(\psi_p - \psi_0)H(R,Z) \). More... | |
| struct | ScalarProduct |
| Return scalar product of two vector fields \( v_0w_0 + v_1w_1 + v_2w_2\). More... | |
| struct | SeparatrixOrthogonal |
| Choose points on separatrix and construct grid from there. More... | |
| struct | SeparatrixOrthogonalAdaptor |
An Adaptor to use SeparatrixOrthogonal as aGenerator2d instead of aGeneratorX2d. More... | |
| struct | SimpleOrthogonal |
| Generate a simple orthogonal grid. More... | |
| struct | SquareNorm |
| Return norm of scalar product of two vector fields \( \sqrt{v_0w_0 + v_1w_1 + v_2w_2}\). More... | |
| struct | TokamakMagneticField |
| A tokamak field as given by R0, Psi and Ipol plus Meta-data like shape and equilibrium. More... | |
| struct | Topology1d |
| Helper class for construction. More... | |
| struct | TrueCurvatureKappaP |
| True \( \mathcal{K}^\varphi_{\vec{\kappa}} \). More... | |
| struct | TrueCurvatureKappaR |
| True \( \mathcal{K}^R_{\vec{\kappa}} \). More... | |
| struct | TrueCurvatureKappaZ |
| True \( \mathcal{K}^Z_{\vec{\kappa}} \). More... | |
| struct | TrueCurvatureNablaBP |
| True \( \mathcal{K}^{\varphi}_{\nabla B} \). More... | |
| struct | TrueCurvatureNablaBR |
| True \( \mathcal{K}^{R}_{\nabla B} \). More... | |
| struct | TrueCurvatureNablaBZ |
| True \( \mathcal{K}^{Z}_{\nabla B} \). More... | |
| struct | TrueDivCurvatureKappa |
| True \( \vec{\nabla}\cdot \mathcal{K}_{\vec{\kappa}} \). More... | |
| struct | TrueDivCurvatureNablaB |
| True \( \vec{\nabla}\cdot \mathcal{K}_{\nabla B} \). More... | |
| struct | WallDirection |
| Determine if poloidal field points towards or away from the nearest wall. More... | |
| struct | WallFieldlineCoordinate |
| Normalized coordinate relative to wall along fieldline in phi or s coordinate. More... | |
| struct | WallFieldlineDistance |
| Distance to wall along fieldline in phi or s coordinate More... | |
| struct | ZCutter |
| \( f(R,Z)= \begin{cases}
0 \text{ if } Z < Z_X \\
1 \text{ else }
\end{cases}
\) More... | |
Typedefs | |
| using | CurvilinearGrid2d = dg::geo::RealCurvilinearGrid2d<double> |
| using | CurvilinearProductGrid3d = dg::geo::RealCurvilinearProductGrid3d<double> |
| using | CurvilinearGridX2d = dg::geo::RealCurvilinearGridX2d<double> |
| using | CurvilinearProductGridX3d = dg::geo::RealCurvilinearProductGridX3d<double> |
| typedef ONE | FullLimiter |
| Full Limiter means there is a limiter everywhere. | |
| typedef ZERO | NoLimiter |
| No Limiter. | |
| using | CylindricalFunctor = RealCylindricalFunctor<double> |
Most of the times we use double. | |
| using | aGenerator2d = dg::geo::aRealGenerator2d<double> |
| using | aGeneratorX2d = dg::geo::aRealGeneratorX2d<double> |
| using | CurvilinearMPIGrid2d = dg::geo::RealCurvilinearMPIGrid2d<double> |
| using | CurvilinearProductMPIGrid3d = dg::geo::RealCurvilinearProductMPIGrid3d<double> |
| using | CurvilinearRefinedGridX2d = dg::geo::RealCurvilinearRefinedGridX2d<double> |
| using | CurvilinearRefinedProductGridX3d = dg::geo::RealCurvilinearRefinedProductGridX3d<double> |
Enumerations | |
| enum | whichMatrix { einsPlus = 0 , einsPlusT , einsMinus , einsMinusT , zeroPlus , zeroMinus , zeroPlusT , zeroMinusT , zeroForw } |
| Enum for the use in Fieldaligned. More... | |
| enum class | equilibrium { equilibrium::solovev , equilibrium::taylor , equilibrium::polynomial , equilibrium::guenter , equilibrium::toroidal , equilibrium::circular } |
| How flux-function is computed. Decides how to construct magnetic field. More... | |
| enum class | modifier { modifier::none , modifier::heaviside , modifier::sol_pfr , modifier::sol_pfr_2X } |
| How flux-function is modified. More... | |
| enum class | description { description::standardO , description::standardX , description::doubleX , description::none , description::square , description::centeredX } |
| How flux function looks like. Decider on whether and what flux aligned grid to construct. More... | |
Functions | |
| CylindricalFunctorsLvl1 | make_NablaPsiInvCollective (const CylindricalFunctorsLvl2 &psi) |
| A container class that contains all NablaPsiInv functors. | |
| CylindricalSymmTensorLvl1 | make_LiseikinCollective (const CylindricalFunctorsLvl2 &psi, double k, double eps) |
| template<class FieldAligned , class container > | |
| void | assign_bc_along_field_2nd (const FieldAligned &fa, const container &fm, const container &f, const container &fp, container &fmg, container &fpg, dg::bc bound, std::array< double, 2 > boundary_value={0, 0}) |
| Assign boundary conditions along magnetic field lines interpolating a 2nd order polynomial. | |
| template<class FieldAligned , class container > | |
| void | assign_bc_along_field_1st (const FieldAligned &fa, const container &fm, const container &fp, container &fmg, container &fpg, dg::bc bound, std::array< double, 2 > boundary_value={0, 0}) |
| Assign boundary conditions along magnetic field lines interpolating a 1st order polynomial (a line) | |
| template<class FieldAligned , class container > | |
| void | swap_bc_perp (const FieldAligned &fa, const container &fm, const container &fp, container &fmg, container &fpg) |
| Swap the perp boundary condition. | |
| template<class FieldAligned , class container > | |
| void | ds_forward (const FieldAligned &fa, double alpha, const container &f, const container &fp, double beta, container &g) |
| forward derivative \( g = \alpha \vec v \cdot \nabla f + \beta g\) | |
| template<class FieldAligned , class container > | |
| void | ds_forward2 (const FieldAligned &fa, double alpha, const container &f, const container &fp, const container &fpp, double beta, container &g) |
| 2nd order forward derivative \( g = \alpha \vec v \cdot \nabla f + \beta g\) | |
| template<class FieldAligned , class container > | |
| void | ds_backward (const FieldAligned &fa, double alpha, const container &fm, const container &f, double beta, container &g) |
| backward derivative \( g = \alpha \vec v \cdot \nabla f + \beta g\) | |
| template<class FieldAligned , class container > | |
| void | ds_backward2 (const FieldAligned &fa, double alpha, const container &fmm, const container &fm, const container &f, double beta, container &g) |
| 2nd order backward derivative \( g = \alpha \vec v \cdot \nabla f + \beta g\) | |
| template<class FieldAligned , class container > | |
| void | ds_centered (const FieldAligned &fa, double alpha, const container &fm, const container &fp, double beta, container &g) |
| centered derivative \( g = \alpha \vec v \cdot \nabla f + \beta g\) | |
| template<class FieldAligned , class container > | |
| void | dss_centered (const FieldAligned &fa, double alpha, const container &fm, const container &f, const container &fp, double beta, container &g) |
| Centered derivative \( g = \alpha (\vec v\cdot \nabla)^2 f + \beta g \). | |
| template<class FieldAligned , class container > | |
| void | dssd_centered (const FieldAligned &fa, double alpha, const container &fm, const container &f, const container &fp, double beta, container &g) |
| Centered derivative \( g = \alpha \nabla\cdot(\vec v \vec v\cdot \nabla) f + \beta g \). | |
| template<class FieldAligned , class container > | |
| void | ds_divBackward (const FieldAligned &fa, double alpha, const container &fm, const container &f, double beta, container &g) |
| backward derivative \( g = \alpha \nabla \cdot \vec v f + \beta g\) | |
| template<class FieldAligned , class container > | |
| void | ds_divForward (const FieldAligned &fa, double alpha, const container &f, const container &fp, double beta, container &g) |
| forward derivative \( g = \alpha \nabla \cdot \vec v f + \beta g\) | |
| template<class FieldAligned , class container > | |
| void | ds_divCentered (const FieldAligned &fa, double alpha, const container &fm, const container &fp, double beta, container &g) |
| centered derivative \( g = \alpha \nabla \cdot \vec v f + \beta g\) | |
| template<class FieldAligned , class container > | |
| void | ds_average (const FieldAligned &, double alpha, const container &fm, const container &fp, double beta, container &g) |
| Compute average along a fieldline \( g = \alpha \frac{f_{k+1} + f_{k-1}}{2} + \beta g\). | |
| template<class FieldAligned , class container > | |
| void | ds_slope (const FieldAligned &fa, double alpha, const container &fm, const container &fp, double beta, container &g) |
| Compute simple slope along a fieldline \( g = \alpha v^\varphi\frac{f_{k+1} - f_{k-1}}{2\Delta\varphi} + \beta g\). | |
| template<class BinaryOp , class UnaryOp > | |
| thrust::host_vector< double > | fieldaligned_evaluate (const aProductGeometry3d &grid, const CylindricalVectorLvl0 &vec, const BinaryOp &binary, const UnaryOp &unary, unsigned p0, unsigned rounds, double eps=1e-5) |
| Evaluate a 2d functor and transform to all planes along the fieldlines | |
| int | findCriticalPoint (const CylindricalFunctorsLvl2 &psi, double &RC, double &ZC) |
| This function finds critical points of psi (any point with vanishing gradient, including the X-point or O-point) via Newton iteration applied to the gradient of psi. | |
| int | findOpoint (const CylindricalFunctorsLvl2 &psi, double &RC, double &ZC) |
| This function finds O-points of psi. | |
| void | findXpoint (const CylindricalFunctorsLvl2 &psi, double &RC, double &ZC) |
| This function finds X-points of psi. | |
| template<class Geometry3d > | |
| dg::SparseTensor< typename Geometry3d::host_vector > | createAlignmentTensor (const dg::geo::CylindricalVectorLvl0 &bhat, const Geometry3d &g) |
| \( \chi^{ij} = b^ib^j\) | |
| template<class Geometry3d > | |
| dg::SparseTensor< typename Geometry3d::host_vector > | createProjectionTensor (const dg::geo::CylindricalVectorLvl0 &bhat, const Geometry3d &g) |
| \( h^{ij} = g^{ij} - b^ib^j\) | |
| dg::geo::TokamakMagneticField | createGuenterField (double R_0, double I_0) |
| Create a Guenter Magnetic field. | |
| TokamakMagneticField | periodify (const TokamakMagneticField &mag, double R0, double R1, double Z0, double Z1, dg::bc bcx, dg::bc bcy) |
| Use dg::geo::Periodify to periodify every function in the magnetic field. | |
| CylindricalVectorLvl1 | createEPhi (int sign) |
| Contravariant components of the unit vector field (0, 0, \(\pm 1/R \)) and its Divergence and derivative (0,0) in cylindrical coordinates. | |
| CylindricalVectorLvl0 | createCurvatureNablaB (const TokamakMagneticField &mag, int sign) |
| Approximate curvature vector field (CurvatureNablaBR, CurvatureNablaBZ, Constant(0)) | |
| CylindricalVectorLvl0 | createCurvatureKappa (const TokamakMagneticField &mag, int sign) |
| Approximate curvature vector field (CurvatureKappaR, CurvatureKappaZ, Constant(0)) | |
| CylindricalVectorLvl0 | createTrueCurvatureKappa (const TokamakMagneticField &mag) |
| True curvature vector field (TrueCurvatureKappaR, TrueCurvatureKappaZ, TrueCurvatureKappaP) | |
| CylindricalVectorLvl0 | createTrueCurvatureNablaB (const TokamakMagneticField &mag) |
| True curvature vector field (TrueCurvatureNablaBR, TrueCurvatureNablaBZ, TrueCurvatureNablaBP) | |
| CylindricalVectorLvl0 | createGradPsip (const TokamakMagneticField &mag) |
| Gradient Psip vector field (PsipR, PsipZ, 0) | |
| CylindricalVectorLvl1 | createBHat (const TokamakMagneticField &mag) |
| Contravariant components of the magnetic unit vector field and its Divergence and derivative in cylindrical coordinates. | |
| TokamakMagneticField | createMagneticField (dg::file::WrappedJsonValue gs) |
| Create a Magnetic field based on the given parameters. | |
| TokamakMagneticField | createModifiedField (dg::file::WrappedJsonValue gs, dg::file::WrappedJsonValue jsmod, CylindricalFunctor &wall, CylindricalFunctor &transition) |
| Modify Magnetic Field and create wall above or below certain Psi values according to given parameters. | |
| CylindricalFunctor | createWallRegion (dg::geo::TokamakMagneticField mag, dg::file::WrappedJsonValue jsmod) |
A convenience function call for dg::geo::createModifiedField that ignores the transition parameter and returns the wall functor. | |
| CylindricalFunctor | createWallRegion (dg::file::WrappedJsonValue gs, dg::file::WrappedJsonValue jsmod) |
DEPRECATED Same as createWallRegion( createMagneticField(gs), jsmod); | |
| void | createSheathRegion (dg::file::WrappedJsonValue jsmod, TokamakMagneticField mag, CylindricalFunctor wall, dg::Grid2d &sheath_walls, CylindricalFunctor &sheath) |
| Create the sheath region where fieldlines intersect the boundary. | |
| template<class BinaryOp , class UnaryOp > | |
| MPI_Vector< thrust::host_vector< double > > | fieldaligned_evaluate (const aProductMPIGeometry3d &grid, const CylindricalVectorLvl0 &vec, const BinaryOp &binary, const UnaryOp &unary, unsigned p0, unsigned rounds, double eps=1e-5) |
| Evaluate a 2d functor and transform to all planes along the fieldlines (MPI Version) | |
| dg::geo::TokamakMagneticField | createPolynomialField (dg::geo::polynomial::Parameters gp) |
| Create a Polynomial Magnetic field. | |
| dg::geo::TokamakMagneticField | createSolovevField (dg::geo::solovev::Parameters gp) |
| Create a Solovev Magnetic field. | |
| dg::geo::TokamakMagneticField | createModifiedSolovevField (dg::geo::solovev::Parameters gp, double psi0, double alpha, double sign=-1) |
| DEPRECATED Create a modified Solovev Magnetic field. | |
| dg::geo::TokamakMagneticField | createTaylorField (dg::geo::solovev::Parameters gp) |
| Create a Taylor Magnetic field. | |
| dg::geo::TokamakMagneticField | createToroidalField (double R0) |
| Create a Toroidal Magnetic field. | |
| dg::geo::TokamakMagneticField | createCircularField (double R0, double I0, double a=1, double b=1) |
| \( \psi_p = 1- \left(\frac{R-R_0}{a}\right)^2 - \left( \frac{Z}{b}\right)^2,\quad I(\psi_p) = I_0 \) | |
| CylindricalSymmTensorLvl1 | make_Xbump_monitor (const CylindricalFunctorsLvl2 &psi, double &R_X, double &Z_X, double radiusX, double radiusY) |
| construct a monitor metric in which the Laplacian vanishes at the X-point | |
| CylindricalSymmTensorLvl1 | make_Xconst_monitor (const CylindricalFunctorsLvl2 &psi, double &R_X, double &Z_X) |
| construct a monitor metric in which the Laplacian vanishes at the X-point | |
| using dg::geo::aGenerator2d = dg::geo::aRealGenerator2d<double> |
| using dg::geo::aGeneratorX2d = dg::geo::aRealGeneratorX2d<double> |
|
inline |
construct a monitor metric in which the Laplacian vanishes at the X-point
calls the findXpoint function to find the X-point
| psi | the flux functions |
| R_X | start value on input, X-point on output |
| Z_X | start value on input, X-point on output |
| radiusX | size of bump in x direction |
| radiusY | size of bump in y-direction |
|
inline |
construct a monitor metric in which the Laplacian vanishes at the X-point
calls the findXpoint function to find the X-point
| psi | the flux functions |
| R_X | start value on input, X-point on output |
| Z_X | start value on input, X-point on output |