13 #include "eckit/config/LocalConfiguration.h" 16 #include "oops/util/DateTime.h" 17 #include "oops/util/Duration.h" 18 #include "oops/util/Logger.h" 37 const util::DateTime &
time):
43 oops::Log::trace() <<
"IncrementFV3JEDI constructed." << std::endl;
48 : geom_(new
GeometryFV3JEDI(geom)), vars_(other.vars_), time_(other.time_)
53 oops::Log::trace() <<
"IncrementFV3JEDI constructed from other." << std::endl;
58 : geom_(other.geom_), vars_(other.vars_), time_(other.time_)
67 oops::Log::trace() <<
"IncrementFV3JEDI copy-created." << std::endl;
71 : geom_(other.geom_), vars_(other.vars_), time_(other.time_)
76 oops::Log::trace() <<
"IncrementFV3JEDI copy-created." << std::endl;
81 oops::Log::trace() <<
"IncrementFV3JEDI destructed" << std::endl;
155 const eckit::Configuration *
conf = &
vars.toFortran();
168 const eckit::Configuration *
conf = &
vars.toFortran();
177 const int & colocated)
const {
183 const int & colocated)
const {
194 const eckit::Configuration *
conf = &config;
195 util::DateTime * dtp = &
time_;
200 const eckit::Configuration *
conf = &config;
201 const util::DateTime * dtp = &
time_;
212 oops::Log::trace() <<
"IncrementFV3JEDI print starting" << std::endl;
213 os << std::endl <<
" Valid time: " <<
validTime();
218 os << std::endl <<
"Cube faces = "<<
nx <<
"x" <<
ny 219 <<
", Number of increment fields = " << nf;
220 std::vector<double> zstat(3*nf);
222 for (
int jj = 0; jj < nf; ++jj) {
223 os << std::endl <<
"Increment=" << jj+1 <<
" Min=" << zstat[3*jj]
224 <<
", Max=" << zstat[3*jj+1] <<
", RMS=" << zstat[3*jj+2];
226 oops::Log::trace() <<
"IncrementFV3JEDI print done" << std::endl;
230 const eckit::Configuration *
conf = &config;
235 const eckit::Configuration & config) {
236 oops::Log::trace() <<
"IncrementFV3JEDI jnormgrad starting" << std::endl;
237 const eckit::Configuration *
conf = &config;
240 oops::Log::trace() <<
"IncrementFV3JEDI jnormgrad done" << std::endl;
IncrementFV3JEDI(const GeometryFV3JEDI &, const oops::Variables &, const util::DateTime &)
Constructor, destructor.
void jnormgrad(const StateFV3JEDI &, const eckit::Configuration &)
void dirac(const eckit::Configuration &)
void fv3jedi_increment_self_sub_f90(const F90inc &, const F90inc &)
IncrementFV3JEDI & operator+=(const IncrementFV3JEDI &)
void fv3jedi_increment_self_schur_f90(const F90inc &, const F90inc &)
subroutine, public copy(self, rhs)
void accumul(const double &, const StateFV3JEDI &)
Other.
void fv3jedi_increment_random_f90(const F90inc &)
virtual ~IncrementFV3JEDI()
void getValuesTL(const ioda::Locations &, const oops::Variables &, ufo::GeoVaLs &, const GetValuesTrajFV3JEDI &) const
Get increment values at observation locations.
void fv3jedi_increment_write_file_f90(const F90geom &, const F90inc &, const eckit::Configuration *const *, const util::DateTime *const *)
void read(const eckit::Configuration &)
I/O and diagnostics.
void fv3jedi_increment_copy_f90(const F90inc &, const F90inc &)
void fv3jedi_increment_increment_to_ug_f90(const F90inc &, const int &, const int &)
IncrementFV3JEDI & operator=(const IncrementFV3JEDI &)
void fv3jedi_increment_change_resol_f90(const F90inc &, const F90inc &)
void field_from_ug(const oops::UnstructuredGrid &)
void fv3jedi_increment_diff_incr_f90(const F90inc &, const F90state &, const F90state &)
void fv3jedi_increment_axpy_inc_f90(const F90inc &, const double &, const F90inc &)
void schur_product_with(const IncrementFV3JEDI &)
void fv3jedi_increment_delete_f90(F90inc &)
void field_to_ug(oops::UnstructuredGrid &, const int &) const
void fv3jedi_increment_axpy_state_f90(const F90inc &, const double &, const F90state &)
GeoVaLs: geophysical values at locations.
void fv3jedi_increment_jnormgrad_f90(const F90inc &, const F90geom &, const F90state &, const eckit::Configuration *const *)
void ug_coord(oops::UnstructuredGrid &, const int &) const
Unstructured grid.
real, dimension(:,:,:), allocatable vt
void print(std::ostream &) const
void fv3jedi_increment_create_f90(F90inc &, const F90geom &, const eckit::Configuration *const *)
double dot_product_with(const IncrementFV3JEDI &) const
void fv3jedi_increment_getvalues_tl_f90(const F90geom &, const F90inc &, const F90locs &, const eckit::Configuration *const *, const F90goms &, const F90ootrj &)
IncrementFV3JEDI & operator-=(const IncrementFV3JEDI &)
void axpy(const double &, const IncrementFV3JEDI &, const bool check=true)
void fv3jedi_increment_gpnorm_f90(const F90inc &, const int &, double &)
const util::DateTime & validTime() const
void fv3jedi_increment_self_add_f90(const F90inc &, const F90inc &)
Locations class to handle locations for IODA.
void write(const eckit::Configuration &) const
void fv3jedi_increment_getvalues_ad_f90(const F90geom &, const F90inc &, const F90locs &, const eckit::Configuration *const *, const F90goms &, const F90ootrj &)
void fv3jedi_increment_rms_f90(const F90inc &, double &)
void fv3jedi_increment_zero_f90(const F90inc &)
void fv3jedi_increment_read_file_f90(const F90geom &, const F90inc &, const eckit::Configuration *const *, util::DateTime *const *)
void getValuesAD(const ioda::Locations &, const oops::Variables &, const ufo::GeoVaLs &, const GetValuesTrajFV3JEDI &)
IncrementFV3JEDI & operator*=(const double &)
void fv3jedi_increment_sizes_f90(const F90inc &, int &, int &, int &)
GeometryFV3JEDI handles geometry for FV3JEDI model.
void fv3jedi_increment_self_mul_f90(const F90inc &, const double &)
void fv3jedi_increment_increment_from_ug_f90(const F90inc &, const int &)
boost::shared_ptr< const GeometryFV3JEDI > geom_
void fv3jedi_increment_dot_prod_f90(const F90inc &, const F90inc &, double &)
const eckit::Configuration & toFortran() const
void diff(const StateFV3JEDI &, const StateFV3JEDI &)
Basic operators.
const util::DateTime & validTime() const
void fv3jedi_increment_dirac_f90(const F90inc &, const eckit::Configuration *const *, const F90geom &)
void fv3jedi_increment_ug_coord_f90(const F90inc &, const int &, const int &, const F90geom &)