4 #ifndef ERF_OBSNUDGING_H_
5 #define ERF_OBSNUDGING_H_
7 #include <AMReX_BoxArray.H>
8 #include <AMReX_DistributionMapping.H>
9 #include <AMReX_Geometry.H>
10 #include <AMReX_GpuContainers.H>
11 #include <AMReX_MultiFab.H>
12 #include <AMReX_REAL.H>
13 #include <AMReX_Vector.H>
80 bool use_datetime,
double start_time);
96 void prepare_level (
int lev,
const amrex::Geometry& geom,
const amrex::MultiFab&
cons,
97 const amrex::MultiFab* z_phys_nd,
double time);
103 const amrex::MultiFab&
cons, amrex::MultiFab& cc_src,
104 const amrex::MultiFab* z_phys_nd,
const amrex::MultiFab* blank);
108 const amrex::MultiFab&
cons,
109 const amrex::MultiFab&
xvel,
const amrex::MultiFab&
yvel,
110 const amrex::MultiFab&
zvel,
111 amrex::MultiFab& xmom_src, amrex::MultiFab& ymom_src,
112 amrex::MultiFab& zmom_src,
113 const amrex::MultiFab* z_phys_nd,
114 const amrex::MultiFab* blank_x,
const amrex::MultiFab* blank_y,
115 const amrex::MultiFab* blank_z);
123 const amrex::MultiFab&
surface (
int lev,
const amrex::Geometry& geom,
124 const amrex::MultiFab&
cons,
125 const amrex::MultiFab* z_phys_nd,
double time);
156 amrex::Vector<std::unique_ptr<amrex::MultiFab>>
m_zsurf;
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_LatLonMap.H:142
Definition: ERF_ObsNudging.H:74
void add_momentum_sources(int lev, double time, amrex::Real dt, const amrex::Geometry &geom, const amrex::MultiFab &cons, const amrex::MultiFab &xvel, const amrex::MultiFab &yvel, const amrex::MultiFab &zvel, amrex::MultiFab &xmom_src, amrex::MultiFab &ymom_src, amrex::MultiFab &zmom_src, const amrex::MultiFab *z_phys_nd, const amrex::MultiFab *blank_x, const amrex::MultiFab *blank_y, const amrex::MultiFab *blank_z)
Definition: ERF_ObsNudging.cpp:603
bool m_have_targets
Definition: ERF_ObsNudging.H:147
bool m_nudge_w
Definition: ERF_ObsNudging.H:142
amrex::Vector< ObsNudgingStation > m_stations
Definition: ERF_ObsNudging.H:129
amrex::Real m_sigma_factor
Definition: ERF_ObsNudging.H:139
void print_summary() const
Definition: ERF_ObsNudging.cpp:381
amrex::Real m_horizontal_radius
Definition: ERF_ObsNudging.H:136
amrex::Vector< std::unique_ptr< amrex::MultiFab > > m_zsurf
Definition: ERF_ObsNudging.H:156
amrex::Gpu::DeviceVector< amrex::Real > m_d_z
Definition: ERF_ObsNudging.H:149
void resolve_positions(const amrex::Geometry &geom0, const LatLonMap *latlon)
Definition: ERF_ObsNudging.cpp:335
amrex::Real m_vertical_radius
Definition: ERF_ObsNudging.H:137
amrex::Gpu::DeviceVector< amrex::Real > m_d_y
Definition: ERF_ObsNudging.H:149
amrex::Gpu::DeviceVector< amrex::Real > m_d_sigma
Definition: ERF_ObsNudging.H:149
void update_targets(double time)
Definition: ERF_ObsNudging.cpp:409
amrex::Gpu::DeviceVector< int > m_d_agl
Definition: ERF_ObsNudging.H:150
ProblemBase * m_prob
Definition: ERF_ObsNudging.H:132
amrex::Vector< double > m_zsurf_time
Definition: ERF_ObsNudging.H:159
void add_theta_source(int lev, double time, amrex::Real dt, const amrex::Geometry &geom, const amrex::MultiFab &cons, amrex::MultiFab &cc_src, const amrex::MultiFab *z_phys_nd, const amrex::MultiFab *blank)
Definition: ERF_ObsNudging.cpp:568
amrex::Gpu::DeviceVector< amrex::Real > m_d_mean
Definition: ERF_ObsNudging.H:149
obs_nudging::ObsNudgingView view(amrex::Real dt, const amrex::Geometry &geom) const
Definition: ERF_ObsNudging.cpp:466
amrex::Real m_tau
Definition: ERF_ObsNudging.H:135
bool m_nudge_theta
Definition: ERF_ObsNudging.H:143
amrex::Vector< amrex::DistributionMapping > m_zsurf_dm
Definition: ERF_ObsNudging.H:158
amrex::Vector< amrex::BoxArray > m_zsurf_ba
Definition: ERF_ObsNudging.H:157
void prepare_level(int lev, const amrex::Geometry &geom, const amrex::MultiFab &cons, const amrex::MultiFab *z_phys_nd, double time)
Definition: ERF_ObsNudging.cpp:561
const amrex::MultiFab & surface(int lev, const amrex::Geometry &geom, const amrex::MultiFab &cons, const amrex::MultiFab *z_phys_nd, double time)
Definition: ERF_ObsNudging.cpp:493
amrex::Gpu::DeviceVector< int > m_d_offset
Definition: ERF_ObsNudging.H:150
amrex::Gpu::DeviceVector< int > m_d_count
Definition: ERF_ObsNudging.H:150
bool wants_latlon() const
Definition: ERF_ObsNudging.cpp:326
TerrainType m_terrain_type
Definition: ERF_ObsNudging.H:131
ObsNudging(TerrainType terrain_type, ProblemBase *prob, bool use_datetime, double start_time)
Definition: ERF_ObsNudging.cpp:161
double m_time_origin
Definition: ERF_ObsNudging.H:144
amrex::Gpu::DeviceVector< amrex::Real > m_d_x
Definition: ERF_ObsNudging.H:149
bool m_nudge_wind
Definition: ERF_ObsNudging.H:141
double m_targets_time
Definition: ERF_ObsNudging.H:148
amrex::Real m_missing_value
Definition: ERF_ObsNudging.H:140
amrex::Real m_cutoff
Definition: ERF_ObsNudging.H:138
Definition: ERF_ProbCommon.H:60
@ None
Definition: ERF_LSM_Types.H:6
@ xvel
Definition: ERF_IndexDefines.H:218
@ cons
Definition: ERF_IndexDefines.H:217
@ zvel
Definition: ERF_IndexDefines.H:220
@ yvel
Definition: ERF_IndexDefines.H:219
Definition: ERF_ObsNudging.H:47
amrex::Real got_lat
Definition: ERF_ObsNudging.H:60
amrex::Real req_lat
Definition: ERF_ObsNudging.H:52
amrex::Real cos_alpha
Definition: ERF_ObsNudging.H:67
bool use_latlon
Definition: ERF_ObsNudging.H:51
amrex::Real x
Definition: ERF_ObsNudging.H:56
bool earth_frame
Definition: ERF_ObsNudging.H:63
amrex::Real req_lon
Definition: ERF_ObsNudging.H:53
std::string name
Definition: ERF_ObsNudging.H:48
bool agl
Definition: ERF_ObsNudging.H:64
amrex::Real sin_alpha
Definition: ERF_ObsNudging.H:68
obs_nudging::StationSeries series
Definition: ERF_ObsNudging.H:70
std::string file
Definition: ERF_ObsNudging.H:49
amrex::Real got_lon
Definition: ERF_ObsNudging.H:61
amrex::Real y
Definition: ERF_ObsNudging.H:57
Definition: ERF_ObsNudgingKernel.H:26
Definition: ERF_ObsNudgingSeries.H:51