BioCMAMC-ST
scalar_initializer.hpp
1#ifndef __SIMULATION_SCALAR_INITIALIZER_HPP__
2#define __SIMULATION_SCALAR_INITIALIZER_HPP__
3
4#include <cstddef>
5#include <cstdint>
6#include <functional>
7#include <optional>
8#include <span>
9#include <vector>
10
11namespace Simulation
12{
13 enum class ScalarInitialiserType : std::uint8_t
14 {
15 Uniform, // Need vec{uniform concentration}
16 Local, // Need vec{index compartment }+ vec{concentration}
17 File, // Need filepath
18 CustomScript, // Need script path
19 FullCase, // Need script path
20 };
21
22 // using init_scalar_f_t =
23 // std::function<void(size_t, CmaRead::L2DView<double> &)>;
24
25 using init_scalar_f_t = std::function<double(std::size_t, std::size_t)>;
26
28 {
29 std::size_t n_species;
30 std::span<double> volumesgas;
31 std::span<double> volumesliq;
33
34 std::optional<init_scalar_f_t> liquid_f_init = std::nullopt;
35 std::optional<init_scalar_f_t> gas_f_init = std::nullopt;
36 std::optional<std::vector<double>> liquid_buffer = std::nullopt;
37 std::optional<std::vector<double>> gas_buffer = std::nullopt;
38 bool gas_flow = false;
39 };
40
41} // namespace Simulation
42
43#endif
Namespace that contains classes and structures related to simulation handling.
Definition host_specific.hpp:13
std::function< double(std::size_t, std::size_t)> init_scalar_f_t
Definition scalar_initializer.hpp:25
ScalarInitialiserType
Definition scalar_initializer.hpp:14
@ File
Definition scalar_initializer.hpp:17
@ CustomScript
Definition scalar_initializer.hpp:18
@ Local
Definition scalar_initializer.hpp:16
@ FullCase
Definition scalar_initializer.hpp:19
@ Uniform
Definition scalar_initializer.hpp:15
Definition scalar_initializer.hpp:28
std::optional< std::vector< double > > liquid_buffer
Definition scalar_initializer.hpp:36
bool gas_flow
Definition scalar_initializer.hpp:38
std::optional< init_scalar_f_t > liquid_f_init
Definition scalar_initializer.hpp:34
std::size_t n_species
Definition scalar_initializer.hpp:29
ScalarInitialiserType type
Definition scalar_initializer.hpp:32
std::optional< init_scalar_f_t > gas_f_init
Definition scalar_initializer.hpp:35
std::span< double > volumesliq
Definition scalar_initializer.hpp:31
std::optional< std::vector< double > > gas_buffer
Definition scalar_initializer.hpp:37
std::span< double > volumesgas
Definition scalar_initializer.hpp:30