11 #ifndef OOPS_ASSIMILATION_COSTJB3D_H_
12 #define OOPS_ASSIMILATION_COSTJB3D_H_
16 #include "eckit/config/LocalConfiguration.h"
23 #include "oops/util/DateTime.h"
24 #include "oops/util/dot_product.h"
25 #include "oops/util/Duration.h"
26 #include "oops/util/Logger.h"
29 template<
typename MODEL>
class JqTermTLAD;
51 const util::Duration &,
const State_ &);
87 std::unique_ptr< ModelSpaceCovarianceBase<MODEL> >
B_;
90 std::unique_ptr<const Geometry_>
resol_;
92 const eckit::LocalConfiguration
conf_;
100 template<
typename MODEL>
102 const Variables & ctlvars,
const util::Duration & len,
104 : xb_(xb), B_(), winLength_(len), controlvars_(ctlvars), resol_(), time_(xb.validTime()),
105 conf_(config,
"background error")
107 Log::trace() <<
"CostJb3D constructed." << std::endl;
112 template<
typename MODEL>
120 template<
typename MODEL>
128 template<
typename MODEL>
136 template<
typename MODEL>
138 B_->multiply(dxin, dxout);
143 template<
typename MODEL>
145 B_->inverseMultiply(dxin, dxout);
150 template<
typename MODEL>
157 template<
typename MODEL>
void Bminv(const Increment_ &, Increment_ &) const override
const eckit::LocalConfiguration conf_
void linearize(const State_ &, const Geometry_ &) override
Linearize before the linear computations.
void randomize(Increment_ &) const override
Randomize.
void addGradient(const Increment_ &, Increment_ &, Increment_ &) const override
Add Jb gradient.
void computeIncrement(const State_ &, const State_ &, const State_ &, Increment_ &) const override
Get increment from state (usually first guess).
JqTermTLAD< MODEL > * initializeJqAD(const Increment_ &) const override
Empty AD Jq observer.
JqTermTLAD< MODEL > * initializeJqTL() const override
Empty TL Jq observer.
CostJb3D(const eckit::Configuration &, const Geometry_ &, const Variables &, const util::Duration &, const State_ &)
Construct .
Geometry< MODEL > Geometry_
std::unique_ptr< const Geometry_ > resol_
virtual ~CostJb3D()
Destructor.
const util::DateTime time_
JqTermTLAD< MODEL > * initializeJqTLAD() const override
Empty Jq observer.
const Variables controlvars_
std::unique_ptr< ModelSpaceCovarianceBase< MODEL > > B_
void Bmult(const Increment_ &, Increment_ &) const override
Multiply by and .
Increment< MODEL > Increment_
Increment_ * newStateIncrement() const override
Create new increment (set to 0).
const util::Duration winLength_
Jb Cost Function Base Class.
Geometry class used in oops; subclass of interface class interface::Geometry.
Increment class used in oops.
State class used in oops; subclass of interface class interface::State.
void diff(const State_ &state1, const State_ &state2)
Set this Increment to be difference between state1 and state2.
The namespace for the main oops code.