OOPS
TrajectorySaver.h
Go to the documentation of this file.
1
/*
2
* (C) Copyright 2009-2016 ECMWF.
3
*
4
* This software is licensed under the terms of the Apache Licence Version 2.0
5
* which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6
* In applying this licence, ECMWF does not waive the privileges and immunities
7
* granted to it by virtue of its status as an intergovernmental organisation nor
8
* does it submit to any jurisdiction.
9
*/
10
11
#ifndef OOPS_BASE_TRAJECTORYSAVER_H_
12
#define OOPS_BASE_TRAJECTORYSAVER_H_
13
14
#include <memory>
15
16
#include "eckit/config/LocalConfiguration.h"
17
#include "
oops/base/PostBase.h
"
18
#include "
oops/interface/Geometry.h
"
19
#include "
oops/interface/LinearModel.h
"
20
#include "
oops/interface/ModelAuxControl.h
"
21
#include "
oops/interface/State.h
"
22
#include "oops/util/DateTime.h"
23
#include "oops/util/Duration.h"
24
25
namespace
oops
{
26
27
/// Save trajectory during forecast run.
28
29
// -----------------------------------------------------------------------------
30
31
template
<
typename
MODEL>
32
class
TrajectorySaver
:
public
PostBase
<State<MODEL> > {
33
typedef
Geometry<MODEL>
Geometry_
;
34
typedef
LinearModel<MODEL>
LinearModel_
;
35
typedef
ModelAuxControl<MODEL>
ModelAux_
;
36
typedef
PostProcessorTLAD<MODEL>
PPTLAD_
;
37
typedef
State<MODEL>
State_
;
38
39
public
:
40
TrajectorySaver
(
const
eckit::Configuration &,
const
Geometry_
&,
41
const
ModelAux_
&, std::shared_ptr<LinearModel_>,
PPTLAD_
);
42
TrajectorySaver
(
const
eckit::Configuration &,
const
Geometry_
&,
PPTLAD_
);
43
~TrajectorySaver
() {}
44
45
private
:
46
const
Geometry_
&
resol_
;
47
PPTLAD_
pptraj_
;
48
std::unique_ptr<const ModelAux_>
lrBias_
;
49
std::shared_ptr<LinearModel_>
tlm_
;
50
51
void
doInitialize
(
const
State_
&,
const
util::DateTime &,
const
util::Duration &)
override
;
52
void
doProcessing
(
const
State_
&)
override
;
53
void
doFinalize
(
const
State_
&)
override
;
54
};
55
56
// -----------------------------------------------------------------------------
57
58
template
<
typename
MODEL>
59
TrajectorySaver<MODEL>::TrajectorySaver
(
const
eckit::Configuration & conf,
60
const
Geometry_
& resol,
61
const
ModelAux_
& bias,
62
std::shared_ptr<LinearModel_> tlm,
63
PPTLAD_
pptraj):
64
PostBase
<
State_
>(conf),
65
resol_(resol), pptraj_(pptraj), lrBias_(new
ModelAux_
(resol, bias)), tlm_(tlm)
66
{
67
Log::trace() <<
"TrajectorySaver::TrajectorySaver 4D"
<< std::endl;
68
}
69
// -----------------------------------------------------------------------------
70
template
<
typename
MODEL>
71
TrajectorySaver<MODEL>::TrajectorySaver
(
const
eckit::Configuration & conf,
72
const
Geometry_
& resol,
PPTLAD_
pptraj):
73
PostBase
<
State_
>(conf),
74
resol_(resol), pptraj_(pptraj), lrBias_(), tlm_()
75
{
76
Log::trace() <<
"TrajectorySaver::TrajectorySaver 3D"
<< std::endl;
77
}
78
// -----------------------------------------------------------------------------
79
template
<
typename
MODEL>
80
void
TrajectorySaver<MODEL>::doInitialize
(
const
State_
& x0,
81
const
util::DateTime & end,
82
const
util::Duration & step) {
83
Log::trace() <<
"TrajectorySaver::doInitialize start"
<< std::endl;
84
State_
xlr(resol_, x0);
85
pptraj_.initializeTraj(xlr, end, step);
86
Log::trace() <<
"TrajectorySaver::doInitialize done"
<< std::endl;
87
}
88
// -----------------------------------------------------------------------------
89
template
<
typename
MODEL>
90
void
TrajectorySaver<MODEL>::doProcessing
(
const
State_
& xx) {
91
Log::trace() <<
"TrajectorySaver::doProcessing start"
<< std::endl;
92
State_
xlr(resol_, xx);
93
if
(tlm_) tlm_->setTrajectory(xx, xlr, *lrBias_);
94
pptraj_.processTraj(xlr);
95
Log::trace() <<
"TrajectorySaver::doProcessing done"
<< std::endl;
96
}
97
// -----------------------------------------------------------------------------
98
template
<
typename
MODEL>
99
void
TrajectorySaver<MODEL>::doFinalize
(
const
State_
& xx) {
100
Log::trace() <<
"TrajectorySaver::doFinalize start"
<< std::endl;
101
State_
xlr(resol_, xx);
102
pptraj_.finalizeTraj(xlr);
103
Log::trace() <<
"TrajectorySaver::doFinalize done"
<< std::endl;
104
}
105
// -----------------------------------------------------------------------------
106
107
}
// namespace oops
108
109
#endif // OOPS_BASE_TRAJECTORYSAVER_H_
oops::TrajectorySaver::TrajectorySaver
TrajectorySaver(const eckit::Configuration &, const Geometry_ &, const ModelAux_ &, std::shared_ptr< LinearModel_ >, PPTLAD_)
Definition:
TrajectorySaver.h:59
oops
The namespace for the main oops code.
Definition:
ErrorCovarianceL95.cc:22
oops::TrajectorySaver::PPTLAD_
PostProcessorTLAD< MODEL > PPTLAD_
Definition:
TrajectorySaver.h:36
oops::TrajectorySaver::lrBias_
std::unique_ptr< const ModelAux_ > lrBias_
Definition:
TrajectorySaver.h:48
oops::TrajectorySaver::State_
State< MODEL > State_
Definition:
TrajectorySaver.h:37
oops::ModelAuxControl
Definition:
oops/interface/ModelAuxControl.h:35
oops::TrajectorySaver::doProcessing
void doProcessing(const State_ &) override
Actual processing.
Definition:
TrajectorySaver.h:90
oops::TrajectorySaver::ModelAux_
ModelAuxControl< MODEL > ModelAux_
Definition:
TrajectorySaver.h:35
LinearModel.h
PostBase.h
oops::TrajectorySaver::Geometry_
Geometry< MODEL > Geometry_
Definition:
TrajectorySaver.h:33
oops::PostBase
Handles post-processing of model fields.
Definition:
PostBase.h:33
oops::PostProcessorTLAD
Control model post processing.
Definition:
PostProcessorTLAD.h:33
oops::TrajectorySaver::tlm_
std::shared_ptr< LinearModel_ > tlm_
Definition:
TrajectorySaver.h:49
oops::Geometry
Geometry class used in oops; subclass of interface class above.
Definition:
oops/interface/Geometry.h:189
oops::TrajectorySaver::~TrajectorySaver
~TrajectorySaver()
Definition:
TrajectorySaver.h:43
oops::TrajectorySaver::resol_
const Geometry_ & resol_
Definition:
TrajectorySaver.h:46
oops::TrajectorySaver::LinearModel_
LinearModel< MODEL > LinearModel_
Definition:
TrajectorySaver.h:34
oops::State
Encapsulates the model state.
Definition:
CostJbState.h:28
State.h
oops::TrajectorySaver
Save trajectory during forecast run.
Definition:
TrajectorySaver.h:32
oops::TrajectorySaver::doFinalize
void doFinalize(const State_ &) override
Definition:
TrajectorySaver.h:99
oops::LinearModel
Encapsulates the linear forecast model.
Definition:
oops/interface/LinearModel.h:65
oops::TrajectorySaver::doInitialize
void doInitialize(const State_ &, const util::DateTime &, const util::Duration &) override
Definition:
TrajectorySaver.h:80
ModelAuxControl.h
oops::TrajectorySaver::pptraj_
PPTLAD_ pptraj_
Definition:
TrajectorySaver.h:47
Geometry.h
fv3-bundle
oops
src
oops
base
TrajectorySaver.h
Generated on Sun Oct 25 2020 12:42:59 for OOPS by
1.8.18