8#ifndef HYDRO_GODUNOV_PPM_H
9#define HYDRO_GODUNOV_PPM_H
31 if (std::abs(dsp) < std::abs(dsm)) {
146 return (dsl*dsr > small_qty_sq) ?
247 const amrex::Real t5 = amrex::Math::abs(beta3 - beta1);
252 const amrex::Real omega = omega1 + omega2 + omega3;
258 return (omega1 * v_1 + omega2 * v_2 + omega3 * v_3) / (
amrex::Real(6) * omega);
269 return sedge2(sp2,sp1,s0,sm1,sm2);
315 const amrex::Real omega = omega1 + omega2 + omega3;
321 return (omega1 * v_1 + omega2 * v_2 + omega3 * v_3) / (
amrex::Real(6) * omega);
332 return sedge2(sp2,sp1,s0,sm1,sm2);
417template <
typename Limiter>
419void SetXBCs (
const int i,
const int j,
const int k,
const int n,
424 const int bclo,
const int bchi,
425 const int domlo,
const int domhi)
427 using namespace amrex;
433 if ( (bclo == BCType::ext_dir) || (bclo == BCType::hoextrap) ||
434 (bclo == BCType::direction_dependent && vel_dlo >=
Real(0)) )
440 if constexpr (Limiter::do_limiting) {
445 sm = s(domlo-1,j,k,n);
448 }
else if (i == domlo+1) {
452 if constexpr (Limiter::do_limiting) {
460 if constexpr (Limiter::do_limiting) {
461 if ( (sp - s(domlo+1,j,k,n))*(s(domlo+1,j,k,n) - sm) <=
amrex::Real(0))
463 sp = s(domlo+1,j,k,n);
464 sm = s(domlo+1,j,k,n);
465 }
else if(amrex::Math::abs(sp - s(domlo+1,j,k,n)) >=
amrex::Real(2)*amrex::Math::abs(sm - s(domlo+1,j,k,n))) {
467 }
else if(amrex::Math::abs(sm - s(domlo+1,j,k,n)) >=
amrex::Real(2)*amrex::Math::abs(sp - s(domlo+1,j,k,n))) {
475 if ( (bchi == BCType::ext_dir) || (bchi == BCType::hoextrap) ||
476 (bchi == BCType::direction_dependent && vel_dhi <=
Real(0)) )
482 if constexpr (Limiter::do_limiting) {
487 sp = s(domhi+1,j,k,n);
490 }
else if (i == domhi-1) {
494 if constexpr (Limiter::do_limiting) {
502 if constexpr (Limiter::do_limiting) {
503 if( (sp - s(domhi-1,j,k,n))*(s(domhi-1,j,k,n) - sm) <=
amrex::Real(0))
505 sp = s(domhi-1,j,k,n);
506 sm = s(domhi-1,j,k,n);
507 }
else if(amrex::Math::abs(sp - s(domhi-1,j,k,n)) >=
amrex::Real(2.)*amrex::Math::abs(sm - s(domhi-1,j,k,n))) {
509 }
else if(amrex::Math::abs(sm - s(domhi-1,j,k,n)) >=
amrex::Real(2.)*amrex::Math::abs(sp - s(domhi-1,j,k,n))) {
517template <
typename Limiter>
519void SetYBCs (
const int i,
const int j,
const int k,
const int n,
524 const int bclo,
const int bchi,
525 const int domlo,
const int domhi)
527 using namespace amrex;
533 if ( (bclo == BCType::ext_dir) || (bclo == BCType::hoextrap) ||
534 (bclo == BCType::direction_dependent && vel_dlo >=
Real(0)) )
540 if constexpr (Limiter::do_limiting) {
545 sm = s(i,domlo-1,k,n);
548 }
else if (j == domlo+1) {
552 if constexpr (Limiter::do_limiting) {
560 if constexpr (Limiter::do_limiting) {
561 if ( (sp - s(i,domlo+1,k,n))*(s(i,domlo+1,k,n) - sm) <=
amrex::Real(0))
563 sp = s(i,domlo+1,k,n);
564 sm = s(i,domlo+1,k,n);
565 }
else if(amrex::Math::abs(sp - s(i,domlo+1,k,n)) >=
amrex::Real(2)*amrex::Math::abs(sm - s(i,domlo+1,k,n))) {
567 }
else if(amrex::Math::abs(sm - s(i,domlo+1,k,n)) >=
amrex::Real(2)*amrex::Math::abs(sp - s(i,domlo+1,k,n))) {
575 if ( (bchi == BCType::ext_dir) || (bchi == BCType::hoextrap) ||
576 (bchi == BCType::direction_dependent && vel_dhi <=
Real(0)) )
582 if constexpr (Limiter::do_limiting) {
587 sp = s(i,domhi+1,k, n);
590 }
else if (j == domhi-1) {
594 if constexpr (Limiter::do_limiting) {
602 if constexpr (Limiter::do_limiting) {
603 if( (sp - s(i,domhi-1,k,n))*(s(i,domhi-1,k,n) - sm) <=
amrex::Real(0)){
604 sp = s(i,domhi-1,k,n);
605 sm = s(i,domhi-1,k,n);
606 }
else if(amrex::Math::abs(sp - s(i,domhi-1,k,n)) >=
amrex::Real(2.)*amrex::Math::abs(sm - s(i,domhi-1,k,n))) {
608 }
else if(amrex::Math::abs(sm - s(i,domhi-1,k,n)) >=
amrex::Real(2.)*amrex::Math::abs(sp - s(i,domhi-1,k,n))) {
616#if (AMREX_SPACEDIM==3)
617template <
typename Limiter>
619void SetZBCs (
const int i,
const int j,
const int k,
const int n,
624 const int bclo,
const int bchi,
625 const int domlo,
const int domhi)
627 using namespace amrex;
633 if ( (bclo == BCType::ext_dir) || (bclo == BCType::hoextrap) ||
634 (bclo == BCType::direction_dependent && vel_dlo >=
Real(0)) )
640 if constexpr (Limiter::do_limiting) {
645 sm = s(i,j,domlo-1,n);
648 }
else if (k == domlo+1) {
652 if constexpr (Limiter::do_limiting) {
660 if constexpr (Limiter::do_limiting) {
661 if ( (sp - s(i,j,domlo+1,n))*(s(i,j,domlo+1,n) - sm) <=
amrex::Real(0.) )
663 sp = s(i,j,domlo+1,n);
664 sm = s(i,j,domlo+1,n);
665 }
else if(amrex::Math::abs(sp - s(i,j,domlo+1,n)) >=
amrex::Real(2.)*amrex::Math::abs(sm - s(i,j,domlo+1,n))) {
667 }
else if(amrex::Math::abs(sm - s(i,j,domlo+1,n)) >=
amrex::Real(2.)*amrex::Math::abs(sp - s(i,j,domlo+1,n))) {
675 if ( (bchi == BCType::ext_dir) || (bchi == BCType::hoextrap) ||
676 (bchi == BCType::direction_dependent && vel_dhi <=
Real(0)) )
682 if constexpr (Limiter::do_limiting) {
687 sp = s(i,j,domhi+1,n);
690 }
else if (k == domhi-1) {
694 if constexpr (Limiter::do_limiting) {
702 if constexpr (Limiter::do_limiting) {
703 if ( (sp - s(i,j,domhi-1,n))*(s(i,j,domhi-1,n) - sm) <=
amrex::Real(0.) )
705 sp = s(i,j,domhi-1,n);
706 sm = s(i,j,domhi-1,n);
707 }
else if(amrex::Math::abs(sp - s(i,j,domhi-1,n)) >=
amrex::Real(2.)*amrex::Math::abs(sm - s(i,j,domhi-1,n))) {
709 }
else if(amrex::Math::abs(sm - s(i,j,domhi-1,n)) >=
amrex::Real(2.)*amrex::Math::abs(sp - s(i,j,domhi-1,n))) {
723template <
typename Limiter>
731 const amrex::BCRec bc,
const int domlo,
const int domhi,
744 amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
745 amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
747 auto [sm, sp] = Limiter::sm_sp(s0, sedge1, sedge2);
749 SetXBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, vel_dlo, vel_dhi,
750 bc.
lo(0), bc.
hi(0), domlo, domhi);
754 const amrex::Real sigma = amrex::Math::abs(v_ad)*dtdx;
758 Ip(i,j,k,n) = sp - (half*sigma)*((sp-sm) - (one - two3rds*sigma)*s6);
759 Im(i,j,k,n) = S(i,j,k,n);
763 Ip(i,j,k,n) = S(i,j,k,n);
764 Im(i,j,k,n) = sm + (half*sigma)*((sp-sm) + (one - two3rds*sigma)*s6);
767 Ip(i,j,k,n) = S(i,j,k,n);
768 Im(i,j,k,n) = S(i,j,k,n);
772template <
typename Limiter>
780 const amrex::BCRec bc,
const int domlo,
const int domhi,
793 amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
794 amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
796 auto [sm, sp] = Limiter::sm_sp(s0, sedge1, sedge2);
798 SetYBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, vel_dlo, vel_dhi,
799 bc.
lo(1), bc.
hi(1), domlo, domhi);
803 const amrex::Real sigma = amrex::Math::abs(v_ad)*dtdy;
807 Ip(i,j,k,n) = sp - (half*sigma)*((sp-sm) - (one - two3rds*sigma)*s6);
808 Im(i,j,k,n) = S(i,j,k,n);
812 Ip(i,j,k,n) = S(i,j,k,n);
813 Im(i,j,k,n) = sm + (half*sigma)*((sp-sm) + (one - two3rds*sigma)*s6);
816 Ip(i,j,k,n) = S(i,j,k,n);
817 Im(i,j,k,n) = S(i,j,k,n);
821#if (AMREX_SPACEDIM==3)
822template <
typename Limiter>
824void PredictVelOnZFace (
const int i,
const int j,
const int k,
const int n,
830 const amrex::BCRec bc,
const int domlo,
const int domhi,
843 amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
844 amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
846 auto [sm, sp] = Limiter::sm_sp(s0, sedge1, sedge2);
848 SetZBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, vel_dlo, vel_dhi,
849 bc.
lo(2), bc.
hi(2), domlo, domhi);
853 const amrex::Real sigma = amrex::Math::abs(v_ad)*dtdz;
857 Ip(i,j,k,n) = sp - (half*sigma)*((sp-sm) - (one - two3rds*sigma)*s6);
858 Im(i,j,k,n) = S(i,j,k,n);
862 Ip(i,j,k,n) = S(i,j,k,n);
863 Im(i,j,k,n) = sm + (half*sigma)*((sp-sm) + (one - two3rds*sigma)*s6);
866 Ip(i,j,k,n) = S(i,j,k,n);
867 Im(i,j,k,n) = S(i,j,k,n);
876template <
typename Limiter>
884 const int domlo,
const int domhi,
895 const amrex::Real sigmap = amrex::Math::abs(vel_edge(i+1,j,k))*dt/dx;
896 const amrex::Real sigmam = amrex::Math::abs(vel_edge(i ,j,k))*dt/dx;
903 amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
904 amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
906 auto [sm, sp] = Limiter::sm_sp(s0, sedge1, sedge2);
914 ? vel_edge(domlo ,j,k) : vel_edge(i,j,k);
916 ? vel_edge(domhi+1,j,k) : vel_edge(i+1,j,k);
917 SetXBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, vel_dlo, vel_dhi,
918 bc.
lo(0), bc.
hi(0), domlo, domhi);
923 Ip = sp - (half*sigmap)*((sp - sm) - (one -two3rds*sigmap)*s6);
929 Im = sm + (half*sigmam)*((sp-sm) + (one - two3rds*sigmam)*s6);
943 const int ,
const int ,
960 const int domlo,
const int domhi,
971 const amrex::Real sigmap = amrex::Math::abs(vel_edge(i+1,j,k))*dt/dx;
972 const amrex::Real sigmam = amrex::Math::abs(vel_edge(i ,j,k))*dt/dx;
981 Ip = s0 + half * (one - sigmap) * dsp;
987 Im = s0 - half * (one - sigmam) * dsm;
993template <
typename Limiter>
1001 const int domlo,
const int domhi,
1012 const amrex::Real sigmap = amrex::Math::abs(vel_edge(i,j+1,k))*dt/dx;
1013 const amrex::Real sigmam = amrex::Math::abs(vel_edge(i,j ,k))*dt/dx;
1020 amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
1021 amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
1023 auto [sm, sp] = Limiter::sm_sp(s0, sedge1, sedge2);
1031 ? vel_edge(i,domlo ,k) : vel_edge(i,j,k);
1033 ? vel_edge(i,domhi+1,k) : vel_edge(i,j+1,k);
1034 SetYBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, vel_dlo, vel_dhi,
1035 bc.
lo(1), bc.
hi(1), domlo, domhi);
1040 Ip = sp - (half*sigmap)*((sp - sm) - (one -two3rds*sigmap)*s6);
1046 Im = sm + (half*sigmam)*((sp-sm) + (one - two3rds*sigmam)*s6);
1061 const int ,
const int ,
1078 const int domlo,
const int domhi,
1089 const amrex::Real sigmap = amrex::Math::abs(vel_edge(i,j+1,k))*dt/dx;
1090 const amrex::Real sigmam = amrex::Math::abs(vel_edge(i,j ,k))*dt/dx;
1099 Ip = s0 + half * (one - sigmap) * dsp;
1104 Im = s0 - half * (one - sigmam) * dsm;
1111#if (AMREX_SPACEDIM==3)
1112template <
typename Limiter>
1114void PredictStateOnZFace (
const int i,
const int j,
const int k,
const int n,
1120 const int domlo,
const int domhi,
1130 const amrex::Real sigmap = amrex::Math::abs(vel_edge(i,j,k+1))*dt/dx;
1131 const amrex::Real sigmam = amrex::Math::abs(vel_edge(i,j,k ))*dt/dx;
1138 amrex::Real sedge1 = Limiter::sedge1(sm2,sm1,s0,sp1,sp2);
1139 amrex::Real sedge2 = Limiter::sedge2(sm2,sm1,s0,sp1,sp2);
1141 auto [sm, sp] = Limiter::sm_sp(s0, sedge1, sedge2);
1149 ? vel_edge(i,j,domlo ) : vel_edge(i,j,k);
1151 ? vel_edge(i,j,domhi+1) : vel_edge(i,j,k+1);
1152 SetZBCs<Limiter>(i, j, k, n, sm, sp, sedge1, sedge2, S, vel_dlo, vel_dhi,
1153 bc.
lo(2), bc.
hi(2), domlo, domhi);
1158 Ip = sp - (half*sigmap)*((sp-sm) - (
amrex::Real(1.0) -two3rds*sigmap)*s6);
1164 Im = sm + (half*sigmam)*((sp-sm) + (
amrex::Real(1.0) - two3rds*sigmam)*s6);
1172void PredictStateOnZFace<PPM::upwind> (
const int i,
const int j,
const int k,
const int n,
1178 const int ,
const int ,
1188void PredictStateOnZFace<PPM::minmod> (
const int i,
const int j,
const int k,
const int n,
1194 const int domlo,
const int domhi,
1205 const amrex::Real sigmap = amrex::Math::abs(vel_edge(i,j,k+1))*dt/dx;
1206 const amrex::Real sigmam = amrex::Math::abs(vel_edge(i,j,k ))*dt/dx;
1214 if (vel_edge(i, j, k + 1) >
small_vel) {
1215 Ip = s0 + half * (one - sigmap) * dsp;
1221 Im = s0 - half * (one - sigmam) * dsm;
1228template <
typename Limiter>
1241 const Limiter& limiter,
1254 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n)
noexcept
1269 PredictVelOnXFace(i,j,k,n,l_dtdx,vel(i,j,k,0),xlo_v,xhi_v,q,Imx,Ipx,bc,dlo.
x,dhi.
x,limiter);
1270 PredictVelOnYFace(i,j,k,n,l_dtdy,vel(i,j,k,1),ylo_v,yhi_v,q,Imy,Ipy,bc,dlo.
y,dhi.
y,limiter);
1271#if (AMREX_SPACEDIM==3)
1274 PredictVelOnZFace(i,j,k,n,l_dtdz,vel(i,j,k,2),zlo_v,zhi_v,q,Imz,Ipz,bc,dlo.
z,dhi.
z,limiter);
1279template <
typename Limiter>
1295 const Limiter& limiter,
1305 const auto dz = geom.
CellSize(2););
1308 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n)
noexcept
1313 PPM::PredictStateOnXFace(i, j, k, n, l_dt, dx, Imx(i,j,k,n), Ipx(i,j,k,n),
1314 q, umac, bc, dlo.
x, dhi.
x, limiter, limiter_type);
1315 PPM::PredictStateOnYFace(i, j, k, n, l_dt, dy, Imy(i,j,k,n), Ipy(i,j,k,n),
1316 q, vmac, bc, dlo.
y, dhi.
y, limiter, limiter_type);
1317#if (AMREX_SPACEDIM==3)
1318 PPM::PredictStateOnZFace(i, j, k, n, l_dt, dz, Imz(i,j,k,n), Ipz(i,j,k,n),
1319 q, wmac, bc, dlo.
z, dhi.
z, limiter, limiter_type);
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
#define AMREX_D_TERM(a, b, c)
#define AMREX_D_DECL(a, b, c)
__host__ __device__ const int * hi() const &noexcept
__host__ __device__ const int * lo() const &noexcept
const Real * CellSize() const noexcept
GpuArray< Real, 3 > CellSizeArray() const noexcept
const Box & Domain() const noexcept
constexpr amrex::Real eps
Definition hydro_bds_edge_state_2D.cpp:17
static constexpr amrex::Real small_vel
Definition hydro_constants.H:37
__host__ __device__ Dim3 ubound(Array4< T > const &a) noexcept
__host__ __device__ Dim3 lbound(Array4< T > const &a) noexcept
__host__ __device__ constexpr const T & min(const T &a, const T &b) noexcept
__host__ __device__ constexpr const T & max(const T &a, const T &b) noexcept
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void Godunov_minmod_bc_lo(const int n, const amrex::Real sm1, const amrex::Real s0, const amrex::Real vel_edge, amrex::Real &dsm, const int bclo, const int domlo)
Definition hydro_godunov_ppm.H:45
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void minmod_fn(const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, amrex::Real &dsm, amrex::Real &dsp)
Definition hydro_godunov_ppm.H:19
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void Godunov_minmod_bc_hi(const int n, const amrex::Real s0, const amrex::Real sp1, const amrex::Real vel_edge, amrex::Real &dsp, const int bchi, const int domhi)
Definition hydro_godunov_ppm.H:65
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::BCRec getBC(const int i, const int j, const int k, const int n, const amrex::Box &m_domain, const amrex::BCRec *bcr, amrex::Array4< int const > const &bca)
Definition hydro_bcs_K.H:34
Definition hydro_godunov_ppm.H:83
void PredictVelOnFaces(amrex::Box const &bx, AMREX_D_DECL(amrex::Array4< amrex::Real > const &Imx, amrex::Array4< amrex::Real > const &Imy, amrex::Array4< amrex::Real > const &Imz), AMREX_D_DECL(amrex::Array4< amrex::Real > const &Ipx, amrex::Array4< amrex::Real > const &Ipy, amrex::Array4< amrex::Real > const &Ipz), amrex::Array4< amrex::Real const > const &q, amrex::Array4< amrex::Real const > const &vel, amrex::Geometry geom, amrex::Real dt, amrex::BCRec const *pbc, const Limiter &limiter, amrex::Array4< int const > const &bc_arr={})
Definition hydro_godunov_ppm.H:1229
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetXBCs(const int i, const int j, const int k, const int n, amrex::Real &sm, amrex::Real &sp, amrex::Real &sedge1, amrex::Real &sedge2, const amrex::Array4< const amrex::Real > &s, const amrex::Real vel_dlo, const amrex::Real vel_dhi, const int bclo, const int bchi, const int domlo, const int domhi)
Definition hydro_godunov_ppm.H:419
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictStateOnXFace(const int i, const int j, const int k, const int n, const amrex::Real dt, const amrex::Real dx, amrex::Real &Im, amrex::Real &Ip, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< const amrex::Real > &vel_edge, const amrex::BCRec bc, const int domlo, const int domhi, const Limiter &, int)
Definition hydro_godunov_ppm.H:878
static constexpr int default_limiter
Definition hydro_godunov_ppm.H:87
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictVelOnYFace(const int i, const int j, const int k, const int n, const amrex::Real dtdy, const amrex::Real v_ad, const amrex::Real vel_dlo, const amrex::Real vel_dhi, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< amrex::Real > &Im, const amrex::Array4< amrex::Real > &Ip, const amrex::BCRec bc, const int domlo, const int domhi, const Limiter &)
Definition hydro_godunov_ppm.H:774
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictStateOnXFace< PPM::minmod >(const int i, const int j, const int k, const int n, const amrex::Real dt, const amrex::Real dx, amrex::Real &Im, amrex::Real &Ip, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< const amrex::Real > &vel_edge, const amrex::BCRec bc, const int domlo, const int domhi, const PPM::minmod &, int)
Definition hydro_godunov_ppm.H:954
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictStateOnXFace< PPM::upwind >(const int i, const int j, const int k, const int n, const amrex::Real, const amrex::Real, amrex::Real &Im, amrex::Real &Ip, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< const amrex::Real > &, const amrex::BCRec, const int, const int, const PPM::upwind &, int)
Definition hydro_godunov_ppm.H:937
void PredictStateOnFaces(amrex::Box const &bx, AMREX_D_DECL(amrex::Array4< amrex::Real > const &Imx, amrex::Array4< amrex::Real > const &Imy, amrex::Array4< amrex::Real > const &Imz), AMREX_D_DECL(amrex::Array4< amrex::Real > const &Ipx, amrex::Array4< amrex::Real > const &Ipy, amrex::Array4< amrex::Real > const &Ipz), AMREX_D_DECL(amrex::Array4< amrex::Real const > const &umac, amrex::Array4< amrex::Real const > const &vmac, amrex::Array4< amrex::Real const > const &wmac), amrex::Array4< amrex::Real const > const &q, amrex::Geometry geom, amrex::Real l_dt, amrex::BCRec const *pbc, const int ncomp, const Limiter &limiter, int limiter_type, amrex::Array4< int const > const &bc_arr={})
Definition hydro_godunov_ppm.H:1280
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void SetYBCs(const int i, const int j, const int k, const int n, amrex::Real &sm, amrex::Real &sp, amrex::Real &sedge1, amrex::Real &sedge2, const amrex::Array4< const amrex::Real > &s, const amrex::Real vel_dlo, const amrex::Real vel_dhi, const int bclo, const int bchi, const int domlo, const int domhi)
Definition hydro_godunov_ppm.H:519
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictStateOnYFace(const int i, const int j, const int k, const int n, const amrex::Real dt, const amrex::Real dx, amrex::Real &Im, amrex::Real &Ip, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< const amrex::Real > &vel_edge, const amrex::BCRec bc, const int domlo, const int domhi, const Limiter &, int)
Definition hydro_godunov_ppm.H:995
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictStateOnYFace< PPM::minmod >(const int i, const int j, const int k, const int n, const amrex::Real dt, const amrex::Real dx, amrex::Real &Im, amrex::Real &Ip, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< const amrex::Real > &vel_edge, const amrex::BCRec bc, const int domlo, const int domhi, const PPM::minmod &, int)
Definition hydro_godunov_ppm.H:1072
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictStateOnYFace< PPM::upwind >(const int i, const int j, const int k, const int n, const amrex::Real, const amrex::Real, amrex::Real &Im, amrex::Real &Ip, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< const amrex::Real > &, const amrex::BCRec, const int, const int, const PPM::upwind &, int)
Definition hydro_godunov_ppm.H:1055
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void PredictVelOnXFace(const int i, const int j, const int k, const int n, const amrex::Real dtdx, const amrex::Real v_ad, const amrex::Real vel_dlo, const amrex::Real vel_dhi, const amrex::Array4< const amrex::Real > &S, const amrex::Array4< amrex::Real > &Im, const amrex::Array4< amrex::Real > &Ip, const amrex::BCRec bc, const int domlo, const int domhi, const Limiter &)
Definition hydro_godunov_ppm.H:725
limiters
Definition hydro_godunov_ppm.H:85
@ MINMOD
Definition hydro_godunov_ppm.H:85
@ VanLeer
Definition hydro_godunov_ppm.H:85
@ WENOZ
Definition hydro_godunov_ppm.H:85
@ WENO_JS
Definition hydro_godunov_ppm.H:85
@ NoLimiter
Definition hydro_godunov_ppm.H:85
@ UPWIND
Definition hydro_godunov_ppm.H:85
__host__ __device__ constexpr GpuTuple< detail::tuple_decay_t< Ts >... > makeTuple(Ts &&... args)
void ParallelFor(TypeList< CTOs... > ctos, std::array< int, sizeof...(CTOs)> const &runtime_options, T N, F &&f)
Definition hydro_godunov_ppm.H:381
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::GpuTuple< amrex::Real, amrex::Real > sm_sp(const amrex::Real, const amrex::Real sedge1, const amrex::Real sedge2)
Definition hydro_godunov_ppm.H:409
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge1(const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real)
Definition hydro_godunov_ppm.H:387
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge2(const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real)
Definition hydro_godunov_ppm.H:398
static constexpr bool do_limiting
Definition hydro_godunov_ppm.H:383
Definition hydro_godunov_ppm.H:89
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::GpuTuple< amrex::Real, amrex::Real > sm_sp(const amrex::Real, const amrex::Real sedge1, const amrex::Real sedge2)
Definition hydro_godunov_ppm.H:126
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge2(const amrex::Real, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition hydro_godunov_ppm.H:111
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge1(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real)
Definition hydro_godunov_ppm.H:95
static constexpr bool do_limiting
Definition hydro_godunov_ppm.H:91
Definition hydro_godunov_ppm.H:345
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge1(const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real)
Definition hydro_godunov_ppm.H:351
static constexpr bool do_limiting
Definition hydro_godunov_ppm.H:347
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::GpuTuple< amrex::Real, amrex::Real > sm_sp(const amrex::Real, const amrex::Real sedge1, const amrex::Real sedge2)
Definition hydro_godunov_ppm.H:373
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge2(const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real, const amrex::Real)
Definition hydro_godunov_ppm.H:362
Definition hydro_godunov_ppm.H:134
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::GpuTuple< amrex::Real, amrex::Real > sm_sp(const amrex::Real s0, const amrex::Real sedge1, const amrex::Real sedge2)
Definition hydro_godunov_ppm.H:188
static constexpr bool do_limiting
Definition hydro_godunov_ppm.H:136
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge2(const amrex::Real, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition hydro_godunov_ppm.H:170
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real vanLeer(const amrex::Real a, const amrex::Real b, const amrex::Real c)
Definition hydro_godunov_ppm.H:139
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge1(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real)
Definition hydro_godunov_ppm.H:153
Definition hydro_godunov_ppm.H:282
static constexpr bool do_limiting
Definition hydro_godunov_ppm.H:284
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge1(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition hydro_godunov_ppm.H:326
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::GpuTuple< amrex::Real, amrex::Real > sm_sp(const amrex::Real, const amrex::Real sedge1, const amrex::Real sedge2)
Definition hydro_godunov_ppm.H:337
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge2(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition hydro_godunov_ppm.H:288
Definition hydro_godunov_ppm.H:223
static constexpr bool do_limiting
Definition hydro_godunov_ppm.H:225
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge2(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition hydro_godunov_ppm.H:229
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::GpuTuple< amrex::Real, amrex::Real > sm_sp(const amrex::Real, const amrex::Real sedge1, const amrex::Real sedge2)
Definition hydro_godunov_ppm.H:274
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real sedge1(const amrex::Real sm2, const amrex::Real sm1, const amrex::Real s0, const amrex::Real sp1, const amrex::Real sp2)
Definition hydro_godunov_ppm.H:263