11 #ifndef OOPS_INTERFACE_GEOVALS_H_
12 #define OOPS_INTERFACE_GEOVALS_H_
17 #include <boost/noncopyable.hpp>
19 #include "eckit/config/Configuration.h"
23 #include "oops/util/ObjectCounter.h"
24 #include "oops/util/Printable.h"
25 #include "oops/util/Timer.h"
30 template <
typename OBS>
32 private util::ObjectCounter<GeoVaLs<OBS> > {
38 static const std::string
classname() {
return "oops::GeoVaLs";}
61 void read(
const eckit::Configuration &);
62 void write(
const eckit::Configuration &)
const;
65 void print(std::ostream &)
const;
71 template <
typename OBS>
73 Log::trace() <<
"GeoVaLs<OBS>::GeoVaLs starting" << std::endl;
74 util::Timer timer(
classname(),
"GeoVaLs");
76 Log::trace() <<
"GeoVaLs<OBS>::GeoVaLs done" << std::endl;
81 template <
typename OBS>
85 Log::trace() <<
"GeoVaLs<OBS>::GeoVaLs read starting" << std::endl;
86 util::Timer timer(
classname(),
"GeoVaLs");
88 Log::trace() <<
"GeoVaLs<OBS>::GeoVaLs read done" << std::endl;
93 template <
typename OBS>
95 Log::trace() <<
"GeoVaLs<OBS>::GeoVaLs starting" << std::endl;
96 util::Timer timer(
classname(),
"GeoVaLs");
98 Log::trace() <<
"ObsVector<OBS>::GeoVaLs done" << std::endl;
103 template <
typename OBS>
105 Log::trace() <<
"GeoVaLs<OBS>::~GeoVaLs starting" << std::endl;
106 util::Timer timer(classname(),
"~GeoVaLs");
108 Log::trace() <<
"GeoVaLs<OBS>::~GeoVaLs done" << std::endl;
113 template <
typename OBS>
115 Log::trace() <<
"GeoVaLs<OBS>::dot_product_with starting" << std::endl;
116 util::Timer timer(classname(),
"dot_product_with");
117 double zz = gvals_->dot_product_with(*other.
gvals_);
118 Log::trace() <<
"GeoVaLs<OBS>::dot_product_with done" << std::endl;
124 template <
typename OBS>
126 Log::trace() <<
"GeoVaLs<OBS>::operator= starting" << std::endl;
127 util::Timer timer(classname(),
"operator=");
129 Log::trace() <<
"GeovaLs<OBS>::operator= done" << std::endl;
135 template <
typename OBS>
137 Log::trace() <<
"GeoVaLs<OBS>::+=(GeoVaLs, GeoVaLs) starting" << std::endl;
138 util::Timer timer(classname(),
"operator+=");
140 Log::trace() <<
"GeoVaLs<OBS>::+= done" << std::endl;
146 template <
typename OBS>
148 Log::trace() <<
"GeoVaLs<OBS>::-=(GeoVaLs, GeoVaLs) starting" << std::endl;
149 util::Timer timer(classname(),
"operator-=");
151 Log::trace() <<
"GeoVaLs<OBS>::-= done" << std::endl;
157 template <
typename OBS>
159 Log::trace() <<
"GeoVaLs<OBS>::*=(GeoVaLs, GeoVaLs) starting" << std::endl;
160 util::Timer timer(classname(),
"operator*=(schur)");
162 Log::trace() <<
"GeoVaLs<OBS>::*= done" << std::endl;
168 template<
typename OBS>
170 Log::trace() <<
"GeoVaLs<OBS>::operator*= starting" << std::endl;
171 util::Timer timer(classname(),
"operator*=");
173 Log::trace() <<
"GeoVaLs<OBS>::operator*= done" << std::endl;
179 template <
typename OBS>
181 Log::trace() <<
"GeoVaLs<OBS>::rms starting" << std::endl;
182 util::Timer timer(classname(),
"rms");
183 double zz = gvals_->rms();
184 Log::trace() <<
"GeoVaLs<OBS>::rms done" << std::endl;
190 template <
typename OBS>
192 Log::trace() <<
"GeoVaLs<OBS>::normalizedrms starting" << std::endl;
193 util::Timer timer(classname(),
"normalizedrms");
194 double zz = gvals_->normalizedrms(*rhs.
gvals_);
195 Log::trace() <<
"GeoVaLs<OBS>::normalizedrms done" << std::endl;
201 template <
typename OBS>
203 Log::trace() <<
"GeoVaLs<OBS>::zero starting" << std::endl;
204 util::Timer timer(classname(),
"zero");
206 Log::trace() <<
"GeoVaLs<OBS>::zero done" << std::endl;
211 template <
typename OBS>
213 Log::trace() <<
"GeoVaLs<OBS>::random starting" << std::endl;
214 util::Timer timer(classname(),
"random");
216 Log::trace() <<
"GeoVaLs<OBS>::random done" << std::endl;
221 template<
typename OBS>
223 Log::trace() <<
"GeoVaLs<OBS>::read starting" << std::endl;
224 util::Timer timer(classname(),
"read");
226 Log::trace() <<
"GeoVaLs<OBS>::read done" << std::endl;
231 template<
typename OBS>
233 Log::trace() <<
"GeoVaLs<OBS>::write starting" << std::endl;
234 util::Timer timer(classname(),
"write");
236 Log::trace() <<
"GeoVaLs<OBS>::write done" << std::endl;
241 template<
typename OBS>
243 Log::trace() <<
"GeoVaLs<OBS>::print starting" << std::endl;
244 util::Timer timer(classname(),
"print");
246 Log::trace() <<
"GeoVaLs<OBS>::print done" << std::endl;
253 #endif // OOPS_INTERFACE_GEOVALS_H_