ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_InitCustomPert_EBPoiseuille.H File Reference

Go to the source code of this file.

Functions

ParmParse pp ("prob")
 
pp query ("A_0", A_0)
 
pp query ("B_0", B_0)
 
pp query ("rad_0", rad_0)
 
pp query ("rho_0", rho_0)
 
pp query ("xc_frac", xc_frac)
 
pp query ("yc_frac", yc_frac)
 
pp query ("zc_frac", zc_frac)
 
pp query ("prob_type", prob_type)
 
pp query ("xradius", xradius)
 
pp query ("zradius", zradius)
 
 AMREX_ALWAYS_ASSERT (sc.terrain_type==TerrainType::EB)
 
 ParallelFor (bx, [=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept { const Real *prob_lo=geomdata.ProbLo();const Real *prob_hi=geomdata.ProbHi();const Real *dx=geomdata.CellSize();const Real x=prob_lo[0]+(i+0.5) *dx[0];const Real y=prob_lo[1]+(j+0.5) *dx[1];const Real z=prob_lo[2]+(k+0.5) *dx[2];const Real xc=xc_frac *(prob_lo[0]+prob_hi[0]);const Real yc=yc_frac *(prob_lo[1]+prob_hi[1]);const Real zc=zc_frac *(prob_lo[2]+prob_hi[2]);const Real r0=rad_0 *(prob_hi[0] - prob_lo[0]);const Real r3d=std::sqrt((x-xc) *(x-xc)+(y-yc) *(y-yc)+(z-zc) *(z-zc));const Real r2d_xz=std::sqrt((x-xc) *(x-xc)+(z-zc) *(z-zc));const Real r2d_xz_nd=std::sqrt((x-xc) *(x-xc)/xradius/xradius+(z-zc) *(z-zc)/zradius/zradius);if(prob_type==10) { state_pert(i, j, k, RhoScalar_comp)=A_0 *exp(-0.1 *r2d_xz *r2d_xz)+B_0 *sin(x);} else if(prob_type==11) { if(r2d_xz_nd< 1.0) { state_pert(i, j, k, RhoScalar_comp)=0.5 *A_0 *(1.0+std::cos(PI *r2d_xz_nd));} } else { if(r3d< r0) { state_pert(i, j, k, RhoScalar_comp)=A_0;} } state_pert(i, j, k, RhoScalar_comp) *=rho_0;})
 

Variables

Real A_0 = 1.0
 
Real B_0 = 0.0
 
Real rad_0 = 0.0
 
Real rho_0 = 1.0
 
Real xc_frac = 0.5
 
Real yc_frac = 0.5
 
Real zc_frac = 0.5
 
int prob_type = -1
 
Real xradius = 10.0
 
Real zradius = 10.0
 

Function Documentation

◆ AMREX_ALWAYS_ASSERT()

AMREX_ALWAYS_ASSERT ( sc.  terrain_type = =TerrainType::EB)

◆ ParallelFor()

ParallelFor ( bx  ,
[=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept { const Real *prob_lo=geomdata.ProbLo();const Real *prob_hi=geomdata.ProbHi();const Real *dx=geomdata.CellSize();const Real x=prob_lo[0]+(i+0.5) *dx[0];const Real y=prob_lo[1]+(j+0.5) *dx[1];const Real z=prob_lo[2]+(k+0.5) *dx[2];const Real xc=xc_frac *(prob_lo[0]+prob_hi[0]);const Real yc=yc_frac *(prob_lo[1]+prob_hi[1]);const Real zc=zc_frac *(prob_lo[2]+prob_hi[2]);const Real r0=rad_0 *(prob_hi[0] - prob_lo[0]);const Real r3d=std::sqrt((x-xc) *(x-xc)+(y-yc) *(y-yc)+(z-zc) *(z-zc));const Real r2d_xz=std::sqrt((x-xc) *(x-xc)+(z-zc) *(z-zc));const Real r2d_xz_nd=std::sqrt((x-xc) *(x-xc)/xradius/xradius+(z-zc) *(z-zc)/zradius/zradius);if(prob_type==10) { state_pert(i, j, k, RhoScalar_comp)=A_0 *exp(-0.1 *r2d_xz *r2d_xz)+B_0 *sin(x);} else if(prob_type==11) { if(r2d_xz_nd< 1.0) { state_pert(i, j, k, RhoScalar_comp)=0.5 *A_0 *(1.0+std::cos(PI *r2d_xz_nd));} } else { if(r3d< r0) { state_pert(i, j, k, RhoScalar_comp)=A_0;} } state_pert(i, j, k, RhoScalar_comp) *=rho_0;}   
)
Here is the call graph for this function:

◆ pp()

ParmParse pp ( "prob"  )

◆ query() [1/10]

pp query ( "A_0"  ,
A_0   
)

◆ query() [2/10]

pp query ( "B_0"  ,
B_0   
)

◆ query() [3/10]

pp query ( "prob_type"  ,
prob_type   
)

◆ query() [4/10]

pp query ( "rad_0"  ,
rad_0   
)

◆ query() [5/10]

pp query ( "rho_0"  ,
rho_0   
)

◆ query() [6/10]

pp query ( "xc_frac"  ,
xc_frac   
)

◆ query() [7/10]

pp query ( "xradius"  ,
xradius   
)

◆ query() [8/10]

pp query ( "yc_frac"  ,
yc_frac   
)

◆ query() [9/10]

pp query ( "zc_frac"  ,
zc_frac   
)

◆ query() [10/10]

pp query ( "zradius"  ,
zradius   
)

Variable Documentation

◆ A_0

Real A_0 = 1.0

Referenced by ParallelFor().

◆ B_0

Real B_0 = 0.0

Referenced by ParallelFor().

◆ prob_type

int prob_type = -1

Referenced by ParallelFor().

◆ rad_0

Real rad_0 = 0.0

Referenced by ParallelFor().

◆ rho_0

Real rho_0 = 1.0

Referenced by ParallelFor().

◆ xc_frac

Real xc_frac = 0.5

Referenced by ParallelFor().

◆ xradius

Real xradius = 10.0

Referenced by ParallelFor().

◆ yc_frac

Real yc_frac = 0.5

Referenced by ParallelFor().

◆ zc_frac

Real zc_frac = 0.5

Referenced by ParallelFor().

◆ zradius

Real zradius = 10.0

Referenced by ParallelFor().