11 #ifndef OOPS_INTERFACE_MODELAUXCONTROL_H_
12 #define OOPS_INTERFACE_MODELAUXCONTROL_H_
20 #include "oops/util/Logger.h"
21 #include "oops/util/ObjectCounter.h"
22 #include "oops/util/Printable.h"
23 #include "oops/util/Timer.h"
33 template <
typename MODEL>
35 private util::ObjectCounter<ModelAuxControl<MODEL> > {
40 static const std::string
classname() {
return "oops::ModelAuxControl";}
52 void read(
const eckit::Configuration &);
53 void write(
const eckit::Configuration &)
const;
58 void print(std::ostream &)
const;
59 std::unique_ptr<ModelAuxControl_>
aux_;
64 template<
typename MODEL>
66 const eckit::Configuration & conf) : aux_()
68 Log::trace() <<
"ModelAuxControl<MODEL>::ModelAuxControl starting" << std::endl;
69 util::Timer timer(
classname(),
"ModelAuxControl");
71 Log::trace() <<
"ModelAuxControl<MODEL>::ModelAuxControl done" << std::endl;
76 template<
typename MODEL>
80 Log::trace() <<
"ModelAuxControl<MODEL>::ModelAuxControl interpolated starting" << std::endl;
81 util::Timer timer(
classname(),
"ModelAuxControl");
83 Log::trace() <<
"ModelAuxControl<MODEL>::ModelAuxControl interpolated done" << std::endl;
88 template<
typename MODEL>
90 const bool copy) : aux_()
92 Log::trace() <<
"ModelAuxControl<MODEL>::ModelAuxControl copy starting" << std::endl;
93 util::Timer timer(
classname(),
"ModelAuxControl");
95 Log::trace() <<
"ModelAuxControl<MODEL>::ModelAuxControl copy done" << std::endl;
100 template<
typename MODEL>
102 Log::trace() <<
"ModelAuxControl<MODEL>::~ModelAuxControl starting" << std::endl;
103 util::Timer timer(classname(),
"~ModelAuxControl");
105 Log::trace() <<
"ModelAuxControl<MODEL>::~ModelAuxControl done" << std::endl;
110 template<
typename MODEL>
112 Log::trace() <<
"ModelAuxControl<MODEL>::read starting" << std::endl;
113 util::Timer timer(classname(),
"read");
115 Log::trace() <<
"ModelAuxControl<MODEL>::read done" << std::endl;
120 template<
typename MODEL>
122 Log::trace() <<
"ModelAuxControl<MODEL>::write starting" << std::endl;
123 util::Timer timer(classname(),
"write");
125 Log::trace() <<
"ModelAuxControl<MODEL>::write done" << std::endl;
130 template<
typename MODEL>
132 Log::trace() <<
"ModelAuxControl<MODEL>::norm starting" << std::endl;
133 util::Timer timer(classname(),
"norm");
134 double zz = aux_->norm();
135 Log::trace() <<
"ModelAuxControl<MODEL>::norm done" << std::endl;
141 template<
typename MODEL>
143 Log::trace() <<
"ModelAuxControl<MODEL>::print starting" << std::endl;
144 util::Timer timer(classname(),
"print");
146 Log::trace() <<
"ModelAuxControl<MODEL>::print done" << std::endl;
153 #endif // OOPS_INTERFACE_MODELAUXCONTROL_H_