71 std::string fieldIOName;
72 std::string fieldName;
74 std::string levels_str;
77 std::string staggerLoc;
83 std::vector<eckit::LocalConfiguration> confFieldSets;
84 confFull.get(
"fieldsets", confFieldSets);
85 int confFieldSetsSize = confFieldSets.size();
88 const int nlev = confFull.getInt(
"npz");
91 for (
int km = 0; km < confFieldSetsSize; ++km) {
93 eckit::PathName pathNameFieldSet(confFieldSets[km].getString(
"fieldset"));
94 const eckit::YAMLConfiguration confFieldSet(pathNameFieldSet);
97 std::vector<eckit::LocalConfiguration> confFields;
98 confFieldSet.get(
"Fields", confFields);
99 int confFieldsSize = confFields.size();
102 for (
int jm = 0; jm < confFieldsSize; ++jm) {
104 fieldName = confFields[jm].getString(
"FieldName");
106 std::vector<std::string> fieldIONames;
107 fieldIONames.push_back(fieldName);
108 fieldIONames = confFields[jm].getStringVector(
"FieldIONames", fieldIONames);
110 int confFieldIONamesSize = fieldIONames.size();
113 for (
int im = 0; im < confFieldIONamesSize; ++im) {
115 fieldIOName = fieldIONames[im];
119 ABORT(
"FieldMetadata::FieldMetadata Field "+fieldIOName+
" already in the map");
122 fields_.insert(std::pair<std::string, FieldMetadata>(fieldIOName,
131 kind = confFields[jm].getString(
"Kind",
"double");
132 levels_str = confFields[jm].getString(
"Levels",
"full");
133 longName = confFields[jm].getString(
"LongName", fieldName);
134 space = confFields[jm].getString(
"Space",
"magnitude");
135 staggerLoc = confFields[jm].getString(
"StaggerLoc",
"center");
136 tracer = confFields[jm].getBool(
"Tracer",
false);
137 units = confFields[jm].getString(
"Units");
138 io_file = confFields[jm].getString(
"IOFile",
"default");
149 if (levels_str ==
"full") {
151 }
else if (levels_str ==
"half") {
154 levels = std::stoi(levels_str);
173 std::map<std::string, FieldMetadata>::iterator itr;
176 oops::Log::debug() <<
"Key: " << itr->first <<
"\nData: \n" << itr->second << std::endl;
184 ABORT(
"FieldMetadata::getField: Field "+fieldIOName+
" not found in FieldsMetadata");
186 return fields_.find(fieldIOName)->second;