12 #include "eckit/config/Configuration.h" 21 #include "oops/util/Duration.h" 22 #include "oops/util/Logger.h" 32 : resol_(resol), f_(config.getDouble(
"f")),
33 tstep_(
util::Duration(config.getString(
"tstep"))),
34 dt_(tstep_.toSeconds()/432000.0), vars_(config)
37 oops::Log::trace() <<
"ModelL95::ModelL95 created" << std::endl;
43 oops::Log::trace() <<
"ModelL95::~ModelL95 destructed" << std::endl;
85 const double zt = 1.0/6.0;
94 for (
int jj = 0; jj < nn; ++jj) {
98 if (jm2 < 0) jm2 += nn;
99 if (jm1 < 0) jm1 += nn;
100 if (jp1 >= nn) jp1 -= nn;
101 const double dxdt = -xx[jm2] * xx[jm1] + xx[jm1] * xx[jp1] - xx[jj] +
f_ - bias;
109 os <<
"ModelL95: resol = " <<
resol_ <<
", f = " <<
f_ <<
", tstep = " <<
tstep_;
void stepRK(FieldL95 &, const ModelBias &, ModelTrajectory &) const
static oops::ModelMaker< L95Traits, ModelL95 > makermodel_("L95")
const util::Duration tstep_
const util::DateTime & validTime() const
ModelL95(const Resolution &, const eckit::Configuration &)
const FieldL95 & getField() const
void finalize(StateL95 &) const
void step(StateL95 &, const ModelBias &) const
void print(std::ostream &) const
subroutine, public info(self)
void tendencies(const FieldL95 &, const double &, FieldL95 &) const
The namespace for the L95 model.
const double & bias() const
Model error for Lorenz 95 model.
void set(const FieldL95 &)
Save trajectory.
void initialize(StateL95 &) const
void axpy(const double &, const FieldL95 &)
Class to represent fields for the L95 model.