1 #ifndef ERF_TERRAIN_METRIC_H_
2 #define ERF_TERRAIN_METRIC_H_
5 #include <AMReX_Geometry.H>
6 #include <AMReX_MultiFab.H>
15 amrex::MultiFab& z_phys_nd, amrex::MultiFab& z_phys_cc,
24 init_zlevels (amrex::Vector<amrex::Vector<amrex::Real>>& zlevels_stag,
25 amrex::Vector<amrex::Vector<amrex::Real>>& stretched_dz_h,
26 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real>>& stretched_dz_d,
27 amrex::Vector<amrex::Geometry>
const& geom,
28 amrex::Vector<amrex::IntVect>
const& ref_ratio,
35 amrex::MultiFab& z_phys_nd,
36 amrex::Vector<amrex::Real>
const& z_levels_h,
37 amrex::GpuArray<ERF_BC, AMREX_SPACEDIM*2>& phys_bc_type);
41 amrex::MultiFab& z_phys_nd,
42 amrex::Vector<amrex::Real>
const& z_levels_h);
56 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
57 const amrex::Array4<const amrex::Real>& z_nd)
61 ( z_nd(i+1,j,k+1) + z_nd(i+1,j+1,k+1) + z_nd(i,j,k+1) + z_nd(i,j+1,k+1)
62 -z_nd(i+1,j,k ) - z_nd(i+1,j+1,k ) - z_nd(i,j,k ) - z_nd(i,j+1,k ) );
71 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
72 const amrex::Array4<const amrex::Real>& z_nd)
76 ( z_nd(i+1,j,k) + z_nd(i+1,j+1,k) + z_nd(i+1,j,k+1) + z_nd(i+1,j+1,k+1)
77 -z_nd(i ,j,k) - z_nd(i ,j+1,k) - z_nd(i ,j,k+1) - z_nd(i ,j+1,k+1) );
86 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
87 const amrex::Array4<const amrex::Real>& z_nd)
91 ( z_nd(i,j+1,k) + z_nd(i+1,j+1,k) + z_nd(i,j+1,k+1) + z_nd(i+1,j+1,k+1)
92 -z_nd(i,j ,k) - z_nd(i+1,j ,k) - z_nd(i,j ,k+1) - z_nd(i+1,j ,k+1) );
105 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
106 const amrex::Array4<const amrex::Real>& z_nd)
108 amrex::Real met_h_zeta =
myhalf * cellSizeInv[2] * ( (z_nd(i,j ,k+1) - z_nd(i,j ,k))
109 + (z_nd(i,j+1,k+1) - z_nd(i,j+1,k)) );
118 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
119 const amrex::Array4<const amrex::Real>& z_nd)
122 (z_nd(i+1,j ,k ) - z_nd(i-1,j ,k )) + (z_nd(i+1,j ,k+1) - z_nd(i-1,j ,k+1)) +
123 (z_nd(i+1,j+1,k ) - z_nd(i-1,j+1,k )) + (z_nd(i+1,j+1,k+1) - z_nd(i-1,j+1,k+1)) );
132 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
133 const amrex::Array4<const amrex::Real>& z_nd)
135 amrex::Real met_h_eta =
myhalf * cellSizeInv[1] * ( (z_nd(i,j+1,k ) - z_nd(i,j,k ))
136 + (z_nd(i,j+1,k+1) - z_nd(i,j,k+1)) );
145 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
146 const amrex::Array4<const amrex::Real>& z_nd)
148 amrex::Real met_h_zeta =
myhalf * cellSizeInv[2] * ( (z_nd(i ,j,k+1) - z_nd(i ,j,k ))
149 + (z_nd(i+1,j,k+1) - z_nd(i+1,j,k )) );
158 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
159 const amrex::Array4<const amrex::Real>& z_nd)
161 amrex::Real met_h_xi =
myhalf * cellSizeInv[0] * ( (z_nd(i+1,j,k ) - z_nd(i,j,k ))
162 + (z_nd(i+1,j,k+1) - z_nd(i,j,k+1)) );
171 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
172 const amrex::Array4<const amrex::Real>& z_nd)
175 ( (z_nd(i ,j+1,k ) - z_nd(i ,j-1,k )) + (z_nd(i ,j+1,k+1) - z_nd(i ,j-1,k+1)) +
176 (z_nd(i+1,j+1,k ) - z_nd(i+1,j-1,k )) + (z_nd(i+1,j+1,k+1) - z_nd(i+1,j-1,k+1)) );
185 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
186 const amrex::Array4<const amrex::Real>& z_nd)
189 ( (z_nd(i ,j ,k+1) - z_nd(i ,j ,k-1)) + (z_nd(i+1,j ,k+1) - z_nd(i+1,j ,k-1)) +
190 (z_nd(i ,j+1,k+1) - z_nd( i,j+1,k-1)) + (z_nd(i+1,j+1,k+1) - z_nd(i+1,j+1,k-1)) );
199 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
200 const amrex::Array4<const amrex::Real>& z_nd)
202 amrex::Real met_h_xi =
myhalf * cellSizeInv[0] * ( (z_nd(i+1,j ,k) - z_nd(i,j ,k))
203 + (z_nd(i+1,j+1,k) - z_nd(i,j+1,k)) );
212 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
213 const amrex::Array4<const amrex::Real>& z_nd)
215 amrex::Real met_h_eta =
myhalf * cellSizeInv[1] * ( (z_nd(i ,j+1,k) - z_nd(i ,j,k))
216 + (z_nd(i+1,j+1,k) - z_nd(i+1,j,k)) );
231 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
232 const amrex::Array4<const amrex::Real>& z_nd)
235 amrex::Real met_h_zeta = dzInv * (z_nd(i,j,k+1) - z_nd(i,j,k));
244 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
245 const amrex::Array4<const amrex::Real>& z_nd)
249 ( z_nd(i+1,j,k) + z_nd(i+1,j,k+1)
250 -z_nd(i-1,j,k) - z_nd(i-1,j,k+1) );
259 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
260 const amrex::Array4<const amrex::Real>& z_nd)
264 ( z_nd(i,j+1,k) + z_nd(i,j+1,k+1)
265 -z_nd(i,j-1,k) - z_nd(i,j-1,k+1) );
276 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
277 const amrex::Array4<const amrex::Real>& z_nd)
281 -z_nd(i,j,k-1) - z_nd(i,j+1,k-1) );
290 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
291 const amrex::Array4<const amrex::Real>& z_nd)
295 ( z_nd(i+1,j+1,k) + z_nd(i+1,j ,k)
296 -z_nd(i-1,j+1,k) - z_nd(i-1,j ,k) );
305 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
306 const amrex::Array4<const amrex::Real>& z_nd)
309 amrex::Real met_h_eta = dyInv * ( z_nd(i,j+1,k) - z_nd(i,j,k) );
320 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
321 const amrex::Array4<const amrex::Real>& z_nd)
325 -z_nd(i,j,k-1) - z_nd(i+1,j,k-1) );
334 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
335 const amrex::Array4<const amrex::Real>& z_nd)
347 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
348 const amrex::Array4<const amrex::Real>& z_nd)
352 ( z_nd(i+1,j+1,k) + z_nd(i,j+1,k)
353 -z_nd(i+1,j-1,k) - z_nd(i,j-1,k) );
362 const amrex::Array4<const amrex::Real>& z_nd)
365 + z_nd(i+1,j ,k ) + z_nd(i+1,j ,k+1)
366 + z_nd(i ,j+1,k ) + z_nd(i ,j+1,k+1)
367 + z_nd(i+1,j+1,k ) + z_nd(i+1,j+1,k+1));
377 const amrex::Array4<const amrex::Real>& z_nd)
380 + z_nd(i ,j+1,k ) + z_nd(i+1,j+1,k ) );
390 const amrex::Array4<const amrex::Real>& z_nd)
393 + z_nd(i+1,j ,k ) + z_nd(i+1,j ,k+1)
394 + z_nd(i ,j+1,k ) + z_nd(i ,j+1,k+1)
395 + z_nd(i+1,j+1,k ) + z_nd(i+1,j+1,k+1));
400 + z_nd(i+1,j ,0) + z_nd(i+1,j+1,0));
402 return (z_cc - z0_cc);
415 const amrex::Array4<const amrex::Real>& u_arr,
416 const amrex::Array4<const amrex::Real>& v_arr,
417 const amrex::Array4<const amrex::Real>& mf_u,
418 const amrex::Array4<const amrex::Real>& mf_v,
419 const amrex::Array4<const amrex::Real>& z_nd,
420 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv)
440 myhalf * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
442 myhalf * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
447 myhalf * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
449 myhalf * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
465 const amrex::Array4<const amrex::Real>& u_arr,
466 const amrex::Array4<const amrex::Real>& v_arr,
467 const amrex::Array4<const amrex::Real>& mf_u,
468 const amrex::Array4<const amrex::Real>& mf_v,
469 const amrex::Array4<const amrex::Real>& z_nd,
470 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv)
490 myhalf * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
492 myhalf * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
497 myhalf * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
499 myhalf * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
520 const amrex::Array4<const amrex::Real>& u_arr,
521 const amrex::Array4<const amrex::Real>& v_arr,
522 const amrex::Array4<const amrex::Real>& mf_u,
523 const amrex::Array4<const amrex::Real>& mf_v,
524 const amrex::Array4<const amrex::Real>& z_nd,
525 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv)
539 myhalf * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
541 myhalf * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
546 myhalf * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
548 myhalf * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
564 const amrex::Array4<const amrex::Real>& u_arr,
565 const amrex::Array4<const amrex::Real>& v_arr,
566 const amrex::Array4<const amrex::Real>& mf_u,
567 const amrex::Array4<const amrex::Real>& mf_v,
568 const amrex::Array4<const amrex::Real>& z_nd,
569 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv)
583 myhalf * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
585 myhalf * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
590 myhalf * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
592 myhalf * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
615 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
616 const amrex::Array4<const amrex::Real>& zphys_arr,
617 const amrex::Array4<amrex::Real>& phi1_arr,
618 const amrex::Array4<amrex::Real>& phi2_arr,
619 const amrex::Array4<amrex::Real>& phi3_arr)
624 phi1_arr(i,j,klo) = -h_xi * flux * InvNorm;
625 phi2_arr(i,j,klo) = -h_eta * flux * InvNorm;
626 phi3_arr(i,j,klo) = flux * InvNorm;
636 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dxInv,
637 const amrex::Array4<const amrex::Real>& zphys_arr,
638 const amrex::Array4<const amrex::Real>& u_arr,
639 const amrex::Array4<const amrex::Real>& v_arr,
640 const amrex::Array4<const amrex::Real>& w_arr,
641 const amrex::Array4<amrex::Real>& tau11_arr,
642 const amrex::Array4<amrex::Real>& tau22_arr,
643 const amrex::Array4<amrex::Real>& tau33_arr,
644 const amrex::Array4<amrex::Real>& tau12_arr,
645 const amrex::Array4<amrex::Real>& tau21_arr,
646 const amrex::Array4<amrex::Real>& tau13_arr,
647 const amrex::Array4<amrex::Real>& tau31_arr,
648 const amrex::Array4<amrex::Real>& tau23_arr,
649 const amrex::Array4<amrex::Real>& tau32_arr)
652 amrex::Array1D<amrex::Real,0,2> n_hat;
655 amrex::Array1D<amrex::Real,0,2> t_hat_1;
656 amrex::Array1D<amrex::Real,0,2> t_hat_2;
657 amrex::Array1D<amrex::Real,0,2> u_t_hat;
660 amrex::Array1D<amrex::Real,0,2> a_hat;
663 amrex::Array2D<amrex::Real,0,2,0,2> R_mat;
672 n_hat(0) = Inormn*h_xi; n_hat(1) = Inormn*h_eta; n_hat(2) = -Inormn;
677 t_hat_1(0) = -Inorm1; t_hat_2(1) = -Inorm2;
678 t_hat_1(2) = -Inorm1*h_xi; t_hat_2(2) = -Inorm2*h_eta;
682 amrex::Real mag1 = (u_arr(i,j,klo) + h_xi *w_arr(i,j,klo))*Inorm1;
683 amrex::Real mag2 = (v_arr(i,j,klo) + h_eta*w_arr(i,j,klo))*Inorm2;
684 for (
int icol(0); icol<3; ++icol) {
685 u_t_hat(icol) = mag1*t_hat_1(icol) + mag2*t_hat_2(icol);
686 Norm_u_t += u_t_hat(icol)*u_t_hat(icol);
688 for (
int icol(0); icol<3; ++icol) {
689 u_t_hat(icol) /= std::sqrt(Norm_u_t);
693 a_hat(0) = n_hat(1)*u_t_hat(2) - n_hat(2)*u_t_hat(1);
694 a_hat(1) = -(n_hat(0)*u_t_hat(2) - n_hat(2)*u_t_hat(0));
695 a_hat(2) = n_hat(0)*u_t_hat(1) - n_hat(1)*u_t_hat(0);
700 for (
int icol(0); icol<3; ++icol) {
701 R_mat(icol,jrow) = u_t_hat(icol);
704 for (
int icol(0); icol<3; ++icol) {
705 R_mat(icol,jrow) = a_hat(icol);
708 for (
int icol(0); icol<3; ++icol) {
709 R_mat(icol,jrow) = n_hat(icol);
716 amrex::Real T12 = (R_mat(0,0)*R_mat(2,1) + R_mat(2,0)*R_mat(0,1))*flux;
717 amrex::Real T13 = (R_mat(0,0)*R_mat(2,2) + R_mat(0,2)*R_mat(2,0))*flux;
718 amrex::Real T23 = (R_mat(0,1)*R_mat(2,2) + R_mat(0,2)*R_mat(2,1))*flux;
721 tau11_arr(i,j,klo) = h_zeta*T11;
722 tau22_arr(i,j,klo) = h_zeta*T22;
723 tau33_arr(i,j,klo) = -h_xi*T13 - h_eta*T23 + T33;
725 tau12_arr(i,j,klo) = h_zeta*T12;
726 tau21_arr(i,j,klo) = tau21_arr(i,j,klo);
728 tau13_arr(i,j,klo) = -h_xi*T11 - h_eta*T12 + T13;
729 tau31_arr(i,j,klo) = h_zeta*T13;
731 tau23_arr(i,j,klo) = -h_xi*T12 - h_eta*T22 + T23;
732 tau32_arr(i,j,klo) = h_zeta*T23;
constexpr amrex::Real two
Definition: ERF_Constants.H:8
constexpr amrex::Real one
Definition: ERF_Constants.H:7
constexpr amrex::Real fourth
Definition: ERF_Constants.H:12
constexpr amrex::Real zero
Definition: ERF_Constants.H:6
constexpr amrex::Real myhalf
Definition: ERF_Constants.H:11
amrex::GpuArray< Real, AMREX_SPACEDIM > dxInv
Definition: ERF_InitCustomPertVels_ParticleTests.H:17
amrex::Real Real
Definition: ERF_ShocInterface.H:19
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real OmegaFromW(int &i, int &j, int &k, amrex::Real w, const amrex::Array4< const amrex::Real > &u_arr, const amrex::Array4< const amrex::Real > &v_arr, const amrex::Array4< const amrex::Real > &mf_u, const amrex::Array4< const amrex::Real > &mf_v, const amrex::Array4< const amrex::Real > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv)
Definition: ERF_TerrainMetrics.H:414
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtEdgeCenterJ(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:304
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtEdgeCenterK(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:243
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtEdgeCenterJ(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:289
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtIface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:117
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtEdgeCenterJ(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:275
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtEdgeCenterK(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:230
void init_zlevels(amrex::Vector< amrex::Vector< amrex::Real >> &zlevels_stag, amrex::Vector< amrex::Vector< amrex::Real >> &stretched_dz_h, amrex::Vector< amrex::Gpu::DeviceVector< amrex::Real >> &stretched_dz_d, amrex::Vector< amrex::Geometry > const &geom, amrex::Vector< amrex::IntVect > const &ref_ratio, const amrex::Real grid_stretching_ratio, const amrex::Real zsurf, const amrex::Real dz0)
AMREX_FORCE_INLINE AMREX_GPU_DEVICE amrex::Real Compute_h_zeta_AtCellCenter(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:55
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtEdgeCenterI(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:319
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_Zrel_AtCellCenter(const int &i, const int &j, const int &k, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:389
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtCellCenter(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:85
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtKface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:184
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_Z_AtCellCenter(const int &i, const int &j, const int &k, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:361
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void rotate_scalar_flux(const int &i, const int &j, const int &klo, const amrex::Real &flux, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::Array4< const amrex::Real > &zphys_arr, const amrex::Array4< amrex::Real > &phi1_arr, const amrex::Array4< amrex::Real > &phi2_arr, const amrex::Array4< amrex::Real > &phi3_arr)
Definition: ERF_TerrainMetrics.H:611
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtIface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:104
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void rotate_stress_tensor(const int &i, const int &j, const int &klo, const amrex::Real &flux, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const amrex::Array4< const amrex::Real > &zphys_arr, const amrex::Array4< const amrex::Real > &u_arr, const amrex::Array4< const amrex::Real > &v_arr, const amrex::Array4< const amrex::Real > &w_arr, const amrex::Array4< amrex::Real > &tau11_arr, const amrex::Array4< amrex::Real > &tau22_arr, const amrex::Array4< amrex::Real > &tau33_arr, const amrex::Array4< amrex::Real > &tau12_arr, const amrex::Array4< amrex::Real > &tau21_arr, const amrex::Array4< amrex::Real > &tau13_arr, const amrex::Array4< amrex::Real > &tau31_arr, const amrex::Array4< amrex::Real > &tau23_arr, const amrex::Array4< amrex::Real > &tau32_arr)
Definition: ERF_TerrainMetrics.H:632
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtJface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:157
amrex::Real get_dzmin_terrain(amrex::MultiFab &z_phys_nd)
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_Z_AtWFace(const int &i, const int &j, const int &k, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:376
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtKface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:198
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtEdgeCenterK(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:258
void init_which_terrain_grid(int lev, const amrex::Geometry &geom, amrex::MultiFab &z_phys_nd, amrex::Vector< amrex::Real > const &z_levels_h)
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtIface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:131
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtEdgeCenterI(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:333
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_zeta_AtJface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:144
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_xi_AtCellCenter(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:70
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtJface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:170
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtEdgeCenterI(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:346
void init_default_zphys(int lev, const amrex::Geometry &geom, amrex::MultiFab &z_phys_nd, amrex::MultiFab &z_phys_cc, amrex::Real z_offset=zero)
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Compute_h_eta_AtKface(const int &i, const int &j, const int &k, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &z_nd)
Definition: ERF_TerrainMetrics.H:211
void make_terrain_fitted_coords(int lev, const amrex::Geometry &geom, amrex::MultiFab &z_phys_nd, amrex::Vector< amrex::Real > const &z_levels_h, amrex::GpuArray< ERF_BC, AMREX_SPACEDIM *2 > &phys_bc_type)
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real WFromOmega(int &i, int &j, int &k, amrex::Real omega, const amrex::Array4< const amrex::Real > &u_arr, const amrex::Array4< const amrex::Real > &v_arr, const amrex::Array4< const amrex::Real > &mf_u, const amrex::Array4< const amrex::Real > &mf_v, const amrex::Array4< const amrex::Real > &z_nd, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv)
Definition: ERF_TerrainMetrics.H:464
@ omega
Definition: ERF_Morrison.H:53