File emulator_atm.hpp
File List > components > emulator_comps > eatm > src > emulator_atm.hpp
Go to the documentation of this file
#ifndef EMULATOR_ATM_HPP
#define EMULATOR_ATM_HPP
#include "../../common/src/coupling_fields.hpp"
#include "../../common/src/emulator_comp.hpp"
#include "../../common/src/emulator_config.hpp"
#include "../../common/src/emulator_output_manager.hpp"
#include "../../common/src/inference/inference_backend.hpp"
#include "impl/atm_coupling.hpp"
#include "impl/atm_field_data_provider.hpp"
#include "impl/atm_field_manager.hpp"
#include <fstream>
#include <memory>
#include <string>
#include <vector>
namespace emulator {
class EmulatorAtm : public EmulatorComp {
public:
EmulatorAtm();
~EmulatorAtm() override = default;
void init_coupling_indices(const std::string &export_fields,
const std::string &import_fields);
void set_inference_config(const inference::InferenceConfig &config);
const inference::InferenceConfig &get_inference_config() const {
return m_inference_config;
}
void set_log_file(const std::string &filename);
protected:
void init_impl() override;
void run_impl(int dt) override;
void final_impl() override;
void run_inference(const std::vector<double> &inputs,
std::vector<double> &outputs) override;
private:
// =========================================================================
// Coupling and Fields
// =========================================================================
CouplingFieldsBase m_coupling_fields;
impl::AtmCouplingIndices m_coupling_idx;
impl::AtmFieldManager m_fields;
// =========================================================================
// Configuration and Inference
// =========================================================================
EmulatorConfig m_config;
inference::InferenceConfig m_inference_config;
std::unique_ptr<inference::InferenceBackend>
m_inference;
EmulatorOutputManager m_output_manager;
std::unique_ptr<impl::AtmFieldDataProvider>
m_field_provider;
// =========================================================================
// Helper Methods
// =========================================================================
void import_coupling_fields();
void export_coupling_fields();
void prepare_inputs();
void process_outputs();
bool read_initial_conditions(const std::string &filename);
};
} // namespace emulator
#endif // EMULATOR_ATM_HPP