8 #include "oops/util/abor1_cpp.h"
22 const ufo::Locations & locs,
const eckit::Configuration &
config)
23 : locs_(locs), geom_(new
GeometryMPAS(geom)), linearmodel2geovars_(),
25 oops::Log::trace() <<
"LinearGetValues::LinearGetValues starting"
30 util::Timer timervc(
classname(),
"VarChaModel2GeoVars");
36 util::Timer timergv(
classname(),
"LinearGetValues");
42 oops::Log::trace() <<
"LinearGetValues::LinearGetValues done" << std::endl;
48 oops::Log::trace() <<
"LinearGetValues::~LinearGetValues starting"
52 util::Timer timergv(
classname(),
"~LinearGetValues");
58 util::Timer timervc(
classname(),
"~LinVarChaModel2GeoVars");
65 oops::Log::trace() <<
"LinearGetValues::~LinearGetValues done" << std::endl;
73 oops::Log::error() <<
"LinearGetValues::getLinVarCha: linear variable change not available " <<
74 "at time " << t1 << std::endl;
75 ABORT(
"LinearGetValues::getLinVarCha: linear variable change not available");
83 const util::DateTime & t1,
const util::DateTime & t2,
84 ufo::GeoVaLs & geovals) {
85 oops::Log::trace() <<
"LinearGetValues::setTrajectory starting" << std::endl;
93 util::Timer timervc(
classname(),
"LinearVarChaModel2GeoVars");
96 eckit::LocalConfiguration dummyconfig(sep);
103 util::Timer timergv(
classname(),
"SetTrajectory");
107 t1, t2,
locs_, geovals.toFortran());
110 oops::Log::trace() <<
"LinearGetValues::setTrajectory done" << std::endl;
116 const util::DateTime & t1,
const util::DateTime & t2,
117 ufo::GeoVaLs & geovals)
const {
118 oops::Log::trace() <<
"LinearGetValues::fillGeoVaLsTL starting" << std::endl;
124 util::Timer timervc(
classname(),
"multiply");
126 linearmodel2geovars->
multiply(inc, incgeovars);
130 util::Timer timergv(
classname(),
"fillGeoVaLsTL");
133 t1, t2,
locs_, geovals.toFortran());
136 oops::Log::trace() <<
"LinearGetValues::fillGeoVaLsTL done" << std::endl;
142 const util::DateTime & t1,
const util::DateTime & t2,
143 const ufo::GeoVaLs & geovals)
const {
144 oops::Log::trace() <<
"LinearGetValues::fillGeoVaLsAD starting" << std::endl;
150 util::Timer timergv(
classname(),
"fillGeoVaLsAD");
154 t1, t2,
locs_, geovals.toFortran());
159 util::Timer timervc(
classname(),
"multiplyAD");
161 linearmodel2geovars->
multiplyAD(incgeovars, inc);
164 oops::Log::trace() <<
"LinearGetValues::fillGeoVaLsAD done" << std::endl;
170 os <<
" LinearGetValues for mpas-jedi" << std::endl;
GeometryMPAS handles geometry for MPAS model.
Increment Class: Difference between two states.
const util::DateTime & validTime() const
void multiply(const IncrementMPAS &, IncrementMPAS &) const
void multiplyAD(const IncrementMPAS &, IncrementMPAS &) const
LinearGetValues(const GeometryMPAS &, const ufo::Locations &, const eckit::Configuration &)
std::map< util::DateTime, LinVarChaModel2GeoVars * >::const_iterator lvcIterCnst
std::unique_ptr< VarChaModel2GeoVars > model2geovars_
std::map< util::DateTime, LinVarChaModel2GeoVars * > linearmodel2geovars_
std::shared_ptr< const GeometryMPAS > geom_
virtual ~LinearGetValues()
static const std::string classname()
void setTrajectory(const StateMPAS &state, const util::DateTime &t1, const util::DateTime &t2, ufo::GeoVaLs &geovals)
F90lineargetvalues keyLinearGetValues_
std::map< util::DateTime, LinVarChaModel2GeoVars * >::iterator lvcIter
void fillGeoVaLsTL(const IncrementMPAS &inc, const util::DateTime &t1, const util::DateTime &t2, ufo::GeoVaLs &geovals) const
void print(std::ostream &) const
const LinVarChaModel2GeoVars * getLinVarCha(const util::DateTime &) const
void fillGeoVaLsAD(IncrementMPAS &inc, const util::DateTime &t1, const util::DateTime &t2, const ufo::GeoVaLs &geovals) const
const util::DateTime & validTime() const
void mpas_lineargetvalues_fill_geovals_tl_f90(const F90lineargetvalues &, const F90geom &, const F90inc &, const util::DateTime &, const util::DateTime &, const ufo::Locations &, const F90goms &)
void mpas_lineargetvalues_create_f90(F90lineargetvalues &, const F90geom &, const ufo::Locations &, const eckit::Configuration &)
void mpas_lineargetvalues_fill_geovals_ad_f90(const F90lineargetvalues &, const F90geom &, const F90inc &, const util::DateTime &, const util::DateTime &, const ufo::Locations &, const F90goms &)
void mpas_lineargetvalues_set_trajectory_f90(const F90lineargetvalues &, const F90geom &, const F90state &, const util::DateTime &, const util::DateTime &, const ufo::Locations &, const F90goms &)
void mpas_lineargetvalues_delete_f90(F90lineargetvalues &)