Program Listing for File runtime.h

Return to documentation for file (framework/runtime.h)

// SPDX-FileCopyrightText: 2024 The OpenSn Authors <https://open-sn.github.io/opensn/>
// SPDX-License-Identifier: MIT

#pragma once

#include "mpicpp-lite/mpicpp-lite.h"
#include "caliper/cali-manager.h"
#include <utility>
#include <vector>
#include <string>
#include <stdexcept>
#include <memory>
#include <filesystem>

namespace mpi = mpicpp_lite;

namespace opensn
{

static const std::string program = "OpenSn";

class FieldFunctionInterpolation;
class Solver;
class MultiGroupXS;
class FieldFunction;
class SpatialDiscretization;
class Timer;
class Logger;

extern mpi::Communicator mpi_comm;
extern Logger& log;
extern Timer program_timer;
extern bool use_caliper;
extern std::string cali_config;
extern cali::ConfigManager cali_mgr;
extern bool suppress_color;
extern std::filesystem::path input_path;

/// Global stack of handlers
extern std::vector<std::shared_ptr<FieldFunctionInterpolation>> field_func_interpolation_stack;
extern std::vector<std::shared_ptr<MultiGroupXS>> multigroup_xs_stack;
extern std::vector<std::shared_ptr<FieldFunction>> field_function_stack;
extern std::vector<std::shared_ptr<SpatialDiscretization>> sdm_stack;

/// Initializes all necessary items
int Initialize();

/// Finalize the run
void Finalize();

/// Gets the version string.
std::string GetVersionStr();

} // namespace opensn