28 "prob.rad_0 must be > 0 for prob.prob_type = 11, 12 and 13");
35 const Real*
dx = geomdata.CellSize();
#define RhoScalar_comp
Definition: ERF_IndexDefines.H:57
#define RhoTheta_comp
Definition: ERF_IndexDefines.H:54
const Real zc
Definition: ERF_InitCustomPert_ABL.H:56
const Real yc
Definition: ERF_InitCustomPert_ABL.H:55
const Real xc
Definition: ERF_InitCustomPert_ABL.H:54
const Real dx
Definition: ERF_InitCustomPert_ABL.H:44
AMREX_ALWAYS_ASSERT_WITH_MESSAGE(axis >=0 &&axis< AMREX_SPACEDIM, "prob.axis must be 0, 1 or 2")
const GpuArray< Real, AMREX_SPACEDIM > prob_lo
Definition: ERF_InitCustomPert_CloudChamber.H:33
const amrex::Real * prob_hi
Definition: ERF_InitCustomPert_DataAssimilation_ISV.H:17
const bool use_z_phys
Definition: ERF_InitCustomPert_ScalarAdvDiff.H:4
ParallelFor(bx, [=, one_d=one] 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+myhalf) *dx[0];const Real y=prob_lo[1]+(j+myhalf) *dx[1];const Real z=use_z_phys ? z_cc(i, j, k) :prob_lo[2]+(k+myhalf) *dx[2];const Real xc=prob_lo[0]+xc_frac *(prob_hi[0] - prob_lo[0]);const Real yc=prob_lo[1]+yc_frac *(prob_hi[1] - prob_lo[1]);const Real zc=phys_z_lo+zc_frac *(phys_z_hi - phys_z_lo);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_xy=std::sqrt((x-xc) *(x-xc)+(y-yc) *(y-yc));const Real r2d_xz=std::sqrt((x-xc) *(x-xc)+(z-zc) *(z-zc));if(prob_type==10) { state_pert(i, j, k, RhoScalar_comp)=A_0 *std::exp(-amrex::Real(10.) *r3d *r3d)+B_0 *std::sin(x);} else if(prob_type==11) { state_pert(i, j, k, RhoScalar_comp)=A_0 *fourth *(one_d+std::cos(PI *std::min(r2d_xy, r0)/r0));} else if(prob_type==12) { state_pert(i, j, k, RhoScalar_comp)=A_0 *fourth *(one_d+std::cos(PI *std::min(r2d_xz, r0)/r0));} else if(prob_type==13) { const Real r0_z=rad_0 *(phys_z_hi - phys_z_lo);const Real r2d_xz_ell=std::sqrt((x-xc) *(x-xc)/(r0 *r0)+(z-zc) *(z-zc)/(r0_z *r0_z));state_pert(i, j, k, RhoScalar_comp)=A_0 *fourth *(one_d+std::cos(PI *std::min(r2d_xz_ell, one_d)));} else if(prob_type==14) { state_pert(i, j, k, RhoScalar_comp)=std::cos(PI *x);} else { if(r3d< r0) { state_pert(i, j, k, RhoScalar_comp)=A_0;} else { state_pert(i, j, k, RhoScalar_comp)=zero;} } state_pert(i, j, k, RhoScalar_comp) *=rho_0;state_pert(i, j, k, RhoTheta_comp)+=theta_pert_amp *state_pert(i, j, k, RhoScalar_comp);})
Real B_0
Definition: ERF_InitCustomPert_ScalarAdvDiff.H:11
Real zc_frac
Definition: ERF_InitCustomPert_ScalarAdvDiff.H:17
Real xc_frac
Definition: ERF_InitCustomPert_ScalarAdvDiff.H:15
Real rho_0
Definition: ERF_InitCustomPert_ScalarAdvDiff.H:9
const Real phys_z_hi
Definition: ERF_InitCustomPert_ScalarAdvDiff.H:6
Real yc_frac
Definition: ERF_InitCustomPert_ScalarAdvDiff.H:16
int prob_type
Definition: ERF_InitCustomPert_ScalarAdvDiff.H:19
Real A_0
Definition: ERF_InitCustomPert_ScalarAdvDiff.H:10
Real rad_0
Definition: ERF_InitCustomPert_ScalarAdvDiff.H:12
Real theta_pert_amp
Definition: ERF_InitCustomPert_ScalarAdvDiff.H:23
const Real phys_z_lo
Definition: ERF_InitCustomPert_ScalarAdvDiff.H:5
constexpr amrex::Real one
Definition: ERF_NumericalConstants.H:37
constexpr amrex::Real fourth
Definition: ERF_NumericalConstants.H:42
constexpr amrex::Real zero
Definition: ERF_NumericalConstants.H:36
constexpr amrex::Real myhalf
Definition: ERF_NumericalConstants.H:41
constexpr amrex::Real PI
Definition: ERF_NumericalConstants.H:46
amrex::Real Real
Definition: ERF_ShocInterface.H:19
real(kind=kind_phys), parameter, private r0
Definition: ERF_module_mp_wdm6.F90:75