13 #include <boost/noncopyable.hpp>
15 #include "atlas/field.h"
16 #include "atlas/functionspace.h"
17 #include "eckit/config/Configuration.h"
18 #include "oops/util/Logger.h"
19 #include "oops/util/Printable.h"
37 private boost::noncopyable {
41 virtual void apply(
const atlas::FieldSet &, atlas::FieldSet &) = 0;
42 virtual void apply(
const atlas::Field &, atlas::Field &) = 0;
44 virtual void apply_ad(
const atlas::FieldSet &, atlas::FieldSet &) = 0;
46 virtual int write(
const eckit::Configuration &) {
return 1;}
49 virtual void print(std::ostream &)
const = 0;
58 const atlas::FunctionSpace &,
59 const atlas::FunctionSpace &,
60 const atlas::field::FieldSetImpl * =
nullptr);
66 const atlas::FunctionSpace &,
67 const atlas::FunctionSpace &,
68 const atlas::field::FieldSetImpl *) = 0;
69 static std::map < std::string, InterpolatorFactory * > &
getMakers() {
70 static std::map < std::string, InterpolatorFactory * > makers_;
84 const atlas::FunctionSpace & fs1,
85 const atlas::FunctionSpace & fs2,
86 const atlas::field::FieldSetImpl * masks)
87 {
return new T(conf, fs1, fs2, masks); }