1 #ifndef ERF_MOSTStress_H
2 #define ERF_MOSTStress_H
50 amrex::Real x = std::pow(1.0 + std::pow(zeta, 2.5), 1.0/2.5);
51 return ( -6.1*std::log(zeta +
x) );
54 amrex::Real psi_k_m = 2.0 * std::log(0.5 * (1.0 +
x)) + log(0.5 * (1.0 +
x *
x)) -
58 - std::sqrt(3.0)*std::atan((2.0*
y + 1.0)/std::sqrt(3.0))
60 return ( (psi_k_m + zeta*zeta*psi_c_m) / (1. + zeta*zeta) );
70 amrex::Real x = std::pow(1.0 + std::pow(zeta, 1.1), 1.0/1.1);
71 return ( -6.1*std::log(zeta +
x) );
77 - std::sqrt(3.0)*std::atan((2.0*
y + 1.0)/std::sqrt(3.0))
79 return ( (psi_k_h + zeta*zeta*psi_c_h) / (1. + zeta*zeta) );
96 return 2.0 * std::log(0.5 * (1.0 +
x)) + log(0.5 * (1.0 +
x *
x)) -
101 AMREX_GPU_HOST_DEVICE
110 return 2.0 * std::log(0.5 * (1.0 +
x));
132 return 1.326e-5*(1. + 6.542e-3*TC + 8.301e-6*TC*TC - 4.84e-9*TC*TC*TC);
155 const amrex::Array4<const amrex::Real>& zref_arr,
156 const amrex::Array4<const amrex::Real>& z0_arr,
157 const amrex::Array4<const amrex::Real>& umm_arr,
158 const amrex::Array4<const amrex::Real>& ,
159 const amrex::Array4<const amrex::Real>& ,
160 const amrex::Array4<const amrex::Real>& ,
161 const amrex::Array4<amrex::Real>& u_star_arr,
162 const amrex::Array4<amrex::Real>& ,
163 const amrex::Array4<amrex::Real>& t_star_arr,
164 const amrex::Array4<amrex::Real>& q_star_arr,
165 const amrex::Array4<amrex::Real>& ,
166 const amrex::Array4<amrex::Real>& ,
167 const amrex::Array4<amrex::Real>& olen_arr,
168 const amrex::Array4<amrex::Real>& ,
169 const amrex::Array4<amrex::Real>& ,
170 const amrex::Array4<amrex::Real>& ,
171 const amrex::Array4<amrex::Real>& )
const
173 olen_arr(i,j,k) = 1.0e16;
174 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));
175 t_star_arr(i,j,k) = 0.0;
176 q_star_arr(i,j,k) = 0.0;
207 const int& max_iters,
208 const amrex::Array4<const amrex::Real>& zref_arr,
209 const amrex::Array4<amrex::Real>& z0_arr,
210 const amrex::Array4<const amrex::Real>& umm_arr,
211 const amrex::Array4<const amrex::Real>& tm_arr,
212 const amrex::Array4<const amrex::Real>& ,
213 const amrex::Array4<const amrex::Real>& ,
214 const amrex::Array4<amrex::Real>& u_star_arr,
215 const amrex::Array4<amrex::Real>& ,
216 const amrex::Array4<amrex::Real>& t_star_arr,
217 const amrex::Array4<amrex::Real>& q_star_arr,
218 const amrex::Array4<amrex::Real>& ,
219 const amrex::Array4<amrex::Real>& ,
220 const amrex::Array4<amrex::Real>& olen_arr,
221 const amrex::Array4<amrex::Real>& ,
222 const amrex::Array4<amrex::Real>& ,
223 const amrex::Array4<amrex::Real>& ,
224 const amrex::Array4<amrex::Real>& )
const
241 C = std::log(zref / z0_old);
253 }
while ( (std::abs(z0 - z0_old) >
tol_z) && (iter_z <= max_iters) );
254 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter_z < max_iters,
255 "Maximum number of MOST roughness iterations reached.");
256 C = std::log(zref / z0);
260 olen_arr(i,j,k) = 1.0e16;
261 u_star_arr(i,j,k) =
mdata.
kappa * umm / (C - psi_m);
262 t_star_arr(i,j,k) = 0.0;
263 q_star_arr(i,j,k) = 0.0;
295 const int& max_iters,
296 const amrex::Array4<const amrex::Real>& zref_arr,
297 const amrex::Array4<amrex::Real>& z0_arr,
298 const amrex::Array4<const amrex::Real>& umm_arr,
299 const amrex::Array4<const amrex::Real>& ,
300 const amrex::Array4<const amrex::Real>& ,
301 const amrex::Array4<const amrex::Real>& ,
302 const amrex::Array4<amrex::Real>& u_star_arr,
303 const amrex::Array4<amrex::Real>& ,
304 const amrex::Array4<amrex::Real>& t_star_arr,
305 const amrex::Array4<amrex::Real>& q_star_arr,
306 const amrex::Array4<amrex::Real>& ,
307 const amrex::Array4<amrex::Real>& ,
308 const amrex::Array4<amrex::Real>& olen_arr,
309 const amrex::Array4<amrex::Real>& ,
310 const amrex::Array4<amrex::Real>& ,
311 const amrex::Array4<amrex::Real>& ,
312 const amrex::Array4<amrex::Real>& )
const
329 C = std::log(zref / z0_old);
334 }
while ( (std::abs(z0 - z0_old) >
tol_z) && (iter_z <= max_iters) );
335 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter_z < max_iters,
336 "Maximum number of MOST roughness iterations reached.");
337 C = std::log(zref / z0);
341 olen_arr(i,j,k) = 1.0e16;
342 u_star_arr(i,j,k) =
mdata.
kappa * umm / (C - psi_m);
343 t_star_arr(i,j,k) = 0.0;
344 q_star_arr(i,j,k) = 0.0;
373 const int& max_iters,
374 const amrex::Array4<const amrex::Real>& zref_arr,
375 const amrex::Array4<amrex::Real>& z0_arr,
376 const amrex::Array4<const amrex::Real>& umm_arr,
377 const amrex::Array4<const amrex::Real>& ,
378 const amrex::Array4<const amrex::Real>& ,
379 const amrex::Array4<const amrex::Real>& ,
380 const amrex::Array4<amrex::Real>& u_star_arr,
381 const amrex::Array4<amrex::Real>& ,
382 const amrex::Array4<amrex::Real>& t_star_arr,
383 const amrex::Array4<amrex::Real>& q_star_arr,
384 const amrex::Array4<amrex::Real>& ,
385 const amrex::Array4<amrex::Real>& ,
386 const amrex::Array4<amrex::Real>& olen_arr,
387 const amrex::Array4<amrex::Real>& ,
388 const amrex::Array4<amrex::Real>& ,
389 const amrex::Array4<amrex::Real>& ,
390 const amrex::Array4<amrex::Real>& )
const
397 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
398 if (u_star_arr(i,j,k) == 1.E34) {
399 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
402 ustar = u_star_arr(i,j,k);
404 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0);
406 }
while ((std::abs(u_star_arr(i,j,k) - ustar) >
tol) && iter <= max_iters);
407 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter < max_iters,
408 "Maximum number of MOST iterations reached.");
412 olen_arr(i,j,k) = 1.0e16;
413 t_star_arr(i,j,k) = 0.0;
414 q_star_arr(i,j,k) = 0.0;
443 const int& max_iters,
444 const amrex::Array4<const amrex::Real>& zref_arr,
445 const amrex::Array4<amrex::Real>& z0_arr,
446 const amrex::Array4<const amrex::Real>& umm_arr,
447 const amrex::Array4<const amrex::Real>& ,
448 const amrex::Array4<const amrex::Real>& ,
449 const amrex::Array4<const amrex::Real>& ,
450 const amrex::Array4<amrex::Real>& u_star_arr,
451 const amrex::Array4<amrex::Real>& ,
452 const amrex::Array4<amrex::Real>& t_star_arr,
453 const amrex::Array4<amrex::Real>& q_star_arr,
454 const amrex::Array4<amrex::Real>& ,
455 const amrex::Array4<amrex::Real>& ,
456 const amrex::Array4<amrex::Real>& olen_arr,
457 const amrex::Array4<amrex::Real>& ,
458 const amrex::Array4<amrex::Real>& Hwave_arr,
459 const amrex::Array4<amrex::Real>& Lwave_arr,
460 const amrex::Array4<amrex::Real>& eta_arr)
const
468 ie = i < lbound(eta_arr).x ? lbound(eta_arr).x : i;
469 je = j < lbound(eta_arr).y ? lbound(eta_arr).y : j;
470 ie = ie > ubound(eta_arr).x ? ubound(eta_arr).x : ie;
471 je = je > ubound(eta_arr).y ? ubound(eta_arr).y : je;
472 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
474 ustar = u_star_arr(i,j,k);
475 z0 = std::min( std::max(1200.0 * Hwave_arr(i,j,k) * std::pow( Hwave_arr(i,j,k)/(Lwave_arr(i,j,k)+
eps), 4.5 )
477 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0);
479 }
while ((std::abs(u_star_arr(i,j,k) - ustar) >
tol) && iter <= max_iters);
480 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter < max_iters,
481 "Maximum number of MOST iterations reached.");
485 olen_arr(i,j,k) = 1.0e16;
486 t_star_arr(i,j,k) = 0.0;
487 q_star_arr(i,j,k) = 0.0;
521 const int& max_iters,
522 const amrex::Array4<const amrex::Real>& zref_arr,
523 const amrex::Array4<const amrex::Real>& z0_arr,
524 const amrex::Array4<const amrex::Real>& umm_arr,
525 const amrex::Array4<const amrex::Real>& tm_arr,
526 const amrex::Array4<const amrex::Real>& tvm_arr,
527 const amrex::Array4<const amrex::Real>& qvm_arr,
528 const amrex::Array4<amrex::Real>& u_star_arr,
529 const amrex::Array4<amrex::Real>& w_star_arr,
530 const amrex::Array4<amrex::Real>& t_star_arr,
531 const amrex::Array4<amrex::Real>& q_star_arr,
532 const amrex::Array4<amrex::Real>& t_surf_arr,
533 const amrex::Array4<amrex::Real>& q_surf_arr,
534 const amrex::Array4<amrex::Real>& olen_arr,
535 const amrex::Array4<amrex::Real>& pblh_arr,
536 const amrex::Array4<amrex::Real>& ,
537 const amrex::Array4<amrex::Real>& ,
538 const amrex::Array4<amrex::Real>& )
const
551 if (u_star_arr(i,j,k) == 1.E34) {
552 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
554 Olen = olen_arr(i,j,k);
560 ustar = u_star_arr(i,j,k);
562 -(qvm_arr(i,j,k) - q_surf_arr(i,j,k)) * ustar *
mdata.
kappa /
563 (std::log(zref / z0_arr(i,j,k)) - psi_h);
567 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
569 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
570 umm = std::max(umm,
WSMIN);
576 u_star_arr(i,j,k) =
mdata.
kappa * umm / (std::log(zref / z0_arr(i,j,k)) - psi_m);
578 }
while ((std::abs(u_star_arr(i,j,k) - ustar) >
tol) && iter <= max_iters);
579 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter < max_iters,
580 "Maximum number of MOST iterations reached.");
583 olen_arr(i,j,k) = Olen;
585 (u_star_arr(i,j,k) *
mdata.
kappa) + tm_arr(i,j,k);
589 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
592 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) /
593 (std::log(zref / z0_arr(i,j,k)) - psi_h);
630 const int& max_iters,
631 const amrex::Array4<const amrex::Real>& zref_arr,
632 const amrex::Array4<amrex::Real>& z0_arr,
633 const amrex::Array4<const amrex::Real>& umm_arr,
634 const amrex::Array4<const amrex::Real>& tm_arr,
635 const amrex::Array4<const amrex::Real>& tvm_arr,
636 const amrex::Array4<const amrex::Real>& qvm_arr,
637 const amrex::Array4<amrex::Real>& u_star_arr,
638 const amrex::Array4<amrex::Real>& w_star_arr,
639 const amrex::Array4<amrex::Real>& t_star_arr,
640 const amrex::Array4<amrex::Real>& q_star_arr,
641 const amrex::Array4<amrex::Real>& t_surf_arr,
642 const amrex::Array4<amrex::Real>& q_surf_arr,
643 const amrex::Array4<amrex::Real>& olen_arr,
644 const amrex::Array4<amrex::Real>& pblh_arr,
645 const amrex::Array4<amrex::Real>& ,
646 const amrex::Array4<amrex::Real>& ,
647 const amrex::Array4<amrex::Real>& )
const
661 if (u_star_arr(i,j,k) == 1.E34) {
662 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
664 Olen = olen_arr(i,j,k);
670 ustar = u_star_arr(i,j,k);
680 -(qvm_arr(i,j,k) - q_surf_arr(i,j,k)) * ustar *
mdata.
kappa /
681 (std::log(zref / z0_arr(i,j,k)) - psi_h);
685 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
687 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
688 umm = std::max(umm,
WSMIN);
694 u_star_arr(i,j,k) =
mdata.
kappa * umm / (std::log(zref / z0) - psi_m);
696 }
while ((std::abs(u_star_arr(i,j,k) - ustar) >
tol) && iter <= max_iters);
697 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter < max_iters,
698 "Maximum number of MOST iterations reached.");
702 olen_arr(i,j,k) = Olen;
704 (u_star_arr(i,j,k) *
mdata.
kappa) + tm_arr(i,j,k);
708 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
711 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) /
712 (std::log(zref / z0_arr(i,j,k)) - psi_h);
748 const int& max_iters,
749 const amrex::Array4<const amrex::Real>& zref_arr,
750 const amrex::Array4<amrex::Real>& z0_arr,
751 const amrex::Array4<const amrex::Real>& umm_arr,
752 const amrex::Array4<const amrex::Real>& tm_arr,
753 const amrex::Array4<const amrex::Real>& tvm_arr,
754 const amrex::Array4<const amrex::Real>& qvm_arr,
755 const amrex::Array4<amrex::Real>& u_star_arr,
756 const amrex::Array4<amrex::Real>& w_star_arr,
757 const amrex::Array4<amrex::Real>& t_star_arr,
758 const amrex::Array4<amrex::Real>& q_star_arr,
759 const amrex::Array4<amrex::Real>& t_surf_arr,
760 const amrex::Array4<amrex::Real>& q_surf_arr,
761 const amrex::Array4<amrex::Real>& olen_arr,
762 const amrex::Array4<amrex::Real>& pblh_arr,
763 const amrex::Array4<amrex::Real>& ,
764 const amrex::Array4<amrex::Real>& ,
765 const amrex::Array4<amrex::Real>& )
const
779 if (u_star_arr(i,j,k) == 1.E34) {
780 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
782 Olen = olen_arr(i,j,k);
788 ustar = u_star_arr(i,j,k);
791 -(qvm_arr(i,j,k) - q_surf_arr(i,j,k)) * ustar *
mdata.
kappa /
792 (std::log(zref / z0_arr(i,j,k)) - psi_h);
796 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
798 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
799 umm = std::max(umm,
WSMIN);
805 u_star_arr(i,j,k) =
mdata.
kappa * umm / (std::log(zref / z0) - psi_m);
807 }
while ((std::abs(u_star_arr(i,j,k) - ustar) >
tol) && iter <= max_iters);
808 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter < max_iters,
809 "Maximum number of MOST iterations reached.");
813 olen_arr(i,j,k) = Olen;
815 (u_star_arr(i,j,k) *
mdata.
kappa) + tm_arr(i,j,k);
819 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
822 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) /
823 (std::log(zref / z0_arr(i,j,k)) - psi_h);
856 const int& max_iters,
857 const amrex::Array4<const amrex::Real>& zref_arr,
858 const amrex::Array4<amrex::Real>& z0_arr,
859 const amrex::Array4<const amrex::Real>& umm_arr,
860 const amrex::Array4<const amrex::Real>& tm_arr,
861 const amrex::Array4<const amrex::Real>& tvm_arr,
862 const amrex::Array4<const amrex::Real>& qvm_arr,
863 const amrex::Array4<amrex::Real>& u_star_arr,
864 const amrex::Array4<amrex::Real>& w_star_arr,
865 const amrex::Array4<amrex::Real>& t_star_arr,
866 const amrex::Array4<amrex::Real>& q_star_arr,
867 const amrex::Array4<amrex::Real>& t_surf_arr,
868 const amrex::Array4<amrex::Real>& q_surf_arr,
869 const amrex::Array4<amrex::Real>& olen_arr,
870 const amrex::Array4<amrex::Real>& pblh_arr,
871 const amrex::Array4<amrex::Real>& ,
872 const amrex::Array4<amrex::Real>& ,
873 const amrex::Array4<amrex::Real>& )
const
887 if (u_star_arr(i,j,k) == 1.E34) {
888 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
890 Olen = olen_arr(i,j,k);
896 ustar = u_star_arr(i,j,k);
899 -(qvm_arr(i,j,k) - q_surf_arr(i,j,k)) * ustar *
mdata.
kappa /
900 (std::log(zref / z0_arr(i,j,k)) - psi_h);
904 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
906 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
907 umm = std::max(umm,
WSMIN);
913 u_star_arr(i,j,k) =
mdata.
kappa * umm / (std::log(zref / z0) - psi_m);
915 }
while ((std::abs(u_star_arr(i,j,k) - ustar) >
tol) && iter <= max_iters);
916 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter < max_iters,
917 "Maximum number of MOST iterations reached.");
921 olen_arr(i,j,k) = Olen;
923 (u_star_arr(i,j,k) *
mdata.
kappa) + tm_arr(i,j,k);
927 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
930 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) /
931 (std::log(zref / z0_arr(i,j,k)) - psi_h);
964 const int& max_iters,
965 const amrex::Array4<const amrex::Real>& zref_arr,
966 const amrex::Array4<amrex::Real>& z0_arr,
967 const amrex::Array4<const amrex::Real>& umm_arr,
968 const amrex::Array4<const amrex::Real>& tm_arr,
969 const amrex::Array4<const amrex::Real>& tvm_arr,
970 const amrex::Array4<const amrex::Real>& qvm_arr,
971 const amrex::Array4<amrex::Real>& u_star_arr,
972 const amrex::Array4<amrex::Real>& w_star_arr,
973 const amrex::Array4<amrex::Real>& t_star_arr,
974 const amrex::Array4<amrex::Real>& q_star_arr,
975 const amrex::Array4<amrex::Real>& t_surf_arr,
976 const amrex::Array4<amrex::Real>& q_surf_arr,
977 const amrex::Array4<amrex::Real>& olen_arr,
978 const amrex::Array4<amrex::Real>& pblh_arr,
979 const amrex::Array4<amrex::Real>& Hwave_arr,
980 const amrex::Array4<amrex::Real>& Lwave_arr,
981 const amrex::Array4<amrex::Real>& eta_arr)
const
995 ie = i < lbound(eta_arr).x ? lbound(eta_arr).x : i;
996 je = j < lbound(eta_arr).y ? lbound(eta_arr).y : j;
997 ie = ie > ubound(eta_arr).x ? ubound(eta_arr).x : ie;
998 je = je > ubound(eta_arr).y ? ubound(eta_arr).y : je;
1000 if (u_star_arr(i,j,k) == 1.E34) {
1001 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
1003 Olen = olen_arr(i,j,k);
1009 ustar = u_star_arr(i,j,k);
1010 z0 = std::min( std::max(1200.0 * Hwave_arr(i,j,k) * std::pow( Hwave_arr(i,j,k)/(Lwave_arr(i,j,k)+
eps), 4.5 )
1013 -(qvm_arr(i,j,k) - q_surf_arr(i,j,k)) * ustar *
mdata.
kappa /
1014 (std::log(zref / z0_arr(i,j,k)) - psi_h);
1018 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
1020 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
1021 umm = std::max(umm,
WSMIN);
1027 u_star_arr(i,j,k) =
mdata.
kappa * umm / (std::log(zref / z0) - psi_m);
1029 }
while ((std::abs(u_star_arr(i,j,k) - ustar) >
tol) && iter <= max_iters);
1030 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter < max_iters,
1031 "Maximum number of MOST iterations reached.");
1035 olen_arr(i,j,k) = Olen;
1037 (u_star_arr(i,j,k) *
mdata.
kappa) + tm_arr(i,j,k);
1041 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
1044 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) /
1045 (std::log(zref / z0_arr(i,j,k)) - psi_h);
1081 const int& max_iters,
1082 const amrex::Array4<const amrex::Real>& zref_arr,
1083 const amrex::Array4<const amrex::Real>& z0_arr,
1084 const amrex::Array4<const amrex::Real>& umm_arr,
1085 const amrex::Array4<const amrex::Real>& tm_arr,
1086 const amrex::Array4<const amrex::Real>& tvm_arr,
1087 const amrex::Array4<const amrex::Real>& qvm_arr,
1088 const amrex::Array4<amrex::Real>& u_star_arr,
1089 const amrex::Array4<amrex::Real>& w_star_arr,
1090 const amrex::Array4<amrex::Real>& t_star_arr,
1091 const amrex::Array4<amrex::Real>& q_star_arr,
1092 const amrex::Array4<amrex::Real>& t_surf_arr,
1093 const amrex::Array4<amrex::Real>& q_surf_arr,
1094 const amrex::Array4<amrex::Real>& olen_arr,
1095 const amrex::Array4<amrex::Real>& pblh_arr,
1096 const amrex::Array4<amrex::Real>& ,
1097 const amrex::Array4<amrex::Real>& ,
1098 const amrex::Array4<amrex::Real>& )
const
1113 if (u_star_arr(i,j,k) == 1.E34) { olen_arr(i,j,k) = 1.0e3; }
1114 zeta = zref / olen_arr(i,j,k);
1118 if (q_surf_arr(i,j,k) > 0.) {
1119 qv_s = q_surf_arr(i,j,k);
1123 qv_s = qvm_arr(i,j,k);
1125 qv_a = qvm_arr(i,j,k);
1135 -ustar *
mdata.
kappa * (qv_a - qv_s) / (C - psi_h);
1136 amrex::Real tflux = -ustar*tstar*(1 + 0.61*qvm_arr(i,j,k)) + 0.61*tm_arr(i,j,k)*qflux;
1137 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
1139 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
1140 umm = std::max(umm,
WSMIN);
1144 amrex::Real thv_s = t_surf_arr(i,j,k) * (1.0 + 0.61*qv_s);
1145 amrex::Real thv_a = tm_arr(i,j,k) * (1.0 + 0.61*qv_a);
1147 ( (thv_a - thv_s) / (umm * umm) );
1148 Rib = std::min(std::max(Rib,-4.0),4.0);
1161 num = std::max(C - psi_m, 1.0);
1162 den = std::max(C - psi_h, 1.0);
1168 }
while ( (std::abs(zeta - zeta_old) >
tol) && (iter <= max_iters) );
1169 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter < max_iters,
1170 "Maximum number of MOST iterations reached.");
1173 olen_arr(i,j,k) = zref / zeta;
1174 u_star_arr(i,j,k) =
mdata.
kappa * umm / (C - psi_m);
1175 t_star_arr(i,j,k) =
mdata.
kappa * (tm_arr(i,j,k) - t_surf_arr(i,j,k)) / (C - psi_h);
1178 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
1181 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) / (C - psi_h);
1219 const int& max_iters,
1220 const amrex::Array4<const amrex::Real>& zref_arr,
1221 const amrex::Array4<amrex::Real>& z0_arr,
1222 const amrex::Array4<const amrex::Real>& umm_arr,
1223 const amrex::Array4<const amrex::Real>& tm_arr,
1224 const amrex::Array4<const amrex::Real>& tvm_arr,
1225 const amrex::Array4<const amrex::Real>& qvm_arr,
1226 const amrex::Array4<amrex::Real>& u_star_arr,
1227 const amrex::Array4<amrex::Real>& w_star_arr,
1228 const amrex::Array4<amrex::Real>& t_star_arr,
1229 const amrex::Array4<amrex::Real>& q_star_arr,
1230 const amrex::Array4<amrex::Real>& t_surf_arr,
1231 const amrex::Array4<amrex::Real>& q_surf_arr,
1232 const amrex::Array4<amrex::Real>& olen_arr,
1233 const amrex::Array4<amrex::Real>& pblh_arr,
1234 const amrex::Array4<amrex::Real>& ,
1235 const amrex::Array4<amrex::Real>& ,
1236 const amrex::Array4<amrex::Real>& )
const
1253 if (u_star_arr(i,j,k) == 1.E34) { olen_arr(i,j,k) = 1.0e3; }
1254 zeta = zref / olen_arr(i,j,k);
1258 if (q_surf_arr(i,j,k) > 0.) {
1259 qv_s = q_surf_arr(i,j,k);
1263 qv_s = qvm_arr(i,j,k);
1265 qv_a = qvm_arr(i,j,k);
1275 -ustar *
mdata.
kappa * (qv_a - qv_s) / (C - psi_h);
1276 amrex::Real tflux = -ustar*tstar*(1 + 0.61*qvm_arr(i,j,k)) + 0.61*tm_arr(i,j,k)*qflux;
1277 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
1279 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
1280 umm = std::max(umm,
WSMIN);
1284 amrex::Real thv_s = t_surf_arr(i,j,k) * (1.0 + 0.61*qv_s);
1285 amrex::Real thv_a = tm_arr(i,j,k) * (1.0 + 0.61*qv_a);
1287 ( (thv_a - thv_s) / (umm * umm) );
1288 Rib = std::min(std::max(Rib,-4.0),4.0);
1307 C = std::log(zref / z0_old);
1319 }
while ( (std::abs(z0 - z0_old) >
tol_z) && (iter_z <= max_iters) );
1320 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter_z < max_iters,
1321 "Maximum number of MOST roughness iterations reached.");
1322 C = std::log(zref / z0);
1325 num = std::max(C - psi_m, 1.0);
1326 den = std::max(C - psi_h, 1.0);
1332 }
while ( (std::abs(zeta - zeta_old) >
tol) && (iter <= max_iters) );
1333 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter < max_iters,
1334 "Maximum number of MOST iterations reached.");
1338 olen_arr(i,j,k) = zref / zeta;
1339 u_star_arr(i,j,k) =
mdata.
kappa * umm / (C - psi_m);
1340 t_star_arr(i,j,k) =
mdata.
kappa * (tm_arr(i,j,k) - t_surf_arr(i,j,k)) / (C - psi_h);
1343 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
1346 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) / (C - psi_h);
1384 const int& max_iters,
1385 const amrex::Array4<const amrex::Real>& zref_arr,
1386 const amrex::Array4<amrex::Real>& z0_arr,
1387 const amrex::Array4<const amrex::Real>& umm_arr,
1388 const amrex::Array4<const amrex::Real>& tm_arr,
1389 const amrex::Array4<const amrex::Real>& tvm_arr,
1390 const amrex::Array4<const amrex::Real>& qvm_arr,
1391 const amrex::Array4<amrex::Real>& u_star_arr,
1392 const amrex::Array4<amrex::Real>& w_star_arr,
1393 const amrex::Array4<amrex::Real>& t_star_arr,
1394 const amrex::Array4<amrex::Real>& q_star_arr,
1395 const amrex::Array4<amrex::Real>& t_surf_arr,
1396 const amrex::Array4<amrex::Real>& q_surf_arr,
1397 const amrex::Array4<amrex::Real>& olen_arr,
1398 const amrex::Array4<amrex::Real>& pblh_arr,
1399 const amrex::Array4<amrex::Real>& ,
1400 const amrex::Array4<amrex::Real>& ,
1401 const amrex::Array4<amrex::Real>& )
const
1418 if (u_star_arr(i,j,k) == 1.E34) { olen_arr(i,j,k) = 1.0e3; }
1419 zeta = zref / olen_arr(i,j,k);
1423 if (q_surf_arr(i,j,k) > 0.) {
1424 qv_s = q_surf_arr(i,j,k);
1428 qv_s = qvm_arr(i,j,k);
1430 qv_a = qvm_arr(i,j,k);
1440 -ustar *
mdata.
kappa * (qv_a - qv_s) / (C - psi_h);
1441 amrex::Real tflux = -ustar*tstar*(1 + 0.61*qvm_arr(i,j,k)) + 0.61*tm_arr(i,j,k)*qflux;
1442 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
1444 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
1445 umm = std::max(umm,
WSMIN);
1449 amrex::Real thv_s = t_surf_arr(i,j,k) * (1.0 + 0.61*qv_s);
1450 amrex::Real thv_a = tm_arr(i,j,k) * (1.0 + 0.61*qv_a);
1452 ( (thv_a - thv_s) / (umm * umm) );
1453 Rib = std::min(std::max(Rib,-4.0),4.0);
1472 C = std::log(zref / z0_old);
1477 }
while ( (std::abs(z0 - z0_old) >
tol_z) && (iter_z <= max_iters) );
1478 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter_z < max_iters,
1479 "Maximum number of MOST roughness iterations reached.");
1480 C = std::log(zref / z0);
1483 num = std::max(C - psi_m, 1.0);
1484 den = std::max(C - psi_h, 1.0);
1490 }
while ( (std::abs(zeta - zeta_old) >
tol) && (iter <= max_iters) );
1491 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter < max_iters,
1492 "Maximum number of MOST iterations reached.");
1496 olen_arr(i,j,k) = zref / zeta;
1497 u_star_arr(i,j,k) =
mdata.
kappa * umm / (C - psi_m);
1498 t_star_arr(i,j,k) =
mdata.
kappa * (tm_arr(i,j,k) - t_surf_arr(i,j,k)) / (C - psi_h);
1501 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
1504 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) / (C - psi_h);
1539 const int& max_iters,
1540 const amrex::Array4<const amrex::Real>& zref_arr,
1541 const amrex::Array4<amrex::Real>& z0_arr,
1542 const amrex::Array4<const amrex::Real>& umm_arr,
1543 const amrex::Array4<const amrex::Real>& tm_arr,
1544 const amrex::Array4<const amrex::Real>& tvm_arr,
1545 const amrex::Array4<const amrex::Real>& qvm_arr,
1546 const amrex::Array4<amrex::Real>& u_star_arr,
1547 const amrex::Array4<amrex::Real>& w_star_arr,
1548 const amrex::Array4<amrex::Real>& t_star_arr,
1549 const amrex::Array4<amrex::Real>& q_star_arr,
1550 const amrex::Array4<amrex::Real>& t_surf_arr,
1551 const amrex::Array4<amrex::Real>& q_surf_arr,
1552 const amrex::Array4<amrex::Real>& olen_arr,
1553 const amrex::Array4<amrex::Real>& pblh_arr,
1554 const amrex::Array4<amrex::Real>& ,
1555 const amrex::Array4<amrex::Real>& ,
1556 const amrex::Array4<amrex::Real>& )
const
1571 if (u_star_arr(i,j,k) == 1.E34) {
1572 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
1574 Olen = olen_arr(i,j,k);
1581 ustar = u_star_arr(i,j,k);
1583 tflux = -(tm_arr(i,j,k) - t_surf_arr(i,j,k)) * ustar *
mdata.
kappa /
1584 (std::log(zref / z0) - psi_h);
1585 tflux *= (1 + 0.61*qvm_arr(i,j,k));
1587 -(qvm_arr(i,j,k) - q_surf_arr(i,j,k)) * ustar *
mdata.
kappa /
1588 (std::log(zref / z0_arr(i,j,k)) - psi_h);
1589 tflux += 0.61*tm_arr(i,j,k) * qflux;
1592 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
1594 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
1595 umm = std::max(umm,
WSMIN);
1598 if ( (((Olen >= 0.0) && (Oleno <= 0.0)) ||
1599 ((Olen <= 0.0) && (Oleno >= 0.0))) &&
1600 std::fabs(Olen) + std::fabs(Oleno) < 1.) {
1601 Olen = 0.5 * (Olen + Oleno);
1607 u_star_arr(i,j,k) =
mdata.
kappa * umm / (std::log(zref / z0) - psi_m);
1609 }
while ((std::abs(u_star_arr(i,j,k) - ustar) >
tol) && iter <= max_iters);
1610 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter < max_iters,
1611 "Maximum number of MOST iterations reached.");
1615 olen_arr(i,j,k) = Olen;
1616 t_star_arr(i,j,k) =
mdata.
kappa * (tm_arr(i,j,k) - t_surf_arr(i,j,k)) /
1617 (std::log(zref / z0) - psi_h);
1620 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
1623 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) /
1624 (std::log(zref / z0_arr(i,j,k)) - psi_h);
1657 const int& max_iters,
1658 const amrex::Array4<const amrex::Real>& zref_arr,
1659 const amrex::Array4<amrex::Real>& z0_arr,
1660 const amrex::Array4<const amrex::Real>& umm_arr,
1661 const amrex::Array4<const amrex::Real>& tm_arr,
1662 const amrex::Array4<const amrex::Real>& tvm_arr,
1663 const amrex::Array4<const amrex::Real>& qvm_arr,
1664 const amrex::Array4<amrex::Real>& u_star_arr,
1665 const amrex::Array4<amrex::Real>& w_star_arr,
1666 const amrex::Array4<amrex::Real>& t_star_arr,
1667 const amrex::Array4<amrex::Real>& q_star_arr,
1668 const amrex::Array4<amrex::Real>& t_surf_arr,
1669 const amrex::Array4<amrex::Real>& q_surf_arr,
1670 const amrex::Array4<amrex::Real>& olen_arr,
1671 const amrex::Array4<amrex::Real>& pblh_arr,
1672 const amrex::Array4<amrex::Real>& Hwave_arr,
1673 const amrex::Array4<amrex::Real>& Lwave_arr,
1674 const amrex::Array4<amrex::Real>& eta_arr)
const
1689 ie = i < lbound(eta_arr).x ? lbound(eta_arr).x : i;
1690 je = j < lbound(eta_arr).y ? lbound(eta_arr).y : j;
1691 ie = ie > ubound(eta_arr).x ? ubound(eta_arr).x : ie;
1692 je = je > ubound(eta_arr).y ? ubound(eta_arr).y : je;
1694 if (u_star_arr(i,j,k) == 1.E34) {
1695 u_star_arr(i,j,k) =
mdata.
kappa * umm / std::log(zref / z0_arr(i,j,k));
1697 Olen = olen_arr(i,j,k);
1704 ustar = u_star_arr(i,j,k);
1705 z0 = std::min( std::max(1200.0 * Hwave_arr(i,j,k) * std::pow( Hwave_arr(i,j,k)/(Lwave_arr(i,j,k)+
eps), 4.5 )
1707 tflux = -(tm_arr(i,j,k) - t_surf_arr(i,j,k)) * ustar *
mdata.
kappa /
1708 (std::log(zref / z0) - psi_h);
1709 tflux *= (1 + 0.61*qvm_arr(i,j,k));
1711 -(qvm_arr(i,j,k) - q_surf_arr(i,j,k)) * ustar *
mdata.
kappa /
1712 (std::log(zref / z0_arr(i,j,k)) - psi_h);
1713 tflux += 0.61*tm_arr(i,j,k) * qflux;
1716 w_star_arr(i,j,k) =
calc_wstar(tflux, pblh_arr(i,j,k), tvm_arr(i,j,k));
1718 umm = std::sqrt(umm_arr(i,j,k)*umm_arr(i,j,k) + wstar*wstar);
1719 umm = std::max(umm,
WSMIN);
1722 if ( (((Olen >= 0.0) && (Oleno <= 0.0)) ||
1723 ((Olen <= 0.0) && (Oleno >= 0.0))) &&
1724 std::fabs(Olen) + std::fabs(Oleno) < 1.) {
1725 Olen = 0.5 * (Olen + Oleno);
1731 u_star_arr(i,j,k) =
mdata.
kappa * umm / (std::log(zref / z0) - psi_m);
1733 }
while ((std::abs(u_star_arr(i,j,k) - ustar) >
tol) && iter <= max_iters);
1734 AMREX_ALWAYS_ASSERT_WITH_MESSAGE(iter < max_iters,
1735 "Maximum number of MOST iterations reached.");
1739 olen_arr(i,j,k) = Olen;
1740 t_star_arr(i,j,k) =
mdata.
kappa * (tm_arr(i,j,k) - t_surf_arr(i,j,k)) /
1741 (std::log(zref / z0) - psi_h);
1744 (u_star_arr(i,j,k) *
mdata.
kappa) + qvm_arr(i,j,k);
1747 q_star_arr(i,j,k) =
mdata.
kappa * (qvm_arr(i,j,k) - q_surf_arr(i,j,k)) /
1748 (std::log(zref / z0_arr(i,j,k)) - psi_h);
1777 const amrex::Array4<const amrex::Real>& cons_arr,
1778 const amrex::Array4<const amrex::Real>& velx_arr,
1779 const amrex::Array4<const amrex::Real>& vely_arr,
1780 const amrex::Array4<const amrex::Real>& umm_arr,
1781 const amrex::Array4<const amrex::Real>& qvm_arr,
1782 const amrex::Array4<const amrex::Real>& u_star_arr,
1783 const amrex::Array4<const amrex::Real>& q_star_arr,
1784 const amrex::Array4<const amrex::Real>& q_surf_arr)
const
1788 amrex::Real velx = 0.5 * ( velx_arr(i,j,k) + velx_arr(i+1,j ,k) );
1789 amrex::Real vely = 0.5 * ( vely_arr(i,j,k) + vely_arr(i ,j+1,k) );
1796 wsp_mean = std::max(wsp_mean,
WSMIN);
1804 -
rho*qstar*ustar*(num1+num2)/((qv_mean-qv_surf)*wsp_mean) : 0.0;
1815 const amrex::Array4<const amrex::Real>& cons_arr,
1816 const amrex::Array4<const amrex::Real>& velx_arr,
1817 const amrex::Array4<const amrex::Real>& vely_arr,
1818 const amrex::Array4<const amrex::Real>& umm_arr,
1819 const amrex::Array4<const amrex::Real>& tm_arr,
1820 const amrex::Array4<const amrex::Real>& u_star_arr,
1821 const amrex::Array4<const amrex::Real>& t_star_arr,
1822 const amrex::Array4<const amrex::Real>& t_surf_arr)
const
1826 amrex::Real velx = 0.5 * ( velx_arr(i,j,k) + velx_arr(i+1,j ,k) );
1827 amrex::Real vely = 0.5 * ( vely_arr(i,j,k) + vely_arr(i ,j+1,k) );
1834 wsp_mean = std::max(wsp_mean,
WSMIN);
1842 -
rho*tstar*ustar*(num1+num2)/((theta_mean-theta_surf)*wsp_mean) : 0.0;
1853 const amrex::Array4<const amrex::Real>& cons_arr,
1854 const amrex::Array4<const amrex::Real>& velx_arr,
1855 const amrex::Array4<const amrex::Real>& vely_arr,
1856 const amrex::Array4<const amrex::Real>& umm_arr,
1857 const amrex::Array4<const amrex::Real>& um_arr,
1858 const amrex::Array4<const amrex::Real>& u_star_arr)
const
1861 amrex::Real vely = 0.25 * ( vely_arr(i ,j,k) + vely_arr(i ,j+1,k)
1862 + vely_arr(i-1,j,k) + vely_arr(i-1,j+1,k) );
1866 amrex::Real ustar = 0.5 * ( u_star_arr(i-1,j,k) + u_star_arr(i,j,k) );
1867 amrex::Real wsp_mean = 0.5 * ( umm_arr(i-1,j,k) + umm_arr(i,j,k) );
1868 wsp_mean = std::max(wsp_mean,
WSMIN);
1879 amrex::Real stressx = -
rho*ustar*ustar * (num1+num2)/(wsp_mean*wsp_mean);
1890 const amrex::Array4<const amrex::Real>& cons_arr,
1891 const amrex::Array4<const amrex::Real>& velx_arr,
1892 const amrex::Array4<const amrex::Real>& vely_arr,
1893 const amrex::Array4<const amrex::Real>& umm_arr,
1894 const amrex::Array4<const amrex::Real>& vm_arr,
1895 const amrex::Array4<const amrex::Real>& u_star_arr)
const
1897 amrex::Real velx = 0.25 * ( velx_arr(i,j ,k) + velx_arr(i+1,j ,k)
1898 + velx_arr(i,j-1,k) + velx_arr(i+1,j-1,k) );
1903 amrex::Real ustar = 0.5 * ( u_star_arr(i,j-1,k) + u_star_arr(i,j,k) );
1904 amrex::Real wsp_mean = 0.5 * ( umm_arr(i,j-1,k) + umm_arr(i,j,k) );
1905 wsp_mean = std::max(wsp_mean,
WSMIN);
1916 amrex::Real stressy = -
rho*ustar*ustar * (num1+num2)/(wsp_mean*wsp_mean);
1940 const amrex::Array4<const amrex::Real>& ,
1941 const amrex::Array4<const amrex::Real>& ,
1942 const amrex::Array4<const amrex::Real>& ,
1943 const amrex::Array4<const amrex::Real>& ,
1944 const amrex::Array4<const amrex::Real>& ,
1945 const amrex::Array4<const amrex::Real>& ,
1946 const amrex::Array4<const amrex::Real>& ,
1947 const amrex::Array4<const amrex::Real>& )
const
1961 const amrex::Array4<const amrex::Real>& cons_arr,
1962 const amrex::Array4<const amrex::Real>& ,
1963 const amrex::Array4<const amrex::Real>& ,
1964 const amrex::Array4<const amrex::Real>& umm_arr,
1965 const amrex::Array4<const amrex::Real>& tm_arr,
1966 const amrex::Array4<const amrex::Real>& ,
1967 const amrex::Array4<const amrex::Real>& ,
1968 const amrex::Array4<const amrex::Real>& t_surf_arr)
const
1977 amrex::Real moflux = -
rho * Ch * wsp_mean * (theta_mean - theta_surf);
1988 const amrex::Array4<const amrex::Real>& cons_arr,
1989 const amrex::Array4<const amrex::Real>& velx_arr,
1990 const amrex::Array4<const amrex::Real>& vely_arr,
1991 const amrex::Array4<const amrex::Real>& umm_arr,
1992 const amrex::Array4<const amrex::Real>& ,
1993 const amrex::Array4<const amrex::Real>& )
const
1996 amrex::Real vely = 0.25 * ( vely_arr(i ,j,k) + vely_arr(i ,j+1,k)
1997 + vely_arr(i-1,j,k) + vely_arr(i-1,j+1,k) );
2003 amrex::Real wsp_mean = 0.5 * ( umm_arr(i-1,j,k) + umm_arr(i,j,k) );
2004 if (wsp_mean <= 5.0) {
2006 }
else if (wsp_mean < 25.0 && wsp_mean > 5.0) {
2007 Cd = 0.001 + c * (wsp_mean - 5.0);
2024 const amrex::Array4<const amrex::Real>& cons_arr,
2025 const amrex::Array4<const amrex::Real>& velx_arr,
2026 const amrex::Array4<const amrex::Real>& vely_arr,
2027 const amrex::Array4<const amrex::Real>& umm_arr,
2028 const amrex::Array4<const amrex::Real>& ,
2029 const amrex::Array4<const amrex::Real>& )
const
2031 amrex::Real velx = 0.25 * ( velx_arr(i,j ,k) + velx_arr(i+1,j ,k)
2032 + velx_arr(i,j-1,k) + velx_arr(i+1,j-1,k) );
2039 amrex::Real wsp_mean = 0.5 * ( umm_arr(i,j-1,k) + umm_arr(i,j,k) );
2040 if (wsp_mean <= 5.0) {
2042 }
else if (wsp_mean < 25.0 && wsp_mean > 5.0) {
2043 Cd = 0.001 + c * (wsp_mean - 5.0);
2074 const amrex::Array4<const amrex::Real>& cons_arr,
2075 const amrex::Array4<const amrex::Real>& ,
2076 const amrex::Array4<const amrex::Real>& ,
2077 const amrex::Array4<const amrex::Real>& ,
2078 const amrex::Array4<const amrex::Real>& ,
2079 const amrex::Array4<const amrex::Real>& ,
2080 const amrex::Array4<const amrex::Real>& q_star_arr,
2081 const amrex::Array4<const amrex::Real>& )
const
2098 const amrex::Array4<const amrex::Real>& cons_arr,
2099 const amrex::Array4<const amrex::Real>& ,
2100 const amrex::Array4<const amrex::Real>& ,
2101 const amrex::Array4<const amrex::Real>& ,
2102 const amrex::Array4<const amrex::Real>& ,
2103 const amrex::Array4<const amrex::Real>& ,
2104 const amrex::Array4<const amrex::Real>& t_star_arr,
2105 const amrex::Array4<const amrex::Real>& )
const
2122 const amrex::Array4<const amrex::Real>& cons_arr,
2123 const amrex::Array4<const amrex::Real>& velx_arr,
2124 const amrex::Array4<const amrex::Real>& vely_arr,
2125 const amrex::Array4<const amrex::Real>& ,
2126 const amrex::Array4<const amrex::Real>& ,
2127 const amrex::Array4<const amrex::Real>& u_star_arr)
const
2130 amrex::Real vely = 0.25 * ( vely_arr(i ,j,k) + vely_arr(i ,j+1,k)
2131 + vely_arr(i-1,j,k) + vely_arr(i-1,j+1,k) );
2134 amrex::Real ustar = 0.5 * ( u_star_arr(i-1,j,k) + u_star_arr(i,j,k) );
2149 const amrex::Array4<const amrex::Real>& cons_arr,
2150 const amrex::Array4<const amrex::Real>& velx_arr,
2151 const amrex::Array4<const amrex::Real>& vely_arr,
2152 const amrex::Array4<const amrex::Real>& ,
2153 const amrex::Array4<const amrex::Real>& ,
2154 const amrex::Array4<const amrex::Real>& u_star_arr)
const
2156 amrex::Real velx = 0.25 * ( velx_arr(i,j ,k) + velx_arr(i+1,j ,k)
2157 + velx_arr(i,j-1,k) + velx_arr(i+1,j-1,k) );
2161 amrex::Real ustar = 0.5 * ( u_star_arr(i,j-1,k) + u_star_arr(i,j,k) );
2196 const amrex::Array4<const amrex::Real>& cons_arr,
2197 const amrex::Array4<const amrex::Real>& velx_arr,
2198 const amrex::Array4<const amrex::Real>& vely_arr,
2199 const amrex::Array4<const amrex::Real>& ,
2200 const amrex::Array4<const amrex::Real>& ,
2201 const amrex::Array4<const amrex::Real>& ,
2202 const amrex::Array4<const amrex::Real>& ,
2203 const amrex::Array4<const amrex::Real>& q_surf_arr)
const
2208 amrex::Real velx = 0.5 * ( velx_arr(i,j,k) + velx_arr(i+1,j ,k) );
2209 amrex::Real vely = 0.5 * ( vely_arr(i,j,k) + vely_arr(i ,j+1,k) );
2224 const amrex::Array4<const amrex::Real>& cons_arr,
2225 const amrex::Array4<const amrex::Real>& velx_arr,
2226 const amrex::Array4<const amrex::Real>& vely_arr,
2227 const amrex::Array4<const amrex::Real>& ,
2228 const amrex::Array4<const amrex::Real>& ,
2229 const amrex::Array4<const amrex::Real>& ,
2230 const amrex::Array4<const amrex::Real>& ,
2231 const amrex::Array4<const amrex::Real>& t_surf_arr)
const
2236 amrex::Real velx = 0.5 * ( velx_arr(i,j,k) + velx_arr(i+1,j ,k) );
2237 amrex::Real vely = 0.5 * ( vely_arr(i,j,k) + vely_arr(i ,j+1,k) );
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>& ,
2256 const amrex::Array4<const amrex::Real>& ,
2257 const amrex::Array4<const amrex::Real>& )
const
2261 amrex::Real vely = 0.25 * ( vely_arr(i ,j,k) + vely_arr(i ,j+1,k)
2262 + vely_arr(i-1,j,k) + vely_arr(i-1,j+1,k) );
2278 const amrex::Array4<const amrex::Real>& cons_arr,
2279 const amrex::Array4<const amrex::Real>& velx_arr,
2280 const amrex::Array4<const amrex::Real>& vely_arr,
2281 const amrex::Array4<const amrex::Real>& ,
2282 const amrex::Array4<const amrex::Real>& ,
2283 const amrex::Array4<const amrex::Real>& )
const
2286 amrex::Real velx = 0.25 * ( velx_arr(i,j ,k) + velx_arr(i+1,j ,k)
2287 + velx_arr(i,j-1,k) + velx_arr(i+1,j-1,k) );
2316 const amrex::Array4<const amrex::Real>& cons_arr,
2317 const amrex::Array4<const amrex::Real>& ,
2318 const amrex::Array4<const amrex::Real>& ,
2319 const amrex::Array4<const amrex::Real>& ,
2320 const amrex::Array4<const amrex::Real>& qvm_arr,
2321 const amrex::Array4<const amrex::Real>& ,
2322 const amrex::Array4<const amrex::Real>& q_star_arr,
2323 const amrex::Array4<const amrex::Real>& q_surf_arr)
const
2330 amrex::Real moflux = (std::abs(qstar) >
eps) ? -
rho * qstar * (qv_mean-qv_surf): 0.0;
2341 const amrex::Array4<const amrex::Real>& cons_arr,
2342 const amrex::Array4<const amrex::Real>& ,
2343 const amrex::Array4<const amrex::Real>& ,
2344 const amrex::Array4<const amrex::Real>& ,
2345 const amrex::Array4<const amrex::Real>& tm_arr,
2346 const amrex::Array4<const amrex::Real>& ,
2347 const amrex::Array4<const amrex::Real>& t_star_arr,
2348 const amrex::Array4<const amrex::Real>& t_surf_arr)
const
2355 amrex::Real moflux = (std::abs(tstar) >
eps) ? -
rho * tstar * (theta_mean-theta_surf) : 0.0;
2366 const amrex::Array4<const amrex::Real>& cons_arr,
2367 const amrex::Array4<const amrex::Real>& ,
2368 const amrex::Array4<const amrex::Real>& ,
2369 const amrex::Array4<const amrex::Real>& ,
2370 const amrex::Array4<const amrex::Real>& ,
2371 const amrex::Array4<const amrex::Real>& u_star_arr)
const
2375 amrex::Real ustar = 0.5 * ( u_star_arr(i-1,j,k) + u_star_arr(i,j,k) );
2387 const amrex::Array4<const amrex::Real>& ,
2388 const amrex::Array4<const amrex::Real>& ,
2389 const amrex::Array4<const amrex::Real>& ,
2390 const amrex::Array4<const amrex::Real>& ,
2391 const amrex::Array4<const amrex::Real>& ,
2392 const amrex::Array4<const amrex::Real>& )
const
constexpr amrex::Real KAPPA
Definition: ERF_Constants.H:20
constexpr amrex::Real PI
Definition: ERF_Constants.H:6
constexpr amrex::Real CONST_GRAV
Definition: ERF_Constants.H:21
constexpr amrex::Real PIoTwo
Definition: ERF_Constants.H:7
@ num
Definition: ERF_DataStruct.H:24
#define Rho_comp
Definition: ERF_IndexDefines.H:36
#define RhoTheta_comp
Definition: ERF_IndexDefines.H:37
#define RhoQ1_comp
Definition: ERF_IndexDefines.H:42
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real Donelan_roughness(amrex::Real ustar)
Definition: ERF_MOSTRoughness.H:29
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real COARE3_roughness(amrex::Real zref, amrex::Real umm, amrex::Real ustar)
Definition: ERF_MOSTRoughness.H:9
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real air_viscosity(amrex::Real T_degK)
Definition: ERF_MOSTStress.H:129
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=0.0)
Definition: ERF_Wstar.H:13
@ Mom_v
Definition: ERF_IndexDefines.H:175
@ theta
Definition: ERF_MM5.H:20
@ rho
Definition: ERF_Kessler.H:22
@ qv
Definition: ERF_Kessler.H:28
Definition: ERF_MOSTStress.H:189
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:270
most_data mdata
Definition: ERF_MOSTStress.H:267
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:204
const amrex::Real tol_z
Definition: ERF_MOSTStress.H:269
similarity_funs sfuns
Definition: ERF_MOSTStress.H:268
adiabatic_charnock(amrex::Real Tflux, amrex::Real Qvflux, amrex::Real cnk_a, bool cnk_visc)
Definition: ERF_MOSTStress.H:190
Definition: ERF_MOSTStress.H:359
similarity_funs sfuns
Definition: ERF_MOSTStress.H:419
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:421
most_data mdata
Definition: ERF_MOSTStress.H:418
adiabatic_donelan(amrex::Real Tflux, amrex::Real Qvflux)
Definition: ERF_MOSTStress.H:360
const amrex::Real tol
Definition: ERF_MOSTStress.H:420
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:370
Definition: ERF_MOSTStress.H:278
similarity_funs sfuns
Definition: ERF_MOSTStress.H:349
const amrex::Real tol_z
Definition: ERF_MOSTStress.H:350
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:351
adiabatic_mod_charnock(amrex::Real Tflux, amrex::Real Qvflux, amrex::Real depth)
Definition: ERF_MOSTStress.H:279
most_data mdata
Definition: ERF_MOSTStress.H:348
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:292
Definition: ERF_MOSTStress.H:429
const amrex::Real eps
Definition: ERF_MOSTStress.H:494
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 > &Hwave_arr, const amrex::Array4< amrex::Real > &Lwave_arr, const amrex::Array4< amrex::Real > &eta_arr) const
Definition: ERF_MOSTStress.H:440
const amrex::Real z0_eps
Definition: ERF_MOSTStress.H:495
most_data mdata
Definition: ERF_MOSTStress.H:491
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:497
similarity_funs sfuns
Definition: ERF_MOSTStress.H:492
const amrex::Real tol
Definition: ERF_MOSTStress.H:493
const amrex::Real z0_max
Definition: ERF_MOSTStress.H:496
adiabatic_wave_coupled(amrex::Real Tflux, amrex::Real Qvflux)
Definition: ERF_MOSTStress.H:430
Definition: ERF_MOSTStress.H:140
adiabatic(amrex::Real Tflux, amrex::Real Qvflux)
Definition: ERF_MOSTStress.H:141
similarity_funs sfuns
Definition: ERF_MOSTStress.H:181
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:151
most_data mdata
Definition: ERF_MOSTStress.H:180
Definition: ERF_MOSTStress.H:2180
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_u_flux(const int &i, const int &j, const int &k, 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
Definition: ERF_MOSTStress.H:2249
bulk_coeff_flux(amrex::Real m_Cd, amrex::Real m_Ch, amrex::Real m_Cq)
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 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_surf_arr) const
Definition: ERF_MOSTStress.H:2193
most_data mdata
Definition: ERF_MOSTStress.H:2299
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_t_flux(const int &i, const int &j, const int &k, 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_surf_arr) const
Definition: ERF_MOSTStress.H:2221
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_v_flux(const int &i, const int &j, const int &k, 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
Definition: ERF_MOSTStress.H:2275
Definition: ERF_MOSTStress.H:2063
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_u_flux(const int &i, const int &j, const int &k, 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 > &u_star_arr) const
Definition: ERF_MOSTStress.H:2119
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_q_flux(const int &i, const int &j, const int &k, 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 > &q_star_arr, const amrex::Array4< const amrex::Real > &) const
Definition: ERF_MOSTStress.H:2071
custom_flux(bool specified_rho_surf)
Definition: ERF_MOSTStress.H:2064
const bool fluxes_include_rho
Definition: ERF_MOSTStress.H:2172
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_t_flux(const int &i, const int &j, const int &k, 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 > &t_star_arr, const amrex::Array4< const amrex::Real > &) const
Definition: ERF_MOSTStress.H:2095
const amrex::Real eps
Definition: ERF_MOSTStress.H:2171
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_v_flux(const int &i, const int &j, const int &k, 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 > &u_star_arr) const
Definition: ERF_MOSTStress.H:2146
Definition: ERF_MOSTStress.H:1931
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_u_flux(const int &i, const int &j, const int &k, 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 > &umm_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &) const
Definition: ERF_MOSTStress.H:1985
donelan_flux()
Definition: ERF_MOSTStress.H:1932
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_v_flux(const int &i, const int &j, const int &k, 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 > &umm_arr, const amrex::Array4< const amrex::Real > &, const amrex::Array4< const amrex::Real > &) const
Definition: ERF_MOSTStress.H:2021
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_t_flux(const int &i, const int &j, const int &k, 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 > &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< const amrex::Real > &t_surf_arr) const
Definition: ERF_MOSTStress.H:1958
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_q_flux(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
Definition: ERF_MOSTStress.H:1937
Definition: ERF_MOSTStress.H:1768
moeng_flux()
Definition: ERF_MOSTStress.H:1769
const amrex::Real eps
Definition: ERF_MOSTStress.H:1922
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_u_flux(const int &i, const int &j, const int &k, 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 > &umm_arr, const amrex::Array4< const amrex::Real > &um_arr, const amrex::Array4< const amrex::Real > &u_star_arr) const
Definition: ERF_MOSTStress.H:1850
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:1923
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_t_flux(const int &i, const int &j, const int &k, 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 > &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:1812
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_q_flux(const int &i, const int &j, const int &k, 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 > &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:1774
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_v_flux(const int &i, const int &j, const int &k, 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 > &umm_arr, const amrex::Array4< const amrex::Real > &vm_arr, const amrex::Array4< const amrex::Real > &u_star_arr) const
Definition: ERF_MOSTStress.H:1887
Definition: ERF_MOSTStress.H:13
amrex::Real surf_moist_flux
Moisture flux.
Definition: ERF_MOSTStress.H:19
amrex::Real Cnk_b2
Modified Charnock Eq (4) https://doi.org/10.1175/JAMC-D-17-0137.1.
Definition: ERF_MOSTStress.H:23
amrex::Real Cnk_b
Definition: ERF_MOSTStress.H:25
amrex::Real Ch
Definition: ERF_MOSTStress.H:29
amrex::Real Cnk_d
Modified Charnock Eq (4) https://doi.org/10.1175/JAMC-D-17-0137.1.
Definition: ERF_MOSTStress.H:24
amrex::Real kappa
von Karman constant
Definition: ERF_MOSTStress.H:16
amrex::Real gravity
Acceleration due to gravity (m/s^2)
Definition: ERF_MOSTStress.H:17
amrex::Real Cnk_a
Standard Charnock constant https://doi.org/10.1175/JAMC-D-17-0137.1.
Definition: ERF_MOSTStress.H:21
amrex::Real Cd
Definition: ERF_MOSTStress.H:28
amrex::Real Cq
Definition: ERF_MOSTStress.H:30
const amrex::Real Bjr_beta
Definition: ERF_MOSTStress.H:32
amrex::Real Cnk_b1
Modified Charnock Eq (4) https://doi.org/10.1175/JAMC-D-17-0137.1.
Definition: ERF_MOSTStress.H:22
amrex::Real z0_const
Roughness height – default constant value(m)
Definition: ERF_MOSTStress.H:15
bool visc
Use viscous Charnock formulation.
Definition: ERF_MOSTStress.H:26
amrex::Real surf_temp_flux
Heat flux TODO: decide whether this is <θ'w'> or <θv'w'> under moist conditions.
Definition: ERF_MOSTStress.H:18
Definition: ERF_MOSTStress.H:2307
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_v_flux(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
Definition: ERF_MOSTStress.H:2384
rotate_flux()
Definition: ERF_MOSTStress.H:2308
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_u_flux(const int &i, const int &j, const int &k, 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 > &u_star_arr) const
Definition: ERF_MOSTStress.H:2363
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_t_flux(const int &i, const int &j, const int &k, 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 > &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:2338
const amrex::Real eps
Definition: ERF_MOSTStress.H:2401
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real compute_q_flux(const int &i, const int &j, const int &k, 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 > &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:2313
Definition: ERF_MOSTStress.H:40
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real calc_psi_m(amrex::Real zeta) const
Definition: ERF_MOSTStress.H:90
amrex::Real beta_m
Constants from Dyer, BLM, 1974.
Definition: ERF_MOSTStress.H:115
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real calc_psi_h2(amrex::Real zeta) const
Definition: ERF_MOSTStress.H:67
amrex::Real beta_h
https://doi.org/10.1007/BF00240838
Definition: ERF_MOSTStress.H:116
amrex::Real gamma_h
Definition: ERF_MOSTStress.H:118
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real calc_psi_h(amrex::Real zeta) const
Definition: ERF_MOSTStress.H:104
amrex::Real gamma_m
Definition: ERF_MOSTStress.H:117
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real calc_psi_m2(amrex::Real zeta) const
Definition: ERF_MOSTStress.H:47
Definition: ERF_MOSTStress.H:610
const amrex::Real tol
Definition: ERF_MOSTStress.H:720
surface_flux_charnock(amrex::Real Tflux, amrex::Real Qvflux, amrex::Real cnk_a, bool cnk_visc, bool cons_qflux)
Definition: ERF_MOSTStress.H:611
similarity_funs sfuns
Definition: ERF_MOSTStress.H:719
most_data mdata
Definition: ERF_MOSTStress.H:717
bool spec_qflux
Definition: ERF_MOSTStress.H:718
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:627
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:721
Definition: ERF_MOSTStress.H:840
bool spec_qflux
Definition: ERF_MOSTStress.H:937
const amrex::Real tol
Definition: ERF_MOSTStress.H:939
surface_flux_donelan(amrex::Real Tflux, amrex::Real Qvflux, bool cons_qflux)
Definition: ERF_MOSTStress.H:841
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:940
most_data mdata
Definition: ERF_MOSTStress.H:936
similarity_funs sfuns
Definition: ERF_MOSTStress.H:938
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:853
Definition: ERF_MOSTStress.H:729
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:745
surface_flux_mod_charnock(amrex::Real Tflux, amrex::Real Qvflux, amrex::Real depth, bool cons_qflux)
Definition: ERF_MOSTStress.H:730
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:832
most_data mdata
Definition: ERF_MOSTStress.H:828
bool spec_qflux
Definition: ERF_MOSTStress.H:829
const amrex::Real tol
Definition: ERF_MOSTStress.H:831
similarity_funs sfuns
Definition: ERF_MOSTStress.H:830
Definition: ERF_MOSTStress.H:948
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:1057
surface_flux_wave_coupled(amrex::Real Tflux, amrex::Real Qvflux, bool cons_qflux)
Definition: ERF_MOSTStress.H:949
const amrex::Real z0_max
Definition: ERF_MOSTStress.H:1056
const amrex::Real z0_eps
Definition: ERF_MOSTStress.H:1055
most_data mdata
Definition: ERF_MOSTStress.H:1050
similarity_funs sfuns
Definition: ERF_MOSTStress.H:1052
const amrex::Real tol
Definition: ERF_MOSTStress.H:1053
bool spec_qflux
Definition: ERF_MOSTStress.H:1051
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 > &eta_arr) const
Definition: ERF_MOSTStress.H:961
const amrex::Real eps
Definition: ERF_MOSTStress.H:1054
Definition: ERF_MOSTStress.H:505
similarity_funs sfuns
Definition: ERF_MOSTStress.H:600
surface_flux(amrex::Real Tflux, amrex::Real Qvflux, bool cons_qflux)
Definition: ERF_MOSTStress.H:506
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:518
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:602
most_data mdata
Definition: ERF_MOSTStress.H:598
const amrex::Real tol
Definition: ERF_MOSTStress.H:601
bool spec_qflux
Definition: ERF_MOSTStress.H:599
Definition: ERF_MOSTStress.H:1199
most_data mdata
Definition: ERF_MOSTStress.H:1351
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:1216
bool spec_qflux
Definition: ERF_MOSTStress.H:1352
surface_temp_charnock(amrex::Real Tflux, amrex::Real Qvflux, amrex::Real cnk_a, bool cnk_visc, bool cons_qflux)
Definition: ERF_MOSTStress.H:1200
const amrex::Real tol_z
Definition: ERF_MOSTStress.H:1355
const amrex::Real alpha
Definition: ERF_MOSTStress.H:1356
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:1357
const amrex::Real tol
Definition: ERF_MOSTStress.H:1354
similarity_funs sfuns
Definition: ERF_MOSTStress.H:1353
Definition: ERF_MOSTStress.H:1523
similarity_funs sfuns
Definition: ERF_MOSTStress.H:1631
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:1536
most_data mdata
Definition: ERF_MOSTStress.H:1629
const amrex::Real tol
Definition: ERF_MOSTStress.H:1632
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:1633
bool spec_qflux
Definition: ERF_MOSTStress.H:1630
surface_temp_donelan(amrex::Real Tflux, amrex::Real Qvflux, bool cons_qflux)
Definition: ERF_MOSTStress.H:1524
Definition: ERF_MOSTStress.H:1365
surface_temp_mod_charnock(amrex::Real Tflux, amrex::Real Qvflux, amrex::Real depth, bool cons_qflux)
Definition: ERF_MOSTStress.H:1366
similarity_funs sfuns
Definition: ERF_MOSTStress.H:1511
const amrex::Real tol
Definition: ERF_MOSTStress.H:1512
const amrex::Real tol_z
Definition: ERF_MOSTStress.H:1513
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:1515
most_data mdata
Definition: ERF_MOSTStress.H:1509
bool spec_qflux
Definition: ERF_MOSTStress.H:1510
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:1381
const amrex::Real alpha
Definition: ERF_MOSTStress.H:1514
Definition: ERF_MOSTStress.H:1641
const amrex::Real eps
Definition: ERF_MOSTStress.H:1757
surface_temp_wave_coupled(amrex::Real Tflux, amrex::Real Qvflux, bool cons_qflux)
Definition: ERF_MOSTStress.H:1642
const amrex::Real tol
Definition: ERF_MOSTStress.H:1756
most_data mdata
Definition: ERF_MOSTStress.H:1753
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 > &eta_arr) const
Definition: ERF_MOSTStress.H:1654
const amrex::Real z0_eps
Definition: ERF_MOSTStress.H:1758
similarity_funs sfuns
Definition: ERF_MOSTStress.H:1755
bool spec_qflux
Definition: ERF_MOSTStress.H:1754
const amrex::Real z0_max
Definition: ERF_MOSTStress.H:1759
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:1760
Definition: ERF_MOSTStress.H:1065
surface_temp(amrex::Real Tflux, amrex::Real Qvflux, bool cons_qflux)
Definition: ERF_MOSTStress.H:1066
similarity_funs sfuns
Definition: ERF_MOSTStress.H:1188
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:1078
const amrex::Real tol
Definition: ERF_MOSTStress.H:1189
bool spec_qflux
Definition: ERF_MOSTStress.H:1187
const amrex::Real alpha
Definition: ERF_MOSTStress.H:1190
const amrex::Real WSMIN
Definition: ERF_MOSTStress.H:1191
most_data mdata
Definition: ERF_MOSTStress.H:1186