Go to the documentation of this file.
16 #include "atlas/field.h"
18 #include "eckit/config/LocalConfiguration.h"
19 #include "eckit/exception/Exceptions.h"
21 #include "oops/base/Variables.h"
22 #include "oops/util/DateTime.h"
23 #include "oops/util/Duration.h"
24 #include "oops/util/Logger.h"
26 #include "ufo/GeoVaLs.h"
27 #include "ufo/Locations.h"
37 const util::DateTime & time): geom_(new
Geometry(geom)), vars_(vars),
39 oops::Log::trace() <<
"Increment::Increment (from geom, vars and time) starting" << std::endl;
42 oops::Log::trace() <<
"Increment::Increment (from geom, vars and time) done" << std::endl;
46 vars_(other.vars_), time_(other.time_) {
47 oops::Log::trace() <<
"Increment::Increment (from geom and other) starting" << std::endl;
51 oops::Log::trace() <<
"Increment::Increment (from geom and other) done" << std::endl;
55 vars_(other.vars_), time_(other.time_) {
56 oops::Log::trace() <<
"Increment::Increment (from other and bool copy) starting" << std::endl;
63 oops::Log::trace() <<
"Increment::Increment (from other and bool copy) done" << std::endl;
140 int ist, iend, jst, jend, npz;
143 oops::Variables fieldNames =
vars_;
145 std::vector<int> varlens(fieldNames.size());
146 for (
unsigned int ii = 0; ii < fieldNames.size(); ii++) {
151 int lenvalues = std::accumulate(varlens.begin(), varlens.end(), 0);
152 std::vector<double> values(lenvalues);
158 return oops::LocalIncrement(oops::Variables(fieldNames), values, varlens);
162 const std::vector<double> vals = values.getVals();
179 const eckit::Configuration * conf = &config;
180 util::DateTime * dtp = &
time_;
185 const eckit::Configuration * conf = &config;
186 const util::DateTime * dtp = &
time_;
204 <<
" --------------------------------------------------------------------------------";
205 os << std::endl <<
" Increment print | number of fields = " << numberFields
206 <<
" | cube sphere face size: C" << cubeSize;
209 const int FieldNameLen = 15;
210 char fieldName[FieldNameLen];
211 std::vector<double> minMaxRms(3);
212 for (
int f = 0; f < numberFields; f++) {
215 std::string fieldNameStr(fieldName);
216 os << std::endl << std::scientific << std::showpos <<
" "
217 << fieldNameStr.substr(0, FieldNameLen-1) <<
": Min = " << minMaxRms[0]
218 <<
", Max = " << minMaxRms[1] <<
", RMS = " << minMaxRms[2]
222 os.unsetf(std::ios_base::floatfield);
226 <<
" --------------------------------------------------------------------------------";
230 const eckit::Configuration * conf = &config;
239 nn +=
time_.serialSize();
245 std::vector<double> v_inc(size_inc, 0);
248 vect.insert(vect.end(), v_inc.begin(), v_inc.end());
251 vect.push_back(-54321.98765);
252 time_.serialize(vect);
259 ASSERT(vect.at(index) == -54321.98765);
262 time_.deserialize(vect, index);
std::shared_ptr< const Geometry > geom_
subroutine copy(self, other)
void fv3jedi_increment_to_atlas_f90(const F90inc &, const F90geom &, const oops::Variables &, atlas::field::FieldSetImpl *)
void fv3jedi_increment_self_sub_f90(const F90inc &, const F90inc &)
void fv3jedi_increment_self_schur_f90(const F90inc &, const F90inc &)
void fv3jedi_increment_write_file_f90(const F90geom &, const F90inc &, const eckit::Configuration *const *, const util::DateTime *const *)
void fv3jedi_increment_copy_f90(const F90inc &, const F90inc &)
void fv3jedi_increment_random_f90(const F90inc &)
void write(const eckit::Configuration &) const
void fv3jedi_increment_getnfieldsncube_f90(const F90state &, int &, int &)
void fv3jedi_increment_axpy_inc_f90(const F90inc &, const double &, const F90inc &)
size_t serialSize() const
Serialize and deserialize.
void fv3jedi_increment_axpy_state_f90(const F90inc &, const double &, const F90state &)
Increment & operator*=(const double &)
oops::LocalIncrement getLocal(const GeometryIterator &) const
Get/Set increment values at grid points.
void deserialize(const std::vector< double > &, size_t &)
void diff(const State &, const State &)
Basic operators.
void fv3jedi_increment_getminmaxrms_f90(const F90state &, int &, const int &, char *, double &)
void fv3jedi_increment_delete_f90(F90inc &)
void fv3jedi_increment_change_resol_f90(const F90inc &, const F90geom &, const F90inc &, const F90geom &)
void fv3jedi_increment_deserialize_f90(const F90inc &, const std::size_t &, const double[], const std::size_t &)
void fv3jedi_increment_getpoint_f90(const F90inc &, const F90iter &, double &, const int &)
void setLocal(const oops::LocalIncrement &, const GeometryIterator &)
void toAtlas(atlas::FieldSet *) const
void fv3jedi_increment_serialize_f90(const F90inc &, const std::size_t &, double[])
const util::DateTime & validTime() const
void print(std::ostream &) const
Increment & operator=(const Increment &)
const util::DateTime & validTime() const
Increment(const Geometry &, const oops::Variables &, const util::DateTime &)
Constructor, destructor.
void fv3jedi_increment_ones_f90(const F90inc &)
Geometry handles geometry for FV3JEDI model.
void axpy(const double &, const Increment &, const bool check=true)
void fv3jedi_increment_diff_incr_f90(const F90inc &, const F90state &, const F90state &, const F90geom &)
void fv3jedi_increment_self_add_f90(const F90inc &, const F90inc &)
std::shared_ptr< const Geometry > geometry() const
void fv3jedi_increment_norm_f90(const F90inc &, double &)
void fv3jedi_geom_start_end_f90(const F90geom &, int &, int &, int &, int &, int &)
void schur_product_with(const Increment &)
void fv3jedi_increment_from_atlas_f90(const F90inc &, const F90geom &, const oops::Variables &, atlas::field::FieldSetImpl *)
void fv3jedi_increment_zero_f90(const F90inc &)
void fv3jedi_increment_dot_prod_f90(const F90inc &, const F90inc &, double &)
Increment & operator+=(const Increment &)
Configuration files should be formatted as e.g.
void accumul(const double &, const State &)
Other.
void setAtlas(atlas::FieldSet *) const
ATLAS.
void fv3jedi_increment_set_atlas_f90(const F90inc &, const F90geom &, const oops::Variables &, atlas::field::FieldSetImpl *)
void fv3jedi_increment_sizes_f90(const F90inc &, int &)
void fromAtlas(atlas::FieldSet *)
void fv3jedi_increment_read_file_f90(const F90geom &, const F90inc &, const eckit::Configuration *const *, util::DateTime *const *)
void serialize(std::vector< double > &) const
void read(const eckit::Configuration &)
I/O and diagnostics.
void fv3jedi_increment_dirac_f90(const F90inc &, const eckit::Configuration *const *, const F90geom &)
void fv3jedi_increment_setpoint_f90(F90inc &, const F90iter &, const double &, const int &)
void dirac(const eckit::Configuration &)
Increment & operator-=(const Increment &)
void fv3jedi_increment_self_mul_f90(const F90inc &, const double &)
double dot_product_with(const Increment &) const
void fv3jedi_increment_create_f90(F90inc &, const F90geom &, const oops::Variables &)