1 #ifndef ERF_MOSTStress_H
2 #define ERF_MOSTStress_H
43 const amrex::Array4<const amrex::Real>& zref_arr,
44 const amrex::Array4<const amrex::Real>& z0_arr,
45 const amrex::Array4<const amrex::Real>& umm_arr,
46 const amrex::Array4<const amrex::Real>& ,
47 const amrex::Array4<const amrex::Real>& ,
48 const amrex::Array4<const amrex::Real>& ,
49 const amrex::Array4<amrex::Real>& u_star_arr,
50 const amrex::Array4<amrex::Real>& ,
51 const amrex::Array4<amrex::Real>& t_star_arr,
52 const amrex::Array4<amrex::Real>& q_star_arr,
53 const amrex::Array4<amrex::Real>& ,
54 const amrex::Array4<amrex::Real>& ,
55 const amrex::Array4<amrex::Real>& olen_arr,
56 const amrex::Array4<amrex::Real>& ,
57 const amrex::Array4<amrex::Real>& ,
58 const amrex::Array4<amrex::Real>& ,
59 const amrex::Array4<amrex::Real>& )
const
62 u_star_arr(i,j,k) =
mdata.
kappa * umm_arr(i,j,k) / std::log(zref_arr(i,j,k) / z0_arr(i,j,k));
63 t_star_arr(i,j,k) =
zero;
64 q_star_arr(i,j,k) =
zero;
112 const int& max_iters,
113 const amrex::Array4<const amrex::Real>& zref_arr,
114 const amrex::Array4<amrex::Real>& z0_arr,
115 const amrex::Array4<const amrex::Real>& umm_arr,
116 const amrex::Array4<const amrex::Real>& tm_arr,
117 const amrex::Array4<const amrex::Real>& ,
118 const amrex::Array4<const amrex::Real>& ,
119 const amrex::Array4<amrex::Real>& u_star_arr,
120 const amrex::Array4<amrex::Real>& ,
121 const amrex::Array4<amrex::Real>& t_star_arr,
122 const amrex::Array4<amrex::Real>& q_star_arr,
123 const amrex::Array4<amrex::Real>& ,
124 const amrex::Array4<amrex::Real>& ,
125 const amrex::Array4<amrex::Real>& olen_arr,
126 const amrex::Array4<amrex::Real>& ,
127 const amrex::Array4<amrex::Real>& ,
128 const amrex::Array4<amrex::Real>& ,
129 const amrex::Array4<amrex::Real>& )
const
146 C = std::log(zref / z0_old);
159 }
while ( (std::abs(
z0 - z0_old) >
tol_z) && (iter_z <= max_iters) );
161 "Maximum number of MOST roughness iterations reached.");
162 C = std::log(zref /
z0);
167 u_star_arr(i,j,k) =
mdata.
kappa * umm / (C - psi_m);
168 t_star_arr(i,j,k) =
zero;
169 q_star_arr(i,j,k) =
zero;
175 #ifdef AMREX_USE_FLOAT
223 const int& max_iters,
224 const amrex::Array4<const amrex::Real>& zref_arr,
225 const amrex::Array4<amrex::Real>& z0_arr,
226 const amrex::Array4<const amrex::Real>& umm_arr,
227 const amrex::Array4<const amrex::Real>& ,
228 const amrex::Array4<const amrex::Real>& ,
229 const amrex::Array4<const amrex::Real>& ,
230 const amrex::Array4<amrex::Real>& u_star_arr,
231 const amrex::Array4<amrex::Real>& ,
232 const amrex::Array4<amrex::Real>& t_star_arr,
233 const amrex::Array4<amrex::Real>& q_star_arr,
234 const amrex::Array4<amrex::Real>& ,
235 const amrex::Array4<amrex::Real>& ,
236 const amrex::Array4<amrex::Real>& olen_arr,
237 const amrex::Array4<amrex::Real>& ,
238 const amrex::Array4<amrex::Real>& ,
239 const amrex::Array4<amrex::Real>& ,
240 const amrex::Array4<amrex::Real>& )
const
257 C = std::log(zref / z0_old);
261 }
while ( (std::abs(
z0 - z0_old) >
tol_z) && (iter_z <= max_iters) );
263 "Maximum number of MOST roughness iterations reached.");
264 C = std::log(zref /
z0);
269 u_star_arr(i,j,k) =
mdata.
kappa * umm / (C - psi_m);
270 t_star_arr(i,j,k) =
zero;
271 q_star_arr(i,j,k) =
zero;
277 #ifdef AMREX_USE_FLOAT
321 const int& max_iters,
322 const amrex::Array4<const amrex::Real>& zref_arr,
323 const amrex::Array4<amrex::Real>& z0_arr,
324 const amrex::Array4<const amrex::Real>& umm_arr,
325 const amrex::Array4<const amrex::Real>& tm_arr,
326 const amrex::Array4<const amrex::Real>& ,
327 const amrex::Array4<const amrex::Real>& ,
328 const amrex::Array4<amrex::Real>& u_star_arr,
329 const amrex::Array4<amrex::Real>& ,
330 const amrex::Array4<amrex::Real>& t_star_arr,
331 const amrex::Array4<amrex::Real>& q_star_arr,
332 const amrex::Array4<amrex::Real>& ,
333 const amrex::Array4<amrex::Real>& ,
334 const amrex::Array4<amrex::Real>& olen_arr,
335 const amrex::Array4<amrex::Real>& ,
336 const amrex::Array4<amrex::Real>& ,
337 const amrex::Array4<amrex::Real>& ,
338 const amrex::Array4<amrex::Real>& )
const
355 C = std::log(zref / z0_old);
360 }
while ( (std::abs(
z0 - z0_old) >
tol_z) && (iter_z <= max_iters) );
362 "Maximum number of MOST roughness iterations reached.");
363 C = std::log(zref /
z0);
368 u_star_arr(i,j,k) =
mdata.
kappa * umm / (C - psi_m);
369 t_star_arr(i,j,k) =
zero;
370 q_star_arr(i,j,k) =
zero;
376 #ifdef AMREX_USE_FLOAT
420 const int& max_iters,
421 const amrex::Array4<const amrex::Real>& zref_arr,
422 const amrex::Array4<amrex::Real>& z0_arr,
423 const amrex::Array4<const amrex::Real>& umm_arr,
424 const amrex::Array4<const amrex::Real>& tm_arr,
425 const amrex::Array4<const amrex::Real>& ,
426 const amrex::Array4<const amrex::Real>& ,
427 const amrex::Array4<amrex::Real>& u_star_arr,
428 const amrex::Array4<amrex::Real>& ,
429 const amrex::Array4<amrex::Real>& t_star_arr,
430 const amrex::Array4<amrex::Real>& q_star_arr,
431 const amrex::Array4<amrex::Real>& ,
432 const amrex::Array4<amrex::Real>& ,
433 const amrex::Array4<amrex::Real>& olen_arr,
434 const amrex::Array4<amrex::Real>& ,
435 const amrex::Array4<amrex::Real>& Hwave_arr,
436 const amrex::Array4<amrex::Real>& Lwave_arr,
437 const amrex::Array4<amrex::Real>& )
const
454 C = std::log(zref / z0_old);
460 }
while ( (std::abs(
z0 - z0_old) >
tol_z) && (iter_z <= max_iters) );
462 "Maximum number of MOST roughness iterations reached.");
463 C = std::log(zref /
z0);
468 u_star_arr(i,j,k) =
mdata.
kappa * umm / (C - psi_m);
469 t_star_arr(i,j,k) =
zero;
470 q_star_arr(i,j,k) =
zero;
476 #ifdef AMREX_USE_FLOAT
481 #ifdef AMREX_USE_FLOAT
526 const int& max_iters,
527 const amrex::Array4<const amrex::Real>& zref_arr,
528 const amrex::Array4<const amrex::Real>& z0_arr,
529 const amrex::Array4<const amrex::Real>& umm_arr,
530 const amrex::Array4<const amrex::Real>& tm_arr,
531 const amrex::Array4<const amrex::Real>& tvm_arr,
532 const amrex::Array4<const amrex::Real>& qvm_arr,
533 const amrex::Array4<amrex::Real>& u_star_arr,
534 const amrex::Array4<amrex::Real>& w_star_arr,
535 const amrex::Array4<amrex::Real>& t_star_arr,
536 const amrex::Array4<amrex::Real>& q_star_arr,
537 const amrex::Array4<amrex::Real>& t_surf_arr,
538 const amrex::Array4<amrex::Real>& q_surf_arr,
539 const amrex::Array4<amrex::Real>& olen_arr,
540 const amrex::Array4<amrex::Real>& pblh_arr,
541 const amrex::Array4<amrex::Real>& ,
542 const amrex::Array4<amrex::Real>& ,
543 const amrex::Array4<amrex::Real>& )
const
557 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
559 Olen = olen_arr(i,j,k);
565 ustar = u_star_arr(i,j,k);
567 -(qvm_arr(i,j,k) - q_surf_arr(i,j,k)) * ustar *
mdata.
kappa /
568 (std::log(zref / z0_arr(i,j,k)) - psi_h);
572 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
575 amrex::Real umm_new = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
577 umm = std::max(umm,
WSMIN);
582 Olen = -ustar_floor * ustar_floor * ustar_floor * tvm_arr(i,j,k) /
591 u_star_arr(i,j,k) = (
one -
alpha) * ustar +
alpha * ustar_new;
594 }
while ((std::abs(u_star_arr(i,j,k) - ustar) >
tol) && iter <= max_iters);
596 "Maximum number of MOST iterations reached.");
599 olen_arr(i,j,k) = Olen;
620 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) /
621 (std::log(zref / z0_arr(i,j,k)) - psi_h);
679 const int& max_iters,
680 const amrex::Array4<const amrex::Real>& zref_arr,
681 const amrex::Array4<amrex::Real>& z0_arr,
682 const amrex::Array4<const amrex::Real>& umm_arr,
683 const amrex::Array4<const amrex::Real>& tm_arr,
684 const amrex::Array4<const amrex::Real>& tvm_arr,
685 const amrex::Array4<const amrex::Real>& qvm_arr,
686 const amrex::Array4<amrex::Real>& u_star_arr,
687 const amrex::Array4<amrex::Real>& w_star_arr,
688 const amrex::Array4<amrex::Real>& t_star_arr,
689 const amrex::Array4<amrex::Real>& q_star_arr,
690 const amrex::Array4<amrex::Real>& t_surf_arr,
691 const amrex::Array4<amrex::Real>& q_surf_arr,
692 const amrex::Array4<amrex::Real>& olen_arr,
693 const amrex::Array4<amrex::Real>& pblh_arr,
694 const amrex::Array4<amrex::Real>& ,
695 const amrex::Array4<amrex::Real>& ,
696 const amrex::Array4<amrex::Real>& )
const
711 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
713 Olen = olen_arr(i,j,k);
719 ustar = u_star_arr(i,j,k);
730 -(qvm_arr(i,j,k) - q_surf_arr(i,j,k)) * ustar *
mdata.
kappa /
731 (std::log(zref /
z0) - psi_h);
735 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
737 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
738 umm = std::max(umm,
WSMIN);
744 u_star_arr(i,j,k) =
mdata.
kappa * umm / (std::log(zref /
z0) - psi_m);
746 }
while ((std::abs(u_star_arr(i,j,k) - ustar) >
tol) && iter <= max_iters);
748 "Maximum number of MOST iterations reached.");
752 olen_arr(i,j,k) = Olen;
754 (u_star_arr(i,j,k) *
mdata.
kappa) + tm_arr(i,j,k);
758 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
761 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) /
762 (std::log(zref / z0_arr(i,j,k)) - psi_h);
817 const int& max_iters,
818 const amrex::Array4<const amrex::Real>& zref_arr,
819 const amrex::Array4<amrex::Real>& z0_arr,
820 const amrex::Array4<const amrex::Real>& umm_arr,
821 const amrex::Array4<const amrex::Real>& tm_arr,
822 const amrex::Array4<const amrex::Real>& tvm_arr,
823 const amrex::Array4<const amrex::Real>& qvm_arr,
824 const amrex::Array4<amrex::Real>& u_star_arr,
825 const amrex::Array4<amrex::Real>& w_star_arr,
826 const amrex::Array4<amrex::Real>& t_star_arr,
827 const amrex::Array4<amrex::Real>& q_star_arr,
828 const amrex::Array4<amrex::Real>& t_surf_arr,
829 const amrex::Array4<amrex::Real>& q_surf_arr,
830 const amrex::Array4<amrex::Real>& olen_arr,
831 const amrex::Array4<amrex::Real>& pblh_arr,
832 const amrex::Array4<amrex::Real>& ,
833 const amrex::Array4<amrex::Real>& ,
834 const amrex::Array4<amrex::Real>& )
const
849 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
851 Olen = olen_arr(i,j,k);
857 ustar = u_star_arr(i,j,k);
860 -(qvm_arr(i,j,k) - q_surf_arr(i,j,k)) * ustar *
mdata.
kappa /
861 (std::log(zref /
z0) - psi_h);
865 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
867 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
868 umm = std::max(umm,
WSMIN);
874 u_star_arr(i,j,k) =
mdata.
kappa * umm / (std::log(zref /
z0) - psi_m);
876 }
while ((std::abs(u_star_arr(i,j,k) - ustar) >
tol) && iter <= max_iters);
878 "Maximum number of MOST iterations reached.");
882 olen_arr(i,j,k) = Olen;
884 (u_star_arr(i,j,k) *
mdata.
kappa) + tm_arr(i,j,k);
888 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
891 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) /
892 (std::log(zref / z0_arr(i,j,k)) - psi_h);
943 const int& max_iters,
944 const amrex::Array4<const amrex::Real>& zref_arr,
945 const amrex::Array4<amrex::Real>& z0_arr,
946 const amrex::Array4<const amrex::Real>& umm_arr,
947 const amrex::Array4<const amrex::Real>& tm_arr,
948 const amrex::Array4<const amrex::Real>& tvm_arr,
949 const amrex::Array4<const amrex::Real>& qvm_arr,
950 const amrex::Array4<amrex::Real>& u_star_arr,
951 const amrex::Array4<amrex::Real>& w_star_arr,
952 const amrex::Array4<amrex::Real>& t_star_arr,
953 const amrex::Array4<amrex::Real>& q_star_arr,
954 const amrex::Array4<amrex::Real>& t_surf_arr,
955 const amrex::Array4<amrex::Real>& q_surf_arr,
956 const amrex::Array4<amrex::Real>& olen_arr,
957 const amrex::Array4<amrex::Real>& pblh_arr,
958 const amrex::Array4<amrex::Real>& ,
959 const amrex::Array4<amrex::Real>& ,
960 const amrex::Array4<amrex::Real>& )
const
975 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
977 Olen = olen_arr(i,j,k);
983 ustar = u_star_arr(i,j,k);
987 -(qvm_arr(i,j,k) - q_surf_arr(i,j,k)) * ustar *
mdata.
kappa /
988 (std::log(zref /
z0) - psi_h);
992 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
994 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
995 umm = std::max(umm,
WSMIN);
1001 u_star_arr(i,j,k) =
mdata.
kappa * umm / (std::log(zref /
z0) - psi_m);
1003 }
while ((std::abs(u_star_arr(i,j,k) - ustar) >
tol) && iter <= max_iters);
1005 "Maximum number of MOST iterations reached.");
1009 olen_arr(i,j,k) = Olen;
1011 (u_star_arr(i,j,k) *
mdata.
kappa) + tm_arr(i,j,k);
1015 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
1018 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) /
1019 (std::log(zref / z0_arr(i,j,k)) - psi_h);
1070 const int& max_iters,
1071 const amrex::Array4<const amrex::Real>& zref_arr,
1072 const amrex::Array4<amrex::Real>& z0_arr,
1073 const amrex::Array4<const amrex::Real>& umm_arr,
1074 const amrex::Array4<const amrex::Real>& tm_arr,
1075 const amrex::Array4<const amrex::Real>& tvm_arr,
1076 const amrex::Array4<const amrex::Real>& qvm_arr,
1077 const amrex::Array4<amrex::Real>& u_star_arr,
1078 const amrex::Array4<amrex::Real>& w_star_arr,
1079 const amrex::Array4<amrex::Real>& t_star_arr,
1080 const amrex::Array4<amrex::Real>& q_star_arr,
1081 const amrex::Array4<amrex::Real>& t_surf_arr,
1082 const amrex::Array4<amrex::Real>& q_surf_arr,
1083 const amrex::Array4<amrex::Real>& olen_arr,
1084 const amrex::Array4<amrex::Real>& pblh_arr,
1085 const amrex::Array4<amrex::Real>& Hwave_arr,
1086 const amrex::Array4<amrex::Real>& Lwave_arr,
1087 const amrex::Array4<amrex::Real>& )
const
1102 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
1104 Olen = olen_arr(i,j,k);
1110 ustar = u_star_arr(i,j,k);
1115 -(qvm_arr(i,j,k) - q_surf_arr(i,j,k)) * ustar *
mdata.
kappa /
1116 (std::log(zref /
z0) - psi_h);
1120 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
1122 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
1123 umm = std::max(umm,
WSMIN);
1129 u_star_arr(i,j,k) =
mdata.
kappa * umm / (std::log(zref /
z0) - psi_m);
1131 }
while ((std::abs(u_star_arr(i,j,k) - ustar) >
tol) && iter <= max_iters);
1133 "Maximum number of MOST iterations reached.");
1137 olen_arr(i,j,k) = Olen;
1139 (u_star_arr(i,j,k) *
mdata.
kappa) + tm_arr(i,j,k);
1143 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
1146 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) /
1147 (std::log(zref / z0_arr(i,j,k)) - psi_h);
1156 #ifdef AMREX_USE_FLOAT
1207 const int& max_iters,
1208 const amrex::Array4<const amrex::Real>& zref_arr,
1209 const amrex::Array4<const amrex::Real>& z0_arr,
1210 const amrex::Array4<const amrex::Real>& umm_arr,
1211 const amrex::Array4<const amrex::Real>& tm_arr,
1212 const amrex::Array4<const amrex::Real>& tvm_arr,
1213 const amrex::Array4<const amrex::Real>& qvm_arr,
1214 const amrex::Array4<amrex::Real>& u_star_arr,
1215 const amrex::Array4<amrex::Real>& w_star_arr,
1216 const amrex::Array4<amrex::Real>& t_star_arr,
1217 const amrex::Array4<amrex::Real>& q_star_arr,
1218 const amrex::Array4<amrex::Real>& t_surf_arr,
1219 const amrex::Array4<amrex::Real>& q_surf_arr,
1220 const amrex::Array4<amrex::Real>& olen_arr,
1221 const amrex::Array4<amrex::Real>& pblh_arr,
1222 const amrex::Array4<amrex::Real>& ,
1223 const amrex::Array4<amrex::Real>& ,
1224 const amrex::Array4<amrex::Real>& )
const
1241 zeta = zref / olen_arr(i,j,k);
1250 if (qv_s_raw >
zero) {
1265 thv_s = tm_arr(i,j,k) * (
one +
epsv*qv_a);
1267 t_surf = tm_arr(i,j,k);
1280 -ustar *
mdata.
kappa * (qv_a - qv_s) / (C - psi_h);
1282 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
1284 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
1285 umm = std::max(umm,
WSMIN);
1290 ( (thv_a - thv_s) / (umm * umm) );
1308 zeta = (
one -
alpha) * zeta_old +
alpha * Rib * CmPsim * CmPsim / CmPsih;
1311 }
while ( (std::abs(zeta - zeta_old) >
tol) && (iter <= max_iters) );
1313 "Maximum number of MOST iterations reached.");
1316 olen_arr(i,j,k) = zref / zeta;
1317 u_star_arr(i,j,k) =
mdata.
kappa * umm / CmPsim;
1318 t_star_arr(i,j,k) =
mdata.
kappa * (t_mean - t_surf) / CmPsih;
1321 (u_star_arr(i,j,k) *
mdata.
kappa) + qv_a_raw;
1328 ? (qv_s_raw - qv_a_raw)
1329 : (qv_a_raw - qv_s_raw);
1330 q_star_arr(i,j,k) =
mdata.
kappa * qv_delta / CmPsih;
1389 const int& max_iters,
1390 const amrex::Array4<const amrex::Real>& zref_arr,
1391 const amrex::Array4<amrex::Real>& z0_arr,
1392 const amrex::Array4<const amrex::Real>& umm_arr,
1393 const amrex::Array4<const amrex::Real>& tm_arr,
1394 const amrex::Array4<const amrex::Real>& tvm_arr,
1395 const amrex::Array4<const amrex::Real>& qvm_arr,
1396 const amrex::Array4<amrex::Real>& u_star_arr,
1397 const amrex::Array4<amrex::Real>& w_star_arr,
1398 const amrex::Array4<amrex::Real>& t_star_arr,
1399 const amrex::Array4<amrex::Real>& q_star_arr,
1400 const amrex::Array4<amrex::Real>& t_surf_arr,
1401 const amrex::Array4<amrex::Real>& q_surf_arr,
1402 const amrex::Array4<amrex::Real>& olen_arr,
1403 const amrex::Array4<amrex::Real>& pblh_arr,
1404 const amrex::Array4<amrex::Real>& ,
1405 const amrex::Array4<amrex::Real>& ,
1406 const amrex::Array4<amrex::Real>& )
const
1426 zeta = zref / olen_arr(i,j,k);
1430 if (q_surf_arr(i,j,k) >
zero) {
1431 qv_s = q_surf_arr(i,j,k);
1435 qv_s = qvm_arr(i,j,k);
1437 qv_a = qvm_arr(i,j,k);
1447 -ustar *
mdata.
kappa * (qv_a - qv_s) / (C - psi_h);
1449 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
1451 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
1452 umm = std::max(umm,
WSMIN);
1459 ( (thv_a - thv_s) / (umm * umm) );
1479 C = std::log(zref / z0_old);
1493 }
while ( (std::abs(
z0 - z0_old) >
tol_z) && (iter_z <= max_iters) );
1495 "Maximum number of MOST roughness iterations reached.");
1496 C = std::log(zref /
z0);
1506 }
while ( (std::abs(zeta - zeta_old) >
tol) && (iter <= max_iters) );
1508 "Maximum number of MOST iterations reached.");
1512 olen_arr(i,j,k) = zref / zeta;
1513 u_star_arr(i,j,k) =
mdata.
kappa * umm / CmPsim;
1514 t_star_arr(i,j,k) =
mdata.
kappa * (tm_arr(i,j,k) - t_surf_arr(i,j,k)) / CmPsih;
1517 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
1520 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) / CmPsih;
1529 #ifdef AMREX_USE_FLOAT
1581 const int& max_iters,
1582 const amrex::Array4<const amrex::Real>& zref_arr,
1583 const amrex::Array4<amrex::Real>& z0_arr,
1584 const amrex::Array4<const amrex::Real>& umm_arr,
1585 const amrex::Array4<const amrex::Real>& tm_arr,
1586 const amrex::Array4<const amrex::Real>& tvm_arr,
1587 const amrex::Array4<const amrex::Real>& qvm_arr,
1588 const amrex::Array4<amrex::Real>& u_star_arr,
1589 const amrex::Array4<amrex::Real>& w_star_arr,
1590 const amrex::Array4<amrex::Real>& t_star_arr,
1591 const amrex::Array4<amrex::Real>& q_star_arr,
1592 const amrex::Array4<amrex::Real>& t_surf_arr,
1593 const amrex::Array4<amrex::Real>& q_surf_arr,
1594 const amrex::Array4<amrex::Real>& olen_arr,
1595 const amrex::Array4<amrex::Real>& pblh_arr,
1596 const amrex::Array4<amrex::Real>& ,
1597 const amrex::Array4<amrex::Real>& ,
1598 const amrex::Array4<amrex::Real>& )
const
1618 zeta = zref / olen_arr(i,j,k);
1622 if (q_surf_arr(i,j,k) >
zero) {
1623 qv_s = q_surf_arr(i,j,k);
1627 qv_s = qvm_arr(i,j,k);
1629 qv_a = qvm_arr(i,j,k);
1639 -ustar *
mdata.
kappa * (qv_a - qv_s) / (C - psi_h);
1641 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
1643 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
1644 umm = std::max(umm,
WSMIN);
1651 ( (thv_a - thv_s) / (umm * umm) );
1671 C = std::log(zref / z0_old);
1677 }
while ( (std::abs(
z0 - z0_old) >
tol_z) && (iter_z <= max_iters) );
1679 "Maximum number of MOST roughness iterations reached.");
1680 C = std::log(zref /
z0);
1690 }
while ( (std::abs(zeta - zeta_old) >
tol) && (iter <= max_iters) );
1692 "Maximum number of MOST iterations reached.");
1696 olen_arr(i,j,k) = zref / zeta;
1697 u_star_arr(i,j,k) =
mdata.
kappa * umm / CmPsim;
1698 t_star_arr(i,j,k) =
mdata.
kappa * (tm_arr(i,j,k) - t_surf_arr(i,j,k)) / CmPsih;
1701 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
1704 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) / CmPsih;
1713 #ifdef AMREX_USE_FLOAT
1761 const int& max_iters,
1762 const amrex::Array4<const amrex::Real>& zref_arr,
1763 const amrex::Array4<amrex::Real>& z0_arr,
1764 const amrex::Array4<const amrex::Real>& umm_arr,
1765 const amrex::Array4<const amrex::Real>& tm_arr,
1766 const amrex::Array4<const amrex::Real>& tvm_arr,
1767 const amrex::Array4<const amrex::Real>& qvm_arr,
1768 const amrex::Array4<amrex::Real>& u_star_arr,
1769 const amrex::Array4<amrex::Real>& w_star_arr,
1770 const amrex::Array4<amrex::Real>& t_star_arr,
1771 const amrex::Array4<amrex::Real>& q_star_arr,
1772 const amrex::Array4<amrex::Real>& t_surf_arr,
1773 const amrex::Array4<amrex::Real>& q_surf_arr,
1774 const amrex::Array4<amrex::Real>& olen_arr,
1775 const amrex::Array4<amrex::Real>& pblh_arr,
1776 const amrex::Array4<amrex::Real>& ,
1777 const amrex::Array4<amrex::Real>& ,
1778 const amrex::Array4<amrex::Real>& )
const
1798 zeta = zref / olen_arr(i,j,k);
1802 if (q_surf_arr(i,j,k) >
zero) {
1803 qv_s = q_surf_arr(i,j,k);
1807 qv_s = qvm_arr(i,j,k);
1809 qv_a = qvm_arr(i,j,k);
1819 -ustar *
mdata.
kappa * (qv_a - qv_s) / (C - psi_h);
1821 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
1823 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
1824 umm = std::max(umm,
WSMIN);
1831 ( (thv_a - thv_s) / (umm * umm) );
1851 C = std::log(zref / z0_old);
1858 }
while ( (std::abs(
z0 - z0_old) >
tol_z) && (iter_z <= max_iters) );
1860 "Maximum number of MOST roughness iterations reached.");
1861 C = std::log(zref /
z0);
1871 }
while ( (std::abs(zeta - zeta_old) >
tol) && (iter <= max_iters) );
1873 "Maximum number of MOST iterations reached.");
1877 olen_arr(i,j,k) = zref / zeta;
1878 u_star_arr(i,j,k) =
mdata.
kappa * umm / CmPsim;
1879 t_star_arr(i,j,k) =
mdata.
kappa * (tm_arr(i,j,k) - t_surf_arr(i,j,k)) / CmPsih;
1882 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
1885 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) / CmPsih;
1894 #ifdef AMREX_USE_FLOAT
1942 const int& max_iters,
1943 const amrex::Array4<const amrex::Real>& zref_arr,
1944 const amrex::Array4<amrex::Real>& z0_arr,
1945 const amrex::Array4<const amrex::Real>& umm_arr,
1946 const amrex::Array4<const amrex::Real>& tm_arr,
1947 const amrex::Array4<const amrex::Real>& tvm_arr,
1948 const amrex::Array4<const amrex::Real>& qvm_arr,
1949 const amrex::Array4<amrex::Real>& u_star_arr,
1950 const amrex::Array4<amrex::Real>& w_star_arr,
1951 const amrex::Array4<amrex::Real>& t_star_arr,
1952 const amrex::Array4<amrex::Real>& q_star_arr,
1953 const amrex::Array4<amrex::Real>& t_surf_arr,
1954 const amrex::Array4<amrex::Real>& q_surf_arr,
1955 const amrex::Array4<amrex::Real>& olen_arr,
1956 const amrex::Array4<amrex::Real>& pblh_arr,
1957 const amrex::Array4<amrex::Real>& Hwave_arr,
1958 const amrex::Array4<amrex::Real>& Lwave_arr,
1959 const amrex::Array4<amrex::Real>& )
const
1979 zeta = zref / olen_arr(i,j,k);
1983 if (q_surf_arr(i,j,k) >
zero) {
1984 qv_s = q_surf_arr(i,j,k);
1988 qv_s = qvm_arr(i,j,k);
1990 qv_a = qvm_arr(i,j,k);
2000 -ustar *
mdata.
kappa * (qv_a - qv_s) / (C - psi_h);
2002 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
2004 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
2005 umm = std::max(umm,
WSMIN);
2012 ( (thv_a - thv_s) / (umm * umm) );
2032 C = std::log(zref / z0_old);
2040 }
while ( (std::abs(
z0 - z0_old) >
tol_z) && (iter_z <= max_iters) );
2042 "Maximum number of MOST roughness iterations reached.");
2043 C = std::log(zref /
z0);
2053 }
while ( (std::abs(zeta - zeta_old) >
tol) && (iter <= max_iters) );
2055 "Maximum number of MOST iterations reached.");
2059 olen_arr(i,j,k) = zref / zeta;
2060 u_star_arr(i,j,k) =
mdata.
kappa * umm / CmPsim;
2061 t_star_arr(i,j,k) =
mdata.
kappa * (tm_arr(i,j,k) - t_surf_arr(i,j,k)) / CmPsih;
2064 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
2067 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) / CmPsih;
2076 #ifdef AMREX_USE_FLOAT
2097 const bool face_is_low =
true,
2099 const int zhi = 0) {
2120 const amrex::Array4<const amrex::Real>& cons_arr,
2121 const amrex::Array4<const amrex::Real>& velx_arr,
2122 const amrex::Array4<const amrex::Real>& vely_arr,
2123 const amrex::Array4<const amrex::Real>& velz_arr,
2124 const amrex::Array4<const amrex::Real>& umm_arr,
2125 const amrex::Array4<const amrex::Real>& qvm_arr,
2126 const amrex::Array4<const amrex::Real>& u_star_arr,
2127 const amrex::Array4<const amrex::Real>& q_star_arr,
2128 const amrex::Array4<const amrex::Real>& q_surf_arr)
const
2136 velx =
myhalf * ( vely_arr(i,j,k) + vely_arr(i ,j+1,k) );
2137 vely =
myhalf * ( velz_arr(i,j,k) + velz_arr(i ,j ,k+1) );
2138 }
else if (dir == 1) {
2140 velx =
myhalf * ( velx_arr(i,j,k) + velx_arr(i+1,j ,k) );
2141 vely =
myhalf * ( velz_arr(i,j,k) + velz_arr(i ,j ,k+1) );
2144 velx =
myhalf * ( velx_arr(i,j,k) + velx_arr(i+1,j ,k) );
2145 vely =
myhalf * ( vely_arr(i,j,k) + vely_arr(i ,j+1,k) );
2153 wsp_mean = std::max(wsp_mean,
WSMIN);
2154 if (dir == 2 && !
is_low) {
2157 qv_surf = qvm_arr(i, j, k);
2166 -
rho*qstar*ustar*(num1+num2)/((qv_mean-qv_surf)*wsp_mean) :
zero;
2185 const amrex::Array4<const amrex::Real>& cons_arr,
2186 const amrex::Array4<const amrex::Real>& velx_arr,
2187 const amrex::Array4<const amrex::Real>& vely_arr,
2188 const amrex::Array4<const amrex::Real>& velz_arr,
2189 const amrex::Array4<const amrex::Real>& umm_arr,
2190 const amrex::Array4<const amrex::Real>& tm_arr,
2191 const amrex::Array4<const amrex::Real>& u_star_arr,
2192 const amrex::Array4<const amrex::Real>& t_star_arr,
2193 const amrex::Array4<const amrex::Real>& t_surf_arr)
const
2201 velx =
myhalf * ( vely_arr(i,j,k) + vely_arr(i ,j+1,k) );
2202 vely =
myhalf * ( velz_arr(i,j,k) + velz_arr(i ,j ,k+1) );
2203 }
else if (dir == 1) {
2205 velx =
myhalf * ( velx_arr(i,j,k) + velx_arr(i+1,j ,k) );
2206 vely =
myhalf * ( velz_arr(i,j,k) + velz_arr(i ,j ,k+1) );
2209 velx =
myhalf * ( velx_arr(i,j,k) + velx_arr(i+1,j ,k) );
2210 vely =
myhalf * ( vely_arr(i,j,k) + vely_arr(i ,j+1,k) );
2219 if (dir == 2 && !
is_low) {
2221 theta_mean = theta_surf;
2222 theta_surf = tm_arr(i, j, k);
2225 wsp_mean = std::max(wsp_mean,
WSMIN);
2233 -
rho*tstar*ustar*(num1+num2)/((theta_mean-theta_surf)*wsp_mean) :
zero;
2252 const amrex::Array4<const amrex::Real>& cons_arr,
2253 const amrex::Array4<const amrex::Real>& velx_arr,
2254 const amrex::Array4<const amrex::Real>& vely_arr,
2255 const amrex::Array4<const amrex::Real>& velz_arr,
2256 const amrex::Array4<const amrex::Real>& umm_arr,
2257 const amrex::Array4<const amrex::Real>& um_arr,
2258 const amrex::Array4<const amrex::Real>& vm_arr,
2259 const amrex::Array4<const amrex::Real>& ,
2260 const amrex::Array4<const amrex::Real>& u_star_arr)
const
2265 const int ic = (!
is_low && dir == 0) ? i - 1 : i;
2266 const int jc = (!
is_low && dir == 1) ? j - 1 : j;
2267 const int kc = (!
is_low && dir != 0 && dir != 1) ? k - 1 : k;
2273 velx = vely_arr(ic,j,kc);
2274 vely =
fourth * ( velz_arr(ic,j-1,kc ) + velz_arr(ic,j,kc )
2275 + velz_arr(ic,j-1,kc+1) + velz_arr(ic,j,kc+1) );
2277 umean = vm_arr(ic,j,kc);
2278 ustar =
myhalf * (u_star_arr(ic,j-1,kc) + u_star_arr(ic,j,kc));
2279 wsp_mean =
myhalf * (umm_arr(ic,j-1,kc) + umm_arr(ic,j,kc));
2280 }
else if (dir == 1) {
2283 velx = velx_arr(i,jc,kc);
2284 vely =
fourth * ( velz_arr(i-1,jc,kc ) + velz_arr(i,jc,kc )
2285 + velz_arr(i-1,jc,kc+1) + velz_arr(i,jc,kc+1) );
2287 umean = um_arr(i,jc,kc);
2288 ustar =
myhalf * (u_star_arr(i-1,jc,kc) + u_star_arr(i,jc,kc));
2289 wsp_mean =
myhalf * (umm_arr(i-1,jc,kc) + umm_arr(i,jc,kc));
2292 velx = velx_arr(i,j,kc);
2293 vely =
fourth * ( vely_arr(i-1,j ,kc) + vely_arr(i,j ,kc)
2294 + vely_arr(i-1,j+1,kc) + vely_arr(i,j+1,kc) );
2296 umean = um_arr(i,j,kc);
2297 ustar =
myhalf * (u_star_arr(i-1,j,kc) + u_star_arr(i,j,kc));
2298 wsp_mean =
myhalf * (umm_arr(i-1,j,kc) + umm_arr(i,j,kc));
2300 wsp_mean = std::max(wsp_mean,
WSMIN);
2311 amrex::Real stressx = -
rho*ustar*ustar * (num1+num2)/(wsp_mean*wsp_mean);
2312 stressx = (
is_low) ? stressx : -stressx;
2331 const amrex::Array4<const amrex::Real>& cons_arr,
2332 const amrex::Array4<const amrex::Real>& velx_arr,
2333 const amrex::Array4<const amrex::Real>& vely_arr,
2334 const amrex::Array4<const amrex::Real>& velz_arr,
2335 const amrex::Array4<const amrex::Real>& umm_arr,
2336 const amrex::Array4<const amrex::Real>& ,
2337 const amrex::Array4<const amrex::Real>& vm_arr,
2338 const amrex::Array4<const amrex::Real>& wm_arr,
2339 const amrex::Array4<const amrex::Real>& u_star_arr)
const
2343 const int ic = (!
is_low && dir == 0) ? i - 1 : i;
2344 const int jc = (!
is_low && dir == 1) ? j - 1 : j;
2345 const int kc = (!
is_low && dir != 0 && dir != 1) ? k - 1 : k;
2351 const int klo = amrex::max(k - 1,
m_zlo);
2352 const int khi = amrex::min(k,
m_zhi);
2353 velx =
fourth * ( vely_arr(ic,j ,
klo) + vely_arr(ic,j+1,
klo)
2354 + vely_arr(ic,j ,
khi) + vely_arr(ic,j+1,
khi) );
2355 vely = velz_arr(ic,j,k);
2357 vmean = wm_arr(ic,j,k);
2358 ustar =
myhalf * (u_star_arr(ic,j,
klo) + u_star_arr(ic,j,
khi));
2359 wsp_mean =
myhalf * (umm_arr(ic,j,
klo) + umm_arr(ic,j,
khi));
2360 }
else if (dir == 1) {
2363 const int klo = amrex::max(k - 1,
m_zlo);
2364 const int khi = amrex::min(k,
m_zhi);
2365 velx =
fourth * ( velx_arr(i ,jc,
klo) + velx_arr(i+1,jc,
klo)
2366 + velx_arr(i ,jc,
khi) + velx_arr(i+1,jc,
khi) );
2367 vely = velz_arr(i,jc,k);
2369 vmean = wm_arr(i,jc,k);
2370 ustar =
myhalf * (u_star_arr(i,jc,
klo) + u_star_arr(i,jc,
khi));
2371 wsp_mean =
myhalf * (umm_arr(i,jc,
klo) + umm_arr(i,jc,
khi));
2374 velx =
fourth * ( velx_arr(i ,j-1,kc) + velx_arr(i+1,j-1,kc)
2375 + velx_arr(i ,j ,kc) + velx_arr(i+1,j ,kc) );
2376 vely = vely_arr(i,j,kc);
2378 vmean = vm_arr(i,j,kc);
2379 ustar =
myhalf * (u_star_arr(i,j-1,kc) + u_star_arr(i,j,kc));
2380 wsp_mean =
myhalf * (umm_arr(i,j-1,kc) + umm_arr(i,j,kc));
2382 wsp_mean = std::max(wsp_mean,
WSMIN);
2393 amrex::Real stressy = -
rho*ustar*ustar * (num1+num2)/(wsp_mean*wsp_mean);
2394 stressy = (
is_low) ? stressy : -stressy;
2400 #ifdef AMREX_USE_FLOAT
2440 const amrex::Array4<const amrex::Real>& cons_arr,
2441 const amrex::Array4<const amrex::Real>& ,
2442 const amrex::Array4<const amrex::Real>& ,
2443 const amrex::Array4<const amrex::Real>& ,
2444 const amrex::Array4<const amrex::Real>& ,
2445 const amrex::Array4<const amrex::Real>& ,
2446 const amrex::Array4<const amrex::Real>& ,
2447 const amrex::Array4<const amrex::Real>& q_star_arr,
2448 const amrex::Array4<const amrex::Real>& )
const
2473 const amrex::Array4<const amrex::Real>& cons_arr,
2474 const amrex::Array4<const amrex::Real>& ,
2475 const amrex::Array4<const amrex::Real>& ,
2476 const amrex::Array4<const amrex::Real>& ,
2477 const amrex::Array4<const amrex::Real>& ,
2478 const amrex::Array4<const amrex::Real>& ,
2479 const amrex::Array4<const amrex::Real>& ,
2480 const amrex::Array4<const amrex::Real>& t_star_arr,
2481 const amrex::Array4<const amrex::Real>& )
const
2506 const amrex::Array4<const amrex::Real>& cons_arr,
2507 const amrex::Array4<const amrex::Real>& velx_arr,
2508 const amrex::Array4<const amrex::Real>& vely_arr,
2509 const amrex::Array4<const amrex::Real>& ,
2510 const amrex::Array4<const amrex::Real>& ,
2511 const amrex::Array4<const amrex::Real>& ,
2512 const amrex::Array4<const amrex::Real>& ,
2513 const amrex::Array4<const amrex::Real>& ,
2514 const amrex::Array4<const amrex::Real>& u_star_arr)
const
2518 + vely_arr(i-1,j,k) + vely_arr(i-1,j+1,k) );
2544 const amrex::Array4<const amrex::Real>& cons_arr,
2545 const amrex::Array4<const amrex::Real>& velx_arr,
2546 const amrex::Array4<const amrex::Real>& vely_arr,
2547 const amrex::Array4<const amrex::Real>& ,
2548 const amrex::Array4<const amrex::Real>& ,
2549 const amrex::Array4<const amrex::Real>& ,
2550 const amrex::Array4<const amrex::Real>& ,
2551 const amrex::Array4<const amrex::Real>& ,
2552 const amrex::Array4<const amrex::Real>& u_star_arr)
const
2555 + velx_arr(i,j-1,k) + velx_arr(i+1,j-1,k) );
2569 #ifdef AMREX_USE_FLOAT
2613 const amrex::Array4<const amrex::Real>& cons_arr,
2614 const amrex::Array4<const amrex::Real>& velx_arr,
2615 const amrex::Array4<const amrex::Real>& vely_arr,
2616 const amrex::Array4<const amrex::Real>& ,
2617 const amrex::Array4<const amrex::Real>& ,
2618 const amrex::Array4<const amrex::Real>& ,
2619 const amrex::Array4<const amrex::Real>& ,
2620 const amrex::Array4<const amrex::Real>& ,
2621 const amrex::Array4<const amrex::Real>& q_surf_arr)
const
2650 const amrex::Array4<const amrex::Real>& cons_arr,
2651 const amrex::Array4<const amrex::Real>& velx_arr,
2652 const amrex::Array4<const amrex::Real>& vely_arr,
2653 const amrex::Array4<const amrex::Real>& ,
2654 const amrex::Array4<const amrex::Real>& ,
2655 const amrex::Array4<const amrex::Real>& ,
2656 const amrex::Array4<const amrex::Real>& ,
2657 const amrex::Array4<const amrex::Real>& ,
2658 const amrex::Array4<const amrex::Real>& t_surf_arr)
const
2687 const amrex::Array4<const amrex::Real>& cons_arr,
2688 const amrex::Array4<const amrex::Real>& velx_arr,
2689 const amrex::Array4<const amrex::Real>& vely_arr,
2690 const amrex::Array4<const amrex::Real>& ,
2691 const amrex::Array4<const amrex::Real>& ,
2692 const amrex::Array4<const amrex::Real>& ,
2693 const amrex::Array4<const amrex::Real>& ,
2694 const amrex::Array4<const amrex::Real>& ,
2695 const amrex::Array4<const amrex::Real>& )
const
2700 + vely_arr(i-1,j,k) + vely_arr(i-1,j+1,k) );
2724 const amrex::Array4<const amrex::Real>& cons_arr,
2725 const amrex::Array4<const amrex::Real>& velx_arr,
2726 const amrex::Array4<const amrex::Real>& vely_arr,
2727 const amrex::Array4<const amrex::Real>& ,
2728 const amrex::Array4<const amrex::Real>& ,
2729 const amrex::Array4<const amrex::Real>& ,
2730 const amrex::Array4<const amrex::Real>& ,
2731 const amrex::Array4<const amrex::Real>& ,
2732 const amrex::Array4<const amrex::Real>& )
const
2736 + velx_arr(i,j-1,k) + velx_arr(i+1,j-1,k) );
2781 const amrex::Array4<const amrex::Real>& cons_arr,
2782 const amrex::Array4<const amrex::Real>& velx_arr,
2783 const amrex::Array4<const amrex::Real>& vely_arr,
2784 const amrex::Array4<const amrex::Real>& ,
2785 const amrex::Array4<const amrex::Real>& ,
2786 const amrex::Array4<const amrex::Real>& ,
2787 const amrex::Array4<const amrex::Real>& ,
2788 const amrex::Array4<const amrex::Real>& q_star_arr,
2789 const amrex::Array4<const amrex::Real>& )
const
2797 amrex::Real wsp = std::sqrt(velx*velx + vely*vely);
2819 const amrex::Array4<const amrex::Real>& cons_arr,
2820 const amrex::Array4<const amrex::Real>& velx_arr,
2821 const amrex::Array4<const amrex::Real>& vely_arr,
2822 const amrex::Array4<const amrex::Real>& ,
2823 const amrex::Array4<const amrex::Real>& ,
2824 const amrex::Array4<const amrex::Real>& ,
2825 const amrex::Array4<const amrex::Real>& ,
2826 const amrex::Array4<const amrex::Real>& t_star_arr,
2827 const amrex::Array4<const amrex::Real>& )
const
2835 amrex::Real wsp = std::sqrt(velx*velx + vely*vely);
2857 const amrex::Array4<const amrex::Real>& cons_arr,
2858 const amrex::Array4<const amrex::Real>& velx_arr,
2859 const amrex::Array4<const amrex::Real>& vely_arr,
2860 const amrex::Array4<const amrex::Real>& ,
2861 const amrex::Array4<const amrex::Real>& ,
2862 const amrex::Array4<const amrex::Real>& ,
2863 const amrex::Array4<const amrex::Real>& ,
2864 const amrex::Array4<const amrex::Real>& ,
2865 const amrex::Array4<const amrex::Real>& u_star_arr)
const
2869 + vely_arr(i-1,j,k) + vely_arr(i-1,j+1,k) );
2895 const amrex::Array4<const amrex::Real>& cons_arr,
2896 const amrex::Array4<const amrex::Real>& velx_arr,
2897 const amrex::Array4<const amrex::Real>& vely_arr,
2898 const amrex::Array4<const amrex::Real>& ,
2899 const amrex::Array4<const amrex::Real>& ,
2900 const amrex::Array4<const amrex::Real>& ,
2901 const amrex::Array4<const amrex::Real>& ,
2902 const amrex::Array4<const amrex::Real>& ,
2903 const amrex::Array4<const amrex::Real>& u_star_arr)
const
2906 + velx_arr(i,j-1,k) + velx_arr(i+1,j-1,k) );
2920 #ifdef AMREX_USE_FLOAT
2954 const amrex::Array4<const amrex::Real>& cons_arr,
2955 const amrex::Array4<const amrex::Real>& ,
2956 const amrex::Array4<const amrex::Real>& ,
2957 const amrex::Array4<const amrex::Real>& ,
2958 const amrex::Array4<const amrex::Real>& ,
2959 const amrex::Array4<const amrex::Real>& qvm_arr,
2960 const amrex::Array4<const amrex::Real>& ,
2961 const amrex::Array4<const amrex::Real>& q_star_arr,
2962 const amrex::Array4<const amrex::Real>& q_surf_arr)
const
2988 const amrex::Array4<const amrex::Real>& cons_arr,
2989 const amrex::Array4<const amrex::Real>& ,
2990 const amrex::Array4<const amrex::Real>& ,
2991 const amrex::Array4<const amrex::Real>& ,
2992 const amrex::Array4<const amrex::Real>& ,
2993 const amrex::Array4<const amrex::Real>& tm_arr,
2994 const amrex::Array4<const amrex::Real>& ,
2995 const amrex::Array4<const amrex::Real>& t_star_arr,
2996 const amrex::Array4<const amrex::Real>& t_surf_arr)
const
3022 const amrex::Array4<const amrex::Real>& cons_arr,
3023 const amrex::Array4<const amrex::Real>& ,
3024 const amrex::Array4<const amrex::Real>& ,
3025 const amrex::Array4<const amrex::Real>& ,
3026 const amrex::Array4<const amrex::Real>& ,
3027 const amrex::Array4<const amrex::Real>& ,
3028 const amrex::Array4<const amrex::Real>& ,
3029 const amrex::Array4<const amrex::Real>& ,
3030 const amrex::Array4<const amrex::Real>& u_star_arr)
const
3054 const amrex::Array4<const amrex::Real>& ,
3055 const amrex::Array4<const amrex::Real>& ,
3056 const amrex::Array4<const amrex::Real>& ,
3057 const amrex::Array4<const amrex::Real>& ,
3058 const amrex::Array4<const amrex::Real>& ,
3059 const amrex::Array4<const amrex::Real>& ,
3060 const amrex::Array4<const amrex::Real>& ,
3061 const amrex::Array4<const amrex::Real>& ,
3062 const amrex::Array4<const amrex::Real>& )
const
3071 #ifdef AMREX_USE_FLOAT
constexpr amrex::Real epsv
Definition: ERF_Constants.H:40
constexpr amrex::Real bogus_large_value
Definition: ERF_Constants.H:17
#define Rho_comp
Definition: ERF_IndexDefines.H:39
#define RhoTheta_comp
Definition: ERF_IndexDefines.H:40
#define RhoQ1_comp
Definition: ERF_IndexDefines.H:45
Real z0
Definition: ERF_InitCustomPertVels_ScalarAdvDiff.H:8
const int klo
Definition: ERF_InitCustomPert_ABL.H:75
const int khi
Definition: ERF_InitCustomPert_Bubble.H:21
AMREX_ALWAYS_ASSERT_WITH_MESSAGE(m_cloud_chamber_config.active, "Cloud Chamber: initializer reached without a parsed configuration")
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real WaveCoupled_roughness(amrex::Real Hwave, amrex::Real Lwave, amrex::Real eps, amrex::Real ustar, amrex::Real nu, bool visc)
Definition: ERF_MOSTUtils.H:275
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real COARE3_roughness(amrex::Real zref, amrex::Real umm, amrex::Real ustar, amrex::Real nu, bool visc)
Definition: ERF_MOSTUtils.H:212
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Mod_Charnock_roughness(amrex::Real ustar, amrex::Real Cnk_b)
Definition: ERF_MOSTUtils.H:191
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real air_viscosity(amrex::Real T_degK)
Definition: ERF_MOSTUtils.H:148
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Donelan_roughness(amrex::Real ustar, amrex::Real nu, bool visc)
Definition: ERF_MOSTUtils.H:243
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Charnock_roughness(amrex::Real ustar, amrex::Real Cnk_a, amrex::Real nu, bool visc)
Definition: ERF_MOSTUtils.H:167
constexpr amrex::Real one
Definition: ERF_NumericalConstants.H:30
constexpr amrex::Real fourth
Definition: ERF_NumericalConstants.H:35
constexpr amrex::Real zero
Definition: ERF_NumericalConstants.H:29
constexpr amrex::Real myhalf
Definition: ERF_NumericalConstants.H:34
amrex::Real Real
Definition: ERF_ShocInterface.H:19
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real calc_wstar(const amrex::Real &ust, const amrex::Real &tst, const amrex::Real &qst, const amrex::Real &pblh, const amrex::Real &th, const amrex::Real &thv, const amrex::Real &qv=amrex::Real(0))
Definition: ERF_Wstar.H:13
@ theta
Definition: ERF_SLM.H:19
@ rho
Definition: ERF_Kessler.H:25
@ qv
Definition: ERF_Kessler.H:31
@ q
Definition: ERF_WSM6.H:273
Definition: ERF_MOSTStress.H:77
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:180
most_data mdata
Definition: ERF_MOSTStress.H:173
adiabatic_charnock(amrex::Real Tflux, amrex::Real Qvflux, amrex::Real cnk_a, bool use_visc)
Definition: ERF_MOSTStress.H:86
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &max_iters, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:109
const amrex::Real tol_z
Definition: ERF_MOSTStress.H:178
similarity_funs sfuns
Definition: ERF_MOSTStress.H:174
Definition: ERF_MOSTStress.H:290
similarity_funs sfuns
Definition: ERF_MOSTStress.H:375
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:381
const amrex::Real tol_z
Definition: ERF_MOSTStress.H:379
most_data mdata
Definition: ERF_MOSTStress.H:374
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &max_iters, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:318
adiabatic_donelan(amrex::Real Tflux, amrex::Real Qvflux, bool use_visc)
Definition: ERF_MOSTStress.H:297
Definition: ERF_MOSTStress.H:188
adiabatic_mod_charnock(amrex::Real Tflux, amrex::Real Qvflux, amrex::Real depth, bool use_visc)
Definition: ERF_MOSTStress.H:196
similarity_funs sfuns
Definition: ERF_MOSTStress.H:276
const amrex::Real tol_z
Definition: ERF_MOSTStress.H:280
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:282
most_data mdata
Definition: ERF_MOSTStress.H:275
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &max_iters, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:220
Definition: ERF_MOSTStress.H:389
const amrex::Real eps
Definition: ERF_MOSTStress.H:484
adiabatic_wave_coupled(amrex::Real Tflux, amrex::Real Qvflux, bool use_visc)
Definition: ERF_MOSTStress.H:396
const amrex::Real tol_z
Definition: ERF_MOSTStress.H:479
most_data mdata
Definition: ERF_MOSTStress.H:474
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:486
similarity_funs sfuns
Definition: ERF_MOSTStress.H:475
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &max_iters, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &Hwave_arr, const amrex::Array4< amrex::Real > &Lwave_arr, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:417
Definition: ERF_MOSTStress.H:13
adiabatic(amrex::Real Tflux, amrex::Real Qvflux)
Definition: ERF_MOSTStress.H:20
similarity_funs sfuns
Definition: ERF_MOSTStress.H:69
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< const amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:39
most_data mdata
Definition: ERF_MOSTStress.H:68
Definition: ERF_MOSTStress.H:2582
bulk_coeff_flux(amrex::Real m_Cd, amrex::Real m_Ch, amrex::Real m_Cq)
Definition: ERF_MOSTStress.H:2590
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_v_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &velx_arr, const amrex::Array4< const amrex::Real > &vely_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &) const
Definition: ERF_MOSTStress.H:2720
most_data mdata
Definition: ERF_MOSTStress.H:2748
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_t_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &velx_arr, const amrex::Array4< const amrex::Real > &vely_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &t_surf_arr) const
Definition: ERF_MOSTStress.H:2646
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_u_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &velx_arr, const amrex::Array4< const amrex::Real > &vely_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &) const
Definition: ERF_MOSTStress.H:2683
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_q_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &velx_arr, const amrex::Array4< const amrex::Real > &vely_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &q_surf_arr) const
Definition: ERF_MOSTStress.H:2609
Definition: ERF_MOSTStress.H:2416
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_t_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &t_star_arr, const amrex::Array4< const amrex::Real > &) const
Definition: ERF_MOSTStress.H:2469
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_q_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &q_star_arr, const amrex::Array4< const amrex::Real > &) const
Definition: ERF_MOSTStress.H:2436
custom_flux(bool specified_rho_surf)
Definition: ERF_MOSTStress.H:2422
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_v_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &velx_arr, const amrex::Array4< const amrex::Real > &vely_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &u_star_arr) const
Definition: ERF_MOSTStress.H:2540
const bool fluxes_include_rho
Definition: ERF_MOSTStress.H:2574
const amrex::Real eps
Definition: ERF_MOSTStress.H:2572
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_u_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &velx_arr, const amrex::Array4< const amrex::Real > &vely_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &u_star_arr) const
Definition: ERF_MOSTStress.H:2502
Definition: ERF_MOSTStress.H:2092
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_v_flux(const int &i, const int &j, const int &k, const int &dir, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &velx_arr, const amrex::Array4< const amrex::Real > &vely_arr, const amrex::Array4< const amrex::Real > &velz_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &vm_arr, const amrex::Array4< const amrex::Real > &wm_arr, const amrex::Array4< const amrex::Real > &u_star_arr) const
Definition: ERF_MOSTStress.H:2327
const amrex::Real eps
Definition: ERF_MOSTStress.H:2403
moeng_flux(const amrex::Real wsmin=0.1, const bool face_is_low=true, const int zlo=0, const int zhi=0)
Definition: ERF_MOSTStress.H:2096
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_t_flux(const int &i, const int &j, const int &k, const int &dir, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &velx_arr, const amrex::Array4< const amrex::Real > &vely_arr, const amrex::Array4< const amrex::Real > &velz_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &u_star_arr, const amrex::Array4< const amrex::Real > &t_star_arr, const amrex::Array4< const amrex::Real > &t_surf_arr) const
Definition: ERF_MOSTStress.H:2181
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_q_flux(const int &i, const int &j, const int &k, const int &dir, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &velx_arr, const amrex::Array4< const amrex::Real > &vely_arr, const amrex::Array4< const amrex::Real > &velz_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &qvm_arr, const amrex::Array4< const amrex::Real > &u_star_arr, const amrex::Array4< const amrex::Real > &q_star_arr, const amrex::Array4< const amrex::Real > &q_surf_arr) const
Definition: ERF_MOSTStress.H:2116
int m_zhi
Definition: ERF_MOSTStress.H:2408
int m_zlo
Definition: ERF_MOSTStress.H:2407
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_u_flux(const int &i, const int &j, const int &k, const int &dir, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &velx_arr, const amrex::Array4< const amrex::Real > &vely_arr, const amrex::Array4< const amrex::Real > &velz_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &um_arr, const amrex::Array4< const amrex::Real > &vm_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &u_star_arr) const
Definition: ERF_MOSTStress.H:2248
amrex::Real WSMIN
Definition: ERF_MOSTStress.H:2406
bool is_low
Definition: ERF_MOSTStress.H:2405
Definition: ERF_MOSTUtils.H:10
amrex::Real surf_moist_flux
Moisture flux.
Definition: ERF_MOSTUtils.H:16
amrex::Real Cnk_b2
Modified Charnock Eq (4) https://doi.org/amrex::Real(10.1175)/JAMC-D-17-amrex::Real(0137....
Definition: ERF_MOSTUtils.H:20
amrex::Real Cnk_b
Modified Charnock derived quantity.
Definition: ERF_MOSTUtils.H:22
amrex::Real Ch
Definition: ERF_MOSTUtils.H:26
amrex::Real Cnk_d
Modified Charnock Eq (4) https://doi.org/amrex::Real(10.1175)/JAMC-D-17-amrex::Real(0137....
Definition: ERF_MOSTUtils.H:21
amrex::Real kappa
von Karman constant
Definition: ERF_MOSTUtils.H:13
amrex::Real gravity
Acceleration due to gravity (m/s^2)
Definition: ERF_MOSTUtils.H:14
amrex::Real Cnk_a
Standard Charnock constant https://doi.org/amrex::Real(10.1175)/JAMC-D-17-amrex::Real(0137....
Definition: ERF_MOSTUtils.H:18
amrex::Real Cd
Definition: ERF_MOSTUtils.H:25
amrex::Real Cq
Definition: ERF_MOSTUtils.H:27
const amrex::Real Bjr_beta
Definition: ERF_MOSTUtils.H:29
amrex::Real Cnk_b1
Modified Charnock Eq (4) https://doi.org/amrex::Real(10.1175)/JAMC-D-17-amrex::Real(0137....
Definition: ERF_MOSTUtils.H:19
bool visc
Use viscous Charnock formulation.
Definition: ERF_MOSTUtils.H:23
amrex::Real surf_temp_flux
Heat flux TODO: decide whether this is <θ'w'> or <θv'w'> under moist conditions.
Definition: ERF_MOSTUtils.H:15
Definition: ERF_MOSTStress.H:2756
rico_flux(amrex::Real l_theta_z0, amrex::Real l_qsat_z0)
Definition: ERF_MOSTStress.H:2763
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_v_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &velx_arr, const amrex::Array4< const amrex::Real > &vely_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &u_star_arr) const
Definition: ERF_MOSTStress.H:2891
amrex::Real qsat_z0
Definition: ERF_MOSTStress.H:2926
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_q_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &velx_arr, const amrex::Array4< const amrex::Real > &vely_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &q_star_arr, const amrex::Array4< const amrex::Real > &) const
Definition: ERF_MOSTStress.H:2777
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_t_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &velx_arr, const amrex::Array4< const amrex::Real > &vely_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &t_star_arr, const amrex::Array4< const amrex::Real > &) const
Definition: ERF_MOSTStress.H:2815
const amrex::Real eps
Definition: ERF_MOSTStress.H:2923
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_u_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &velx_arr, const amrex::Array4< const amrex::Real > &vely_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &u_star_arr) const
Definition: ERF_MOSTStress.H:2853
amrex::Real theta_z0
Definition: ERF_MOSTStress.H:2925
Definition: ERF_MOSTStress.H:2934
rotate_flux()
Definition: ERF_MOSTStress.H:2938
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_t_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &t_star_arr, const amrex::Array4< const amrex::Real > &t_surf_arr) const
Definition: ERF_MOSTStress.H:2984
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_q_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &qvm_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &q_star_arr, const amrex::Array4< const amrex::Real > &q_surf_arr) const
Definition: ERF_MOSTStress.H:2950
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_u_flux(const int &i, const int &j, const int &k, const int &, const amrex::Array4< const amrex::Real > &cons_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &u_star_arr) const
Definition: ERF_MOSTStress.H:3018
const amrex::Real eps
Definition: ERF_MOSTStress.H:3074
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_v_flux(const int &, const int &, const int &, const int &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &) const
Definition: ERF_MOSTStress.H:3050
Definition: ERF_MOSTUtils.H:37
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real calc_psi_m(amrex::Real zeta) const
Definition: ERF_MOSTUtils.H:102
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real calc_psi_h2(amrex::Real zeta) const
Definition: ERF_MOSTUtils.H:74
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real calc_psi_h(amrex::Real zeta) const
Definition: ERF_MOSTUtils.H:121
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real calc_psi_m2(amrex::Real zeta) const
Definition: ERF_MOSTUtils.H:49
Definition: ERF_MOSTStress.H:641
const amrex::Real tol
Definition: ERF_MOSTStress.H:770
similarity_funs sfuns
Definition: ERF_MOSTStress.H:769
most_data mdata
Definition: ERF_MOSTStress.H:767
bool spec_qflux
Definition: ERF_MOSTStress.H:768
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &max_iters, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &tvm_arr, const amrex::Array4< const amrex::Real > &qvm_arr, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &w_star_arr, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &t_surf_arr, const amrex::Array4< amrex::Real > &q_surf_arr, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &pblh_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:676
surface_flux_charnock(amrex::Real Tflux, amrex::Real Qvflux, amrex::Real cnk_a, bool use_visc, bool cons_qflux)
Definition: ERF_MOSTStress.H:651
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:771
Definition: ERF_MOSTStress.H:909
surface_flux_donelan(amrex::Real Tflux, amrex::Real Qvflux, bool use_visc, bool cons_qflux)
Definition: ERF_MOSTStress.H:917
bool spec_qflux
Definition: ERF_MOSTStress.H:1025
const amrex::Real tol
Definition: ERF_MOSTStress.H:1027
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:1028
most_data mdata
Definition: ERF_MOSTStress.H:1024
similarity_funs sfuns
Definition: ERF_MOSTStress.H:1026
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &max_iters, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &tvm_arr, const amrex::Array4< const amrex::Real > &qvm_arr, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &w_star_arr, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &t_surf_arr, const amrex::Array4< amrex::Real > &q_surf_arr, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &pblh_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:940
Definition: ERF_MOSTStress.H:779
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &max_iters, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &tvm_arr, const amrex::Array4< const amrex::Real > &qvm_arr, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &w_star_arr, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &t_surf_arr, const amrex::Array4< amrex::Real > &q_surf_arr, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &pblh_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:814
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:901
most_data mdata
Definition: ERF_MOSTStress.H:897
surface_flux_mod_charnock(amrex::Real Tflux, amrex::Real Qvflux, amrex::Real depth, bool use_visc, bool cons_qflux)
Definition: ERF_MOSTStress.H:788
bool spec_qflux
Definition: ERF_MOSTStress.H:898
const amrex::Real tol
Definition: ERF_MOSTStress.H:900
similarity_funs sfuns
Definition: ERF_MOSTStress.H:899
Definition: ERF_MOSTStress.H:1036
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:1161
most_data mdata
Definition: ERF_MOSTStress.H:1152
similarity_funs sfuns
Definition: ERF_MOSTStress.H:1154
const amrex::Real tol
Definition: ERF_MOSTStress.H:1155
surface_flux_wave_coupled(amrex::Real Tflux, amrex::Real Qvflux, bool use_visc, bool cons_qflux)
Definition: ERF_MOSTStress.H:1044
bool spec_qflux
Definition: ERF_MOSTStress.H:1153
const amrex::Real eps
Definition: ERF_MOSTStress.H:1159
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &max_iters, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &tvm_arr, const amrex::Array4< const amrex::Real > &qvm_arr, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &w_star_arr, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &t_surf_arr, const amrex::Array4< amrex::Real > &q_surf_arr, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &pblh_arr, const amrex::Array4< amrex::Real > &Hwave_arr, const amrex::Array4< amrex::Real > &Lwave_arr, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:1067
Definition: ERF_MOSTStress.H:494
similarity_funs sfuns
Definition: ERF_MOSTStress.H:629
const amrex::Real USTARMIN
Definition: ERF_MOSTStress.H:632
surface_flux(amrex::Real Tflux, amrex::Real Qvflux, bool cons_qflux)
Definition: ERF_MOSTStress.H:502
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &max_iters, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< const amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &tvm_arr, const amrex::Array4< const amrex::Real > &qvm_arr, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &w_star_arr, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &t_surf_arr, const amrex::Array4< amrex::Real > &q_surf_arr, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &pblh_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:523
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:631
most_data mdata
Definition: ERF_MOSTStress.H:627
const amrex::Real tol
Definition: ERF_MOSTStress.H:630
const amrex::Real alpha
Definition: ERF_MOSTStress.H:633
bool spec_qflux
Definition: ERF_MOSTStress.H:628
Definition: ERF_MOSTStress.H:1351
most_data mdata
Definition: ERF_MOSTStress.H:1525
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &max_iters, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &tvm_arr, const amrex::Array4< const amrex::Real > &qvm_arr, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &w_star_arr, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &t_surf_arr, const amrex::Array4< amrex::Real > &q_surf_arr, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &pblh_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:1386
bool spec_qflux
Definition: ERF_MOSTStress.H:1526
const amrex::Real tol_z
Definition: ERF_MOSTStress.H:1532
const amrex::Real alpha
Definition: ERF_MOSTStress.H:1534
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:1535
surface_temp_charnock(amrex::Real Tflux, amrex::Real Qvflux, amrex::Real cnk_a, bool use_visc, bool cons_qflux)
Definition: ERF_MOSTStress.H:1361
const amrex::Real tol
Definition: ERF_MOSTStress.H:1528
similarity_funs sfuns
Definition: ERF_MOSTStress.H:1527
Definition: ERF_MOSTStress.H:1727
similarity_funs sfuns
Definition: ERF_MOSTStress.H:1892
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &max_iters, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &tvm_arr, const amrex::Array4< const amrex::Real > &qvm_arr, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &w_star_arr, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &t_surf_arr, const amrex::Array4< amrex::Real > &q_surf_arr, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &pblh_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:1758
const amrex::Real tol_z
Definition: ERF_MOSTStress.H:1897
surface_temp_donelan(amrex::Real Tflux, amrex::Real Qvflux, bool use_visc, bool cons_qflux)
Definition: ERF_MOSTStress.H:1735
most_data mdata
Definition: ERF_MOSTStress.H:1890
const amrex::Real tol
Definition: ERF_MOSTStress.H:1893
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:1900
bool spec_qflux
Definition: ERF_MOSTStress.H:1891
const amrex::Real alpha
Definition: ERF_MOSTStress.H:1899
Definition: ERF_MOSTStress.H:1543
surface_temp_mod_charnock(amrex::Real Tflux, amrex::Real Qvflux, amrex::Real depth, bool use_visc, bool cons_qflux)
Definition: ERF_MOSTStress.H:1552
similarity_funs sfuns
Definition: ERF_MOSTStress.H:1711
const amrex::Real tol
Definition: ERF_MOSTStress.H:1712
const amrex::Real tol_z
Definition: ERF_MOSTStress.H:1716
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:1719
most_data mdata
Definition: ERF_MOSTStress.H:1709
bool spec_qflux
Definition: ERF_MOSTStress.H:1710
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &max_iters, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &tvm_arr, const amrex::Array4< const amrex::Real > &qvm_arr, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &w_star_arr, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &t_surf_arr, const amrex::Array4< amrex::Real > &q_surf_arr, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &pblh_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:1578
const amrex::Real alpha
Definition: ERF_MOSTStress.H:1718
Definition: ERF_MOSTStress.H:1908
const amrex::Real tol_z
Definition: ERF_MOSTStress.H:2080
const amrex::Real eps
Definition: ERF_MOSTStress.H:2081
const amrex::Real tol
Definition: ERF_MOSTStress.H:2075
most_data mdata
Definition: ERF_MOSTStress.H:2072
const amrex::Real alpha
Definition: ERF_MOSTStress.H:2083
surface_temp_wave_coupled(amrex::Real Tflux, amrex::Real Qvflux, bool use_visc, bool cons_qflux)
Definition: ERF_MOSTStress.H:1916
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &max_iters, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &tvm_arr, const amrex::Array4< const amrex::Real > &qvm_arr, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &w_star_arr, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &t_surf_arr, const amrex::Array4< amrex::Real > &q_surf_arr, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &pblh_arr, const amrex::Array4< amrex::Real > &Hwave_arr, const amrex::Array4< amrex::Real > &Lwave_arr, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:1939
similarity_funs sfuns
Definition: ERF_MOSTStress.H:2074
bool spec_qflux
Definition: ERF_MOSTStress.H:2073
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:2084
Definition: ERF_MOSTStress.H:1169
int dir
Definition: ERF_MOSTStress.H:1338
surface_temp(amrex::Real Tflux, amrex::Real Qvflux, bool cons_qflux, int face_dir, bool face_is_low)
Definition: ERF_MOSTStress.H:1179
similarity_funs sfuns
Definition: ERF_MOSTStress.H:1337
AMREX_GPU_DEVICE AMREX_FORCE_INLINE void iterate_flux(const int &i, const int &j, const int &k, const int &max_iters, const amrex::Array4< const amrex::Real > &zref_arr, const amrex::Array4< const amrex::Real > &z0_arr, const amrex::Array4< const amrex::Real > &umm_arr, const amrex::Array4< const amrex::Real > &tm_arr, const amrex::Array4< const amrex::Real > &tvm_arr, const amrex::Array4< const amrex::Real > &qvm_arr, const amrex::Array4< amrex::Real > &u_star_arr, const amrex::Array4< amrex::Real > &w_star_arr, const amrex::Array4< amrex::Real > &t_star_arr, const amrex::Array4< amrex::Real > &q_star_arr, const amrex::Array4< amrex::Real > &t_surf_arr, const amrex::Array4< amrex::Real > &q_surf_arr, const amrex::Array4< amrex::Real > &olen_arr, const amrex::Array4< amrex::Real > &pblh_arr, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &, const amrex::Array4< amrex::Real > &) const
Definition: ERF_MOSTStress.H:1204
const amrex::Real tol
Definition: ERF_MOSTStress.H:1341
bool spec_qflux
Definition: ERF_MOSTStress.H:1336
bool is_low
Definition: ERF_MOSTStress.H:1339
const amrex::Real alpha
Definition: ERF_MOSTStress.H:1342
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:1343
most_data mdata
Definition: ERF_MOSTStress.H:1335