1 #ifndef ERF_TERRAIN_METRIC_H_
2 #define ERF_TERRAIN_METRIC_H_
5 #include <AMReX_Geometry.H>
6 #include <AMReX_MultiFab.H>
14 amrex::MultiFab& z_phys_nd, amrex::MultiFab& z_phys_cc);
21 void init_zlevels (amrex::Vector<amrex::Vector<amrex::Real>> & zlevels_stag,
22 amrex::Vector<amrex::Vector<amrex::Real>> & stretched_dz_h,
23 amrex::Vector<amrex::Gpu::DeviceVector<amrex::Real>> & stretched_dz_d,
24 amrex::Vector<amrex::Geometry>
const& geom,
25 amrex::Vector<amrex::IntVect>
const& ref_ratio,
31 amrex::MultiFab& z_phys_nd,
32 amrex::Vector<amrex::Real>
const& z_levels_h,
33 amrex::GpuArray<ERF_BC, AMREX_SPACEDIM*2>& phys_bc_type);
36 amrex::MultiFab& z_phys_nd,
37 amrex::Vector<amrex::Real>
const& z_levels_h);
48 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
49 const amrex::Array4<const amrex::Real>& z_nd)
53 ( 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)
54 -z_nd(i+1,j,k ) - z_nd(i+1,j+1,k ) - z_nd(i,j,k ) - z_nd(i,j+1,k ) );
63 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
64 const amrex::Array4<const amrex::Real>& z_nd)
68 ( 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)
69 -z_nd(i ,j,k) - z_nd(i ,j+1,k) - z_nd(i ,j,k+1) - z_nd(i ,j+1,k+1) );
78 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
79 const amrex::Array4<const amrex::Real>& z_nd)
83 ( 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)
84 -z_nd(i,j ,k) - z_nd(i+1,j ,k) - z_nd(i,j ,k+1) - z_nd(i+1,j ,k+1) );
97 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
98 const amrex::Array4<const amrex::Real>& z_nd)
100 amrex::Real met_h_zeta = 0.5 * cellSizeInv[2] * ( (z_nd(i,j ,k+1) - z_nd(i,j ,k))
101 + (z_nd(i,j+1,k+1) - z_nd(i,j+1,k)) );
110 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
111 const amrex::Array4<const amrex::Real>& z_nd)
114 (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)) +
115 (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)) );
124 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
125 const amrex::Array4<const amrex::Real>& z_nd)
127 amrex::Real met_h_eta = 0.5 * cellSizeInv[1] * ( (z_nd(i,j+1,k ) - z_nd(i,j,k ))
128 + (z_nd(i,j+1,k+1) - z_nd(i,j,k+1)) );
137 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
138 const amrex::Array4<const amrex::Real>& z_nd)
140 amrex::Real met_h_zeta = 0.5 * cellSizeInv[2] * ( (z_nd(i ,j,k+1) - z_nd(i ,j,k ))
141 + (z_nd(i+1,j,k+1) - z_nd(i+1,j,k )) );
150 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
151 const amrex::Array4<const amrex::Real>& z_nd)
153 amrex::Real met_h_xi = 0.5 * cellSizeInv[0] * ( (z_nd(i+1,j,k ) - z_nd(i,j,k ))
154 + (z_nd(i+1,j,k+1) - z_nd(i,j,k+1)) );
163 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
164 const amrex::Array4<const amrex::Real>& z_nd)
167 ( (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)) +
168 (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)) );
177 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
178 const amrex::Array4<const amrex::Real>& z_nd)
181 ( (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)) +
182 (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)) );
191 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
192 const amrex::Array4<const amrex::Real>& z_nd)
194 amrex::Real met_h_xi = 0.5 * cellSizeInv[0] * ( (z_nd(i+1,j ,k) - z_nd(i,j ,k))
195 + (z_nd(i+1,j+1,k) - z_nd(i,j+1,k)) );
204 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
205 const amrex::Array4<const amrex::Real>& z_nd)
207 amrex::Real met_h_eta = 0.5 * cellSizeInv[1] * ( (z_nd(i ,j+1,k) - z_nd(i ,j,k))
208 + (z_nd(i+1,j+1,k) - z_nd(i+1,j,k)) );
223 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
224 const amrex::Array4<const amrex::Real>& z_nd)
227 amrex::Real met_h_zeta = dzInv * (z_nd(i,j,k+1) - z_nd(i,j,k));
236 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
237 const amrex::Array4<const amrex::Real>& z_nd)
241 ( z_nd(i+1,j,k) + z_nd(i+1,j,k+1)
242 -z_nd(i-1,j,k) - z_nd(i-1,j,k+1) );
251 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
252 const amrex::Array4<const amrex::Real>& z_nd)
256 ( z_nd(i,j+1,k) + z_nd(i,j+1,k+1)
257 -z_nd(i,j-1,k) - z_nd(i,j-1,k+1) );
268 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
269 const amrex::Array4<const amrex::Real>& z_nd)
272 amrex::Real met_h_zeta = 0.25 * dzInv * ( z_nd(i,j,k+1) + z_nd(i,j+1,k+1)
273 -z_nd(i,j,k-1) - z_nd(i,j+1,k-1) );
282 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
283 const amrex::Array4<const amrex::Real>& z_nd)
287 ( z_nd(i+1,j+1,k) + z_nd(i+1,j ,k)
288 -z_nd(i-1,j+1,k) - z_nd(i-1,j ,k) );
297 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
298 const amrex::Array4<const amrex::Real>& z_nd)
301 amrex::Real met_h_eta = dyInv * ( z_nd(i,j+1,k) - z_nd(i,j,k) );
312 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
313 const amrex::Array4<const amrex::Real>& z_nd)
316 amrex::Real met_h_zeta = 0.25 * dzInv * ( z_nd(i,j,k+1) + z_nd(i+1,j,k+1)
317 -z_nd(i,j,k-1) - z_nd(i+1,j,k-1) );
326 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
327 const amrex::Array4<const amrex::Real>& z_nd)
330 amrex::Real met_h_xi = dxInv * ( z_nd(i+1,j,k) - z_nd(i,j,k) );
339 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
340 const amrex::Array4<const amrex::Real>& z_nd)
344 ( z_nd(i+1,j+1,k) + z_nd(i,j+1,k)
345 -z_nd(i+1,j-1,k) - z_nd(i,j-1,k) );
354 const amrex::Array4<const amrex::Real>& z_nd)
356 const amrex::Real z_cc = 0.125*( z_nd(i ,j ,k ) + z_nd(i ,j ,k+1) +
357 + z_nd(i+1,j ,k ) + z_nd(i ,j ,k+1)
358 + z_nd(i ,j+1,k ) + z_nd(i ,j+1,k+1)
359 + z_nd(i+1,j+1,k ) + z_nd(i ,j+1,k+1));
369 const amrex::Array4<const amrex::Real>& z_nd)
371 const amrex::Real z_wf = 0.25*( z_nd(i ,j ,k ) + z_nd(i+1,j ,k )
372 + z_nd(i ,j+1,k ) + z_nd(i+1,j+1,k ) );
382 const amrex::Array4<const amrex::Real>& z_nd)
384 const amrex::Real z_cc = 0.125*( z_nd(i ,j ,k ) + z_nd(i ,j ,k+1) +
385 + z_nd(i+1,j ,k ) + z_nd(i+1,j ,k+1)
386 + z_nd(i ,j+1,k ) + z_nd(i ,j+1,k+1)
387 + z_nd(i+1,j+1,k ) + z_nd(i+1,j+1,k+1));
391 const amrex::Real z0_cc = 0.25*( z_nd(i ,j ,0) + z_nd(i ,j+1,0)
392 + z_nd(i+1,j ,0) + z_nd(i+1,j+1,0));
394 return (z_cc - z0_cc);
407 const amrex::Array4<const amrex::Real>& u_arr,
408 const amrex::Array4<const amrex::Real>& v_arr,
409 const amrex::Array4<const amrex::Real>& mf_u,
410 const amrex::Array4<const amrex::Real>& mf_v,
411 const amrex::Array4<const amrex::Real>& z_nd,
412 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxInv)
420 +
amrex::Real(8.0/12.0)*(z_x_p1 - z_x_m1)) * dxInv[0];
428 +
amrex::Real(8.0/12.0)*(z_y_p1 - z_y_m1)) * dxInv[1];
431 amrex::Real u_hi = (k == 0) ? 1.5 * u_arr(i+1,j ,k ) - 0.5 * u_arr(i+1,j ,k+1) :
432 0.5 * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
433 amrex::Real u_lo = (k == 0) ? 1.5 * u_arr(i ,j ,k ) - 0.5 * u_arr(i ,j ,k+1) :
434 0.5 * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
438 amrex::Real v_hi = (k == 0) ? 1.5 * v_arr(i ,j+1,k ) - 0.5 * v_arr(i ,j+1,k+1) :
439 0.5 * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
440 amrex::Real v_lo = (k == 0) ? 1.5 * v_arr(i ,j ,k ) - 0.5 * v_arr(i ,j ,k+1) :
441 0.5 * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
445 amrex::Real u_met = met_xi * 0.5 * ( u_hi*mf_u_hi + u_lo*mf_u_lo );
446 amrex::Real v_met = met_eta * 0.5 * ( v_hi*mf_v_hi + v_lo*mf_v_lo );
457 const amrex::Array4<const amrex::Real>& u_arr,
458 const amrex::Array4<const amrex::Real>& v_arr,
459 const amrex::Array4<const amrex::Real>& mf_u,
460 const amrex::Array4<const amrex::Real>& mf_v,
461 const amrex::Array4<const amrex::Real>& z_nd,
462 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxInv)
470 +
amrex::Real(8.0/12.0)*(z_x_p1 - z_x_m1)) * dxInv[0];
478 +
amrex::Real(8.0/12.0)*(z_y_p1 - z_y_m1)) * dxInv[1];
481 amrex::Real u_hi = (k == 0) ? 1.5 * u_arr(i+1,j ,k ) - 0.5 * u_arr(i+1,j ,k+1) :
482 0.5 * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
483 amrex::Real u_lo = (k == 0) ? 1.5 * u_arr(i ,j ,k ) - 0.5 * u_arr(i ,j ,k+1) :
484 0.5 * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
488 amrex::Real v_hi = (k == 0) ? 1.5 * v_arr(i ,j+1,k ) - 0.5 * v_arr(i ,j+1,k+1) :
489 0.5 * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
490 amrex::Real v_lo = (k == 0) ? 1.5 * v_arr(i ,j ,k ) - 0.5 * v_arr(i ,j ,k+1) :
491 0.5 * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
495 amrex::Real u_met = met_xi * 0.5 * ( u_hi*mf_u_hi + u_lo*mf_u_lo );
496 amrex::Real v_met = met_eta * 0.5 * ( v_hi*mf_v_hi + v_lo*mf_v_lo );
512 const amrex::Array4<const amrex::Real>& u_arr,
513 const amrex::Array4<const amrex::Real>& v_arr,
514 const amrex::Array4<const amrex::Real>& mf_u,
515 const amrex::Array4<const amrex::Real>& mf_v,
516 const amrex::Array4<const amrex::Real>& z_nd,
517 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxInv)
522 amrex::Real met_xi = 0.5 * (z_x_h - z_x_l) * dxInv[0];
527 amrex::Real met_eta = 0.5 * (z_y_h - z_y_l) * dxInv[1];
530 amrex::Real u_hi = (k == 0) ? 1.5 * u_arr(i+1,j ,k ) - 0.5 * u_arr(i+1,j ,k+1) :
531 0.5 * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
532 amrex::Real u_lo = (k == 0) ? 1.5 * u_arr(i ,j ,k ) - 0.5 * u_arr(i ,j ,k+1) :
533 0.5 * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
537 amrex::Real v_hi = (k == 0) ? 1.5 * v_arr(i ,j+1,k ) - 0.5 * v_arr(i ,j+1,k+1) :
538 0.5 * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
539 amrex::Real v_lo = (k == 0) ? 1.5 * v_arr(i ,j ,k ) - 0.5 * v_arr(i ,j ,k+1) :
540 0.5 * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
544 amrex::Real u_met = met_xi * 0.5 * ( u_hi*mf_u_hi + u_lo*mf_u_lo );
545 amrex::Real v_met = met_eta * 0.5 * ( v_hi*mf_v_hi + v_lo*mf_v_lo );
556 const amrex::Array4<const amrex::Real>& u_arr,
557 const amrex::Array4<const amrex::Real>& v_arr,
558 const amrex::Array4<const amrex::Real>& mf_u,
559 const amrex::Array4<const amrex::Real>& mf_v,
560 const amrex::Array4<const amrex::Real>& z_nd,
561 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxInv)
566 amrex::Real met_xi = 0.5 * (z_x_h - z_x_l) * dxInv[0];
571 amrex::Real met_eta = 0.5 * (z_y_h - z_y_l) * dxInv[1];
574 amrex::Real u_hi = (k == 0) ? 1.5 * u_arr(i+1,j ,k ) - 0.5 * u_arr(i+1,j ,k+1) :
575 0.5 * ( u_arr(i+1,j ,k-1) + u_arr(i+1,j ,k ) );
576 amrex::Real u_lo = (k == 0) ? 1.5 * u_arr(i ,j ,k ) - 0.5 * u_arr(i ,j ,k+1) :
577 0.5 * ( u_arr(i ,j ,k-1) + u_arr(i ,j ,k ) );
581 amrex::Real v_hi = (k == 0) ? 1.5 * v_arr(i ,j+1,k ) - 0.5 * v_arr(i ,j+1,k+1) :
582 0.5 * ( v_arr(i ,j+1,k-1) + v_arr(i ,j+1,k ) );
583 amrex::Real v_lo = (k == 0) ? 1.5 * v_arr(i ,j ,k ) - 0.5 * v_arr(i ,j ,k+1) :
584 0.5 * ( v_arr(i ,j ,k-1) + v_arr(i ,j ,k ) );
588 amrex::Real u_met = met_xi * 0.5 * ( u_hi*mf_u_hi + u_lo*mf_u_lo );
589 amrex::Real v_met = met_eta * 0.5 * ( v_hi*mf_v_hi + v_lo*mf_v_lo );
607 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxInv,
608 const amrex::Array4<const amrex::Real>& zphys_arr,
609 const amrex::Array4<amrex::Real>& phi1_arr,
610 const amrex::Array4<amrex::Real>& phi2_arr,
611 const amrex::Array4<amrex::Real>& phi3_arr)
615 amrex::Real InvNorm = 1.0 / std::sqrt(1.0 + h_xi*h_xi + h_eta*h_eta);
616 phi1_arr(i,j,klo) = -h_xi * flux * InvNorm;
617 phi2_arr(i,j,klo) = -h_eta * flux * InvNorm;
618 phi3_arr(i,j,klo) = flux * InvNorm;
628 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxInv,
629 const amrex::Array4<const amrex::Real>& zphys_arr,
630 const amrex::Array4<const amrex::Real>& u_arr,
631 const amrex::Array4<const amrex::Real>& v_arr,
632 const amrex::Array4<const amrex::Real>& w_arr,
633 const amrex::Array4<amrex::Real>& tau11_arr,
634 const amrex::Array4<amrex::Real>& tau22_arr,
635 const amrex::Array4<amrex::Real>& tau33_arr,
636 const amrex::Array4<amrex::Real>& tau12_arr,
637 const amrex::Array4<amrex::Real>& tau21_arr,
638 const amrex::Array4<amrex::Real>& tau13_arr,
639 const amrex::Array4<amrex::Real>& tau31_arr,
640 const amrex::Array4<amrex::Real>& tau23_arr,
641 const amrex::Array4<amrex::Real>& tau32_arr)
644 amrex::Array1D<amrex::Real,0,2> n_hat;
647 amrex::Array1D<amrex::Real,0,2> t_hat_1;
648 amrex::Array1D<amrex::Real,0,2> t_hat_2;
649 amrex::Array1D<amrex::Real,0,2> u_t_hat;
652 amrex::Array1D<amrex::Real,0,2> a_hat;
655 amrex::Array2D<amrex::Real,0,2,0,2> R_mat;
663 amrex::Real Inormn = 1./std::sqrt(1.0 + h_xi*h_xi + h_eta*h_eta);
664 n_hat(0) = Inormn*h_xi; n_hat(1) = Inormn*h_eta; n_hat(2) = -Inormn;
667 amrex::Real Inorm1 = 1./std::sqrt(1.0 + h_xi*h_xi);
668 amrex::Real Inorm2 = 1./std::sqrt(1.0 + h_eta*h_eta);
669 t_hat_1(0) = -Inorm1; t_hat_2(1) = -Inorm2;
670 t_hat_1(2) = -Inorm1*h_xi; t_hat_2(2) = -Inorm2*h_eta;
674 amrex::Real mag1 = (u_arr(i,j,klo) + h_xi *w_arr(i,j,klo))*Inorm1;
675 amrex::Real mag2 = (v_arr(i,j,klo) + h_eta*w_arr(i,j,klo))*Inorm2;
676 for (
int icol(0); icol<3; ++icol) {
677 u_t_hat(icol) = mag1*t_hat_1(icol) + mag2*t_hat_2(icol);
678 Norm_u_t += u_t_hat(icol)*u_t_hat(icol);
680 for (
int icol(0); icol<3; ++icol) {
681 u_t_hat(icol) /= std::sqrt(Norm_u_t);
685 a_hat(0) = n_hat(1)*u_t_hat(2) - n_hat(2)*u_t_hat(1);
686 a_hat(1) = -(n_hat(0)*u_t_hat(2) - n_hat(2)*u_t_hat(0));
687 a_hat(2) = n_hat(0)*u_t_hat(1) - n_hat(1)*u_t_hat(0);
692 for (
int icol(0); icol<3; ++icol) {
693 R_mat(icol,jrow) = u_t_hat(icol);
696 for (
int icol(0); icol<3; ++icol) {
697 R_mat(icol,jrow) = a_hat(icol);
700 for (
int icol(0); icol<3; ++icol) {
701 R_mat(icol,jrow) = n_hat(icol);
708 amrex::Real T12 = (R_mat(0,0)*R_mat(2,1) + R_mat(2,0)*R_mat(0,1))*flux;
709 amrex::Real T13 = (R_mat(0,0)*R_mat(2,2) + R_mat(0,2)*R_mat(2,0))*flux;
710 amrex::Real T23 = (R_mat(0,1)*R_mat(2,2) + R_mat(0,2)*R_mat(2,1))*flux;
713 tau11_arr(i,j,klo) = h_zeta*T11;
714 tau22_arr(i,j,klo) = h_zeta*T22;
715 tau33_arr(i,j,klo) = -h_xi*T13 - h_eta*T23 + T33;
717 tau12_arr(i,j,klo) = h_zeta*T12;
718 tau21_arr(i,j,klo) = tau21_arr(i,j,klo);
720 tau13_arr(i,j,klo) = -h_xi*T11 - h_eta*T12 + T13;
721 tau31_arr(i,j,klo) = h_zeta*T13;
723 tau23_arr(i,j,klo) = -h_xi*T12 - h_eta*T22 + T23;
724 tau32_arr(i,j,klo) = h_zeta*T23;
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:406
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:296
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:235
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:281
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:109
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:267
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:222
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:47
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:311
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:381
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:77
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:176
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:353
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:603
void init_default_zphys(int lev, const amrex::Geometry &geom, amrex::MultiFab &z_phys_nd, amrex::MultiFab &z_phys_cc)
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:96
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:624
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:149
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:368
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:190
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:250
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:123
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:325
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:136
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:62
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:162
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:338
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:203
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:456
@ omega
Definition: ERF_Morrison.H:53