1#ifndef __BIO__UTILS_HPP__
2#define __BIO__UTILS_HPP__
4#include "Kokkos_Macros.hpp"
5#include <Kokkos_Core.hpp>
6#include <Kokkos_MathematicalConstants.hpp>
7#include <Kokkos_Random.hpp>
8#include <common/traits.hpp>
10#include <mc/prng/prng.hpp>
17 template <FloatingPo
intType T>
29 template <FloatingPo
intType T>
constexpr T
glucose =
static_cast<T
>(180);
30 template <FloatingPo
intType T>
constexpr T
dioxygen =
static_cast<T
>(32);
31 template <FloatingPo
intType T>
constexpr T
acetate =
static_cast<T
>(59);
33 constexpr double co2 = 44;
44 [[deprecated]]
constexpr double X = 113.1e-3;
47 template <FloatingPo
intType F>
48 KOKKOS_INLINE_FUNCTION
consteval F
51 return rho * F(Kokkos::numbers::pi) * d * d / F(4.);
56 KOKKOS_INLINE_FUNCTION
bool
65 auto generator = random_pool.get_state();
66 const double x = generator.drand(0., 1.);
67 random_pool.free_state(generator);
74 KOKKOS_INLINE_FUNCTION
double
77 return (lenght <= threshold)
79 : (lenght - threshold) / (upper_bound - threshold);
82 KOKKOS_INLINE_FUNCTION
constexpr float
89 const auto z = x < xmax ? std::pow(x / (xmax - x), alpha) : 1.;
95 KOKKOS_INLINE_FUNCTION
bool
98 return Kokkos::abs(val - val2) < tolerance;
101 template <
typename... Args>
102 KOKKOS_INLINE_FUNCTION
double
105 return (Kokkos::min)({ args... });
108 KOKKOS_INLINE_FUNCTION
double
Status
Definition alias.hpp:58
@ Division
Definition alias.hpp:60
@ Idle
Definition alias.hpp:59
gen_pool_type< Kokkos::DefaultExecutionSpace > pool_type
Definition alias.hpp:39
KOKKOS_INLINE_FUNCTION double threshold_linear(double lenght, double threshold, double upper_bound)
Definition utils.hpp:75
KOKKOS_INLINE_FUNCTION constexpr float logistic(float x, float xmax, float alpha)
Definition utils.hpp:83
constexpr T acetate
Definition utils.hpp:31
constexpr T glucose
Definition utils.hpp:29
constexpr T dioxygen
Definition utils.hpp:30
constexpr double co2
Definition utils.hpp:33
constexpr double acetate
Definition utils.hpp:40
constexpr double co2
Definition utils.hpp:42
constexpr double X
Definition utils.hpp:44
constexpr double glucose
Definition utils.hpp:37
constexpr double dioxygen
Definition utils.hpp:38
Models definition.
Definition config_loader.hpp:9
KOKKOS_INLINE_FUNCTION bool check_probability_division(double d_t, double gamma, MC::pool_type random_pool)
Definition utils.hpp:57
KOKKOS_INLINE_FUNCTION double min_var()
Definition utils.hpp:109
KOKKOS_INLINE_FUNCTION MC::Status check_div(const T l, const T lc)
Definition utils.hpp:19
KOKKOS_INLINE_FUNCTION bool almost_equal(double val, double val2, double tolerance=1e-8)
Definition utils.hpp:96
KOKKOS_INLINE_FUNCTION consteval F c_linear_density(F rho, F d)
Definition utils.hpp:49
static constexpr double tau_division_proba
Definition utils.hpp:54