Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
214 commits
Select commit Hold shift + click to select a range
502a132
template smoother.h for AD
julianlitz May 23, 2025
51302e6
Fix template of find_value_reverse()
julianlitz May 24, 2025
d3bd3d7
Template consistency
julianlitz May 26, 2025
3c46990
std::max fix
julianlitz May 26, 2025
06fdaf4
Consistent templates
julianlitz May 26, 2025
e2f8e7d
std::ceil fix
julianlitz May 26, 2025
26c6891
template consistency
julianlitz May 26, 2025
64bdeea
Support for AD
julianlitz May 26, 2025
75679aa
Fix Segmentation Fault
julianlitz May 26, 2025
2b92333
Improve init of matrix
julianlitz May 27, 2025
2f715db
No template needed
julianlitz May 27, 2025
706320e
AD support for Dampings
julianlitz May 27, 2025
7abac59
Make code 100x better. Less FP casting for SimulationTime.
julianlitz May 27, 2025
7d4826f
some contact_matrix.h updates
julianlitz May 27, 2025
d8f7726
Better return type
julianlitz May 27, 2025
15db56c
Damping_Sampling + more changes
julianlitz May 28, 2025
d0aed89
Small Fix
julianlitz May 28, 2025
7bffdf3
Update uncertain_matrix.h
julianlitz May 29, 2025
0fda7d2
AD can now work for all except Gamma and Lognorm
julianlitz May 29, 2025
d10d065
comment
julianlitz May 29, 2025
0dd0c01
Uncertain and Populations
julianlitz Jun 2, 2025
2283c4b
small fix
julianlitz Jun 2, 2025
b372757
lct_infection_state.h
julianlitz Jun 2, 2025
355ec45
lct_pop.h
julianlitz Jun 2, 2025
c3f205c
dynamic_npis.h
julianlitz Jun 2, 2025
251c31d
graph.h
julianlitz Jun 2, 2025
7a08227
graph_simulation.h
julianlitz Jun 2, 2025
6508e86
Assert was broken
julianlitz Jun 3, 2025
f397741
Metapopulation_mobility_instant.h
julianlitz Jun 3, 2025
40b4f03
metapopulation_mobility_stochatic.h
julianlitz Jun 3, 2025
389ac51
Finishing compartments hopefully
julianlitz Jun 3, 2025
d2b87e9
analyze_result
julianlitz Jun 3, 2025
5aa217c
Template Changes in Tests
julianlitz Jun 3, 2025
1bf2bae
ode_seair
julianlitz Jun 3, 2025
043e2cf
ode_secir
julianlitz Jun 3, 2025
2818c6a
benchmarks
julianlitz Jun 10, 2025
623f615
examples
julianlitz Jun 10, 2025
9d82208
compartments
julianlitz Jun 10, 2025
6e9cfb6
data
julianlitz Jun 10, 2025
3c92c74
epidmiology
julianlitz Jun 10, 2025
3a30963
io
julianlitz Jun 10, 2025
19fa507
mobility
julianlitz Jun 10, 2025
f373ed6
utils
julianlitz Jun 10, 2025
7cb398c
abm
julianlitz Jun 10, 2025
24a4044
d_abm
julianlitz Jun 10, 2025
4be7a1a
glct_secir
julianlitz Jun 10, 2025
fb8e14d
graph_abm
julianlitz Jun 10, 2025
e4be1db
ide_secir
julianlitz Jun 10, 2025
1a7db56
ide_seir
julianlitz Jun 10, 2025
204dbd3
lct_secir
julianlitz Jun 10, 2025
042eff5
ode_secir
julianlitz Jun 10, 2025
b3059a7
ode_secirts
julianlitz Jun 10, 2025
712383a
ode_secirvvs
julianlitz Jun 10, 2025
225a35c
ode_seir
julianlitz Jun 10, 2025
396cdd1
ode_sir
julianlitz Jun 10, 2025
d82fd8e
sde_seirvv
julianlitz Jun 10, 2025
aedca4e
sde_sir
julianlitz Jun 10, 2025
bf85cc4
sde_sirs
julianlitz Jun 10, 2025
bdc652a
smm
julianlitz Jun 10, 2025
863d52e
io
julianlitz Jun 10, 2025
13a88e7
simulations
julianlitz Jun 10, 2025
a89234e
tests
julianlitz Jun 10, 2025
652ff3f
python bindings
julianlitz Jun 10, 2025
5deae92
Last update
julianlitz Jun 12, 2025
c23c36f
More modifications
julianlitz Jun 30, 2025
b93846c
tiny FP fixes
julianlitz Jun 30, 2025
df6c6f2
tiny changes
julianlitz Jun 30, 2025
6800ab9
Merge remote-tracking branch 'origin/main' into 1018-use-floating-poi…
julianlitz Jun 30, 2025
2d4ce08
Update graph_simulation.h
julianlitz Jun 30, 2025
4944aa4
Update pybind_util.h
julianlitz Jun 30, 2025
fbb5fcb
Update damping_sampling.cpp
julianlitz Jun 30, 2025
77e6a70
Update damping.h
julianlitz Jun 30, 2025
bb2db60
Update uncertain_matrix.cpp
julianlitz Jun 30, 2025
a7130fc
Update uncertain_matrix.cpp
julianlitz Jun 30, 2025
bdcf919
Update dynamic_npis.h
julianlitz Jun 30, 2025
dfcb389
Update simulation.cpp
julianlitz Jun 30, 2025
4914933
Update simulation.cpp
julianlitz Jun 30, 2025
a9c31cd
Update contact_matrix.h
julianlitz Jun 30, 2025
0fed82f
Update graph_simulation.h
julianlitz Jun 30, 2025
ecdf27b
Update osecir.cpp
julianlitz Jun 30, 2025
9e705d8
Update osecirvvs.cpp
julianlitz Jun 30, 2025
3b651f7
Update dynamic_npis.h
julianlitz Jun 30, 2025
3461118
Update dynamic_npis.h
julianlitz Jun 30, 2025
d963763
Update osecir.cpp
julianlitz Jun 30, 2025
a2b7c6d
Update osecir.cpp
julianlitz Jun 30, 2025
dc98861
Update osecirvvs.cpp
julianlitz Jun 30, 2025
07d1145
Update feedback_simulation.h
julianlitz Jun 30, 2025
ade6921
Update model.h
julianlitz Jun 30, 2025
888e0ed
Update metapopulation_mobility_instant.h
julianlitz Jul 1, 2025
123b2fc
Update parameter_studies.h
julianlitz Jul 1, 2025
bc913fd
Merge remote-tracking branch 'origin/main' into 1018-use-floating-poi…
julianlitz Jul 1, 2025
8b9459b
Update single_well.h
julianlitz Jul 1, 2025
d8bdd3d
Update conversion_functions.cpp
julianlitz Jul 1, 2025
0961829
Update conversion_functions.h
julianlitz Jul 1, 2025
70693de
Fixed in merging
julianlitz Jul 1, 2025
f389836
adopt rates
julianlitz Jul 1, 2025
a4c64cd
Update ad.hpp
julianlitz Jul 2, 2025
a926928
Reintroduce NullaryExpr
julianlitz Jul 3, 2025
6082944
Fixed wrong AD example. Standard Integrator is NOT enough.
julianlitz Jul 3, 2025
160ada1
remove unnecessary .value()
julianlitz Jul 3, 2025
3ed6a48
Update simulation.h
julianlitz Jul 6, 2025
5032983
Simulation Copy Constructor
julianlitz Jul 11, 2025
43086ea
Reviewed and updated benchmark and example files for clarity and cons…
julianlitz Jul 14, 2025
7636b3a
Merge remote-tracking branch 'origin/main' into 1018-use-floating-poi…
julianlitz Jul 14, 2025
925e7c6
Small adjustements
julianlitz Jul 14, 2025
f972415
Update ode_seair.cpp
julianlitz Jul 14, 2025
5704b2d
Reverse small change
julianlitz Jul 21, 2025
0cd0229
Proof Reading
julianlitz Jul 21, 2025
3fb7e04
Resolve Merge condlicts
julianlitz Jul 21, 2025
04ddbc4
???
julianlitz Jul 21, 2025
685ce14
????
julianlitz Jul 21, 2025
3f8f09a
Merge remote-tracking branch 'origin/main' into 1018-use-floating-poi…
julianlitz Jul 28, 2025
a98afcf
modifications for main merge
julianlitz Jul 28, 2025
b0d9391
Merge remote-tracking branch 'origin/main' into 1018-use-floating-poi…
julianlitz Jul 29, 2025
c0c487a
Merge remote-tracking branch 'origin/main' into 1018-use-floating-poi…
julianlitz Aug 1, 2025
1d6a401
Restart Google Tests
julianlitz Aug 1, 2025
c24c674
Restart Google Tests
julianlitz Aug 1, 2025
336948b
Remove Abstract-Casting Fix
julianlitz Aug 4, 2025
bf31932
Added unit tests to check UncertainValue for AD compatability
julianlitz Aug 4, 2025
08bbb22
spelling mistake
julianlitz Aug 4, 2025
191e534
Update test_uncertain_ad_compatibility.cpp
julianlitz Aug 4, 2025
1ef88aa
Update cpp/memilio/compartments/simulation_base.h
julianlitz Aug 6, 2025
75cd835
Update cpp/memilio/epidemiology/contact_matrix.h
julianlitz Aug 6, 2025
4cf6cd3
using std::exp;
julianlitz Aug 6, 2025
db8f734
Update cpp/memilio/compartments/simulation_base.h
julianlitz Aug 6, 2025
741ffff
Comment indentation
julianlitz Aug 7, 2025
36f70a5
Comment indentation 2
julianlitz Aug 7, 2025
743fc09
Update cpp/memilio/utils/uncertain_value.h
julianlitz Aug 7, 2025
e78ada4
Update cpp/memilio/utils/uncertain_value.h
julianlitz Aug 7, 2025
aedf016
ScalarType: Benchmark
julianlitz Aug 7, 2025
9af58db
ScalarType: IO
julianlitz Aug 7, 2025
398410e
ScalarType: Utils
julianlitz Aug 7, 2025
eb4a6fa
ScalarType: Abm
julianlitz Aug 7, 2025
35713e7
ScalarType: d_abm
julianlitz Aug 7, 2025
341dc28
ScalarType: Hybrid
julianlitz Aug 7, 2025
41ad10a
Remove custom tape size
julianlitz Aug 10, 2025
a658405
Revert formatting from ad.hpp
julianlitz Aug 10, 2025
6b59851
Merge remote-tracking branch 'origin/main' into 1018-use-floating-poi…
julianlitz Aug 20, 2025
a378b22
Update UncertainValue
julianlitz Aug 20, 2025
2c4e1ef
Missing template
julianlitz Aug 21, 2025
4cacab5
Merge remote-tracking branch 'origin/main' into 1018-use-floating-poi…
julianlitz Aug 21, 2025
23fd0fe
Missing FP
julianlitz Aug 21, 2025
068bffb
Missing FP
julianlitz Aug 21, 2025
cdda32a
Update cpp/examples/d_abm.cpp
julianlitz Aug 21, 2025
7631674
Update cpp/examples/graph_stochastic_mobility.cpp
julianlitz Aug 21, 2025
6a0d7ac
Update cpp/examples/graph_stochastic_mobility.cpp
julianlitz Aug 21, 2025
2972d69
Update cpp/examples/graph_stochastic_mobility.cpp
julianlitz Aug 21, 2025
7fbaf1b
Update cpp/examples/graph_stochastic_mobility.cpp
julianlitz Aug 21, 2025
a582024
Update cpp/examples/graph_stochastic_mobility.cpp
julianlitz Aug 21, 2025
4566c4b
Update cpp/memilio/compartments/simulation_base.h
julianlitz Aug 21, 2025
d92f761
Update cpp/memilio/compartments/simulation_base.h
julianlitz Aug 21, 2025
a520a23
Update cpp/memilio/compartments/simulation_base.h
julianlitz Aug 21, 2025
70582dc
Update cpp/memilio/math/integrator.h
julianlitz Aug 21, 2025
e3a6173
Update cpp/memilio/compartments/simulation_base.h
julianlitz Aug 21, 2025
46b1274
Update cpp/memilio/mobility/graph_simulation.h
julianlitz Aug 21, 2025
22d6628
Remove BaseT and check what happens
julianlitz Aug 22, 2025
f1da3cf
Eigen::NumTraits for AD: .abs()
julianlitz Aug 22, 2025
f583d1b
Eigen::NumTraits for AD: .abs() Fix
julianlitz Aug 22, 2025
41eee9f
Auto Formatting
julianlitz Aug 25, 2025
31e33c1
Remove ad::value() and FP in non diff StateAge
julianlitz Aug 25, 2025
7ef8138
formatting
julianlitz Aug 25, 2025
e74613e
Remove ad::value()
julianlitz Aug 25, 2025
ccea909
Merge remote-tracking branch 'origin/main' into 1018-use-floating-poi…
julianlitz Aug 25, 2025
90e0681
Templates needed
julianlitz Aug 25, 2025
367b7ed
Use <numbers> pi value
julianlitz Aug 26, 2025
207d0bf
ScalarType examples/
julianlitz Aug 26, 2025
9d1dce5
Revert ad formatting
julianlitz Aug 26, 2025
688f97e
Delete cpp/scripts directory
julianlitz Aug 26, 2025
f4cec0d
numbers header
julianlitz Aug 26, 2025
e239c6f
linear_interpolation fix
julianlitz Aug 26, 2025
370254e
Comment update in metaprogramming.h
julianlitz Aug 27, 2025
668e955
Remove brief
julianlitz Aug 27, 2025
c4d9053
Forward Declaration of AD Type in metaprogramming
julianlitz Aug 28, 2025
06cadb7
Merge remote-tracking branch 'origin/main' into 1018-use-floating-poi…
julianlitz Aug 28, 2025
c355608
double to ScalarType
julianlitz Aug 28, 2025
0ac3e25
IdeSeir: FP to ScalarType
julianlitz Aug 28, 2025
d6bc6b4
Remove doubles in eigenvalue computation
julianlitz Aug 28, 2025
044da13
doube to ScalarType
julianlitz Aug 28, 2025
6eb7f61
FP not available in Limit
julianlitz Aug 28, 2025
5e44175
Limits<FP>
julianlitz Aug 28, 2025
4618d45
Merge remote-tracking branch 'origin/main' into 1018-use-floating-poi…
julianlitz Aug 28, 2025
f7ea1f6
include ad.hpp
julianlitz Aug 28, 2025
d1ea514
Missing include?
julianlitz Aug 28, 2025
2c4cfcc
fix metaprogramming
julianlitz Aug 28, 2025
b5634a3
remove left over
julianlitz Aug 28, 2025
71de671
try include
julianlitz Aug 28, 2025
eb88d99
Remove <FP, BaseT> and check what happens
julianlitz Aug 28, 2025
903fcdb
small change
julianlitz Aug 28, 2025
defaf00
Update cpp/memilio/utils/metaprogramming.h
julianlitz Aug 28, 2025
a20130f
Update cpp/models/ode_sir/model.h
julianlitz Aug 28, 2025
874b2b0
Limit with FP
julianlitz Aug 28, 2025
92aa154
UncertainValue: Print for AD
julianlitz Aug 29, 2025
656e703
Comment Print Statement uncertain_value.h
julianlitz Sep 2, 2025
3c2e0f7
evaluate_intermediate in std::accumulate
julianlitz Sep 5, 2025
142f246
Update cpp/memilio/math/eigen.h
julianlitz Sep 5, 2025
ab15a43
Move "using std::min" to top of function
julianlitz Sep 5, 2025
4f268dc
Update cpp/memilio/epidemiology/damping_sampling.h
julianlitz Sep 5, 2025
ff6e96a
Remove AD logger Part 1
julianlitz Sep 5, 2025
1134b7e
Delete ad_spdlog_formatter.h
julianlitz Sep 5, 2025
163c0f3
Revert FP() .value() change
julianlitz Sep 8, 2025
5beab65
new file: ad_wrapper.hpp
julianlitz Sep 8, 2025
393eb64
numeric_limits<FP>
julianlitz Sep 8, 2025
caac599
Last suggested FP replacements
julianlitz Sep 8, 2025
42d18fa
double -> FP
julianlitz Sep 8, 2025
6478eaf
Implement suggested changes to AD wrapper
julianlitz Sep 8, 2025
272dcc8
ad modification
julianlitz Sep 8, 2025
a4e51fe
Update cpp/memilio/ad/ad.h
julianlitz Sep 12, 2025
eaacaab
temp < Limits<FP>::zero_tolerance()
julianlitz Sep 12, 2025
d8b87e3
Restore accidentally removed comment
julianlitz Sep 15, 2025
e83de71
Use FP instead of auto for simple assigns
julianlitz Sep 15, 2025
1fefd79
std::numeric_limits<FP>
julianlitz Sep 15, 2025
d190052
Remove unnecessary unaryExpr check_constraints
julianlitz Sep 15, 2025
068cde0
using std::fabs
julianlitz Sep 15, 2025
f7446ab
Could add a <double> in pycode here as well.
julianlitz Sep 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions cpp/benchmarks/abm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ mio::abm::Simulation<> make_simulation(size_t num_persons, std::initializer_list
auto prng = mio::abm::PersonalRandomNumberGenerator(person);
//some % of people are infected, large enough to have some infection activity without everyone dying
auto pct_infected = 0.05;
if (mio::UniformDistribution<double>::get_instance()(prng, 0.0, 1.0) < pct_infected) {
if (mio::UniformDistribution<ScalarType>::get_instance()(prng, 0.0, 1.0) < pct_infected) {
auto state = mio::abm::InfectionState(
mio::UniformIntDistribution<int>::get_instance()(prng, 1, int(mio::abm::InfectionState::Count) - 1));
auto infection = mio::abm::Infection(prng, mio::abm::VirusVariant::Wildtype, person.get_age(),
Expand All @@ -91,7 +91,7 @@ mio::abm::Simulation<> make_simulation(size_t num_persons, std::initializer_list
//skip homes so persons always have a place to go, simulation might break otherwise
auto pct_require_mask = 0.2;
if (loc.get_type() != mio::abm::LocationType::Home &&
mio::UniformDistribution<double>::get_instance()(model.get_rng()) < pct_require_mask) {
mio::UniformDistribution<ScalarType>::get_instance()(model.get_rng()) < pct_require_mask) {
loc.set_required_mask(mio::abm::MaskType::Community);
}
}
Expand Down
150 changes: 80 additions & 70 deletions cpp/benchmarks/flow_simulation_ode_secirvvs.h

Large diffs are not rendered by default.

24 changes: 13 additions & 11 deletions cpp/benchmarks/flow_simulation_ode_seir.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* Copyright (C) 2020-2025 MEmilio
*
* Authors: Rene Schmieding, Daniel Abele, Martin J. Kuehn
Expand Down Expand Up @@ -52,8 +52,9 @@ class FlowlessModel
{
}

void get_derivatives(Eigen::Ref<const Eigen::VectorXd> pop, Eigen::Ref<const Eigen::VectorXd> y, double t,
Eigen::Ref<Eigen::VectorXd> dydt) const override
void get_derivatives(Eigen::Ref<const Eigen::VectorX<ScalarType>> pop,
Eigen::Ref<const Eigen::VectorX<ScalarType>> y, ScalarType t,
Eigen::Ref<Eigen::VectorX<ScalarType>> dydt) const override
{
auto& params = this->parameters;
const Index<AgeGroup> age_groups = reduce_index<Index<AgeGroup>>(this->populations.size());
Expand All @@ -71,10 +72,10 @@ class FlowlessModel
size_t Ij = this->populations.get_flat_index({j, InfectionState::Infected});
size_t Rj = this->populations.get_flat_index({j, InfectionState::Recovered});

const double Nj_inv = 1.0 / (pop[Sj] + pop[Ej] + pop[Ij] + pop[Rj]);
const double coeffStoE =
params.template get<ContactPatterns<ScalarType>>().get_cont_freq_mat().get_matrix_at(t)(i.get(),
j.get()) *
const ScalarType Nj_inv = 1.0 / (pop[Sj] + pop[Ej] + pop[Ij] + pop[Rj]);
const ScalarType coeffStoE =
params.template get<ContactPatterns<ScalarType>>().get_cont_freq_mat().get_matrix_at(
SimulationTime<ScalarType>(t))(i.get(), j.get()) *
params.template get<TransmissionProbabilityOnContact<ScalarType>>()[i] * Nj_inv;

dydt[Si] -= y[Si] * pop[Ij] * coeffStoE;
Expand All @@ -91,8 +92,8 @@ class FlowlessModel
template <class Model>
void setup_model(Model& model)
{
const double total_population = 10000.0;
const auto num_groups = model.parameters.get_num_groups();
const ScalarType total_population = 10000.0;
const auto num_groups = model.parameters.get_num_groups();
for (AgeGroup i = 0; i < num_groups; i++) {
model.populations[{i, oseir::InfectionState::Exposed}] = 100.0 / static_cast<size_t>(num_groups);
model.populations[{i, oseir::InfectionState::Infected}] = 100.0 / static_cast<size_t>(num_groups);
Expand All @@ -106,8 +107,9 @@ void setup_model(Model& model)
model.parameters.template set<mio::oseir::TimeExposed<ScalarType>>(5.2);
model.parameters.template set<mio::oseir::TimeInfected<ScalarType>>(6);
model.parameters.template set<mio::oseir::TransmissionProbabilityOnContact<ScalarType>>(0.04);
mio::ContactMatrixGroup& contact_matrix = model.parameters.template get<mio::oseir::ContactPatterns<ScalarType>>();
contact_matrix[0].get_baseline().setConstant(10.);
mio::ContactMatrixGroup<ScalarType>& contact_matrix =
model.parameters.template get<mio::oseir::ContactPatterns<ScalarType>>();
contact_matrix[0].get_baseline().setConstant(10.0);
}

} // namespace benchmark
Expand Down
14 changes: 7 additions & 7 deletions cpp/benchmarks/graph_simulation.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* Copyright (C) 2020-2025 MEmilio
*
* Authors: Henrik Zunker
Expand Down Expand Up @@ -78,7 +78,7 @@ mio::osecirvvs::Model<ScalarType> create_model(size_t num_agegroups, const Scala
auto& contact_matrix = contacts.get_cont_freq_mat();
contact_matrix[0].get_baseline().setConstant(0.5);
contact_matrix[0].get_baseline().diagonal().setConstant(5.0);
contact_matrix[0].add_damping(0.3, mio::SimulationTime(5.0));
contact_matrix[0].add_damping(0.3, mio::SimulationTime<ScalarType>(5.0));

for (mio::AgeGroup i = 0; i < (mio::AgeGroup)num_agegroups; i++) {
//times
Expand Down Expand Up @@ -115,9 +115,9 @@ auto create_simulation()
{
auto cfg = mio::benchmark::GraphConfig::initialize(config_path);

mio::osecirvvs::Model model = create_model(cfg.num_agegroups, cfg.t_max);
mio::osecirvvs::Model<ScalarType> model = create_model(cfg.num_agegroups, cfg.t_max);

mio::Graph<mio::SimulationNode<mio::Simulation<ScalarType, mio::osecirvvs::Model<ScalarType>>>,
mio::Graph<mio::SimulationNode<ScalarType, mio::Simulation<ScalarType, mio::osecirvvs::Model<ScalarType>>>,
mio::MobilityEdge<ScalarType>>
g;
for (size_t county_id = 0; county_id < cfg.num_regions; county_id++) {
Expand All @@ -130,9 +130,9 @@ auto create_simulation()
for (size_t county_idx_j = 0; county_idx_j < g.nodes().size(); ++county_idx_j) {
if (county_idx_i == county_idx_j)
continue;
g.add_edge(
county_idx_i, county_idx_j,
Eigen::VectorXd::Constant((size_t)mio::osecirvvs::InfectionState::Count * cfg.num_agegroups, 0.01));
g.add_edge(county_idx_i, county_idx_j,
Eigen::VectorX<ScalarType>::Constant(
(size_t)mio::osecirvvs::InfectionState::Count * cfg.num_agegroups, 0.01));
}
}

Expand Down
10 changes: 5 additions & 5 deletions cpp/benchmarks/graph_simulation.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* Copyright (C) 2020-2025 MEmilio
*
* Authors: Henrik Zunker
Expand Down Expand Up @@ -32,7 +32,7 @@ namespace benchmark
/// @brief parameters for simulation benchmark
struct GraphConfig {
int num_agegroups, num_regions;
double t0, t_max, dt;
ScalarType t0, t_max, dt;
/**
* @brief creates configuration with default parameters for a secir model
* @param num_agegroups number of agegroups
Expand Down Expand Up @@ -65,9 +65,9 @@ struct GraphConfig {
auto obj = io.expect_object("bench_graph_simulation");
auto num_agegroups_io = obj.expect_element("num_agegroups", mio::Tag<int>{});
auto num_regions_io = obj.expect_element("num_regions", mio::Tag<int>{});
auto t_io = obj.expect_element("t0", mio::Tag<double>{});
auto t_max_io = obj.expect_element("t_max", mio::Tag<double>{});
auto dt_io = obj.expect_element("dt", mio::Tag<double>{});
auto t_io = obj.expect_element("t0", mio::Tag<ScalarType>{});
auto t_max_io = obj.expect_element("t_max", mio::Tag<ScalarType>{});
auto dt_io = obj.expect_element("dt", mio::Tag<ScalarType>{});
return mio::apply(
io,
[](auto&& num_agegroups, auto&& num_regions, auto&& t0, auto&& t_max, auto&& dt) {
Expand Down
8 changes: 4 additions & 4 deletions cpp/benchmarks/integrator_step.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* Copyright (C) 2020-2025 MEmilio
*
* Authors: Rene Schmieding
Expand Down Expand Up @@ -36,13 +36,13 @@ void integrator_step(::benchmark::State& state)
//auto cfg = mio::benchmark::IntegratorStepConfig::initialize();
auto model = mio::benchmark::model::SecirAgeres(cfg.num_agegroups);
// set deriv function and integrator
mio::DerivFunction<ScalarType> f = [model](Eigen::Ref<const Eigen::VectorXd> x, double s,
Eigen::Ref<Eigen::VectorXd> dxds) {
mio::DerivFunction<ScalarType> f = [model](Eigen::Ref<const Eigen::VectorX<ScalarType>> x, ScalarType s,
Eigen::Ref<Eigen::VectorX<ScalarType>> dxds) {
model.eval_right_hand_side(x, x, s, dxds);
};
auto I = Integrator(cfg.abs_tol, cfg.rel_tol, cfg.dt_min, cfg.dt_max);

double t, dt;
ScalarType t, dt;
for (auto _ : state) {
// This code gets timed
t = cfg.t_init;
Expand Down
50 changes: 25 additions & 25 deletions cpp/benchmarks/integrator_step.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/*
/*
* Copyright (C) 2020-2025 MEmilio
*
* Authors: Rene Schmieding
Expand Down Expand Up @@ -32,31 +32,31 @@ namespace benchmark
/// @brief parameters for integrator-step benchmark
struct IntegratorStepConfig {
int num_agegroups;
double t_init, dt_init, abs_tol, rel_tol, dt_min, dt_max;
Eigen::VectorXd yt, ytp1;
ScalarType t_init, dt_init, abs_tol, rel_tol, dt_min, dt_max;
Eigen::VectorX<ScalarType> yt, ytp1;
/**
* @brief creates configuration with default parameters for a secir model
* @return configuration for integrator-step benchmark
*/
* @brief creates configuration with default parameters for a secir model
* @return configuration for integrator-step benchmark
*/
static IntegratorStepConfig initialize()
{
const double vals[8] = {6377.873644, 35.249156, 30.029611, 182.145865,
66.153059, 79.530621, 3069.383604, 159.634440};
const ScalarType vals[8] = {6377.873644, 35.249156, 30.029611, 182.145865,
66.153059, 79.530621, 3069.383604, 159.634440};
return IntegratorStepConfig{1,
50,
1,
1e-10,
1e-5,
std::numeric_limits<double>::min(),
std::numeric_limits<double>::max(),
Eigen::Matrix<double, 8, 1>(vals),
Eigen::VectorXd::Zero(8)};
std::numeric_limits<ScalarType>::min(),
std::numeric_limits<ScalarType>::max(),
Eigen::Matrix<ScalarType, 8, 1>(vals),
Eigen::VectorX<ScalarType>::Zero(8)};
}
/**
* @brief reads configuration from json file
* @param path the path of the configfile
* @return configuration for integrator-step benchmark
*/
* @brief reads configuration from json file
* @param path the path of the configfile
* @return configuration for integrator-step benchmark
*/
static IntegratorStepConfig initialize(std::string path)
{
auto result = mio::read_json(path, mio::Tag<IntegratorStepConfig>{});
Expand All @@ -72,13 +72,13 @@ struct IntegratorStepConfig {
{
auto obj = io.expect_object("integrator_step");
auto num_agegroups_io = obj.expect_element("num_agegroups", mio::Tag<int>{});
auto t_init_io = obj.expect_element("t_init", mio::Tag<double>{});
auto dt_init_io = obj.expect_element("dt_init", mio::Tag<double>{});
auto abs_tol_io = obj.expect_element("abs_tol", mio::Tag<double>{});
auto rel_tol_io = obj.expect_element("rel_tol", mio::Tag<double>{});
auto dt_min_io = obj.expect_element("dt_min", mio::Tag<double>{});
auto dt_max_io = obj.expect_element("dt_max", mio::Tag<double>{});
auto yt_io = obj.expect_list("yt", mio::Tag<double>{});
auto t_init_io = obj.expect_element("t_init", mio::Tag<ScalarType>{});
auto dt_init_io = obj.expect_element("dt_init", mio::Tag<ScalarType>{});
auto abs_tol_io = obj.expect_element("abs_tol", mio::Tag<ScalarType>{});
auto rel_tol_io = obj.expect_element("rel_tol", mio::Tag<ScalarType>{});
auto dt_min_io = obj.expect_element("dt_min", mio::Tag<ScalarType>{});
auto dt_max_io = obj.expect_element("dt_max", mio::Tag<ScalarType>{});
auto yt_io = obj.expect_list("yt", mio::Tag<ScalarType>{});
return mio::apply(
io,
[](auto&& num_agegroups, auto&& t_init, auto&& dt_init, auto&& abs_tol, auto&& rel_tol, auto&& dt_min,
Expand All @@ -90,8 +90,8 @@ struct IntegratorStepConfig {
rel_tol,
dt_min,
dt_max,
Eigen::VectorXd::Zero(yt.size()),
Eigen::VectorXd::Zero(yt.size())};
Eigen::VectorX<ScalarType>::Zero(yt.size()),
Eigen::VectorX<ScalarType>::Zero(yt.size())};
for (size_t i = 0; i < yt.size(); i++) {
cfg.yt[i] = yt[i];
}
Expand Down
Loading