19 #include "ioda/config.h"
21 #if (eckit_FOUND && oops_FOUND)
22 # define ENABLE_ODB_LAYOUT
29 if (polid ==
"ObsGroup" || polid ==
"ObsGroupODB")
30 return std::make_shared<DataLayoutPolicy_ObsGroup>();
31 return std::make_shared<DataLayoutPolicy>();
36 return std::make_shared<DataLayoutPolicy>();
40 if (polid !=
"ObsGroupODB")
41 throw Exception(
"A mapping file is only relevant for the ODB Data Layout.",
ioda_Here());
42 #ifdef ENABLE_ODB_LAYOUT
43 return std::make_shared<DataLayoutPolicy_ObsGroup_ODB>(mapPath);
45 throw Exception(
"Cannot generate this policy, as either eckit or oops are disabled.",
51 const std::string &mapPath) {
53 throw Exception(
"A mapping file is only relevant for the ODB Data Layout.",
ioda_Here());
54 #ifdef ENABLE_ODB_LAYOUT
55 return std::make_shared<DataLayoutPolicy_ObsGroup_ODB>(mapPath);
57 throw Exception(
"Cannot generate this policy, as either eckit or oops are disabled.",
Contains definitions for how data are arranged in ioda internally.
Contains definitions for how data are arranged in ioda internally.
Contains definitions for how ODB data are arranged in ioda internally.
The ioda exception class.
virtual size_t getComplementaryPosition(const std::string &) const
virtual std::type_index getOutputVariableDataType(const std::string &) const
virtual std::pair< bool, std::string > getUnit(const std::string &) const
static std::shared_ptr< const DataLayoutPolicy > generate(const std::string &polid="")
Factory generator.
virtual MergeMethod getMergeMethod(const std::string &) const
virtual bool isComplementary(const std::string &) const
Check if the named variable will be a part of a derived variable.
virtual bool isMapped(const std::string &) const
Check if the named variable is in the Variables section of the ODB mapping file.
virtual std::string getOutputNameFromComponent(const std::string &) const
virtual ~DataLayoutPolicy()
virtual void initializeStructure(Group_Base &) const
virtual std::string name() const
A descriptive name for the policy.
virtual std::string doMap(const std::string &) const
Map a user-specified Variable path to the correct location.
virtual size_t getInputsNeeded(const std::string &) const
Hidden base class to prevent constructor confusion.
Common preprocessor definitions used throughout IODA.