4 #ifndef ERF_OBSNUDGINGKERNEL_H_
5 #define ERF_OBSNUDGINGKERNEL_H_
7 #include <AMReX_Extension.H>
8 #include <AMReX_GpuQualifiers.H>
9 #include <AMReX_Math.H>
10 #include <AMReX_REAL.H>
30 const int*
agl =
nullptr;
54 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
59 d -= L * amrex::Math::round(d / L);
91 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
100 for (
int s = 0; s < v.nstations; ++s)
102 const int idx = comp*v.nstations + s;
103 const int n = v.count[
idx];
104 if (n == 0) {
continue; }
105 const int o = v.offset[
idx];
113 const amrex::Real q = (dxs*dxs + dys*dys) * v.inv_rh2 + d*d * v.inv_rz2;
114 if (
q > v.qmax) {
continue; }
121 }
else if (h >= zhi) {
122 mean = v.mean[o+n-1];
123 sig = v.sigma[o+n-1];
126 while (v.z[k+1] < h) { ++k; }
127 const amrex::Real f = (h - v.z[k]) / (v.z[k+1] - v.z[k]);
128 mean = (
amrex::Real(1.0) - f) * v.mean[k] + f * v.mean[k+1];
129 sig = (
amrex::Real(1.0) - f) * v.sigma[k] + f * v.sigma[k+1];
133 const amrex::Real target = amrex::min(amrex::max(phi, mean - band), mean + band);
136 sum_wt +=
w * target;
143 return -rate * (phi - tbar);
if(KE_decay_height > 0 &&state_pert.nComp() > RhoKE_comp)
Definition: ERF_InitCustomPert_ABL.H:76
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE int idx(int i, int j, int k, int nx, int ny)
Definition: ERF_InitForEnsemble.cpp:396
Real w
Definition: ERF_Plotfile2DInterpolator.cpp:22
amrex::Real Real
Definition: ERF_ShocInterface.H:19
@ q
Definition: ERF_WSM6.H:273
Definition: ERF_ObsNudging.cpp:22
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real periodic_separation(amrex::Real d, amrex::Real L) noexcept
Definition: ERF_ObsNudgingKernel.H:56
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real obs_nudging_tendency(const ObsNudgingView &v, int comp, amrex::Real x, amrex::Real y, amrex::Real z, amrex::Real z_ground, amrex::Real phi) noexcept
Definition: ERF_ObsNudgingKernel.H:93
Definition: ERF_ObsNudgingKernel.H:26
amrex::Real period_x
Definition: ERF_ObsNudgingKernel.H:45
const amrex::Real * x
Definition: ERF_ObsNudgingKernel.H:28
amrex::Real inv_rh2
Definition: ERF_ObsNudgingKernel.H:37
const int * count
Definition: ERF_ObsNudgingKernel.H:32
const amrex::Real * z
Definition: ERF_ObsNudgingKernel.H:33
const amrex::Real * y
Definition: ERF_ObsNudgingKernel.H:29
const amrex::Real * sigma
Definition: ERF_ObsNudgingKernel.H:35
const amrex::Real * mean
Definition: ERF_ObsNudgingKernel.H:34
amrex::Real qmax
Definition: ERF_ObsNudgingKernel.H:39
amrex::Real sigma_factor
Definition: ERF_ObsNudgingKernel.H:40
const int * agl
Definition: ERF_ObsNudgingKernel.H:30
int nstations
Definition: ERF_ObsNudgingKernel.H:27
amrex::Real period_y
Definition: ERF_ObsNudgingKernel.H:46
amrex::Real inv_tau
Definition: ERF_ObsNudgingKernel.H:41
const int * offset
Definition: ERF_ObsNudgingKernel.H:31
amrex::Real max_rate
Definition: ERF_ObsNudgingKernel.H:42
amrex::Real inv_rz2
Definition: ERF_ObsNudgingKernel.H:38