Go to the documentation of this file.
11 #ifndef OOPS_ASSIMILATION_JQTERMTLAD_H_
12 #define OOPS_ASSIMILATION_JQTERMTLAD_H_
21 #include "oops/util/DateTime.h"
22 #include "oops/util/Duration.h"
28 template <
typename MODEL>
29 class JqTermTLAD :
public PostBaseTLAD<MODEL> {
47 const util::Duration &)
override {}
52 const util::Duration &)
override {}
62 std::unique_ptr<Increment_>
mxi_;
63 std::unique_ptr<Increment_>
xi_;
68 template <
typename MODEL>
70 : commTime_(comm), xtraj_(), mxi_(), xi_()
72 Log::trace() <<
"JqTermTLAD::JqTermTLAD" << std::endl;
77 template <
typename MODEL>
79 Log::trace() <<
"JqTermTLAD::doFinalizeTraj start" << std::endl;
80 xtraj_.reset(
new State_(xx));
81 Log::trace() <<
"JqTermTLAD::doFinalizeTraj done" << std::endl;
121 template <
typename MODEL>
123 Log::trace() <<
"JqTermTLAD::getMxi" << std::endl;
130 template <
typename MODEL>
132 Log::trace() <<
"JqTermTLAD::doFinalizeTL start" << std::endl;
133 int mytime = commTime_.rank();
134 if (mytime + 1 < commTime_.size())
oops::mpi::send(commTime_, dx, mytime+1, 2468);
135 Log::trace() <<
"JqTermTLAD::doFinalizeTL done" << std::endl;
140 template <
typename MODEL>
142 Log::trace() <<
"JqTermTLAD::computeModelErrorTL start" << std::endl;
144 int mytime = commTime_.rank();
150 Log::info() <<
"JqTermTLAD: x_i - M(x_i)" << dx << std::endl;
151 Log::trace() <<
"JqTermTLAD::computeModelErrorTL done" << std::endl;
156 template <
typename MODEL>
158 Log::trace() <<
"JqTermTLAD::setupAD start" << std::endl;
159 int mytime = commTime_.rank();
161 Log::trace() <<
"JqTermTLAD::setupAD done" << std::endl;
166 template <
typename MODEL>
168 const util::Duration &) {
169 Log::trace() <<
"JqTermTLAD::doFirstAD start" << std::endl;
170 int mytime = commTime_.rank();
171 if (mytime + 1 < commTime_.size()) {
176 Log::trace() <<
"JqTermTLAD::doFirstAD done" << std::endl;
183 #endif // OOPS_ASSIMILATION_JQTERMTLAD_H_
void doLastAD(Increment_ &) override
void doProcessingAD(Increment_ &) override
The namespace for the main oops code.
std::unique_ptr< GeneralizedDepartures > releaseOutputFromTL() override
void doProcessingTraj(const State_ &) override
void computeModelErrorTL(Increment_ &)
JqTermTLAD(const eckit::mpi::Comm &)
std::unique_ptr< Increment_ > xi_
const eckit::mpi::Comm & commTime_
void send(const eckit::mpi::Comm &comm, const SERIALIZABLE &sendobj, const int dest, const int tag)
Extend eckit Comm for Serializable oops objects.
std::unique_ptr< State_ > xtraj_
void setupAD(const Increment_ &dx)
std::unique_ptr< Increment_ > mxi_
Encapsulates the model state.
void doProcessingTL(const Increment_ &) override
Increment< MODEL > Increment_
void doInitializeTL(const Increment_ &, const util::DateTime &, const util::Duration &) override
Increment Class: Difference between two states.
void doFinalizeTL(const Increment_ &) override
void doInitializeTraj(const State_ &, const util::DateTime &, const util::Duration &) override
void doFinalizeTraj(const State_ &) override
void receive(const eckit::mpi::Comm &comm, SERIALIZABLE &recvobj, const int source, const int tag)
void doFirstAD(Increment_ &, const util::DateTime &, const util::Duration &) override