11 #ifndef OOPS_ASSIMILATION_COSTJBSTATE_H_ 12 #define OOPS_ASSIMILATION_COSTJBSTATE_H_ 15 #include <boost/noncopyable.hpp> 27 template<
typename MODEL>
class ControlIncrement;
30 template<
typename MODEL>
class JqTerm;
41 template<
typename MODEL>
class CostJbState :
private boost::noncopyable {
83 virtual unsigned int nstates()
const = 0;
91 #endif // OOPS_ASSIMILATION_COSTJBSTATE_H_
virtual unsigned int nstates() const =0
Create new increment (set to 0).
virtual ~CostJbState()
Destructor.
virtual void computeIncrement(const State4D_ &, const State4D_ &, Increment4D_ &) const =0
Get increment from state (usually first guess).
State4D< MODEL > State4D_
virtual void Bmult(const Increment4D_ &, Increment4D_ &) const =0
Multiply by and .
virtual JqTermTLAD< MODEL > * initializeJqAD(const Increment4D_ &) const =0
Initialize before the AD run.
The namespace for the main oops code.
Increment< MODEL > Increment_
virtual Increment_ * newStateIncrement(const unsigned int) const =0
ControlIncrement< MODEL > CtrlInc_
virtual JqTermTLAD< MODEL > * initializeJqTLAD() const =0
virtual void randomize(Increment4D_ &) const =0
Randomize.
virtual void linearize(const State4D_ &, const Geometry_ &)=0
Linearize before the linear computations.
virtual void Bminv(const Increment4D_ &, Increment4D_ &) const =0
Jb Cost Function Base Class.
Increment Class: Difference between two states.
virtual JqTerm< MODEL > * initializeJq() const =0
Initialize Jq computations if needed.
CostJbState()
Constructor.
virtual void addGradient(const Increment4D_ &, Increment4D_ &, Increment4D_ &) const =0
Add Jb gradient.
Increment4D< MODEL > Increment4D_
virtual JqTermTLAD< MODEL > * initializeJqTL() const =0
Finalize after the TL run.
Geometry< MODEL > Geometry_