FV3 Bundle
oops::CostFct3DVar< MODEL > Class Template Reference

3D-Var Cost Function More...

#include <CostFct3DVar.h>

Inheritance diagram for oops::CostFct3DVar< MODEL >:
[legend]
Collaboration diagram for oops::CostFct3DVar< MODEL >:
[legend]

Public Member Functions

 CostFct3DVar (const eckit::Configuration &, const Geometry_ &, const Model_ &)
 
virtual ~CostFct3DVar ()
 
void runTLM (CtrlInc_ &, PostProcessorTLAD< MODEL > &, PostProcessor< Increment_ >, const bool) const override
 
void runADJ (CtrlInc_ &, PostProcessorTLAD< MODEL > &, PostProcessor< Increment_ >, const bool) const override
 
void zeroAD (CtrlInc_ &) const override
 
void runNL (CtrlVar_ &, PostProcessor< State_ > &) const override
 
- Public Member Functions inherited from oops::CostFunction< MODEL >
 CostFunction (const eckit::Configuration &, const Geometry_ &, const Model_ &)
 
virtual ~CostFunction ()
 
double evaluate (const CtrlVar_ &, const eckit::Configuration &config=eckit::LocalConfiguration(), PostProcessor< State_ > post=PostProcessor< State_ >()) const
 
double linearize (const CtrlVar_ &, const eckit::Configuration &, PostProcessor< State_ > post=PostProcessor< State_ >())
 
void addIncrement (CtrlVar_ &, const CtrlInc_ &, PostProcessor< Increment_ > post=PostProcessor< Increment_ >()) const
 
void resetLinearization ()
 
void computeGradientFG (CtrlInc_ &) const
 Compute cost function gradient at first guess (without Jb). More...
 
const JbTotal_jb () const
 Access \( J_b\). More...
 
const CostBase_jterm (const unsigned ii) const
 Access terms of the cost function other than \( J_b\). More...
 
unsigned nterms () const
 
const double getCostJb () const
 
const double getCostJoJc () const
 

Private Types

typedef Increment< MODEL > Increment_
 
typedef ControlIncrement< MODEL > CtrlInc_
 
typedef ControlVariable< MODEL > CtrlVar_
 
typedef CostFunction< MODEL > CostFct_
 
typedef Geometry< MODEL > Geometry_
 
typedef State< MODEL > State_
 
typedef Model< MODEL > Model_
 
typedef LinearVariableChangeBase< MODEL > ChangeVar_
 

Private Member Functions

void addIncr (CtrlVar_ &, const CtrlInc_ &, PostProcessor< Increment_ > &) const override
 
CostJb3D< MODEL > * newJb (const eckit::Configuration &, const Geometry_ &, const CtrlVar_ &) const override
 
CostJo< MODEL > * newJo (const eckit::Configuration &) const override
 
CostTermBase< MODEL > * newJc (const eckit::Configuration &, const Geometry_ &) const override
 
void doLinearize (const Geometry_ &, const eckit::Configuration &, const CtrlVar_ &, const CtrlVar_ &) override
 

Private Attributes

util::Duration windowLength_
 
util::DateTime windowBegin_
 
util::DateTime windowEnd_
 
util::DateTime windowHalf_
 
util::Duration zero_
 
const Variables ctlvars_
 
boost::scoped_ptr< ChangeVar_an2model_
 

Additional Inherited Members

- Protected Member Functions inherited from oops::CostFunction< MODEL >
void setupTerms (const eckit::Configuration &)
 
const Model_getModel () const
 
const LinearModel_getTLM (const unsigned isub=0) const
 

Detailed Description

template<typename MODEL>
class oops::CostFct3DVar< MODEL >

3D-Var Cost Function

This class is not really necessary since it is only a special case of the more general 4D-Var cost function. It is provided for readability.

Definition at line 42 of file CostFct3DVar.h.

Member Typedef Documentation

◆ ChangeVar_

template<typename MODEL >
typedef LinearVariableChangeBase<MODEL> oops::CostFct3DVar< MODEL >::ChangeVar_
private

Definition at line 50 of file CostFct3DVar.h.

◆ CostFct_

template<typename MODEL >
typedef CostFunction<MODEL> oops::CostFct3DVar< MODEL >::CostFct_
private

Definition at line 46 of file CostFct3DVar.h.

◆ CtrlInc_

template<typename MODEL >
typedef ControlIncrement<MODEL> oops::CostFct3DVar< MODEL >::CtrlInc_
private

Definition at line 44 of file CostFct3DVar.h.

◆ CtrlVar_

template<typename MODEL >
typedef ControlVariable<MODEL> oops::CostFct3DVar< MODEL >::CtrlVar_
private

Definition at line 45 of file CostFct3DVar.h.

◆ Geometry_

template<typename MODEL >
typedef Geometry<MODEL> oops::CostFct3DVar< MODEL >::Geometry_
private

Definition at line 47 of file CostFct3DVar.h.

◆ Increment_

template<typename MODEL >
typedef Increment<MODEL> oops::CostFct3DVar< MODEL >::Increment_
private

Definition at line 43 of file CostFct3DVar.h.

◆ Model_

template<typename MODEL >
typedef Model<MODEL> oops::CostFct3DVar< MODEL >::Model_
private

Definition at line 49 of file CostFct3DVar.h.

◆ State_

template<typename MODEL >
typedef State<MODEL> oops::CostFct3DVar< MODEL >::State_
private

Definition at line 48 of file CostFct3DVar.h.

Constructor & Destructor Documentation

◆ CostFct3DVar()

template<typename MODEL >
oops::CostFct3DVar< MODEL >::CostFct3DVar ( const eckit::Configuration &  config,
const Geometry_ resol,
const Model_ model 
)

Definition at line 86 of file CostFct3DVar.h.

Here is the call graph for this function:

◆ ~CostFct3DVar()

template<typename MODEL >
virtual oops::CostFct3DVar< MODEL >::~CostFct3DVar ( )
inlinevirtual

Definition at line 54 of file CostFct3DVar.h.

Member Function Documentation

◆ addIncr()

template<typename MODEL >
void oops::CostFct3DVar< MODEL >::addIncr ( CtrlVar_ xx,
const CtrlInc_ dx,
PostProcessor< Increment_ > &   
) const
overrideprivatevirtual

Implements oops::CostFunction< MODEL >.

Definition at line 209 of file CostFct3DVar.h.

Here is the call graph for this function:

◆ doLinearize()

template<typename MODEL >
void oops::CostFct3DVar< MODEL >::doLinearize ( const Geometry_ resol,
const eckit::Configuration &  innerConf,
const CtrlVar_ bg,
const CtrlVar_ fg 
)
overrideprivatevirtual

Implements oops::CostFunction< MODEL >.

Definition at line 149 of file CostFct3DVar.h.

Here is the call graph for this function:

◆ newJb()

template<typename MODEL >
CostJb3D< MODEL > * oops::CostFct3DVar< MODEL >::newJb ( const eckit::Configuration &  jbConf,
const Geometry_ resol,
const CtrlVar_ xb 
) const
overrideprivatevirtual

Implements oops::CostFunction< MODEL >.

Definition at line 103 of file CostFct3DVar.h.

◆ newJc()

template<typename MODEL >
CostTermBase< MODEL > * oops::CostFct3DVar< MODEL >::newJc ( const eckit::Configuration &  jcConf,
const Geometry_  
) const
overrideprivatevirtual

Implements oops::CostFunction< MODEL >.

Definition at line 122 of file CostFct3DVar.h.

◆ newJo()

template<typename MODEL >
CostJo< MODEL > * oops::CostFct3DVar< MODEL >::newJo ( const eckit::Configuration &  joConf) const
overrideprivatevirtual

Implements oops::CostFunction< MODEL >.

Definition at line 114 of file CostFct3DVar.h.

◆ runADJ()

template<typename MODEL >
void oops::CostFct3DVar< MODEL >::runADJ ( CtrlInc_ dx,
PostProcessorTLAD< MODEL > &  cost,
PostProcessor< Increment_ post,
const bool   
) const
overridevirtual

Implements oops::CostFunction< MODEL >.

Definition at line 192 of file CostFct3DVar.h.

Here is the call graph for this function:

◆ runNL()

template<typename MODEL >
void oops::CostFct3DVar< MODEL >::runNL ( CtrlVar_ xx,
PostProcessor< State_ > &  post 
) const
overridevirtual

Implements oops::CostFunction< MODEL >.

Definition at line 133 of file CostFct3DVar.h.

Here is the call graph for this function:

◆ runTLM()

template<typename MODEL >
void oops::CostFct3DVar< MODEL >::runTLM ( CtrlInc_ dx,
PostProcessorTLAD< MODEL > &  cost,
PostProcessor< Increment_ post,
const bool   
) const
overridevirtual

Implements oops::CostFunction< MODEL >.

Definition at line 164 of file CostFct3DVar.h.

Here is the call graph for this function:

◆ zeroAD()

template<typename MODEL >
void oops::CostFct3DVar< MODEL >::zeroAD ( CtrlInc_ dx) const
overridevirtual

Implements oops::CostFunction< MODEL >.

Definition at line 181 of file CostFct3DVar.h.

Here is the call graph for this function:

Member Data Documentation

◆ an2model_

template<typename MODEL >
boost::scoped_ptr<ChangeVar_> oops::CostFct3DVar< MODEL >::an2model_
private

Definition at line 80 of file CostFct3DVar.h.

◆ ctlvars_

template<typename MODEL >
const Variables oops::CostFct3DVar< MODEL >::ctlvars_
private

Definition at line 79 of file CostFct3DVar.h.

◆ windowBegin_

template<typename MODEL >
util::DateTime oops::CostFct3DVar< MODEL >::windowBegin_
private

Definition at line 75 of file CostFct3DVar.h.

◆ windowEnd_

template<typename MODEL >
util::DateTime oops::CostFct3DVar< MODEL >::windowEnd_
private

Definition at line 76 of file CostFct3DVar.h.

◆ windowHalf_

template<typename MODEL >
util::DateTime oops::CostFct3DVar< MODEL >::windowHalf_
private

Definition at line 77 of file CostFct3DVar.h.

◆ windowLength_

template<typename MODEL >
util::Duration oops::CostFct3DVar< MODEL >::windowLength_
private

Definition at line 74 of file CostFct3DVar.h.

◆ zero_

template<typename MODEL >
util::Duration oops::CostFct3DVar< MODEL >::zero_
private

Definition at line 78 of file CostFct3DVar.h.


The documentation for this class was generated from the following file: