Skip to content

File diagnostic_factory.hpp

File List > common > src > diagnostics > diagnostic_factory.hpp

Go to the documentation of this file

#ifndef EMULATOR_DIAGNOSTIC_FACTORY_HPP
#define EMULATOR_DIAGNOSTIC_FACTORY_HPP

#include "derived_diagnostic.hpp"
#include <memory>
#include <mpi.h>

namespace emulator {

struct DiagnosticMetadata {
  std::vector<double> area_weights; 
  MPI_Comm comm = MPI_COMM_WORLD;   
  int nlevs = 1;                    
};

std::unique_ptr<DerivedDiagnostic>
create_diagnostic(const std::string &diag_name,
                  const DiagnosticMetadata &metadata);

bool is_derived_diagnostic(const std::string &name);

std::string get_base_field_name(const std::string &diag_name);

} // namespace emulator

#endif // EMULATOR_DIAGNOSTIC_FACTORY_HPP