Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions src/monio/Monio.cc
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@ void monio::Monio::readState(atlas::FieldSet& localFieldSet,
atlas::Field globalField = utilsatlas::getGlobalField(localField);
if (mpiCommunicator_.rank() == mpiRankOwner_) {
auto& functionSpace = globalField.functionspace();
auto& grid = atlas::functionspace::NodeColumns(functionSpace).mesh().grid();
auto grid = utilsatlas::getGridFromFunctionSpace(functionSpace);
// Initialise file
int variableConvention = initialiseFile(grid.name(), filePath, true);
int variableConvention = initialiseFile(grid, filePath, true);
// getFileData returns a copy of FileData (with required LFRic mesh data), so read data
// is discarded when FileData goes out-of-scope for reading subsequent fields.
FileData fileData = getFileData(grid.name());
Expand Down Expand Up @@ -120,10 +120,10 @@ void monio::Monio::readIncrements(atlas::FieldSet& localFieldSet,
atlas::Field globalField = utilsatlas::getGlobalField(localField);
if (mpiCommunicator_.rank() == mpiRankOwner_) {
auto& functionSpace = globalField.functionspace();
auto& grid = atlas::functionspace::NodeColumns(functionSpace).mesh().grid();
auto grid = utilsatlas::getGridFromFunctionSpace(functionSpace);

// Initialise file
int variableConvention = initialiseFile(grid.name(), filePath);
int variableConvention = initialiseFile(grid, filePath);
// getFileData returns a copy of FileData (with required LFRic mesh data), so read data
// is discarded when FileData goes out-of-scope for reading subsequent fields.
FileData fileData = getFileData(grid.name());
Expand Down Expand Up @@ -172,7 +172,7 @@ void monio::Monio::writeIncrements(const atlas::FieldSet& localFieldSet,
if (filePath.length() != 0) {
try {
auto& functionSpace = localFieldSet[0].functionspace();
auto& grid = atlas::functionspace::NodeColumns(functionSpace).mesh().grid();
auto grid = utilsatlas::getGridFromFunctionSpace(functionSpace);
FileData fileData = getFileData(grid.name());
cleanFileData(fileData); // Remove metadata required for reading, but not for writing.
if (isLfricConvention == false) {
Expand Down Expand Up @@ -235,7 +235,7 @@ void monio::Monio::writeState(const atlas::FieldSet& localFieldSet,
if (filePath.length() != 0) {
try {
auto& functionSpace = localFieldSet[0].functionspace();
auto& grid = atlas::functionspace::NodeColumns(functionSpace).mesh().grid();
auto grid = utilsatlas::getGridFromFunctionSpace(functionSpace);
FileData fileData = getFileData(grid.name());
cleanFileData(fileData); // Remove metadata required for reading, but not for writing.
if (isLfricConvention == false) {
Expand Down Expand Up @@ -390,7 +390,7 @@ monio::FileData monio::Monio::getFileData(const std::string& gridName) {
return FileData(); // This function is called by all PEs. A return is essential.
}

void monio::Monio::createLfricAtlasMap(FileData& fileData, const atlas::CubedSphereGrid& grid) {
void monio::Monio::createLfricAtlasMap(FileData& fileData, const atlas::Grid& grid) {
oops::Log::trace() << "Monio::createLfricAtlasMap()" << std::endl;
if (mpiCommunicator_.rank() == mpiRankOwner_) {
if (fileData.getLfricAtlasMap().size() == 0) {
Expand Down
2 changes: 1 addition & 1 deletion src/monio/Monio.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ class Monio {
FileData getFileData(const std::string& gridName);

/// \brief Creates and stores a map between Atlas and LFRic horizontal ordering.
void createLfricAtlasMap(FileData& fileData, const atlas::CubedSphereGrid& grid);
void createLfricAtlasMap(FileData& fileData, const atlas::Grid& grid);

/// \brief Creates and stores date-times from a state file.
void createDateTimes(FileData& fileData,
Expand Down
13 changes: 13 additions & 0 deletions src/monio/UtilsAtlas.cc
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,19 @@ atlas::FieldSet getGlobalFieldSet(const atlas::FieldSet& fieldSet) {
}
}

atlas::Grid getGridFromFunctionSpace(const atlas::FunctionSpace& functionSpace) {
auto nc = atlas::functionspace::NodeColumns(functionSpace);
auto sc = atlas::functionspace::StructuredColumns(functionSpace);
if (nc) {
return nc.mesh().grid();
} else if (sc) {
return sc.grid();
} else {
utils::throwException("Monio::readState()> FunctionSpace not an accepted type. "
"Accepted types: NodeColumns, StructuredColumns");
}
}

atlas::idx_t getHorizontalSize(const atlas::Field& field) {
atlas::Field ghostField = field.functionspace().ghost();
atlas::idx_t size = 0;
Expand Down
2 changes: 2 additions & 0 deletions src/monio/UtilsAtlas.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ namespace utilsatlas {

atlas::Field getGlobalField(const atlas::Field& field);

atlas::Grid getGridFromFunctionSpace(const atlas::FunctionSpace& functionSpace);

atlas::idx_t getHorizontalSize(const atlas::Field& field); // Just 2D size. Any field.
atlas::idx_t getGlobalDataSize(const atlas::Field& field); // Full 3D size of global field.

Expand Down