Go to the documentation of this file.
19 #include "atlas/field.h"
21 #include "eckit/config/Configuration.h"
22 #include "eckit/config/LocalConfiguration.h"
30 #include "oops/util/DateTime.h"
31 #include "oops/util/Logger.h"
37 const bool & lbc,
const util::DateTime & time):
38 geom_(new
GeometryQG(geom)), vars_(vars), lbc_(lbc), time_(time)
44 : geom_(other.geom_), vars_(other.vars_), lbc_(other.lbc_), time_(other.time_)
53 : geom_(other.geom_), vars_(other.vars_), lbc_(other.lbc_), time_(other.time_)
60 : geom_(new
GeometryQG(geom)), vars_(other.vars_), lbc_(other.lbc_), time_(other.time_)
67 : geom_(other.geom_), vars_(vars), lbc_(other.lbc_), time_(other.time_)
180 int nx, ny, nz, nb, lq, lbc;
183 os << std::endl <<
" Resolution = " << nx <<
", " << ny <<
", " << nz;
185 os << std::endl <<
" Variable = potential vorticity";
187 os << std::endl <<
" Variable = streamfunction";
190 os << std::endl <<
" Boundary conditions are activated";
192 os << std::endl <<
" Boundary conditions are not activated";
194 std::vector<double> zstat(4*(1+nb));
196 for (
int jj = 0; jj < 1+nb; ++jj) {
197 std::ios_base::fmtflags f(os.flags());
198 os << std::endl <<
" Scaling=" << std::setprecision(4) << std::setw(7) << zstat[4*jj]
199 <<
", Min=" << std::fixed << std::setprecision(4) << std::setw(12) << zstat[4*jj+1]
200 <<
", Max=" << std::fixed << std::setprecision(4) << std::setw(12) <<zstat[4*jj+2]
201 <<
", RMS=" << std::fixed << std::setprecision(4) << std::setw(12) <<zstat[4*jj+3];
210 if (nonlinear) ok = (nb == 2);
217 std::vector<int> varlens(1, nz);
218 std::vector<double> values(nz);
224 const std::vector<double> vals = x.
getVals();
232 nn += nx * ny * nz + nb * (nx + 1) * nz;
233 nn +=
time_.serialSize();
241 std::vector<double> v_fld(size_fld, 0);
245 vect.insert(vect.end(), v_fld.begin(), v_fld.end());
248 time_.serialize(vect);
253 time_.deserialize(vect, index);
void qg_fields_change_resol_f90(const F90flds &, const F90flds &)
void qg_fields_create_f90(F90flds &, const F90geom &, const oops::Variables &, const bool &)
void qg_fields_zero_f90(const F90flds &)
FieldsQG(const GeometryQG &, const oops::Variables &, const bool &, const util::DateTime &)
The namespace for the qg model.
void fromAtlas(atlas::FieldSet *)
void qg_fields_self_schur_f90(const F90flds &, const F90flds &)
double dot_product_with(const FieldsQG &) const
const oops::Variables vars_
void qg_fields_set_atlas_f90(const F90flds &, const oops::Variables &, atlas::field::FieldSetImpl *)
void setAtlas(atlas::FieldSet *) const
void qg_fields_analytic_init_f90(const F90flds &, const eckit::Configuration &, util::DateTime &)
void qg_fields_delete_f90(F90flds &)
void qg_fields_random_f90(const F90flds &)
void dirac(const eckit::Configuration &)
void serialize(std::vector< double > &) const override
void write(const eckit::Configuration &) const
void qg_fields_serialize_f90(const F90flds &, const std::size_t &, double[])
void qg_fields_from_atlas_f90(const F90flds &, const oops::Variables &, atlas::field::FieldSetImpl *)
void qg_fields_dirac_f90(const F90flds &, const eckit::Configuration &)
void print(std::ostream &) const override
void qg_fields_create_from_other_f90(F90flds &, const F90flds &)
bool isForModel(const bool &) const
void setLocal(const oops::LocalIncrement &, const GeometryQGIterator &)
void qg_fields_read_file_f90(const F90flds &, const eckit::Configuration &, util::DateTime &)
void qg_fields_add_incr_f90(const F90flds &, const F90flds &)
void qg_fields_write_file_f90(const F90flds &, const eckit::Configuration &, const util::DateTime &)
void qg_fields_to_atlas_f90(const F90flds &, const oops::Variables &, atlas::field::FieldSetImpl *)
FieldsQG & operator+=(const FieldsQG &)
size_t serialSize() const override
Serialization.
void qg_fields_diff_incr_f90(const F90flds &, const F90flds &, const F90flds &)
void analytic_init(const eckit::Configuration &)
void qg_fields_ones_f90(const F90flds &)
const F90iter & toFortran() const
void qg_fields_getpoint_f90(const F90flds &, const F90iter &, const int &, double &)
void qg_fields_copy_f90(const F90flds &, const F90flds &)
oops::LocalIncrement getLocal(const GeometryQGIterator &) const
void qg_fields_setpoint_f90(const F90flds &, const F90iter &, const int &, const double &)
void schur_product_with(const FieldsQG &)
void add(const FieldsQG &)
std::shared_ptr< const GeometryQG > geom_
void qg_fields_self_add_f90(const F90flds &, const F90flds &)
void toAtlas(atlas::FieldSet *) const
void changeResolution(const FieldsQG &)
const util::DateTime & time() const
void qg_fields_self_sub_f90(const F90flds &, const F90flds &)
void qg_fields_vars_f90(const F90flds &, int &, int &)
void deserialize(const std::vector< double > &, size_t &) override
void qg_fields_deserialize_f90(const F90flds &, const std::size_t &, const double[], const std::size_t &)
void qg_fields_dot_prod_f90(const F90flds &, const F90flds &, double &)
FieldsQG & operator-=(const FieldsQG &)
void axpy(const double &, const FieldsQG &)
void diff(const FieldsQG &, const FieldsQG &)
FieldsQG & operator*=(const double &)
void qg_fields_self_mul_f90(const F90flds &, const double &)
void qg_fields_gpnorm_f90(const F90flds &, const int &, double &)
void qg_fields_axpy_f90(const F90flds &, const double &, const F90flds &)
Class to represent a Fields for the QG model.
GeometryQG handles geometry for QG model.
const std::vector< double > & getVals() const
FieldsQG & operator=(const FieldsQG &)
void qg_fields_sizes_f90(const F90flds &, int &, int &, int &, int &)
void read(const eckit::Configuration &)
void qg_fields_rms_f90(const F90flds &, double &)