Chombo + EB + MF
3.2
|
Virtual base class encapsulating mapped-grid coordinate systems. More...
#include <NewFourthOrderCoordSys.H>
Public Member Functions | |
NewFourthOrderCoordSys () | |
default constructor More... | |
virtual | ~NewFourthOrderCoordSys () |
virtual RealVect | realCoord (const RealVect &a_Xi) const =0 |
given coordinate in mapped space, return its location in real space More... | |
virtual RealVect | mappedCoord (const RealVect &a_x) const =0 |
given coordinate in real space, return its location in the mapped space More... | |
virtual void | realCoord (FArrayBox &a_x, const FArrayBox &a_Xi, const Box &a_box) const |
given coordinates in mapped space, return locations in real space More... | |
virtual void | mappedCoord (FArrayBox &a_Xi, const FArrayBox &a_x, const Box &a_box) const |
given coordinate in real space, return its location in the mapped space More... | |
virtual void | getNodeRealCoordinates (FArrayBox &a_nodeCoords, const Box &a_box) const |
return Cartesian XYZ locations of nodes More... | |
virtual Real | dXdXi (const RealVect &a_Xi, int a_dirX, int a_dirXi) const =0 |
note that a_Xi is in mapped space. More... | |
virtual void | dXdXi (FArrayBox &a_dxdXi, const FArrayBox &a_Xi, int a_destComp, int a_dirX, int a_dirXi, const Box &a_box) const |
note that a_X is in mapped space. More... | |
virtual int | getNumN () const |
returns number of components in the metric term matrix (N) More... | |
virtual int | getNcomponent (const int a_row, const int a_col) const |
index function into face-centered metric terms More... | |
virtual void | volFlux (FluxBox &a_volFlux, const FluxBox &a_Nt, const Box &a_box) const |
computes the volume flux on the faces More... | |
virtual void | cellVol (FArrayBox &a_vol, const FluxBox &a_N, const Box &a_box) const |
computes cell volumes More... | |
virtual void | getN (FluxBox &a_N, const Box &a_box) const |
computes integral of N over each face of a_box More... | |
virtual void | getAvgJ (FArrayBox &a_avgJ, const FluxBox &a_volFlux, const Box &a_box) const |
computes cell-averaged J More... | |
virtual void | getAvgJ (FArrayBox &a_avgJ, const Box &a_box) const |
computes cell-averaged J More... | |
virtual void | getAvgJinverse (FluxBox &a_avgJinverse, const Box &a_box) const |
computes cell-averaged 1/J More... | |
virtual void | getAvgJinverse (FluxBox &a_avgJinverse, const FArrayBox &a_avgJ, const Box &a_box) const |
computes cell-averaged 1/J, using pre-computed cell-avg J More... | |
virtual Real | pointwiseJ (const RealVect &a_Xi) const |
Jacobian evaluated at location Xi in mapped space. More... | |
virtual void | pointwiseJ (FArrayBox &a_J, const FArrayBox &a_Xi, const Box &a_box) const |
Jacobian evaluated at locations Xi in mapped space. More... | |
virtual void | computeMetricTermProductAverage (FluxBox &a_product, const FluxBox &a_F, const FluxBox &a_N, const int a_NNumComp, const FluxBox &a_FforGrad, const Box &a_box, bool a_fourthOrder=true, Interval a_varIntervalProduct=Interval(), Interval a_varIntervalF=Interval(), int a_fluxSpaceContiguous=1, const ProblemDomain *const a_problemDomainPtr=NULL) const |
Computes 4th-order average of product = N^T*F. F can be a flux dyad. More... | |
virtual void | computeMetricTermProductAverage (FluxBox &a_product, const FluxBox &a_F, const FluxBox &a_N, const FluxBox &a_FforGrad, const Box &a_box, bool a_fourthOrder=true) const |
computes 4th-order average of product = N^T*F. F is vector of a scalar More... | |
virtual void | computeMetricTermProductAverage (FluxBox &a_product, const FluxBox &a_F, const FluxBox &a_N, const Box &a_box, bool a_fourthOrder=true) const |
computes 4th-order average of product = N^T*F. F is vector of a scalar More... | |
void | magnitudeN (FluxBox &a_NMag, const FluxBox &a_N, const Box &a_box) const |
Computes magnitude of <N^T> on each face. More... | |
virtual void | computeNJinverse (FluxBox &a_NJinverse, const FluxBox &a_Jinverse, const FluxBox &a_N, const Box &a_cellBox) const |
given N and Jinverse, computes N/J More... | |
virtual const RealVect & | dx () const |
access function to simplify things – returns mapped-space cell spacing More... | |
virtual Real | getN (const RealVect &a_Xi, int a_s, int a_d, int a_d1) const |
this evaluates the script N values from equation 12 in Phil's notes More... | |
virtual Real | getNMatrixEntry (const RealVect &a_Xi, int a_s, int a_d, int a_d1, int a_row, int a_column) const |
note that a_Xi is in mapped space. More... | |
virtual void | integrateScriptN (FArrayBox &a_scrN, const int a_dir0, const int a_dir1, const Box &a_box) const |
virtual void | incrementFaceMetricWithEdgeTerm (FArrayBox &a_faceMetrics, int a_faceDir, int a_edgeDir, const Box &a_box, const Side::LoHiSide &a_side) const |
virtual void | computeTransverseFaceMetric (FArrayBox &a_faceMetrics, const Box &a_box, int a_faceDir, int a_dDir) const |
virtual void | computeTangentialGrad (FluxBox &a_gradPhi, const FluxBox &a_phiFace, const Box &a_box) const |
virtual int | tanGradComp (const int a_faceDir, const int a_tanDir, const int a_comp) const |
virtual void | contravariantMetric (FArrayBox &a_metric, int a_dir) const |
return row a_idir of contravariant metric More... | |
virtual void | orthonormalize (FluxBox &a_flux, const Interval &a_vectorIntv) const |
convert vector components (in a_vectorIntv) of a_flux to orthonormal frame to that of this block More... | |
virtual void | orthonormalize (FArrayBox &a_fluxFab, const Interval &a_vectorIntv) const |
overwrite vector components (in a_vectorIntv) of a_fluxFab with orthonormalized More... | |
virtual void | orthonormalize (const FArrayBox &a_csFab, FArrayBox &a_orthoFab, const Box &a_box, int a_idir, const IntVect &a_csComps, const IntVect &a_orthoComps) const |
convert components in a_csComps of vector a_csFab in coordinate-system basis to components in a_orthoComps of vector a_orthoFab in orthonormal basis, at points with indices in a_box, on lines where direction a_idir is constant More... | |
virtual void | deorthonormalize (FluxBox &a_flux, const Interval &a_vectorIntv) const |
convert vector components (in a_vectorIntv) of a_flux from orthonormal frame to that of this block More... | |
virtual void | deorthonormalize (FArrayBox &a_fluxFab, const Interval &a_vectorIntv) const |
overwrite vector components (in a_vectorIntv) of a_fluxFab with deorthonormalized More... | |
virtual void | deorthonormalize (const FArrayBox &a_orthoFab, FArrayBox &a_csFab, const Box &a_box, int a_idir, const IntVect &a_orthoComps, const IntVect &a_csComps) const |
convert components in a_orthoComps of vector a_orthoFab in orthonormal basis to components in a_csComps of vector a_csFab in coordinate-system basis, at points with indices in a_box, on lines where direction a_idir is constant More... | |
Public Member Functions inherited from NewCoordSys | |
NewCoordSys () | |
default constructor More... | |
virtual | ~NewCoordSys () |
virtual void | getCenterMappedCoordinates (FArrayBox &a_Xi, const Box &a_box) const |
given indices in a_box, return centers of cells (or of faces, or of edges) in mapped coordinates. The function does the right thing based on the centering of a_box, which must be the same centering as a_Xi. More... | |
virtual RealVect | centerMappedCoordinates (const IntVect &a_iv) const |
given indices, return centers of cells in mapped coordinates More... | |
virtual int | dimension () const |
returns dimensionality of the space More... | |
virtual void | computeDivergence (FArrayBox &a_divF, const FluxBox &a_F, const FluxBox &a_N, const Box &a_box, Interval &divInterval) const |
returns integral of divergence over mapped-grid cells More... | |
virtual VectorTransformation | vectorTransformationMappedToReal (const RealVect &a_Xi) const |
return matrix that transforms vector components from mapped space to real space at point a_Xi in mapped space More... | |
virtual VectorTransformation | vectorTransformationRealToMapped (const RealVect &a_Xi) const |
return matrix that transforms vector components from real space to mapped space at point a_Xi in mapped space More... | |
virtual VectorTransformation | vectorTransformationMappedToRealCenter (const IntVect &a_iv) const |
return matrix that transforms vector components from mapped space to real space at center of cell a_iv More... | |
virtual VectorTransformation | vectorTransformationRealToMappedCenter (const IntVect &a_iv) const |
return matrix that transforms vector components from real space to mapped space at center of cell a_iv More... | |
virtual void | vectorTransformMappedToRealCenterFab (FArrayBox &a_vectorFab) const |
transform a FAB of SpaceDim-vectors from mapped-coordinate basis to real-coordinate basis at cell centers More... | |
virtual void | vectorTransformMappedToRealAvgFab (FArrayBox &a_vectorFab, const FArrayBox &a_gradVectorFab) const |
transform a FAB of SpaceDim-vectors from mapped-coordinate basis to real-coordinate basis, averaged over cells More... | |
virtual void | vectorTransformRealToMappedCenterFab (FArrayBox &a_vectorFab) const |
transform a FAB of SpaceDim-vectors from real-coordinate basis to mapped-coordinate basis at cell centers More... | |
virtual void | vectorTransformRealToMappedAvgFab (FArrayBox &a_vectorFab, const FArrayBox &a_gradVectorFab) const |
transform a FAB of SpaceDim-vectors from real-coordinate basis to mapped-coordinate basis, averaged over cells More... | |
virtual void | setTime (const Real &a_time) const |
Set time for moving grids. More... | |
Static Public Member Functions | |
static const IntVect & | metricsCompDir (const int a_iDir) |
Same as getNcomponent but returns an IntVect for an 'a_col' (direction) More... | |
Protected Attributes | |
RealVect | m_dx |
Interval | m_volInterval |
EdgeQuadrature * | m_quadraturePtr |
Protected Attributes inherited from NewCoordSys | |
Real | m_time |
Const is already well entrenched. More... | |
Additional Inherited Members | |
Protected Member Functions inherited from NewCoordSys | |
virtual void | vectorTransformInternalAvgFab (FArrayBox &a_vectorFab, const FArrayBox &a_gradVectorFab, const BaseFab< VectorTransformation > &a_tfmCenterFab) const |
internal function to transform a FAB of SpaceDim-vectors from one basis to another, averaged over cells, given BaseFab of vector transformations at cell centers More... | |
Virtual base class encapsulating mapped-grid coordinate systems.
The NewFourthOrderCoordSys class is a pure-virtual base class an API for performing operations in a mapped grid coordinate space. Implementations of specific coordinate systems will be provided by derived classes.
The following pure virtual functions of NewCoordSys are defined in NewFourthOrderCoordSys.cpp :
virtual void getNodeRealCoordinates(FArrayBox& a_nodeCoords, const Box& a_box) const; calls virtual RealVect realCoord(const RealVect& a_Xi) const = 0;
virtual int getNumN() const { return SpaceDim*SpaceDim; }
virtual int getNcomponent(const int a_row, const int a_col) const {return (SpaceDim*a_col) + a_row;}
virtual void cellVol(FArrayBox& a_vol, const FluxBox& a_N, const Box& a_box) const; calls virtual RealVect realCoord(const RealVect& a_Xi) const = 0 on corners, then calls fourthOrderAverageFace and computeDivergence.
virtual void getN(FluxBox& a_N, const Box& a_box) const;
virtual void getAvgJ(FArrayBox& a_avgJ, const Box& a_box) const; calls cellVol.
virtual void getAvgJinverse(FluxBox& a_avgJinverse, const Box& a_box) const;
virtual void pointwiseJ(FArrayBox& a_J, const FArrayBox& a_Xi, const Box& a_box) const; calls dXdXi.
virtual void computeMetricTermProductAverage(FluxBox& a_product, const FluxBox& a_F, const FluxBox& a_N, const FluxBox& a_FforGrad, const Box& a_box, bool a_fourthOrder=true) const;
virtual const RealVect& dx() const { return m_dx; }
NewFourthOrderCoordSys::NewFourthOrderCoordSys | ( | ) |
default constructor
|
virtual |
Destructor.
given coordinate in mapped space, return its location in real space
Implements NewCoordSys.
Implemented in CubedSphereShellPanelCS, SchwarzChristoffelRampCS, CubedSphereSolidBlockCS, CubedSphere2DPanelCS, RThetaPhiCS, CartesianBlockRotateCS, XPointBlockCoordSys, WarpedCS, CartesianBlockCS, CylinderEquiangularBlockCS, CylinderSpokesBlockCS, CartesianCS, AnalyticCS, TwistedCS, and RThetaZCS.
given coordinate in real space, return its location in the mapped space
Implements NewCoordSys.
Implemented in CubedSphereShellPanelCS, SchwarzChristoffelRampCS, CubedSphereSolidBlockCS, CubedSphere2DPanelCS, XPointBlockCoordSys, RThetaPhiCS, CartesianBlockRotateCS, WarpedCS, CartesianBlockCS, CylinderEquiangularBlockCS, CylinderSpokesBlockCS, CartesianCS, AnalyticCS, TwistedCS, and RThetaZCS.
|
virtual |
given coordinates in mapped space, return locations in real space
Reimplemented from NewCoordSys.
Reimplemented in CubedSphereShellPanelCS, and CubedSphere2DPanelCS.
|
virtual |
given coordinate in real space, return its location in the mapped space
Reimplemented from NewCoordSys.
|
virtual |
return Cartesian XYZ locations of nodes
nodeCoords should have dimension returned by dimension()
Implements NewCoordSys.
Reimplemented in CubedSphereShellPanelCS, and CubedSphere2DPanelCS.
|
pure virtual |
note that a_Xi is in mapped space.
Implements NewCoordSys.
Implemented in CubedSphereShellPanelCS, CubedSphere2DPanelCS, SchwarzChristoffelRampCS, CubedSphereSolidBlockCS, XPointBlockCoordSys, RThetaPhiCS, CartesianBlockRotateCS, WarpedCS, CartesianBlockCS, CylinderEquiangularBlockCS, CylinderSpokesBlockCS, CartesianCS, TwistedCS, AnalyticCS, and RThetaZCS.
|
virtual |
note that a_X is in mapped space.
fills the destComp component of a_dxdXi with the derivative of x w/ respect to Xi in the dirX direction (default implementation is there in case derived class doesn't provide it)
Reimplemented from NewCoordSys.
Reimplemented in XPointBlockCoordSys.
|
inlinevirtual |
returns number of components in the metric term matrix (N)
Implements NewCoordSys.
References SpaceDim.
|
inlinevirtual |
index function into face-centered metric terms
returns which component of the face-centered metric term in which N^row_col is stored.
Implements NewCoordSys.
References SpaceDim.
|
inlinestatic |
Same as getNcomponent but returns an IntVect for an 'a_col' (direction)
References cellVol(), computeMetricTermProductAverage(), computeNJinverse(), D_DECL6, getAvgJ(), getAvgJinverse(), getN(), magnitudeN(), pointwiseJ(), SpaceDim, and volFlux().
|
virtual |
computes the volume flux on the faces
Reimplemented in CubedSphereShellPanelCS, CubedSphere2DPanelCS, CartesianBlockRotateCS, and CartesianBlockCS.
Referenced by metricsCompDir().
|
virtual |
computes cell volumes
Return cell volume in a_vol on cells of a_box, using a_N from getN() defined on a_box grown by 1.
Implements NewCoordSys.
Reimplemented in CubedSphereShellPanelCS, and CubedSphere2DPanelCS.
Referenced by metricsCompDir().
computes integral of N over each face of a_box
Implements NewCoordSys.
Reimplemented in CubedSphereShellPanelCS, and CubedSphere2DPanelCS.
Referenced by dx(), and metricsCompDir().
|
virtual |
computes cell-averaged J
Reimplemented in CubedSphereShellPanelCS, and CubedSphere2DPanelCS.
Referenced by metricsCompDir().
|
virtual |
computes cell-averaged J
Implements NewCoordSys.
Reimplemented in CubedSphereShellPanelCS, and CubedSphere2DPanelCS.
|
virtual |
computes cell-averaged 1/J
Implements NewCoordSys.
Reimplemented in CubedSphereShellPanelCS, and CubedSphere2DPanelCS.
Referenced by metricsCompDir().
|
virtual |
computes cell-averaged 1/J, using pre-computed cell-avg J
Jacobian evaluated at location Xi in mapped space.
Implements NewCoordSys.
Reimplemented in CubedSphereShellPanelCS, and CubedSphere2DPanelCS.
Referenced by metricsCompDir().
|
virtual |
Jacobian evaluated at locations Xi in mapped space.
Reimplemented from NewCoordSys.
Reimplemented in CubedSphereShellPanelCS, and CubedSphere2DPanelCS.
|
virtual |
Computes 4th-order average of product = N^T*F. F can be a flux dyad.
Referenced by metricsCompDir().
|
virtual |
computes 4th-order average of product = N^T*F. F is vector of a scalar
if a_fourthOrder is false, then only do a second-order dot product aFforGrad is the F used to compute grad_perp(F); returns results in a_product on a_box; both a_FforGrad and a_N (from getN()) must be defined on a_box grown by 1.
Implements NewCoordSys.
|
virtual |
computes 4th-order average of product = N^T*F. F is vector of a scalar
if a_fourthOrder is false, then only do a second-order dot product; returns results in a_product on a_box; both a_F and a_N (from getN()) must be defined on a_box grown by 1.
Reimplemented from NewCoordSys.
void NewFourthOrderCoordSys::magnitudeN | ( | FluxBox & | a_NMag, |
const FluxBox & | a_N, | ||
const Box & | a_box | ||
) | const |
Computes magnitude of <N^T> on each face.
Referenced by metricsCompDir().
|
virtual |
given N and Jinverse, computes N/J
provided for convenience, since the multicomponent N/J product requires a bit of processing to work with the existing fourth-order multiplication function
Referenced by metricsCompDir().
|
inlinevirtual |
access function to simplify things – returns mapped-space cell spacing
Implements NewCoordSys.
References computeTangentialGrad(), computeTransverseFaceMetric(), contravariantMetric(), deorthonormalize(), getN(), getNMatrixEntry(), incrementFaceMetricWithEdgeTerm(), integrateScriptN(), m_dx, orthonormalize(), and tanGradComp().
|
virtual |
this evaluates the script N values from equation 12 in Phil's notes
note that a_Xi is in mapped space.
Reimplemented in CubedSphereShellPanelCS, and CubedSphere2DPanelCS.
|
virtual |
note that a_Xi is in mapped space.
Reimplemented in CubedSphereShellPanelCS, and CubedSphere2DPanelCS.
Referenced by dx().
|
virtual |
Integrates on a specific set of codimension 2 hyperedges that are orthogonal to the given directions.
Referenced by dx().
|
virtual |
Referenced by dx().
|
virtual |
Referenced by dx().
|
virtual |
Referenced by dx().
|
virtual |
Referenced by dx().
|
virtual |
return row a_idir of contravariant metric
Reimplemented in CubedSphereShellPanelCS, and CubedSphere2DPanelCS.
Referenced by dx().
|
virtual |
convert vector components (in a_vectorIntv) of a_flux to orthonormal frame to that of this block
Referenced by dx().
|
virtual |
overwrite vector components (in a_vectorIntv) of a_fluxFab with orthonormalized
|
virtual |
convert components in a_csComps of vector a_csFab in coordinate-system basis to components in a_orthoComps of vector a_orthoFab in orthonormal basis, at points with indices in a_box, on lines where direction a_idir is constant
Reimplemented in CubedSphereShellPanelCS, and CubedSphere2DPanelCS.
|
virtual |
convert vector components (in a_vectorIntv) of a_flux from orthonormal frame to that of this block
Referenced by dx().
|
virtual |
overwrite vector components (in a_vectorIntv) of a_fluxFab with deorthonormalized
|
virtual |
convert components in a_orthoComps of vector a_orthoFab in orthonormal basis to components in a_csComps of vector a_csFab in coordinate-system basis, at points with indices in a_box, on lines where direction a_idir is constant
Reimplemented in CubedSphereShellPanelCS, and CubedSphere2DPanelCS.
|
protected |
Referenced by dx(), XPointBlockCoordSys::lowerMappedCoordinate(), and XPointBlockCoordSys::upperMappedCoordinate().
|
protected |
|
protected |