16 #include "eckit/config/LocalConfiguration.h"
17 #include "eckit/exception/Exceptions.h"
19 #include "oops/base/Variables.h"
20 #include "oops/util/DateTime.h"
21 #include "oops/util/Logger.h"
23 #include "ufo/GeoVaLs.h"
24 #include "ufo/Locations.h"
34 const util::DateTime & vt)
35 : time_(vt), vars_(vars), geom_(new
Geometry(geom))
38 Log::trace() <<
"State::State created." << std::endl;
43 vars_(file,
"state variables"),
46 util::DateTime * dtp = &
time_;
47 oops::Variables vars(
vars_);
50 Log::trace() <<
"State::State created and read in." << std::endl;
54 : vars_(other.vars_), time_(other.time_), geom_(new
Geometry(geom))
58 Log::trace() <<
"State::State created by interpolation." << std::endl;
62 : vars_(other.vars_), time_(other.time_), geom_(new
Geometry(*other.geom_))
66 Log::trace() <<
"State::State copied." << std::endl;
71 Log::trace() <<
"State::State destructed." << std::endl;
85 const oops::Variables & v)
const {
86 Log::trace() <<
"State::State rotate from logical to geographical North."
92 const oops::Variables & v)
const {
93 Log::trace() <<
"State::State rotate from geographical to logical North."
113 Log::trace() <<
"State::State read started." << std::endl;
114 util::DateTime * dtp = &
time_;
116 Log::trace() <<
"State::State read done." << std::endl;
120 const util::DateTime * dtp = &
time_;
125 os << std::endl <<
" Valid time: " <<
validTime();
128 std::vector<double> zstat(3*nf);
130 for (
int jj = 0; jj < nf; ++jj) {
131 os << std::endl << std::right << std::setw(7) <<
vars_[jj]
132 <<
" min=" << std::fixed << std::setw(12) <<
133 std::right << zstat[3*jj]
134 <<
" max=" << std::fixed << std::setw(12) <<
135 std::right << zstat[3*jj+1]
136 <<
" mean=" << std::fixed << std::setw(12) <<
137 std::right << zstat[3*jj+2];
152 nn +=
time_.serialSize();
161 std::vector<double> vect_field(nn, 0);
162 vect.reserve(vect.size() + nn + 1 +
time_.serialSize());
165 vect.insert(vect.end(), vect_field.begin(), vect_field.end());
171 time_.serialize(vect);
184 time_.deserialize(vect, index);
206 Log::trace() <<
"State::State apply logarithmic transformation."
212 Log::trace() <<
"State::State apply exponential transformation."
Geometry handles geometry for SOCA model.
Increment Class: Difference between two states.
const util::DateTime & validTime() const
std::shared_ptr< const Geometry > geometry() const
void serialize(std::vector< double > &) const override
void rotate2grid(const oops::Variables &, const oops::Variables &) const
void accumul(const double &, const State &)
const util::DateTime & validTime() const
void deserialize(const std::vector< double > &, size_t &) override
State & operator+=(const Increment &)
Interactions with Increment.
void write(const eckit::Configuration &) const
State(const Geometry &, const oops::Variables &, const util::DateTime &)
Constructor, destructor.
void expontrans(const oops::Variables &) const
void print(std::ostream &) const override
size_t serialSize() const override
Serialize and deserialize.
void rotate2north(const oops::Variables &, const oops::Variables &) const
Rotations.
void logtrans(const oops::Variables &) const
Logarithmic and exponential transformations.
std::shared_ptr< const Geometry > geom_
void read(const eckit::Configuration &)
I/O and diagnostics.
State & operator=(const State &)
Basic operators.
void soca_state_add_incr_f90(const F90flds &, const F90flds &)
void soca_state_sizes_f90(const F90flds &, int &, int &, int &, int &)
void soca_state_create_f90(F90flds &, const F90geom &, const oops::Variables &)
void soca_state_rotate2grid_f90(const F90flds &, const oops::Variables &, const oops::Variables &)
void soca_state_gpnorm_f90(const F90flds &, const int &, double &)
void soca_state_deserialize_f90(const F90flds &, const F90geom &, const size_t &, const double[], size_t &)
void soca_state_write_file_f90(const F90flds &, const eckit::Configuration *const &, const util::DateTime *const *)
void soca_state_serial_size_f90(const F90flds &, const F90geom &, size_t &)
void soca_state_logtrans_f90(const F90flds &, const oops::Variables &)
void soca_state_axpy_f90(const F90flds &, const double &, const F90flds &)
void soca_state_expontrans_f90(const F90flds &, const oops::Variables &)
void soca_state_zero_f90(const F90flds &)
constexpr double SerializeCheckValue
void soca_state_copy_f90(const F90flds &, const F90flds &)
void soca_state_delete_f90(F90flds &)
void soca_state_change_resol_f90(const F90flds &, const F90flds &)
void soca_state_read_file_f90(const F90flds &, const eckit::Configuration *const &, util::DateTime *const *)
void soca_state_rms_f90(const F90flds &, double &)
void soca_state_rotate2north_f90(const F90flds &, const oops::Variables &, const oops::Variables &)
void soca_state_serialize_f90(const F90flds &, const F90geom &, const size_t &, double[])