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 Serde, // Need filepath
21 };
22
23 // using init_scalar_f_t =
24 // std::function<void(size_t, CmaRead::L2DView<double> &)>;
25
26 using init_scalar_f_t = std::function<double(std::size_t, std::size_t)>;
27
29 {
30 std::size_t n_species;
31 std::span<double> volumesgas;
32 std::span<double> volumesliq;
34
35 std::optional<init_scalar_f_t> liquid_f_init = std::nullopt;
36 std::optional<init_scalar_f_t> gas_f_init = std::nullopt;
37 std::optional<std::vector<double>> liquid_buffer = std::nullopt;
38 std::optional<std::vector<double>> gas_buffer = std::nullopt;
39 bool gas_flow = false;
40 };
41
42 static_assert(std::is_move_constructible_v<ScalarInitializer>);
43 static_assert(std::is_nothrow_move_constructible_v<ScalarInitializer>);
44
45} // namespace Simulation
46
47#endif
Namespace that contains classes and structures related to simulation handling.
Definition host_specific.hpp:12
std::function< double(std::size_t, std::size_t)> init_scalar_f_t
Definition scalar_initializer.hpp:26
ScalarInitialiserType
Definition scalar_initializer.hpp:14
@ File
Definition scalar_initializer.hpp:17
@ Serde
Definition scalar_initializer.hpp:20
@ 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:29
std::optional< std::vector< double > > liquid_buffer
Definition scalar_initializer.hpp:37
bool gas_flow
Definition scalar_initializer.hpp:39
std::optional< init_scalar_f_t > liquid_f_init
Definition scalar_initializer.hpp:35
std::size_t n_species
Definition scalar_initializer.hpp:30
ScalarInitialiserType type
Definition scalar_initializer.hpp:33
std::optional< init_scalar_f_t > gas_f_init
Definition scalar_initializer.hpp:36
std::span< double > volumesliq
Definition scalar_initializer.hpp:32
std::optional< std::vector< double > > gas_buffer
Definition scalar_initializer.hpp:38
std::span< double > volumesgas
Definition scalar_initializer.hpp:31