14 #include "eckit/config/LocalConfiguration.h" 17 #include "oops/util/abor1_cpp.h" 18 #include "oops/util/DateTime.h" 19 #include "oops/util/Duration.h" 20 #include "oops/util/Logger.h" 41 const util::DateTime &
time):
46 oops::Log::trace() <<
"StateFV3JEDI::StateFV3JEDI created." << std::endl;
51 const eckit::Configuration & file):
53 const std::vector<std::string> *vv;
55 if (file.has(
"variables"))
56 vv =
new std::vector<std::string>(file.getStringVector(
"variables"));
58 ABORT(
"State variables not found in configuration");
62 const eckit::Configuration * cvars = &
vars.toFortran();
65 const eckit::Configuration *
conf = &file;
66 util::DateTime * dtp = &
time_;
68 if (file.has(
"analytic_init")) {
76 oops::Log::trace() <<
"StateFV3JEDI::StateFV3JEDI created and read in." 82 geom_(new
GeometryFV3JEDI(resol)), vars_(other.vars_), time_(other.time_)
87 oops::Log::trace() <<
"StateFV3JEDI::StateFV3JEDI created by interpolation." 92 geom_(other.geom_), vars_(other.vars_), time_(other.time_)
97 oops::Log::trace() <<
"StateFV3JEDI::StateFV3JEDI copied." << std::endl;
102 oops::Log::trace() <<
"StateFV3JEDI::StateFV3JEDI destructed." << std::endl;
118 oops::Log::trace() <<
"StateFV3JEDI::getValues starting." << std::endl;
119 const eckit::Configuration *
conf = &
vars.toFortran();
123 oops::Log::trace() <<
"StateFV3JEDI::getValues done." << std::endl;
130 oops::Log::trace() <<
"StateFV3JEDI::getValues traj starting." << std::endl;
131 const eckit::Configuration *
conf = &
vars.toFortran();
134 oops::Log::trace() <<
"StateFV3JEDI::getValues traj done." << std::endl;
140 oops::Log::trace() <<
"StateFV3JEDI change resolution starting" << std::endl;
142 oops::Log::trace() <<
"StateFV3JEDI change resolution done" << std::endl;
148 oops::Log::trace() <<
"StateFV3JEDI add increment starting" << std::endl;
151 oops::Log::trace() <<
"StateFV3JEDI add increment done" << std::endl;
158 oops::Log::trace() <<
"StateFV3JEDI read starting" << std::endl;
159 const eckit::Configuration *
conf = &config;
160 util::DateTime * dtp = &
time_;
162 oops::Log::trace() <<
"StateFV3JEDI read done" << std::endl;
167 oops::Log::trace() <<
"StateFV3JEDI analytic init starting" << std::endl;
168 const eckit::Configuration *
conf = &config;
169 util::DateTime * dtp = &
time_;
173 oops::Log::trace() <<
"StateFV3JEDI analytic init done" << std::endl;
177 oops::Log::trace() <<
"StateFV3JEDI write starting" << std::endl;
178 const eckit::Configuration *
conf = &config;
179 const util::DateTime * dtp = &
time_;
181 oops::Log::trace() <<
"StateFV3JEDI write done" << std::endl;
185 oops::Log::trace() <<
"StateFV3JEDI print starting" << std::endl;
186 os << std::endl <<
" Valid time: " <<
validTime();
191 os << std::endl <<
"Cube faces = " <<
nx <<
"x" <<
ny 192 <<
", Number of state fields = " << nf;
193 std::vector<double> zstat(3*nf);
195 for (
int jj = 0; jj < nf; ++jj) {
196 os << std::endl <<
"State=" << jj+1 <<
" Min=" << zstat[3*jj]
197 <<
", Max=" << zstat[3*jj+1] <<
", RMS=" << zstat[3*jj+2];
199 oops::Log::trace() <<
"StateFV3JEDI print done" << std::endl;
205 oops::Log::trace() <<
"StateFV3JEDI zero starting" << std::endl;
207 oops::Log::trace() <<
"StateFV3JEDI zero done" << std::endl;
211 oops::Log::trace() <<
"StateFV3JEDI accumul starting" << std::endl;
213 oops::Log::trace() <<
"StateFV3JEDI accumul done" << std::endl;
217 oops::Log::trace() <<
"StateFV3JEDI norm starting" << std::endl;
221 oops::Log::trace() <<
"StateFV3JEDI norm done" << std::endl;
void print(std::ostream &) const
void accumul(const double &, const StateFV3JEDI &)
void stageFv3Files(const eckit::Configuration &conf)
void fv3jedi_state_gpnorm_f90(const F90state &, const int &, double &)
void fv3jedi_state_copy_f90(const F90state &, const F90state &)
void fv3jedi_state_getvalues_f90(const F90geom &, const F90state &, const F90locs &, const eckit::Configuration *const *, const F90goms &, const F90ootrj &)
void fv3jedi_state_analytic_init_f90(const F90state &, const F90geom &, const eckit::Configuration *const *, util::DateTime *const *)
void zero()
For accumulator.
void fv3jedi_state_create_f90(F90state &, const F90geom &, const eckit::Configuration *const *)
void getValues(const ioda::Locations &, const oops::Variables &, ufo::GeoVaLs &) const
Get state values at observation locations.
void fv3jedi_state_rms_f90(const F90state &, double &)
void fv3jedi_state_sizes_f90(const F90state &, int &, int &, int &)
GeoVaLs: geophysical values at locations.
void analytic_init(const eckit::Configuration &, const GeometryFV3JEDI &)
StateFV3JEDI & operator+=(const IncrementFV3JEDI &)
Interactions with Increments.
void changeResolution(const StateFV3JEDI &xx)
Interpolate full state.
void fv3jedi_state_read_file_f90(const F90geom &, const F90state &, const eckit::Configuration *const *, util::DateTime *const *)
void fv3jedi_state_add_incr_f90(const F90geom &, const F90state &, const F90inc &)
const util::DateTime & validTime() const
StateFV3JEDI & operator=(const StateFV3JEDI &)
Basic operators.
void fv3jedi_state_getvalues_notraj_f90(const F90geom &, const F90state &, const F90locs &, const eckit::Configuration *const *, const F90goms &)
Locations class to handle locations for IODA.
void fv3jedi_state_change_resol_f90(const F90state &, const F90state &)
StateFV3JEDI(const GeometryFV3JEDI &, const oops::Variables &, const util::DateTime &)
Constructor, destructor.
void write(const eckit::Configuration &) const
void fv3jedi_state_write_file_f90(const F90geom &, const F90state &, const eckit::Configuration *const *, const util::DateTime *const *)
GeometryFV3JEDI handles geometry for FV3JEDI model.
void fv3jedi_state_zero_f90(const F90state &)
void fv3jedi_state_delete_f90(F90state &)
void read(const eckit::Configuration &)
I/O and diagnostics.
void fv3jedi_state_axpy_f90(const F90state &, const double &, const F90state &)
const eckit::Configuration & toFortran() const
boost::shared_ptr< const GeometryFV3JEDI > geom_
const util::DateTime & validTime() const