4 #ifndef ERF_STATIONSAMPLER_H_
5 #define ERF_STATIONSAMPLER_H_
11 #include <AMReX_BoxArray.H>
12 #include <AMReX_REAL.H>
13 #include <AMReX_Vector.H>
64 const amrex::Real scale = std::max(std::max(std::abs(dlat_di), std::abs(dlon_di)),
65 std::max(std::abs(dlat_dj), std::abs(dlon_dj)));
66 const amrex::Real det = dlat_di*dlon_dj - dlat_dj*dlon_di;
70 di = ( dlat*dlon_dj - dlon*dlat_dj) / det;
71 dj = (-dlat*dlon_di + dlon*dlat_di) / det;
135 amrex::Vector<StationVar>
vars;
136 amrex::Vector<StationLoc>
locs;
148 for (
const auto& v :
vars) {
if (!v.is_2d) {
return true; } }
209 [[nodiscard]]
bool stencilsValidFor (
const amrex::Vector<amrex::BoxArray>& ba,
210 int finest_level)
const;
246 std::string
m_dir =
"Output_Stations";
amrex::Real Real
Definition: ERF_ShocInterface.H:19
bool invert_latlon_offset(amrex::Real dlat, amrex::Real dlon, amrex::Real dlat_di, amrex::Real dlon_di, amrex::Real dlat_dj, amrex::Real dlon_dj, amrex::Real &di, amrex::Real &dj)
Definition: ERF_StationSampler.H:59
Definition: ERF_StationSampler.H:154
StationSampler(const std::string &pp_prefix)
Definition: ERF_StationSampler.cpp:211
bool m_write_timestamp
Definition: ERF_StationSampler.H:243
bool m_levels_reported
Definition: ERF_StationSampler.H:242
int m_ncolumns
Definition: ERF_StationSampler.H:228
bool m_is_restart
Definition: ERF_StationSampler.H:240
amrex::Vector< Station > m_stations
Definition: ERF_StationSampler.H:227
std::string columnSignature(const Station &station) const
Definition: ERF_StationSampler.cpp:392
void buildColumns()
Definition: ERF_StationSampler.cpp:345
amrex::Vector< Station > & stations()
Definition: ERF_StationSampler.H:162
void setRestart(bool is_restart)
Definition: ERF_StationSampler.H:179
amrex::Vector< amrex::BoxArray > m_stencil_grids
Definition: ERF_StationSampler.H:238
int m_buffer_steps
Definition: ERF_StationSampler.H:229
bool m_low_height_warned
Definition: ERF_StationSampler.H:241
amrex::Vector< amrex::Real > m_epoch_times
Definition: ERF_StationSampler.H:233
void writeHeader(const Station &station, std::ostream &os) const
Definition: ERF_StationSampler.cpp:430
amrex::Vector< amrex::Real > m_rows
Definition: ERF_StationSampler.H:234
void flush()
Definition: ERF_StationSampler.cpp:605
bool empty() const
Definition: ERF_StationSampler.H:160
const amrex::Vector< Station > & stations() const
Definition: ERF_StationSampler.H:163
void setLevelsReported()
Definition: ERF_StationSampler.H:201
void checkHeaderMatches(const Station &station, const std::string &filename) const
Definition: ERF_StationSampler.cpp:492
void checkRestartFiles() const
Definition: ERF_StationSampler.cpp:570
std::string m_datetime_format
Definition: ERF_StationSampler.H:244
void rememberStencilGrids(const amrex::Vector< amrex::BoxArray > &ba, int finest_level)
Definition: ERF_StationSampler.cpp:598
bool stencilsValidFor(const amrex::Vector< amrex::BoxArray > &ba, int finest_level) const
Definition: ERF_StationSampler.cpp:588
void appendRow(amrex::Real time, amrex::Real epoch_time, const amrex::Vector< amrex::Real > &values)
Definition: ERF_StationSampler.cpp:365
void setWriteTimestamp(bool write_timestamp, const std::string &datetime_format)
Definition: ERF_StationSampler.H:186
int numColumns() const
Definition: ERF_StationSampler.H:165
std::string m_dir
Definition: ERF_StationSampler.H:246
amrex::Vector< amrex::Real > m_times
Definition: ERF_StationSampler.H:232
void setLowHeightWarned()
Definition: ERF_StationSampler.H:196
int bufferSteps() const
Definition: ERF_StationSampler.H:191
bool lowHeightWarned() const
Definition: ERF_StationSampler.H:195
bool m_opened
Definition: ERF_StationSampler.H:247
bool levelsReported() const
Definition: ERF_StationSampler.H:200
real(c_double), private di
Definition: ERF_module_mp_morr_two_moment.F90:203
Definition: ERF_StationSampler.H:125
int height
Definition: ERF_StationSampler.H:128
int station
Definition: ERF_StationSampler.H:126
int loc
Definition: ERF_StationSampler.H:127
int var
Definition: ERF_StationSampler.H:129
Definition: ERF_StationSampler.H:86
amrex::Real req_lat
Definition: ERF_StationSampler.H:90
amrex::Real wx
Definition: ERF_StationSampler.H:110
int j1
Definition: ERF_StationSampler.H:109
amrex::Real wy
Definition: ERF_StationSampler.H:111
amrex::Real req_lon
Definition: ERF_StationSampler.H:91
int jc
Definition: ERF_StationSampler.H:105
int i0
Definition: ERF_StationSampler.H:106
int ktop
Definition: ERF_StationSampler.H:112
amrex::Real got_lat
Definition: ERF_StationSampler.H:99
int col_begin
Definition: ERF_StationSampler.H:117
amrex::Real x
Definition: ERF_StationSampler.H:94
int ic
Definition: ERF_StationSampler.H:104
int i1
Definition: ERF_StationSampler.H:108
bool use_latlon
Definition: ERF_StationSampler.H:87
amrex::Real y
Definition: ERF_StationSampler.H:95
amrex::Real got_lon
Definition: ERF_StationSampler.H:100
int j0
Definition: ERF_StationSampler.H:107
int lev
Definition: ERF_StationSampler.H:103
Definition: ERF_StationSampler.H:76
std::string units
Definition: ERF_StationSampler.H:78
amrex::Real missing_value
Definition: ERF_StationSampler.H:81
int comp
Definition: ERF_StationSampler.H:82
std::string name
Definition: ERF_StationSampler.H:77
bool is_missing
Definition: ERF_StationSampler.H:80
bool is_2d
Definition: ERF_StationSampler.H:79
Definition: ERF_StationSampler.H:133
amrex::Vector< StationLoc > locs
Definition: ERF_StationSampler.H:136
bool has_3d_vars() const
Definition: ERF_StationSampler.H:147
bool heights_are_agl
Definition: ERF_StationSampler.H:142
std::string name
Definition: ERF_StationSampler.H:134
amrex::Vector< amrex::Real > heights
Definition: ERF_StationSampler.H:141
amrex::Vector< StationVar > vars
Definition: ERF_StationSampler.H:135
amrex::Vector< int > columns
Definition: ERF_StationSampler.H:145