CubedSphereShellCS Class Reference

#include <CubedSphereShellCS.H>

Inheritance diagram for CubedSphereShellCS:

Inheritance graph
[legend]

List of all members.


Detailed Description

Multiblock coordinate system for cubed sphere shell with variable-thickness spherical layers The CubedSphereShellCS coordinate system class is a multiblock example that takes place on a cubed inflated onto the surface of a sphere, and creates a shell with r-direction layers of variable thickness. NOTE: Supports only a "scaled thin atmosphere" approximation which ignores the r dependencies of the horizontal grid metrics

Public Member Functions

 CubedSphereShellCS ()
 default constructor
 CubedSphereShellCS (int a_nResolution, int a_nLayers=0, Real a_height=1, Real a_radius=1)
 constructor that makes constant thickness vertical layers
virtual ~CubedSphereShellCS ()
virtual void define (int a_nResolution, int a_nLayers=0, Real a_height=1, Real a_radius=1)
virtual void define (const ProblemDomain &a_levelDomain, const RealVect &a_dx)
void setFlatMap (bool a_flatMap)
void setHeight (Real a_height)
Real getHeight () const
void setRadius (Real a_radius)
Real getRadius () const
void setVerticalMap (RefCountedPtr< Spline1DMapping > a_map)
void regrid (const DisjointBoxLayout &a_newGrids)
RealVect realCoord (const RealVect &a_X) const
RealVect mappedCoord (const RealVect &a_x) const
void vecTransMatrix_Pt (int a_nSourcePanel, int a_nDestPanel, Real a_dX, Real a_dY, Real *a_dT) const
void vecTransMatrix (int a_nSourcePanel, int a_nDestPanel, int a_nAlphaIx, int a_nBetaIx, Real a_dDeltaA, Real *a_dAvgT, Real *a_dAlphaGradT, Real *a_dBetaGradT) const
VectorTransformation vectorBlockTransformation (int a_nDst, const RealVect &a_xiSrc, int a_nSrc) const
 return vector transformation from one block to another at a point.
void cartesianFromMapped (Real &xx, Real &yy, Real &zz, const RealVect &a_xiSrc, int a_nSrc) const
 convert from mapped coordinate to Cartesian coordinates
void mappedFromCartesian (RealVect &a_xiDst, int a_nDst, Real xx, Real yy, Real zz) const
 convert from Cartesian coordinates to mapped coordinate
void cssXiFromLonLat2D (RealVect a_llr, RealVect &a_xi, int &a_nPanel) const
 convert from Lon-Lat-R coordinates to CSS computational coordinate
virtual void blockRemapping (RealVect &a_xi_valid, int &a_n_valid, const RealVect &a_xiSrc, int a_nSrc) const
 block mapping conversion function
virtual RealVect blockRemappingGeneral (int a_nDst, const RealVect &a_xiSrc, int a_nSrc) const
virtual Vector< RealVectdisplacements (const Vector< RealVect > &a_dstCoords, const Vector< int > &a_dstBlocks, const RealVect &a_srcCoords, int a_srcBlock) const
 return displacements
virtual void separateVolFlux (LevelData< FluxBox > &a_flux) const
 Have separate volume flux on each block. Normally does nothing, but cubed-sphere coordinate system needs it.

Protected Member Functions

void defineBoundaries ()

Protected Attributes

int m_nResolution
int m_nLayers
Real m_height
Real m_radius
bool m_flatMap
RefCountedPtr< Spline1DMappingm_verticalMap

Constructor & Destructor Documentation

CubedSphereShellCS::CubedSphereShellCS (  ) 

default constructor

CubedSphereShellCS::CubedSphereShellCS ( int  a_nResolution,
int  a_nLayers = 0,
Real  a_height = 1,
Real  a_radius = 1 
)

constructor that makes constant thickness vertical layers

virtual CubedSphereShellCS::~CubedSphereShellCS (  )  [virtual]

Destructor.


Member Function Documentation

virtual void CubedSphereShellCS::define ( int  a_nResolution,
int  a_nLayers = 0,
Real  a_height = 1,
Real  a_radius = 1 
) [virtual]

virtual void CubedSphereShellCS::define ( const ProblemDomain a_levelDomain,
const RealVect a_dx 
) [virtual]

void CubedSphereShellCS::setFlatMap ( bool  a_flatMap  ) 

void CubedSphereShellCS::setHeight ( Real  a_height  ) 

Real CubedSphereShellCS::getHeight (  )  const

void CubedSphereShellCS::setRadius ( Real  a_radius  ) 

Real CubedSphereShellCS::getRadius (  )  const

void CubedSphereShellCS::setVerticalMap ( RefCountedPtr< Spline1DMapping a_map  ) 

void CubedSphereShellCS::regrid ( const DisjointBoxLayout a_newGrids  ) 

RealVect CubedSphereShellCS::realCoord ( const RealVect a_X  )  const

RealVect CubedSphereShellCS::mappedCoord ( const RealVect a_x  )  const

void CubedSphereShellCS::vecTransMatrix_Pt ( int  a_nSourcePanel,
int  a_nDestPanel,
Real  a_dX,
Real  a_dY,
Real a_dT 
) const

Calculate the pointwise transformation matrix using gnomonic coordinates on the source panel (a_dX, a_dY).

void CubedSphereShellCS::vecTransMatrix ( int  a_nSourcePanel,
int  a_nDestPanel,
int  a_nAlphaIx,
int  a_nBetaIx,
Real  a_dDeltaA,
Real a_dAvgT,
Real a_dAlphaGradT,
Real a_dBetaGradT 
) const

VectorTransformation CubedSphereShellCS::vectorBlockTransformation ( int  a_nDst,
const RealVect a_xiSrc,
int  a_nSrc 
) const [virtual]

return vector transformation from one block to another at a point.

Return object that transforms the components of a vector situated at a_xiSrc from basis of block a_nSrc to components in basis in block a_nDst.

Default implementation goes through real space.

Reimplemented from MultiBlockCoordSys.

void CubedSphereShellCS::cartesianFromMapped ( Real xx,
Real yy,
Real zz,
const RealVect a_xiSrc,
int  a_nSrc 
) const

convert from mapped coordinate to Cartesian coordinates

given a_xiSrc in block a_nSrc, return 3D Cartesian coordinates of point.

void CubedSphereShellCS::mappedFromCartesian ( RealVect a_xiDst,
int  a_nDst,
Real  xx,
Real  yy,
Real  zz 
) const

convert from Cartesian coordinates to mapped coordinate

given 3D Cartesian coordinates of point and destination block returns mapped coordinates of that point. Radius information is discarded.

void CubedSphereShellCS::cssXiFromLonLat2D ( RealVect  a_llr,
RealVect a_xi,
int &  a_nPanel 
) const

convert from Lon-Lat-R coordinates to CSS computational coordinate

given a_llr, find a_xi and block a_nPanel. NOTE: no spline lookup

virtual void CubedSphereShellCS::blockRemapping ( RealVect a_xi_valid,
int &  a_n_valid,
const RealVect a_xiSrc,
int  a_nSrc 
) const [virtual]

block mapping conversion function

given a_xiSrc in block a_nSrc, returns which block (a_n_valid) contains that location in its valid region and its location (a_xi_valid) in that block's computational coordinate space.

Implements MultiBlockCoordSys.

virtual RealVect CubedSphereShellCS::blockRemappingGeneral ( int  a_nDst,
const RealVect a_xiSrc,
int  a_nSrc 
) const [virtual]

given mapped coordinate a_xiSrc of a point in block a_nSrc return mapped coordinates in block a_nDst.

Reimplemented from MultiBlockCoordSys.

virtual Vector<RealVect> CubedSphereShellCS::displacements ( const Vector< RealVect > &  a_dstCoords,
const Vector< int > &  a_dstBlocks,
const RealVect a_srcCoords,
int  a_srcBlock 
) const [virtual]

return displacements

Return a Vector of same length as a_dstCoords and a_dstBlocks, with component i of this Vector being the displacement from point a_srcCoords in mapped coordinates of block a_srcBlock to point a_dstCoords[i] in mapped coordinates of block a_dstBlocks[i].

If this method is not overwritten, then component i of the returned Vector is simply the displacement in physical coordinates from a_srcCoords to a_dstCoords[i].

Reimplemented from MultiBlockCoordSys.

virtual void CubedSphereShellCS::separateVolFlux ( LevelData< FluxBox > &  a_flux  )  const [virtual]

Have separate volume flux on each block. Normally does nothing, but cubed-sphere coordinate system needs it.

Reimplemented from MultiBlockCoordSys.

void CubedSphereShellCS::defineBoundaries (  )  [protected]


Member Data Documentation


The documentation for this class was generated from the following file:

Generated on Wed Apr 26 03:27:13 2017 for Chombo + EB + MF by  doxygen 1.5.5