From c1b63fe8a10d25252d3e4c7ed5c80cf13ac97198 Mon Sep 17 00:00:00 2001 From: Daniel Weindl Date: Mon, 28 Jul 2025 22:17:07 +0200 Subject: [PATCH] Drop MATLAB tests Remove MATLAB-imported models, old oracle, CMake targets, GHA workflow, and Python tests based on MATLAB models. Related to #2727. --- .github/workflows/test_matlab.yml | 28 - models/model_calvetti/CMakeLists.txt | 118 --- models/model_calvetti/JSparse.cpp | 79 -- models/model_calvetti/Jy.cpp | 39 - models/model_calvetti/M.cpp | 22 - models/model_calvetti/dJydsigma.cpp | 39 - models/model_calvetti/dJydy.cpp | 39 - models/model_calvetti/dwdx.cpp | 72 -- models/model_calvetti/dydx.cpp | 30 - models/model_calvetti/main.cpp | 93 -- models/model_calvetti/model_calvetti.h | 213 ---- .../model_calvetti/rebuild_model_calvetti.m | 5 - models/model_calvetti/root.cpp | 23 - models/model_calvetti/sigmay.cpp | 25 - models/model_calvetti/swig/CMakeLists.txt | 73 -- models/model_calvetti/swig/model_calvetti.i | 22 - models/model_calvetti/w.cpp | 57 -- models/model_calvetti/wrapfunctions.cpp | 16 - models/model_calvetti/wrapfunctions.h | 16 - models/model_calvetti/x0.cpp | 25 - models/model_calvetti/xdot.cpp | 25 - models/model_calvetti/y.cpp | 25 - models/model_dirac/CMakeLists.txt | 118 --- models/model_dirac/JSparse.cpp | 29 - models/model_dirac/Jy.cpp | 24 - models/model_dirac/dJydsigma.cpp | 24 - models/model_dirac/dJydy.cpp | 24 - models/model_dirac/deltasx.cpp | 93 -- models/model_dirac/deltax.cpp | 31 - models/model_dirac/dxdotdp.cpp | 36 - models/model_dirac/dydx.cpp | 20 - models/model_dirac/main.cpp | 93 -- models/model_dirac/model_dirac.h | 210 ---- models/model_dirac/rebuild_model_dirac.m | 5 - models/model_dirac/root.cpp | 21 - models/model_dirac/sigmay.cpp | 20 - models/model_dirac/stau.cpp | 37 - models/model_dirac/swig/CMakeLists.txt | 73 -- models/model_dirac/swig/model_dirac.i | 22 - models/model_dirac/wrapfunctions.cpp | 16 - models/model_dirac/wrapfunctions.h | 16 - models/model_dirac/xdot.cpp | 21 - models/model_dirac/y.cpp | 20 - models/model_events/CMakeLists.txt | 132 --- models/model_events/JSparse.cpp | 32 - models/model_events/Jrz.cpp | 27 - models/model_events/Jy.cpp | 24 - models/model_events/Jz.cpp | 27 - models/model_events/dJrzdsigma.cpp | 27 - models/model_events/dJrzdz.cpp | 27 - models/model_events/dJydsigma.cpp | 24 - models/model_events/dJydy.cpp | 24 - models/model_events/dJzdsigma.cpp | 27 - models/model_events/dJzdz.cpp | 27 - models/model_events/deltasx.cpp | 125 --- models/model_events/drzdx.cpp | 23 - models/model_events/dxdotdp.cpp | 36 - models/model_events/dydp.cpp | 26 - models/model_events/dydx.cpp | 22 - models/model_events/dzdx.cpp | 23 - models/model_events/main.cpp | 93 -- models/model_events/model_events.h | 238 ----- models/model_events/rebuild_model_events.m | 5 - models/model_events/root.cpp | 25 - models/model_events/rz.cpp | 47 - models/model_events/sigmay.cpp | 20 - models/model_events/sigmaz.cpp | 21 - models/model_events/srz.cpp | 149 --- models/model_events/stau.cpp | 151 --- models/model_events/swig/CMakeLists.txt | 73 -- models/model_events/swig/model_events.i | 22 - models/model_events/sz.cpp | 149 --- models/model_events/wrapfunctions.cpp | 16 - models/model_events/wrapfunctions.h | 16 - models/model_events/x0.cpp | 22 - models/model_events/xdot.cpp | 22 - models/model_events/y.cpp | 20 - models/model_events/z.cpp | 47 - models/model_jakstat_adjoint/CMakeLists.txt | 121 --- models/model_jakstat_adjoint/JSparse.cpp | 66 -- models/model_jakstat_adjoint/Jy.cpp | 30 - models/model_jakstat_adjoint/dJydsigma.cpp | 30 - models/model_jakstat_adjoint/dJydy.cpp | 30 - models/model_jakstat_adjoint/dsigmaydp.cpp | 36 - models/model_jakstat_adjoint/dwdp.cpp | 24 - models/model_jakstat_adjoint/dwdx.cpp | 20 - models/model_jakstat_adjoint/dxdotdp.cpp | 80 -- models/model_jakstat_adjoint/dydp.cpp | 72 -- models/model_jakstat_adjoint/dydx.cpp | 24 - models/model_jakstat_adjoint/main.cpp | 93 -- .../model_jakstat_adjoint.h | 216 ---- .../rebuild_model_jakstat_adjoint.m | 5 - models/model_jakstat_adjoint/sigmay.cpp | 22 - .../model_jakstat_adjoint/swig/CMakeLists.txt | 73 -- .../swig/model_jakstat_adjoint.i | 22 - models/model_jakstat_adjoint/sx0.cpp | 26 - models/model_jakstat_adjoint/w.cpp | 21 - .../model_jakstat_adjoint/wrapfunctions.cpp | 16 - models/model_jakstat_adjoint/wrapfunctions.h | 16 - models/model_jakstat_adjoint/x0.cpp | 20 - models/model_jakstat_adjoint/xdot.cpp | 28 - models/model_jakstat_adjoint/y.cpp | 22 - .../model_jakstat_adjoint_o2/CMakeLists.txt | 121 --- models/model_jakstat_adjoint_o2/JSparse.cpp | 951 ------------------ models/model_jakstat_adjoint_o2/Jy.cpp | 81 -- models/model_jakstat_adjoint_o2/dJydsigma.cpp | 81 -- models/model_jakstat_adjoint_o2/dJydy.cpp | 132 --- models/model_jakstat_adjoint_o2/dsigmaydp.cpp | 36 - models/model_jakstat_adjoint_o2/dwdp.cpp | 49 - models/model_jakstat_adjoint_o2/dwdx.cpp | 21 - models/model_jakstat_adjoint_o2/dxdotdp.cpp | 471 --------- models/model_jakstat_adjoint_o2/dydp.cpp | 165 --- models/model_jakstat_adjoint_o2/dydx.cpp | 119 --- models/model_jakstat_adjoint_o2/main.cpp | 93 -- .../model_jakstat_adjoint_o2.h | 216 ---- models/model_jakstat_adjoint_o2/sigmay.cpp | 25 - .../swig/CMakeLists.txt | 73 -- .../swig/model_jakstat_adjoint_o2.i | 22 - models/model_jakstat_adjoint_o2/sx0.cpp | 26 - models/model_jakstat_adjoint_o2/w.cpp | 29 - .../wrapfunctions.cpp | 16 - .../model_jakstat_adjoint_o2/wrapfunctions.h | 16 - models/model_jakstat_adjoint_o2/x0.cpp | 21 - models/model_jakstat_adjoint_o2/xdot.cpp | 181 ---- models/model_jakstat_adjoint_o2/y.cpp | 61 -- models/model_nested_events/CMakeLists.txt | 121 --- models/model_nested_events/JSparse.cpp | 24 - models/model_nested_events/Jy.cpp | 24 - models/model_nested_events/dJydsigma.cpp | 24 - models/model_nested_events/dJydy.cpp | 24 - models/model_nested_events/deltaqB.cpp | 21 - models/model_nested_events/deltasx.cpp | 151 --- models/model_nested_events/deltax.cpp | 31 - models/model_nested_events/dxdotdp.cpp | 31 - models/model_nested_events/dydx.cpp | 20 - models/model_nested_events/main.cpp | 93 -- .../model_nested_events/model_nested_events.h | 216 ---- .../rebuild_model_nested_events.m | 5 - models/model_nested_events/root.cpp | 23 - models/model_nested_events/sigmay.cpp | 20 - models/model_nested_events/stau.cpp | 143 --- .../model_nested_events/swig/CMakeLists.txt | 73 -- .../swig/model_nested_events.i | 22 - models/model_nested_events/sx0.cpp | 26 - models/model_nested_events/wrapfunctions.cpp | 16 - models/model_nested_events/wrapfunctions.h | 16 - models/model_nested_events/x0.cpp | 20 - models/model_nested_events/xdot.cpp | 20 - models/model_nested_events/y.cpp | 20 - models/model_neuron/CMakeLists.txt | 135 --- models/model_neuron/JSparse.cpp | 31 - models/model_neuron/Jrz.cpp | 24 - models/model_neuron/Jy.cpp | 24 - models/model_neuron/Jz.cpp | 24 - models/model_neuron/dJrzdsigma.cpp | 24 - models/model_neuron/dJrzdz.cpp | 24 - models/model_neuron/dJydsigma.cpp | 24 - models/model_neuron/dJydy.cpp | 24 - models/model_neuron/dJzdsigma.cpp | 24 - models/model_neuron/dJzdz.cpp | 24 - models/model_neuron/deltaqB.cpp | 43 - models/model_neuron/deltasx.cpp | 69 -- models/model_neuron/deltax.cpp | 27 - models/model_neuron/deltaxB.cpp | 26 - models/model_neuron/drzdx.cpp | 20 - models/model_neuron/dxdotdp.cpp | 31 - models/model_neuron/dydx.cpp | 20 - models/model_neuron/dzdx.cpp | 20 - models/model_neuron/main.cpp | 93 -- models/model_neuron/model_neuron.h | 244 ----- models/model_neuron/rebuild_model_neuron.m | 5 - models/model_neuron/root.cpp | 20 - models/model_neuron/rz.cpp | 26 - models/model_neuron/sigmay.cpp | 20 - models/model_neuron/sigmaz.cpp | 20 - models/model_neuron/srz.cpp | 65 -- models/model_neuron/stau.cpp | 65 -- models/model_neuron/swig/CMakeLists.txt | 73 -- models/model_neuron/swig/model_neuron.i | 22 - models/model_neuron/sx0.cpp | 26 - models/model_neuron/sz.cpp | 65 -- models/model_neuron/wrapfunctions.cpp | 16 - models/model_neuron/wrapfunctions.h | 16 - models/model_neuron/x0.cpp | 21 - models/model_neuron/xdot.cpp | 21 - models/model_neuron/y.cpp | 20 - models/model_neuron/z.cpp | 26 - models/model_neuron_o2/CMakeLists.txt | 137 --- models/model_neuron_o2/JSparse.cpp | 85 -- models/model_neuron_o2/Jrz.cpp | 28 - models/model_neuron_o2/Jy.cpp | 28 - models/model_neuron_o2/Jz.cpp | 28 - models/model_neuron_o2/dJrzdsigma.cpp | 28 - models/model_neuron_o2/dJrzdz.cpp | 32 - models/model_neuron_o2/dJydsigma.cpp | 28 - models/model_neuron_o2/dJydy.cpp | 32 - models/model_neuron_o2/dJzdsigma.cpp | 28 - models/model_neuron_o2/dJzdz.cpp | 32 - models/model_neuron_o2/deltaqB.cpp | 65 -- models/model_neuron_o2/deltasx.cpp | 101 -- models/model_neuron_o2/deltax.cpp | 35 - models/model_neuron_o2/deltaxB.cpp | 31 - models/model_neuron_o2/drzdx.cpp | 24 - models/model_neuron_o2/dwdx.cpp | 21 - models/model_neuron_o2/dxdotdp.cpp | 39 - models/model_neuron_o2/dydx.cpp | 24 - models/model_neuron_o2/dzdx.cpp | 32 - models/model_neuron_o2/main.cpp | 93 -- models/model_neuron_o2/model_neuron_o2.h | 248 ----- models/model_neuron_o2/root.cpp | 20 - models/model_neuron_o2/rz.cpp | 30 - models/model_neuron_o2/sigmay.cpp | 20 - models/model_neuron_o2/sigmaz.cpp | 20 - models/model_neuron_o2/srz.cpp | 81 -- models/model_neuron_o2/stau.cpp | 65 -- models/model_neuron_o2/swig/CMakeLists.txt | 73 -- models/model_neuron_o2/swig/model_neuron_o2.i | 22 - models/model_neuron_o2/sx0.cpp | 26 - models/model_neuron_o2/sz.cpp | 81 -- models/model_neuron_o2/w.cpp | 21 - models/model_neuron_o2/wrapfunctions.cpp | 16 - models/model_neuron_o2/wrapfunctions.h | 16 - models/model_neuron_o2/x0.cpp | 22 - models/model_neuron_o2/xdot.cpp | 29 - models/model_neuron_o2/y.cpp | 24 - models/model_neuron_o2/z.cpp | 30 - models/model_robertson/CMakeLists.txt | 119 --- models/model_robertson/JSparse.cpp | 42 - models/model_robertson/Jy.cpp | 30 - models/model_robertson/M.cpp | 21 - models/model_robertson/dJydsigma.cpp | 30 - models/model_robertson/dJydy.cpp | 30 - models/model_robertson/dwdp.cpp | 20 - models/model_robertson/dwdx.cpp | 21 - models/model_robertson/dxdotdp.cpp | 38 - models/model_robertson/dydx.cpp | 22 - models/model_robertson/main.cpp | 93 -- models/model_robertson/model_robertson.h | 215 ---- .../model_robertson/rebuild_model_robertson.m | 5 - models/model_robertson/sigmay.cpp | 22 - models/model_robertson/swig/CMakeLists.txt | 73 -- models/model_robertson/swig/model_robertson.i | 22 - models/model_robertson/w.cpp | 20 - models/model_robertson/wrapfunctions.cpp | 16 - models/model_robertson/wrapfunctions.h | 16 - models/model_robertson/x0.cpp | 20 - models/model_robertson/xdot.cpp | 22 - models/model_robertson/y.cpp | 22 - models/model_steadystate/CMakeLists.txt | 118 --- models/model_steadystate/JSparse.cpp | 42 - models/model_steadystate/Jy.cpp | 30 - models/model_steadystate/dJydsigma.cpp | 30 - models/model_steadystate/dJydy.cpp | 30 - models/model_steadystate/dwdp.cpp | 20 - models/model_steadystate/dwdx.cpp | 21 - models/model_steadystate/dxdotdp.cpp | 52 - models/model_steadystate/dydx.cpp | 22 - models/model_steadystate/main.cpp | 93 -- models/model_steadystate/model_steadystate.h | 210 ---- .../rebuild_model_steadystate.m | 5 - models/model_steadystate/sigmay.cpp | 22 - models/model_steadystate/swig/CMakeLists.txt | 73 -- .../swig/model_steadystate.i | 22 - models/model_steadystate/w.cpp | 21 - models/model_steadystate/wrapfunctions.cpp | 16 - models/model_steadystate/wrapfunctions.h | 16 - models/model_steadystate/x0.cpp | 22 - models/model_steadystate/xdot.cpp | 22 - models/model_steadystate/y.cpp | 22 - python/tests/test_pregenerated_models.py | 211 +--- tests/cpp/CMakeLists.txt | 60 +- tests/cpp/expectedResults.h5 | Bin 4198368 -> 0 bytes 272 files changed, 4 insertions(+), 14521 deletions(-) delete mode 100644 .github/workflows/test_matlab.yml delete mode 100644 models/model_calvetti/CMakeLists.txt delete mode 100644 models/model_calvetti/JSparse.cpp delete mode 100644 models/model_calvetti/Jy.cpp delete mode 100644 models/model_calvetti/M.cpp delete mode 100644 models/model_calvetti/dJydsigma.cpp delete mode 100644 models/model_calvetti/dJydy.cpp delete mode 100644 models/model_calvetti/dwdx.cpp delete mode 100644 models/model_calvetti/dydx.cpp delete mode 100644 models/model_calvetti/main.cpp delete mode 100644 models/model_calvetti/model_calvetti.h delete mode 100644 models/model_calvetti/rebuild_model_calvetti.m delete mode 100644 models/model_calvetti/root.cpp delete mode 100644 models/model_calvetti/sigmay.cpp delete mode 100644 models/model_calvetti/swig/CMakeLists.txt delete mode 100644 models/model_calvetti/swig/model_calvetti.i delete mode 100644 models/model_calvetti/w.cpp delete mode 100644 models/model_calvetti/wrapfunctions.cpp delete mode 100644 models/model_calvetti/wrapfunctions.h delete mode 100644 models/model_calvetti/x0.cpp delete mode 100644 models/model_calvetti/xdot.cpp delete mode 100644 models/model_calvetti/y.cpp delete mode 100644 models/model_dirac/CMakeLists.txt delete mode 100644 models/model_dirac/JSparse.cpp delete mode 100644 models/model_dirac/Jy.cpp delete mode 100644 models/model_dirac/dJydsigma.cpp delete mode 100644 models/model_dirac/dJydy.cpp delete mode 100644 models/model_dirac/deltasx.cpp delete mode 100644 models/model_dirac/deltax.cpp delete mode 100644 models/model_dirac/dxdotdp.cpp delete mode 100644 models/model_dirac/dydx.cpp delete mode 100644 models/model_dirac/main.cpp delete mode 100644 models/model_dirac/model_dirac.h delete mode 100644 models/model_dirac/rebuild_model_dirac.m delete mode 100644 models/model_dirac/root.cpp delete mode 100644 models/model_dirac/sigmay.cpp delete mode 100644 models/model_dirac/stau.cpp delete mode 100644 models/model_dirac/swig/CMakeLists.txt delete mode 100644 models/model_dirac/swig/model_dirac.i delete mode 100644 models/model_dirac/wrapfunctions.cpp delete mode 100644 models/model_dirac/wrapfunctions.h delete mode 100644 models/model_dirac/xdot.cpp delete mode 100644 models/model_dirac/y.cpp delete mode 100644 models/model_events/CMakeLists.txt delete mode 100644 models/model_events/JSparse.cpp delete mode 100644 models/model_events/Jrz.cpp delete mode 100644 models/model_events/Jy.cpp delete mode 100644 models/model_events/Jz.cpp delete mode 100644 models/model_events/dJrzdsigma.cpp delete mode 100644 models/model_events/dJrzdz.cpp delete mode 100644 models/model_events/dJydsigma.cpp delete mode 100644 models/model_events/dJydy.cpp delete mode 100644 models/model_events/dJzdsigma.cpp delete mode 100644 models/model_events/dJzdz.cpp delete mode 100644 models/model_events/deltasx.cpp delete mode 100644 models/model_events/drzdx.cpp delete mode 100644 models/model_events/dxdotdp.cpp delete mode 100644 models/model_events/dydp.cpp delete mode 100644 models/model_events/dydx.cpp delete mode 100644 models/model_events/dzdx.cpp delete mode 100644 models/model_events/main.cpp delete mode 100644 models/model_events/model_events.h delete mode 100644 models/model_events/rebuild_model_events.m delete mode 100644 models/model_events/root.cpp delete mode 100644 models/model_events/rz.cpp delete mode 100644 models/model_events/sigmay.cpp delete mode 100644 models/model_events/sigmaz.cpp delete mode 100644 models/model_events/srz.cpp delete mode 100644 models/model_events/stau.cpp delete mode 100644 models/model_events/swig/CMakeLists.txt delete mode 100644 models/model_events/swig/model_events.i delete mode 100644 models/model_events/sz.cpp delete mode 100644 models/model_events/wrapfunctions.cpp delete mode 100644 models/model_events/wrapfunctions.h delete mode 100644 models/model_events/x0.cpp delete mode 100644 models/model_events/xdot.cpp delete mode 100644 models/model_events/y.cpp delete mode 100644 models/model_events/z.cpp delete mode 100644 models/model_jakstat_adjoint/CMakeLists.txt delete mode 100644 models/model_jakstat_adjoint/JSparse.cpp delete mode 100644 models/model_jakstat_adjoint/Jy.cpp delete mode 100644 models/model_jakstat_adjoint/dJydsigma.cpp delete mode 100644 models/model_jakstat_adjoint/dJydy.cpp delete mode 100644 models/model_jakstat_adjoint/dsigmaydp.cpp delete mode 100644 models/model_jakstat_adjoint/dwdp.cpp delete mode 100644 models/model_jakstat_adjoint/dwdx.cpp delete mode 100644 models/model_jakstat_adjoint/dxdotdp.cpp delete mode 100644 models/model_jakstat_adjoint/dydp.cpp delete mode 100644 models/model_jakstat_adjoint/dydx.cpp delete mode 100644 models/model_jakstat_adjoint/main.cpp delete mode 100644 models/model_jakstat_adjoint/model_jakstat_adjoint.h delete mode 100644 models/model_jakstat_adjoint/rebuild_model_jakstat_adjoint.m delete mode 100644 models/model_jakstat_adjoint/sigmay.cpp delete mode 100644 models/model_jakstat_adjoint/swig/CMakeLists.txt delete mode 100644 models/model_jakstat_adjoint/swig/model_jakstat_adjoint.i delete mode 100644 models/model_jakstat_adjoint/sx0.cpp delete mode 100644 models/model_jakstat_adjoint/w.cpp delete mode 100644 models/model_jakstat_adjoint/wrapfunctions.cpp delete mode 100644 models/model_jakstat_adjoint/wrapfunctions.h delete mode 100644 models/model_jakstat_adjoint/x0.cpp delete mode 100644 models/model_jakstat_adjoint/xdot.cpp delete mode 100644 models/model_jakstat_adjoint/y.cpp delete mode 100644 models/model_jakstat_adjoint_o2/CMakeLists.txt delete mode 100644 models/model_jakstat_adjoint_o2/JSparse.cpp delete mode 100644 models/model_jakstat_adjoint_o2/Jy.cpp delete mode 100644 models/model_jakstat_adjoint_o2/dJydsigma.cpp delete mode 100644 models/model_jakstat_adjoint_o2/dJydy.cpp delete mode 100644 models/model_jakstat_adjoint_o2/dsigmaydp.cpp delete mode 100644 models/model_jakstat_adjoint_o2/dwdp.cpp delete mode 100644 models/model_jakstat_adjoint_o2/dwdx.cpp delete mode 100644 models/model_jakstat_adjoint_o2/dxdotdp.cpp delete mode 100644 models/model_jakstat_adjoint_o2/dydp.cpp delete mode 100644 models/model_jakstat_adjoint_o2/dydx.cpp delete mode 100644 models/model_jakstat_adjoint_o2/main.cpp delete mode 100644 models/model_jakstat_adjoint_o2/model_jakstat_adjoint_o2.h delete mode 100644 models/model_jakstat_adjoint_o2/sigmay.cpp delete mode 100644 models/model_jakstat_adjoint_o2/swig/CMakeLists.txt delete mode 100644 models/model_jakstat_adjoint_o2/swig/model_jakstat_adjoint_o2.i delete mode 100644 models/model_jakstat_adjoint_o2/sx0.cpp delete mode 100644 models/model_jakstat_adjoint_o2/w.cpp delete mode 100644 models/model_jakstat_adjoint_o2/wrapfunctions.cpp delete mode 100644 models/model_jakstat_adjoint_o2/wrapfunctions.h delete mode 100644 models/model_jakstat_adjoint_o2/x0.cpp delete mode 100644 models/model_jakstat_adjoint_o2/xdot.cpp delete mode 100644 models/model_jakstat_adjoint_o2/y.cpp delete mode 100644 models/model_nested_events/CMakeLists.txt delete mode 100644 models/model_nested_events/JSparse.cpp delete mode 100644 models/model_nested_events/Jy.cpp delete mode 100644 models/model_nested_events/dJydsigma.cpp delete mode 100644 models/model_nested_events/dJydy.cpp delete mode 100644 models/model_nested_events/deltaqB.cpp delete mode 100644 models/model_nested_events/deltasx.cpp delete mode 100644 models/model_nested_events/deltax.cpp delete mode 100644 models/model_nested_events/dxdotdp.cpp delete mode 100644 models/model_nested_events/dydx.cpp delete mode 100644 models/model_nested_events/main.cpp delete mode 100644 models/model_nested_events/model_nested_events.h delete mode 100644 models/model_nested_events/rebuild_model_nested_events.m delete mode 100644 models/model_nested_events/root.cpp delete mode 100644 models/model_nested_events/sigmay.cpp delete mode 100644 models/model_nested_events/stau.cpp delete mode 100644 models/model_nested_events/swig/CMakeLists.txt delete mode 100644 models/model_nested_events/swig/model_nested_events.i delete mode 100644 models/model_nested_events/sx0.cpp delete mode 100644 models/model_nested_events/wrapfunctions.cpp delete mode 100644 models/model_nested_events/wrapfunctions.h delete mode 100644 models/model_nested_events/x0.cpp delete mode 100644 models/model_nested_events/xdot.cpp delete mode 100644 models/model_nested_events/y.cpp delete mode 100644 models/model_neuron/CMakeLists.txt delete mode 100644 models/model_neuron/JSparse.cpp delete mode 100644 models/model_neuron/Jrz.cpp delete mode 100644 models/model_neuron/Jy.cpp delete mode 100644 models/model_neuron/Jz.cpp delete mode 100644 models/model_neuron/dJrzdsigma.cpp delete mode 100644 models/model_neuron/dJrzdz.cpp delete mode 100644 models/model_neuron/dJydsigma.cpp delete mode 100644 models/model_neuron/dJydy.cpp delete mode 100644 models/model_neuron/dJzdsigma.cpp delete mode 100644 models/model_neuron/dJzdz.cpp delete mode 100644 models/model_neuron/deltaqB.cpp delete mode 100644 models/model_neuron/deltasx.cpp delete mode 100644 models/model_neuron/deltax.cpp delete mode 100644 models/model_neuron/deltaxB.cpp delete mode 100644 models/model_neuron/drzdx.cpp delete mode 100644 models/model_neuron/dxdotdp.cpp delete mode 100644 models/model_neuron/dydx.cpp delete mode 100644 models/model_neuron/dzdx.cpp delete mode 100644 models/model_neuron/main.cpp delete mode 100644 models/model_neuron/model_neuron.h delete mode 100644 models/model_neuron/rebuild_model_neuron.m delete mode 100644 models/model_neuron/root.cpp delete mode 100644 models/model_neuron/rz.cpp delete mode 100644 models/model_neuron/sigmay.cpp delete mode 100644 models/model_neuron/sigmaz.cpp delete mode 100644 models/model_neuron/srz.cpp delete mode 100644 models/model_neuron/stau.cpp delete mode 100644 models/model_neuron/swig/CMakeLists.txt delete mode 100644 models/model_neuron/swig/model_neuron.i delete mode 100644 models/model_neuron/sx0.cpp delete mode 100644 models/model_neuron/sz.cpp delete mode 100644 models/model_neuron/wrapfunctions.cpp delete mode 100644 models/model_neuron/wrapfunctions.h delete mode 100644 models/model_neuron/x0.cpp delete mode 100644 models/model_neuron/xdot.cpp delete mode 100644 models/model_neuron/y.cpp delete mode 100644 models/model_neuron/z.cpp delete mode 100644 models/model_neuron_o2/CMakeLists.txt delete mode 100644 models/model_neuron_o2/JSparse.cpp delete mode 100644 models/model_neuron_o2/Jrz.cpp delete mode 100644 models/model_neuron_o2/Jy.cpp delete mode 100644 models/model_neuron_o2/Jz.cpp delete mode 100644 models/model_neuron_o2/dJrzdsigma.cpp delete mode 100644 models/model_neuron_o2/dJrzdz.cpp delete mode 100644 models/model_neuron_o2/dJydsigma.cpp delete mode 100644 models/model_neuron_o2/dJydy.cpp delete mode 100644 models/model_neuron_o2/dJzdsigma.cpp delete mode 100644 models/model_neuron_o2/dJzdz.cpp delete mode 100644 models/model_neuron_o2/deltaqB.cpp delete mode 100644 models/model_neuron_o2/deltasx.cpp delete mode 100644 models/model_neuron_o2/deltax.cpp delete mode 100644 models/model_neuron_o2/deltaxB.cpp delete mode 100644 models/model_neuron_o2/drzdx.cpp delete mode 100644 models/model_neuron_o2/dwdx.cpp delete mode 100644 models/model_neuron_o2/dxdotdp.cpp delete mode 100644 models/model_neuron_o2/dydx.cpp delete mode 100644 models/model_neuron_o2/dzdx.cpp delete mode 100644 models/model_neuron_o2/main.cpp delete mode 100644 models/model_neuron_o2/model_neuron_o2.h delete mode 100644 models/model_neuron_o2/root.cpp delete mode 100644 models/model_neuron_o2/rz.cpp delete mode 100644 models/model_neuron_o2/sigmay.cpp delete mode 100644 models/model_neuron_o2/sigmaz.cpp delete mode 100644 models/model_neuron_o2/srz.cpp delete mode 100644 models/model_neuron_o2/stau.cpp delete mode 100644 models/model_neuron_o2/swig/CMakeLists.txt delete mode 100644 models/model_neuron_o2/swig/model_neuron_o2.i delete mode 100644 models/model_neuron_o2/sx0.cpp delete mode 100644 models/model_neuron_o2/sz.cpp delete mode 100644 models/model_neuron_o2/w.cpp delete mode 100644 models/model_neuron_o2/wrapfunctions.cpp delete mode 100644 models/model_neuron_o2/wrapfunctions.h delete mode 100644 models/model_neuron_o2/x0.cpp delete mode 100644 models/model_neuron_o2/xdot.cpp delete mode 100644 models/model_neuron_o2/y.cpp delete mode 100644 models/model_neuron_o2/z.cpp delete mode 100644 models/model_robertson/CMakeLists.txt delete mode 100644 models/model_robertson/JSparse.cpp delete mode 100644 models/model_robertson/Jy.cpp delete mode 100644 models/model_robertson/M.cpp delete mode 100644 models/model_robertson/dJydsigma.cpp delete mode 100644 models/model_robertson/dJydy.cpp delete mode 100644 models/model_robertson/dwdp.cpp delete mode 100644 models/model_robertson/dwdx.cpp delete mode 100644 models/model_robertson/dxdotdp.cpp delete mode 100644 models/model_robertson/dydx.cpp delete mode 100644 models/model_robertson/main.cpp delete mode 100644 models/model_robertson/model_robertson.h delete mode 100644 models/model_robertson/rebuild_model_robertson.m delete mode 100644 models/model_robertson/sigmay.cpp delete mode 100644 models/model_robertson/swig/CMakeLists.txt delete mode 100644 models/model_robertson/swig/model_robertson.i delete mode 100644 models/model_robertson/w.cpp delete mode 100644 models/model_robertson/wrapfunctions.cpp delete mode 100644 models/model_robertson/wrapfunctions.h delete mode 100644 models/model_robertson/x0.cpp delete mode 100644 models/model_robertson/xdot.cpp delete mode 100644 models/model_robertson/y.cpp delete mode 100644 models/model_steadystate/CMakeLists.txt delete mode 100644 models/model_steadystate/JSparse.cpp delete mode 100644 models/model_steadystate/Jy.cpp delete mode 100644 models/model_steadystate/dJydsigma.cpp delete mode 100644 models/model_steadystate/dJydy.cpp delete mode 100644 models/model_steadystate/dwdp.cpp delete mode 100644 models/model_steadystate/dwdx.cpp delete mode 100644 models/model_steadystate/dxdotdp.cpp delete mode 100644 models/model_steadystate/dydx.cpp delete mode 100644 models/model_steadystate/main.cpp delete mode 100644 models/model_steadystate/model_steadystate.h delete mode 100644 models/model_steadystate/rebuild_model_steadystate.m delete mode 100644 models/model_steadystate/sigmay.cpp delete mode 100644 models/model_steadystate/swig/CMakeLists.txt delete mode 100644 models/model_steadystate/swig/model_steadystate.i delete mode 100644 models/model_steadystate/w.cpp delete mode 100644 models/model_steadystate/wrapfunctions.cpp delete mode 100644 models/model_steadystate/wrapfunctions.h delete mode 100644 models/model_steadystate/x0.cpp delete mode 100644 models/model_steadystate/xdot.cpp delete mode 100644 models/model_steadystate/y.cpp delete mode 100644 tests/cpp/expectedResults.h5 diff --git a/.github/workflows/test_matlab.yml b/.github/workflows/test_matlab.yml deleted file mode 100644 index 252113d57a..0000000000 --- a/.github/workflows/test_matlab.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: Matlab -on: - push: - merge_group: - workflow_dispatch: - pull_request: - branches: - - main - - -jobs: - matlab: - name: Matlab - - runs-on: ubuntu-22.04 - - steps: - - uses: actions/checkout@v4 - - run: git fetch --prune --unshallow - - - run: echo "AMICI_DIR=$(pwd)" >> $GITHUB_ENV - - - name: Install MATLAB - uses: matlab-actions/setup-matlab@v2 - - name: Run script - uses: matlab-actions/run-command@v2 - with: - command: cd matlab; installAMICI; addpath tests; testModels diff --git a/models/model_calvetti/CMakeLists.txt b/models/model_calvetti/CMakeLists.txt deleted file mode 100644 index c685278a4f..0000000000 --- a/models/model_calvetti/CMakeLists.txt +++ /dev/null @@ -1,118 +0,0 @@ -# Build AMICI model -cmake_minimum_required(VERSION 3.22) -cmake_policy(VERSION 3.22...3.30) - -project(model_calvetti) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -include(CheckCXXCompilerFlag) -set(MY_CXX_FLAGS -Wall -Wno-unused-function -Wno-unused-variable) -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - list(APPEND MY_CXX_FLAGS -Wno-unused-but-set-variable) -endif() -foreach(flag ${MY_CXX_FLAGS}) - unset(CUR_FLAG_SUPPORTED CACHE) - check_cxx_compiler_flag(${flag} CUR_FLAG_SUPPORTED) - if(${CUR_FLAG_SUPPORTED}) - string(APPEND CMAKE_CXX_FLAGS " ${flag}") - endif() -endforeach() - -if(DEFINED ENV{AMICI_CXXFLAGS}) - message(STATUS "Appending flags from AMICI_CXXFLAGS: $ENV{AMICI_CXXFLAGS}") - add_compile_options("$ENV{AMICI_CXXFLAGS}") -endif() -if(DEFINED ENV{AMICI_LDFLAGS}) - message(STATUS "Appending flags from AMICI_LDFLAGS: $ENV{AMICI_LDFLAGS}") - link_libraries("$ENV{AMICI_LDFLAGS}") -endif() - -find_package(Amici REQUIRED HINTS - ${CMAKE_CURRENT_LIST_DIR}/../../build) -message(STATUS "Found AMICI ${Amici_DIR}") -set_target_properties(Upstream::amici PROPERTIES - MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo;Release; - MAP_IMPORTED_CONFIG_RELEASE Release - MAP_IMPORTED_CONFIG_DEBUG Debug;RelWithDebInfo;) - -# Debug build? -if("$ENV{ENABLE_AMICI_DEBUGGING}" OR "$ENV{ENABLE_GCOV_COVERAGE}") - add_compile_options(-UNDEBUG) - if(MSVC) - add_compile_options(-DEBUG) - else() - add_compile_options(-O0 -g) - endif() -endif() - -# coverage options -if($ENV{ENABLE_GCOV_COVERAGE}) - string(APPEND CMAKE_CXX_FLAGS_DEBUG " --coverage") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " --coverage") -endif() - -set(MODEL_DIR ${CMAKE_CURRENT_LIST_DIR}) - -set(SRC_LIST_LIB ${MODEL_DIR}/JSparse.cpp -${MODEL_DIR}/Jy.cpp -${MODEL_DIR}/M.cpp -${MODEL_DIR}/dJydsigma.cpp -${MODEL_DIR}/dJydy.cpp -${MODEL_DIR}/dwdx.cpp -${MODEL_DIR}/dydx.cpp -${MODEL_DIR}/root.cpp -${MODEL_DIR}/sigmay.cpp -${MODEL_DIR}/w.cpp -${MODEL_DIR}/x0.cpp -${MODEL_DIR}/xdot.cpp -${MODEL_DIR}/y.cpp - ${MODEL_DIR}/wrapfunctions.cpp) - -add_library(${PROJECT_NAME} ${SRC_LIST_LIB}) -add_library(model ALIAS ${PROJECT_NAME}) - -# Some special functions require boost -# -# TODO: set some flag during code generation whether the given model requires -# boost. for now, try to find it, add include directories and link against it. -# let the compiler/linker error if it is required but not found -find_package(Boost) - -target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") - -target_link_libraries( - ${PROJECT_NAME} - PUBLIC Upstream::amici - PRIVATE $<$:Boost::boost>) - -if(NOT "${AMICI_PYTHON_BUILD_EXT_ONLY}") - set(SRC_LIST_EXE main.cpp) - add_executable(simulate_${PROJECT_NAME} ${SRC_LIST_EXE}) - target_link_libraries(simulate_${PROJECT_NAME} ${PROJECT_NAME}) -endif() - -# SWIG -option(ENABLE_SWIG "Build swig/python library?" ON) -if(ENABLE_SWIG) - add_subdirectory(swig) -endif() - -# -include(GNUInstallDirs) -install( - TARGETS ${PROJECT_NAME} - EXPORT ${PROJECT_NAME}Targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - INCLUDES - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -export( - EXPORT ${PROJECT_NAME}Targets - FILE ${PROJECT_NAME}Config.cmake - NAMESPACE Upstream::) -# diff --git a/models/model_calvetti/JSparse.cpp b/models/model_calvetti/JSparse.cpp deleted file mode 100644 index 843a93ef37..0000000000 --- a/models/model_calvetti/JSparse.cpp +++ /dev/null @@ -1,79 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -#include //SUNMatrixContent_Sparse definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_calvetti{ - -void JSparse_model_calvetti(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype cj, const realtype *dx, const realtype *w, const realtype *dwdx) { - JSparse->indexvals[0] = 0; - JSparse->indexvals[1] = 3; - JSparse->indexvals[2] = 0; - JSparse->indexvals[3] = 1; - JSparse->indexvals[4] = 3; - JSparse->indexvals[5] = 4; - JSparse->indexvals[6] = 0; - JSparse->indexvals[7] = 1; - JSparse->indexvals[8] = 2; - JSparse->indexvals[9] = 3; - JSparse->indexvals[10] = 4; - JSparse->indexvals[11] = 5; - JSparse->indexvals[12] = 0; - JSparse->indexvals[13] = 3; - JSparse->indexvals[14] = 4; - JSparse->indexvals[15] = 0; - JSparse->indexvals[16] = 1; - JSparse->indexvals[17] = 3; - JSparse->indexvals[18] = 4; - JSparse->indexvals[19] = 5; - JSparse->indexvals[20] = 0; - JSparse->indexvals[21] = 1; - JSparse->indexvals[22] = 2; - JSparse->indexvals[23] = 3; - JSparse->indexvals[24] = 4; - JSparse->indexvals[25] = 5; - JSparse->indexptrs[0] = 0; - JSparse->indexptrs[1] = 2; - JSparse->indexptrs[2] = 6; - JSparse->indexptrs[3] = 12; - JSparse->indexptrs[4] = 15; - JSparse->indexptrs[5] = 20; - JSparse->indexptrs[6] = 26; - JSparse->data[0] = -cj-w[0]*(1.0E2/8.99E2)+dwdx[6]; - JSparse->data[1] = w[0]*(1.0E2/8.99E2)-dwdx[6]+dwdx[7]*(w[23]*w[24]*2.0-w[20]*w[23]*w[24])-w[23]*w[24]*w[25]*dwdx[4]; - JSparse->data[2] = dwdx[16]; - JSparse->data[3] = -cj-w[6]*1.202935161794779E-2+dwdx[19]; - JSparse->data[4] = -dwdx[16]-w[23]*w[24]*w[25]*dwdx[14]; - JSparse->data[5] = w[6]*1.202935161794779E-2-dwdx[19]; - JSparse->data[6] = dwdx[28]; - JSparse->data[7] = dwdx[31]; - JSparse->data[8] = -cj-w[31]*8.196729508204918E-9+dwdx[32]; - JSparse->data[9] = -dwdx[28]-w[23]*w[24]*w[25]*dwdx[26]; - JSparse->data[10] = -dwdx[31]; - JSparse->data[11] = w[31]*8.196729508204918E-9-dwdx[32]; - JSparse->data[12] = dwdx[36]; - JSparse->data[13] = -dwdx[36]-w[23]*w[24]*w[25]*dwdx[34]-1.0; - JSparse->data[14] = 1.0; - JSparse->data[15] = dwdx[40]; - JSparse->data[16] = dwdx[43]; - JSparse->data[17] = -dwdx[40]-w[23]*w[24]*w[25]*dwdx[38]; - JSparse->data[18] = -dwdx[43]-1.0; - JSparse->data[19] = 1.0; - JSparse->data[20] = dwdx[47]; - JSparse->data[21] = dwdx[50]; - JSparse->data[22] = dwdx[52]; - JSparse->data[23] = -dwdx[47]-w[23]*w[24]*w[25]*dwdx[45]; - JSparse->data[24] = -dwdx[50]; - JSparse->data[25] = -dwdx[52]-1.0; -} - -} // namespace model_model_calvetti - -} // namespace amici - diff --git a/models/model_calvetti/Jy.cpp b/models/model_calvetti/Jy.cpp deleted file mode 100644 index b4507d41e2..0000000000 --- a/models/model_calvetti/Jy.cpp +++ /dev/null @@ -1,39 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_calvetti{ - -void Jy_model_calvetti(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - nllh[0] = amici::log((sigmay[0]*sigmay[0])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*5.0E-1; - break; - case 1: - nllh[0] = amici::log((sigmay[1]*sigmay[1])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[1]*sigmay[1])*pow(my[1]-y[1],2.0)*5.0E-1; - break; - case 2: - nllh[0] = amici::log((sigmay[2]*sigmay[2])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[2]*sigmay[2])*pow(my[2]-y[2],2.0)*5.0E-1; - break; - case 3: - nllh[0] = amici::log((sigmay[3]*sigmay[3])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[3]*sigmay[3])*pow(my[3]-y[3],2.0)*5.0E-1; - break; - case 4: - nllh[0] = amici::log((sigmay[4]*sigmay[4])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[4]*sigmay[4])*pow(my[4]-y[4],2.0)*5.0E-1; - break; - case 5: - nllh[0] = amici::log((sigmay[5]*sigmay[5])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[5]*sigmay[5])*pow(my[5]-y[5],2.0)*5.0E-1; - break; -} -} - -} // namespace model_model_calvetti - -} // namespace amici - diff --git a/models/model_calvetti/M.cpp b/models/model_calvetti/M.cpp deleted file mode 100644 index 32bfd132d6..0000000000 --- a/models/model_calvetti/M.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_calvetti{ - -void M_model_calvetti(realtype *M, const realtype t, const realtype *x, const realtype *p, const realtype *k) { - M[0+0*6] = 1.0; - M[1+1*6] = 1.0; - M[2+2*6] = 1.0; -} - -} // namespace model_model_calvetti - -} // namespace amici - diff --git a/models/model_calvetti/dJydsigma.cpp b/models/model_calvetti/dJydsigma.cpp deleted file mode 100644 index 08aa3f3ac3..0000000000 --- a/models/model_calvetti/dJydsigma.cpp +++ /dev/null @@ -1,39 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_calvetti{ - -void dJydsigma_model_calvetti(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydsigma[0+0*1] = 1.0/(sigmay[0]*sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*-1.0+1.0/sigmay[0]; - break; - case 1: - dJydsigma[0+1*1] = 1.0/(sigmay[1]*sigmay[1]*sigmay[1])*pow(my[1]-y[1],2.0)*-1.0+1.0/sigmay[1]; - break; - case 2: - dJydsigma[0+2*1] = 1.0/(sigmay[2]*sigmay[2]*sigmay[2])*pow(my[2]-y[2],2.0)*-1.0+1.0/sigmay[2]; - break; - case 3: - dJydsigma[0+3*1] = 1.0/(sigmay[3]*sigmay[3]*sigmay[3])*pow(my[3]-y[3],2.0)*-1.0+1.0/sigmay[3]; - break; - case 4: - dJydsigma[0+4*1] = 1.0/(sigmay[4]*sigmay[4]*sigmay[4])*pow(my[4]-y[4],2.0)*-1.0+1.0/sigmay[4]; - break; - case 5: - dJydsigma[0+5*1] = 1.0/(sigmay[5]*sigmay[5]*sigmay[5])*pow(my[5]-y[5],2.0)*-1.0+1.0/sigmay[5]; - break; -} -} - -} // namespace model_model_calvetti - -} // namespace amici - diff --git a/models/model_calvetti/dJydy.cpp b/models/model_calvetti/dJydy.cpp deleted file mode 100644 index 16187c1807..0000000000 --- a/models/model_calvetti/dJydy.cpp +++ /dev/null @@ -1,39 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_calvetti{ - -void dJydy_model_calvetti(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydy[0+0*1] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - break; - case 1: - dJydy[0+1*1] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - break; - case 2: - dJydy[0+2*1] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - break; - case 3: - dJydy[0+3*1] = 1.0/(sigmay[3]*sigmay[3])*(my[3]*2.0-y[3]*2.0)*-5.0E-1; - break; - case 4: - dJydy[0+4*1] = 1.0/(sigmay[4]*sigmay[4])*(my[4]*2.0-y[4]*2.0)*-5.0E-1; - break; - case 5: - dJydy[0+5*1] = 1.0/(sigmay[5]*sigmay[5])*(my[5]*2.0-y[5]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_calvetti - -} // namespace amici - diff --git a/models/model_calvetti/dwdx.cpp b/models/model_calvetti/dwdx.cpp deleted file mode 100644 index f185abd31f..0000000000 --- a/models/model_calvetti/dwdx.cpp +++ /dev/null @@ -1,72 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_calvetti{ - -void dwdx_model_calvetti(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) { - dwdx[0] = 1.0/(x[0]*x[0]*x[0])*-2.0; - dwdx[1] = k[1]*w[15]*dwdx[0]; - dwdx[2] = dwdx[1]; - dwdx[3] = x[3]*dwdx[2]; - dwdx[4] = dwdx[3]; - dwdx[5] = -1.0/(w[20]*w[20])*dwdx[4]; - dwdx[6] = w[0]*w[14]*w[21]*(2.0/3.1E1)+w[0]*x[0]*w[14]*dwdx[5]*(2.0/3.1E1); - dwdx[7] = x[0]*2.0; - dwdx[8] = 1.0/(x[1]*x[1]*x[1])*-2.0; - dwdx[9] = k[3]*w[1]*dwdx[8]; - dwdx[10] = dwdx[9]; - dwdx[11] = x[4]*dwdx[10]; - dwdx[12] = dwdx[9]; - dwdx[13] = x[3]*dwdx[12]; - dwdx[14] = dwdx[11]+dwdx[13]; - dwdx[15] = -1.0/(w[20]*w[20])*dwdx[14]; - dwdx[16] = w[0]*x[0]*w[14]*dwdx[15]*(2.0/3.1E1); - dwdx[17] = dwdx[11]; - dwdx[18] = -1.0/(w[26]*w[26])*dwdx[17]; - dwdx[19] = w[6]*w[27]*w[29]*(2.0/1.63E2)+x[1]*w[6]*w[29]*dwdx[18]*(2.0/1.63E2); - dwdx[20] = 1.0/(x[2]*x[2]*x[2])*-2.0; - dwdx[21] = k[5]*w[4]*dwdx[20]; - dwdx[22] = dwdx[21]; - dwdx[23] = x[4]*dwdx[22]; - dwdx[24] = k[5]*w[4]*x[5]*dwdx[20]; - dwdx[25] = x[2]*2.0; - dwdx[26] = dwdx[23]+dwdx[24]; - dwdx[27] = -1.0/(w[20]*w[20])*dwdx[26]; - dwdx[28] = w[0]*x[0]*w[14]*dwdx[27]*(2.0/3.1E1); - dwdx[29] = dwdx[23]+dwdx[24]; - dwdx[30] = -1.0/(w[26]*w[26])*dwdx[29]; - dwdx[31] = x[1]*w[6]*w[29]*dwdx[30]*(2.0/1.63E2); - dwdx[32] = w[11]*w[32]*w[33]*w[34]*w[36]*(1.0/6.1E1)+x[2]*w[32]*w[33]*w[34]*w[36]*dwdx[25]*(1.0/6.1E1); - dwdx[33] = w[18]; - dwdx[34] = dwdx[33]; - dwdx[35] = -1.0/(w[20]*w[20])*dwdx[34]; - dwdx[36] = w[0]*x[0]*w[14]*dwdx[35]*(2.0/3.1E1); - dwdx[37] = w[8]; - dwdx[38] = dwdx[37]; - dwdx[39] = -1.0/(w[20]*w[20])*dwdx[38]; - dwdx[40] = w[0]*x[0]*w[14]*dwdx[39]*(2.0/3.1E1); - dwdx[41] = dwdx[37]; - dwdx[42] = -1.0/(w[26]*w[26])*dwdx[41]; - dwdx[43] = x[1]*w[6]*w[29]*dwdx[42]*(2.0/1.63E2); - dwdx[44] = k[5]*w[4]*w[5]; - dwdx[45] = dwdx[44]; - dwdx[46] = -1.0/(w[20]*w[20])*dwdx[45]; - dwdx[47] = w[0]*x[0]*w[14]*dwdx[46]*(2.0/3.1E1); - dwdx[48] = dwdx[44]; - dwdx[49] = -1.0/(w[26]*w[26])*dwdx[48]; - dwdx[50] = x[1]*w[6]*w[29]*dwdx[49]*(2.0/1.63E2); - dwdx[51] = -1.0/(x[5]*x[5]); - dwdx[52] = x[2]*w[11]*w[32]*w[33]*w[36]*dwdx[51]*(1.0/6.1E1); -} - -} // namespace model_model_calvetti - -} // namespace amici - diff --git a/models/model_calvetti/dydx.cpp b/models/model_calvetti/dydx.cpp deleted file mode 100644 index d6872b7ad1..0000000000 --- a/models/model_calvetti/dydx.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_calvetti{ - -void dydx_model_calvetti(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - dydx[0+0*6] = 1.0; - dydx[1+1*6] = 1.0; - dydx[2+2*6] = 1.0; - dydx[3+0*6] = (x[3]*2.0)/x[0]+(1.0/(k[0]*k[0])*x[0]*4.0)/k[1]-(1.0/(k[0]*k[0])*x[0]*(x[3]*((k[0]*k[0])*k[1]*1.0/(x[0]*x[0])+(k[2]*k[2])*k[3]*1.0/(x[1]*x[1]))+x[4]*((k[2]*k[2])*k[3]*1.0/(x[1]*x[1])+(k[4]*k[4])*k[5]*1.0/(x[2]*x[2]))+(k[4]*k[4])*k[5]*1.0/(x[2]*x[2])*x[5])*2.0)/k[1]; - dydx[3+1*6] = (1.0/(k[0]*k[0])*(x[0]*x[0])*((k[2]*k[2])*k[3]*1.0/(x[1]*x[1]*x[1])*x[3]*2.0+(k[2]*k[2])*k[3]*1.0/(x[1]*x[1]*x[1])*x[4]*2.0))/k[1]; - dydx[3+2*6] = (1.0/(k[0]*k[0])*(x[0]*x[0])*((k[4]*k[4])*k[5]*1.0/(x[2]*x[2]*x[2])*x[4]*2.0+(k[4]*k[4])*k[5]*1.0/(x[2]*x[2]*x[2])*x[5]*2.0))/k[1]; - dydx[3+3*6] = -(1.0/(k[0]*k[0])*(x[0]*x[0])*((k[0]*k[0])*k[1]*1.0/(x[0]*x[0])+(k[2]*k[2])*k[3]*1.0/(x[1]*x[1])))/k[1]; - dydx[3+4*6] = -(1.0/(k[0]*k[0])*(x[0]*x[0])*((k[2]*k[2])*k[3]*1.0/(x[1]*x[1])+(k[4]*k[4])*k[5]*1.0/(x[2]*x[2])))/k[1]; - dydx[3+5*6] = -(1.0/(k[0]*k[0])*(k[4]*k[4])*k[5]*(x[0]*x[0])*1.0/(x[2]*x[2]))/k[1]; - dydx[4+3*6] = 1.0; - dydx[5+4*6] = 1.0; -} - -} // namespace model_model_calvetti - -} // namespace amici - diff --git a/models/model_calvetti/main.cpp b/models/model_calvetti/main.cpp deleted file mode 100644 index ecdff85a46..0000000000 --- a/models/model_calvetti/main.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#include - -#include "wrapfunctions.h" /* model-provided functions */ -#include /* AMICI base functions */ - -template -std::ostream& operator<<(std::ostream& os, std::vector const& v) { - os << "["; - for (typename std::vector::const_iterator ii = v.begin(); ii != v.end(); - ++ii) { - os << " " << *ii; - } - os << "]"; - return os; -} - -/* - * This is a scaffold for a stand-alone AMICI simulation executable - * demonstrating the basic use of the AMICI C++ API. - */ - -int main() { - std::cout << "********************************" << std::endl; - std::cout << "** Running forward simulation **" << std::endl; - std::cout << "********************************" << std::endl << std::endl; - - // Create a model instance - auto model = amici::generic_model::getModel(); - - // Set desired output timepoints - model->setTimepoints({0.0, 1.0, 10.0, 100.0, 1000.0}); - - // Create a solver instance - auto solver = model->getSolver(); - - // Optionally set integration tolerance - solver->setAbsoluteTolerance(1e-16); - solver->setRelativeTolerance(1e-8); - - // Run the simulation using default parameters set during model import - // (can be changed using model->setParameters() or model->setParameterBy*()) - auto rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print observable time course - auto observable_ids = model->getObservableIds(); - std::cout << "Simulated observables for timepoints " << rdata->ts << "\n\n"; - for (int i_observable = 0; i_observable < rdata->ny; ++i_observable) { - std::cout << observable_ids[i_observable] << ":\n\t"; - for (int i_time = 0; i_time < rdata->nt; ++i_time) { - // rdata->y is a flat 2D array in row-major ordering - std::cout << rdata->y[i_time * rdata->ny + i_observable] << " "; - } - std::cout << std::endl << std::endl; - } - - std::cout << std::endl; - std::cout << "**********************************" << std::endl; - std::cout << "** Forward sensitivity analysis **" << std::endl; - std::cout << "**********************************" << std::endl << std::endl; - - // Enable first-order sensitivity analysis - solver->setSensitivityOrder(amici::SensitivityOrder::first); - // Use forward sensitivities - solver->setSensitivityMethod(amici::SensitivityMethod::forward); - - // Run the simulation - rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print state sensitivities sx... - // ... for the first timepoint... - int i_time = 0; - // ... with respect to the first parameter - int i_nplist = 0; - - // get identifiers from model - auto state_ids = model->getStateIds(); - auto parameter_ids = model->getParameterIds(); - - std::cout << "State sensitivities for timepoint " << rdata->ts[i_time] - << std::endl; // nt x nplist x nx - for (int i_state = 0; i_state < rdata->nx; ++i_state) { - std::cout << "\td(" << state_ids[i_state] << ")/d(" - << parameter_ids[model->plist(i_nplist)] << ") = "; - - // rdata->sx is a flat 3D array in row-major ordering - std::cout << rdata->sx - [i_time * rdata->nplist * rdata->nx - + i_nplist * rdata->nx + i_state]; - std::cout << std::endl; - } - - return 0; -} diff --git a/models/model_calvetti/model_calvetti.h b/models/model_calvetti/model_calvetti.h deleted file mode 100644 index bdc00bdac9..0000000000 --- a/models/model_calvetti/model_calvetti.h +++ /dev/null @@ -1,213 +0,0 @@ -#ifndef _amici_model_calvetti_h -#define _amici_model_calvetti_h -/* Generated by amiwrap (R2017b) d69c026f8f8a89a13f1fa1307548f2b8f7045fe1 */ -#include -#include -#include "amici/defines.h" -#include //SUNMatrixContent_Sparse definition -#include "amici/solver_idas.h" -#include "amici/model_dae.h" - -namespace amici { - -class Solver; - -namespace model_model_calvetti{ - -extern void JSparse_model_calvetti(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype cj, const realtype *dx, const realtype *w, const realtype *dwdx); -extern void Jy_model_calvetti(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void M_model_calvetti(realtype *M, const realtype t, const realtype *x, const realtype *p, const realtype *k); -extern void dJydsigma_model_calvetti(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydy_model_calvetti(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dwdx_model_calvetti(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static); -extern void dydx_model_calvetti(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void root_model_calvetti(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *dx); -extern void sigmay_model_calvetti(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y); -extern void w_model_calvetti(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static); -extern void x0_model_calvetti(realtype *x0, const realtype t, const realtype *p, const realtype *k); -extern void xdot_model_calvetti(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *dx, const realtype *w); -extern void y_model_calvetti(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); - -class Model_model_calvetti : public amici::Model_DAE { -public: - Model_model_calvetti() - : amici::Model_DAE( - amici::ModelDimensions( - 6, - 6, - 6, - 6, - 0, - 0, - 6, - 6, - 6, - 0, - 0, - 4, - 4, - 0, - 1, - 38, - 53, - 0, - 0, - 0, - {}, - 0, - 0, - 0, - 26, - 5, - 3 - ), - amici::SimulationParameters( - std::vector(6, 1.0), - std::vector(0, 1.0) - ), - amici::SecondOrderMode::none, - std::vector{1, 1, 1, 0, 0, 0}, - std::vector{}) - {}; - - amici::Model* clone() const override { return new Model_model_calvetti(*this); }; - - std::string getAmiciCommit() const override { return "d69c026f8f8a89a13f1fa1307548f2b8f7045fe1"; }; - - void fJSparse(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype cj, const realtype *dx, const realtype *w, const realtype *dwdx) override { - JSparse_model_calvetti(JSparse, t, x, p, k, h, cj, dx, w, dwdx); - } - - void fJrz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fJy(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - Jy_model_calvetti(nllh, iy, p, k, y, sigmay, my); - } - - void fJz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fM(realtype *M, const realtype t, const realtype *x, const realtype *p, const realtype *k) override { - M_model_calvetti(M, t, x, p, k); - } - - void fdJrzdsigma(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fdJrzdz(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fdJydsigma(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydsigma_model_calvetti(dJydsigma, iy, p, k, y, sigmay, my); - } - - void fdJydy(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydy_model_calvetti(dJydy, iy, p, k, y, sigmay, my); - } - - void fdJzdsigma(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdJzdz(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdeltaqB(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdeltasx(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) override { - } - - void fdeltax(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old) override { - } - - void fdeltaxB(double *deltaxB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdrzdp(double *drzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdrzdx(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void fdsigmaydp(double *dsigmaydp, const realtype t, const realtype *p, const realtype *k, const realtype *y, const int ip) override { - } - - void fdsigmazdp(double *dsigmazdp, const realtype t, const realtype *p, const realtype *k, const int ip) override { - } - - void fdwdp(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static) override { - } - - void fdwdx(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) override { - dwdx_model_calvetti(dwdx, t, x, p, k, h, w, tcl, spl, include_static); - } - - void fdxdotdp(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *dx, const realtype *w, const realtype *dwdp) override { - } - - void fdydp(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - } - - void fdydx(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - dydx_model_calvetti(dydx, t, x, p, k, h, w, dwdx); - } - - void fdzdp(double *dzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdzdx(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void froot(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *dx) override { - root_model_calvetti(root, t, x, p, k, h, dx); - } - - void frz(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void fsigmay(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) override { - sigmay_model_calvetti(sigmay, t, p, k, y); - } - - void fsigmaz(double *sigmaz, const realtype t, const realtype *p, const realtype *k) override { - } - - void fsrz(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - } - - void fstau(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) override { - } - - void fsx0(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) override { - } - - void fsz(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - } - - void fw(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) override { - w_model_calvetti(w, t, x, p, k, h, tcl, spl, include_static); - } - - void fx0(realtype *x0, const realtype t, const realtype *p, const realtype *k) override { - x0_model_calvetti(x0, t, p, k); - } - - void fxdot(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *dx, const realtype *w) override { - xdot_model_calvetti(xdot, t, x, p, k, h, dx, w); - } - - void fy(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - y_model_calvetti(y, t, x, p, k, h, w); - } - - void fz(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - -}; - -} // namespace model_model_calvetti - -} // namespace amici - -#endif /* _amici_model_calvetti_h */ diff --git a/models/model_calvetti/rebuild_model_calvetti.m b/models/model_calvetti/rebuild_model_calvetti.m deleted file mode 100644 index ef44a7afcd..0000000000 --- a/models/model_calvetti/rebuild_model_calvetti.m +++ /dev/null @@ -1,5 +0,0 @@ -function rebuild_model_calvetti() -modelName = 'model_calvetti'; -amimodel.compileAndLinkModel(modelName, '', [], [], [], []); -amimodel.generateMatlabWrapper(6, 6, 0, 6, 0, 0, [], ['simulate_' modelName '.m'], 'model_calvetti', 'lin', 1, 1); -end diff --git a/models/model_calvetti/root.cpp b/models/model_calvetti/root.cpp deleted file mode 100644 index 8fda25149a..0000000000 --- a/models/model_calvetti/root.cpp +++ /dev/null @@ -1,23 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_calvetti{ - -void root_model_calvetti(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *dx) { - root[0] = -t+1.0E1; - root[1] = -t+1.2E1; - root[2] = t-1.0E1; - root[3] = t-1.2E1; -} - -} // namespace model_model_calvetti - -} // namespace amici - diff --git a/models/model_calvetti/sigmay.cpp b/models/model_calvetti/sigmay.cpp deleted file mode 100644 index 690d1a01a9..0000000000 --- a/models/model_calvetti/sigmay.cpp +++ /dev/null @@ -1,25 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_calvetti{ - -void sigmay_model_calvetti(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) { - sigmay[0] = 1.0; - sigmay[1] = 1.0; - sigmay[2] = 1.0; - sigmay[3] = 1.0; - sigmay[4] = 1.0; - sigmay[5] = 1.0; -} - -} // namespace model_model_calvetti - -} // namespace amici - diff --git a/models/model_calvetti/swig/CMakeLists.txt b/models/model_calvetti/swig/CMakeLists.txt deleted file mode 100644 index 523571c52e..0000000000 --- a/models/model_calvetti/swig/CMakeLists.txt +++ /dev/null @@ -1,73 +0,0 @@ -cmake_minimum_required(VERSION 3.15) -cmake_policy(VERSION 3.15...3.27) - -# cmake >=3.27 -if(POLICY CMP0144) - cmake_policy(SET CMP0144 NEW) -endif(POLICY CMP0144) -# cmake >= 3.30 -if(POLICY CMP0167) - cmake_policy(SET CMP0167 NEW) -endif(POLICY CMP0167) - - -if(DEFINED ENV{SWIG}) - set(SWIG_EXECUTABLE $ENV{SWIG}) -endif() - -find_package(SWIG REQUIRED) -include(${SWIG_USE_FILE}) - -if(DEFINED ENV{PYTHON_EXECUTABLE}) - set(Python3_EXECUTABLE $ENV{PYTHON_EXECUTABLE}) -endif() -# We don't need "Interpreter" here, but without that, FindPython3 will -# ignore the Python version selected via $Python3_EXECUTABLE -find_package(Python3 COMPONENTS Interpreter Development) -include_directories(${Python3_INCLUDE_DIRS}) - -set(SWIG_LIBRARY_NAME _${PROJECT_NAME}) -set(CMAKE_SWIG_FLAGS "") -set_source_files_properties(${PROJECT_NAME}.i PROPERTIES CPLUSPLUS ON) - -# swig does not use INTERFACE_INCLUDE_DIRS of linked libraries, so add manually -get_target_property(AMICI_INCLUDE_DIRS Upstream::amici INTERFACE_INCLUDE_DIRECTORIES) -include_directories(${AMICI_INCLUDE_DIRS} .. ${AMICI_INCLUDE_DIRS}/../swig) - -swig_add_library(${SWIG_LIBRARY_NAME} - TYPE MODULE - LANGUAGE python - SOURCES ${PROJECT_NAME}.i) - - -set_target_properties(${SWIG_LIBRARY_NAME} - PROPERTIES - SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE - PREFIX "" -) - -# Python extension suffix -execute_process( - COMMAND ${Python3_EXECUTABLE} -c - "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" - OUTPUT_VARIABLE PY_EXT_SUFFIX OUTPUT_STRIP_TRAILING_WHITESPACE) -if(NOT "${PY_EXT_SUFFIX}" STREQUAL "") - message(STATUS "Python extension suffix is ${PY_EXT_SUFFIX}") - set_target_properties(${SWIG_LIBRARY_NAME} PROPERTIES SUFFIX "${PY_EXT_SUFFIX}" ) -endif() - - -swig_link_libraries(${SWIG_LIBRARY_NAME} - ${Python3_LIBRARIES} - model) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.py - $ DESTINATION .) - -# configure module setup script -set(SETUP_PY_IN ${Amici_DIR}/model_setup.template.py) -set(SETUP_PY_OUT ${CMAKE_CURRENT_BINARY_DIR}/setup.py) - -add_custom_target(install-python - DEPENDS ${SWIG_LIBRARY_NAME} - COMMAND python ${SETUP_PY_OUT} install) diff --git a/models/model_calvetti/swig/model_calvetti.i b/models/model_calvetti/swig/model_calvetti.i deleted file mode 100644 index a904745877..0000000000 --- a/models/model_calvetti/swig/model_calvetti.i +++ /dev/null @@ -1,22 +0,0 @@ -%module model_calvetti -%import amici.i -// Add necessary symbols to generated header - -%{ -#include "wrapfunctions.h" -#include "amici/model_ode.h" -#include "amici/model_dae.h" -using namespace amici; -%} - - -// Make model module accessible from the model -%feature("pythonappend") amici::generic_model::getModel %{ - if '.' in __name__: - import sys - val.module = sys.modules['.'.join(__name__.split('.')[:-1])] -%} - - -// Process symbols in header -%include "wrapfunctions.h" diff --git a/models/model_calvetti/w.cpp b/models/model_calvetti/w.cpp deleted file mode 100644 index 38773562d3..0000000000 --- a/models/model_calvetti/w.cpp +++ /dev/null @@ -1,57 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_calvetti{ - -void w_model_calvetti(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) { - w[0] = 1.0/k[0]; - w[1] = k[2]*k[2]; - w[2] = 1.0/(x[1]*x[1]); - w[3] = k[3]*w[1]*w[2]; - w[4] = k[4]*k[4]; - w[5] = 1.0/(x[2]*x[2]); - w[6] = 1.0/k[2]; - w[7] = k[5]*w[4]*w[5]; - w[8] = w[3]+w[7]; - w[9] = x[4]*w[8]; - w[10] = k[5]*w[4]*w[5]*x[5]; - w[11] = x[2]*x[2]; - w[12] = h[1]*(1.0/3.1E1); - w[13] = k[1]*(1.0/2.0); - w[14] = w[13]-1.0; - w[15] = k[0]*k[0]; - w[16] = 1.0/(x[0]*x[0]); - w[17] = k[1]*w[15]*w[16]; - w[18] = w[3]+w[17]; - w[19] = x[3]*w[18]; - w[20] = w[9]+w[10]+w[19]; - w[21] = 1.0/w[20]; - w[22] = w[0]*x[0]*w[14]*w[21]*(2.0/3.1E1); - w[23] = 1.0/(k[0]*k[0]); - w[24] = 1.0/k[1]; - w[25] = x[0]*x[0]; - w[26] = w[9]+w[10]; - w[27] = 1.0/w[26]; - w[28] = k[3]*(1.0/2.0); - w[29] = k[1]+w[28]-1.0; - w[30] = x[1]*w[6]*w[27]*w[29]*(2.0/1.63E2); - w[31] = 1.0/k[4]; - w[32] = 1.0/(k[4]*k[4]*k[4]); - w[33] = 1.0/k[5]; - w[34] = 1.0/x[5]; - w[35] = k[5]*(1.0/2.0); - w[36] = k[1]+k[3]+w[35]-1.0; - w[37] = x[2]*w[11]*w[32]*w[33]*w[34]*w[36]*(1.0/6.1E1); -} - -} // namespace model_model_calvetti - -} // namespace amici - diff --git a/models/model_calvetti/wrapfunctions.cpp b/models/model_calvetti/wrapfunctions.cpp deleted file mode 100644 index 1764657087..0000000000 --- a/models/model_calvetti/wrapfunctions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "amici/model.h" -#include "wrapfunctions.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel() { - return std::unique_ptr( - new amici::model_model_calvetti::Model_model_calvetti()); -} - -} // namespace generic_model - -} // namespace amici - diff --git a/models/model_calvetti/wrapfunctions.h b/models/model_calvetti/wrapfunctions.h deleted file mode 100644 index c7bbb2504d..0000000000 --- a/models/model_calvetti/wrapfunctions.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _amici_wrapfunctions_h -#define _amici_wrapfunctions_h - -#include "model_calvetti.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel(); - -} // namespace generic_model - -} // namespace amici - -#endif /* _amici_wrapfunctions_h */ diff --git a/models/model_calvetti/x0.cpp b/models/model_calvetti/x0.cpp deleted file mode 100644 index b021d43f2b..0000000000 --- a/models/model_calvetti/x0.cpp +++ /dev/null @@ -1,25 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_calvetti{ - -void x0_model_calvetti(realtype *x0, const realtype t, const realtype *p, const realtype *k) { - x0[0] = k[0]; - x0[1] = k[2]; - x0[2] = k[4]; - x0[3] = 1.0; - x0[4] = 1.0; - x0[5] = 1.0; -} - -} // namespace model_model_calvetti - -} // namespace amici - diff --git a/models/model_calvetti/xdot.cpp b/models/model_calvetti/xdot.cpp deleted file mode 100644 index 1ac7f42e9c..0000000000 --- a/models/model_calvetti/xdot.cpp +++ /dev/null @@ -1,25 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_calvetti{ - -void xdot_model_calvetti(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *dx, const realtype *w) { - xdot[0] = h[0]*(-1.0/3.1E1)+w[12]+w[22]-dx[0]-w[0]*x[0]*(1.0E2/8.99E2)+1.29E2/8.99E2; - xdot[1] = w[30]-dx[1]-x[1]*w[6]*1.202935161794779E-2+1.816432094310117E-2; - xdot[2] = w[37]-dx[2]-x[2]*w[31]*8.196729508204918E-9+8.196729508204918E-3; - xdot[3] = h[0]*(1.0/3.1E1)-x[3]-w[12]-w[22]+w[0]*x[0]*(1.0E2/8.99E2)+w[23]*w[24]*w[25]*2.0-w[20]*w[23]*w[24]*w[25]-1.29E2/8.99E2; - xdot[4] = x[3]-x[4]-w[30]+x[1]*w[6]*1.202935161794779E-2-1.816432094310117E-2; - xdot[5] = x[4]-x[5]-w[37]+x[2]*w[31]*8.196729508204918E-9-8.196729508204918E-3; -} - -} // namespace model_model_calvetti - -} // namespace amici - diff --git a/models/model_calvetti/y.cpp b/models/model_calvetti/y.cpp deleted file mode 100644 index af549ee252..0000000000 --- a/models/model_calvetti/y.cpp +++ /dev/null @@ -1,25 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_calvetti{ - -void y_model_calvetti(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - y[0] = x[0]; - y[1] = x[1]; - y[2] = x[2]; - y[3] = (1.0/(k[0]*k[0])*(x[0]*x[0])*2.0)/k[1]-(1.0/(k[0]*k[0])*(x[0]*x[0])*(x[3]*((k[0]*k[0])*k[1]*1.0/(x[0]*x[0])+(k[2]*k[2])*k[3]*1.0/(x[1]*x[1]))+x[4]*((k[2]*k[2])*k[3]*1.0/(x[1]*x[1])+(k[4]*k[4])*k[5]*1.0/(x[2]*x[2]))+(k[4]*k[4])*k[5]*1.0/(x[2]*x[2])*x[5]))/k[1]; - y[4] = x[3]; - y[5] = x[4]; -} - -} // namespace model_model_calvetti - -} // namespace amici - diff --git a/models/model_dirac/CMakeLists.txt b/models/model_dirac/CMakeLists.txt deleted file mode 100644 index 8c07511c40..0000000000 --- a/models/model_dirac/CMakeLists.txt +++ /dev/null @@ -1,118 +0,0 @@ -# Build AMICI model -cmake_minimum_required(VERSION 3.22) -cmake_policy(VERSION 3.22...3.30) - -project(model_dirac) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -include(CheckCXXCompilerFlag) -set(MY_CXX_FLAGS -Wall -Wno-unused-function -Wno-unused-variable) -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - list(APPEND MY_CXX_FLAGS -Wno-unused-but-set-variable) -endif() -foreach(flag ${MY_CXX_FLAGS}) - unset(CUR_FLAG_SUPPORTED CACHE) - check_cxx_compiler_flag(${flag} CUR_FLAG_SUPPORTED) - if(${CUR_FLAG_SUPPORTED}) - string(APPEND CMAKE_CXX_FLAGS " ${flag}") - endif() -endforeach() - -if(DEFINED ENV{AMICI_CXXFLAGS}) - message(STATUS "Appending flags from AMICI_CXXFLAGS: $ENV{AMICI_CXXFLAGS}") - add_compile_options("$ENV{AMICI_CXXFLAGS}") -endif() -if(DEFINED ENV{AMICI_LDFLAGS}) - message(STATUS "Appending flags from AMICI_LDFLAGS: $ENV{AMICI_LDFLAGS}") - link_libraries("$ENV{AMICI_LDFLAGS}") -endif() - -find_package(Amici REQUIRED HINTS - ${CMAKE_CURRENT_LIST_DIR}/../../build) -message(STATUS "Found AMICI ${Amici_DIR}") -set_target_properties(Upstream::amici PROPERTIES - MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo;Release; - MAP_IMPORTED_CONFIG_RELEASE Release - MAP_IMPORTED_CONFIG_DEBUG Debug;RelWithDebInfo;) - -# Debug build? -if("$ENV{ENABLE_AMICI_DEBUGGING}" OR "$ENV{ENABLE_GCOV_COVERAGE}") - add_compile_options(-UNDEBUG) - if(MSVC) - add_compile_options(-DEBUG) - else() - add_compile_options(-O0 -g) - endif() -endif() - -# coverage options -if($ENV{ENABLE_GCOV_COVERAGE}) - string(APPEND CMAKE_CXX_FLAGS_DEBUG " --coverage") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " --coverage") -endif() - -set(MODEL_DIR ${CMAKE_CURRENT_LIST_DIR}) - -set(SRC_LIST_LIB ${MODEL_DIR}/JSparse.cpp -${MODEL_DIR}/Jy.cpp -${MODEL_DIR}/dJydsigma.cpp -${MODEL_DIR}/dJydy.cpp -${MODEL_DIR}/deltasx.cpp -${MODEL_DIR}/deltax.cpp -${MODEL_DIR}/dxdotdp.cpp -${MODEL_DIR}/dydx.cpp -${MODEL_DIR}/root.cpp -${MODEL_DIR}/sigmay.cpp -${MODEL_DIR}/stau.cpp -${MODEL_DIR}/xdot.cpp -${MODEL_DIR}/y.cpp - ${MODEL_DIR}/wrapfunctions.cpp) - -add_library(${PROJECT_NAME} ${SRC_LIST_LIB}) -add_library(model ALIAS ${PROJECT_NAME}) - -# Some special functions require boost -# -# TODO: set some flag during code generation whether the given model requires -# boost. for now, try to find it, add include directories and link against it. -# let the compiler/linker error if it is required but not found -find_package(Boost) - -target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") - -target_link_libraries( - ${PROJECT_NAME} - PUBLIC Upstream::amici - PRIVATE $<$:Boost::boost>) - -if(NOT "${AMICI_PYTHON_BUILD_EXT_ONLY}") - set(SRC_LIST_EXE main.cpp) - add_executable(simulate_${PROJECT_NAME} ${SRC_LIST_EXE}) - target_link_libraries(simulate_${PROJECT_NAME} ${PROJECT_NAME}) -endif() - -# SWIG -option(ENABLE_SWIG "Build swig/python library?" ON) -if(ENABLE_SWIG) - add_subdirectory(swig) -endif() - -# -include(GNUInstallDirs) -install( - TARGETS ${PROJECT_NAME} - EXPORT ${PROJECT_NAME}Targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - INCLUDES - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -export( - EXPORT ${PROJECT_NAME}Targets - FILE ${PROJECT_NAME}Config.cmake - NAMESPACE Upstream::) -# diff --git a/models/model_dirac/JSparse.cpp b/models/model_dirac/JSparse.cpp deleted file mode 100644 index 7671ba143f..0000000000 --- a/models/model_dirac/JSparse.cpp +++ /dev/null @@ -1,29 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -#include //SUNMatrixContent_Sparse definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_dirac{ - -void JSparse_model_dirac(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - JSparse->indexvals[0] = 0; - JSparse->indexvals[1] = 1; - JSparse->indexvals[2] = 1; - JSparse->indexptrs[0] = 0; - JSparse->indexptrs[1] = 2; - JSparse->indexptrs[2] = 3; - JSparse->data[0] = -p[0]; - JSparse->data[1] = p[2]; - JSparse->data[2] = -p[3]; -} - -} // namespace model_model_dirac - -} // namespace amici - diff --git a/models/model_dirac/Jy.cpp b/models/model_dirac/Jy.cpp deleted file mode 100644 index 228ea6bb2e..0000000000 --- a/models/model_dirac/Jy.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_dirac{ - -void Jy_model_dirac(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - nllh[0] = amici::log((sigmay[0]*sigmay[0])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*5.0E-1; - break; -} -} - -} // namespace model_model_dirac - -} // namespace amici - diff --git a/models/model_dirac/dJydsigma.cpp b/models/model_dirac/dJydsigma.cpp deleted file mode 100644 index 540bcc832e..0000000000 --- a/models/model_dirac/dJydsigma.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_dirac{ - -void dJydsigma_model_dirac(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydsigma[0] = 1.0/(sigmay[0]*sigmay[0]*sigmay[0])*pow(my[0]-y[0]*1.0,2.0)*-1.0+1.0/sigmay[0]; - break; -} -} - -} // namespace model_model_dirac - -} // namespace amici - diff --git a/models/model_dirac/dJydy.cpp b/models/model_dirac/dJydy.cpp deleted file mode 100644 index 86ab371f73..0000000000 --- a/models/model_dirac/dJydy.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_dirac{ - -void dJydy_model_dirac(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydy[0] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_dirac - -} // namespace amici - diff --git a/models/model_dirac/deltasx.cpp b/models/model_dirac/deltasx.cpp deleted file mode 100644 index ebb0be64cb..0000000000 --- a/models/model_dirac/deltasx.cpp +++ /dev/null @@ -1,93 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_dirac{ - -void deltasx_model_dirac(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1]); - - } break; - - case 1: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1]); - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1]); - - } break; - - case 1: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1]); - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1]); - - } break; - - case 1: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1]); - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1]); - - } break; - - case 1: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1]); - - } break; - - } - - } break; - -} -} - -} // namespace model_model_dirac - -} // namespace amici - diff --git a/models/model_dirac/deltax.cpp b/models/model_dirac/deltax.cpp deleted file mode 100644 index 5deddc7e4c..0000000000 --- a/models/model_dirac/deltax.cpp +++ /dev/null @@ -1,31 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_dirac{ - -void deltax_model_dirac(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old) { - switch(ie) { - case 0: { - deltax[0] = 1.0; - - } break; - - case 1: { - deltax[0] = 1.0; - - } break; - - } -} - -} // namespace model_model_dirac - -} // namespace amici - diff --git a/models/model_dirac/dxdotdp.cpp b/models/model_dirac/dxdotdp.cpp deleted file mode 100644 index fb3a1380a1..0000000000 --- a/models/model_dirac/dxdotdp.cpp +++ /dev/null @@ -1,36 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_dirac{ - -void dxdotdp_model_dirac(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) { -switch (ip) { - case 0: { - dxdotdp[0] = -x[0]; - - } break; - - case 2: { - dxdotdp[1] = x[0]; - - } break; - - case 3: { - dxdotdp[1] = -x[1]; - - } break; - -} -} - -} // namespace model_model_dirac - -} // namespace amici - diff --git a/models/model_dirac/dydx.cpp b/models/model_dirac/dydx.cpp deleted file mode 100644 index 18a73e367a..0000000000 --- a/models/model_dirac/dydx.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_dirac{ - -void dydx_model_dirac(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - dydx[0+1*1] = 1.0; -} - -} // namespace model_model_dirac - -} // namespace amici - diff --git a/models/model_dirac/main.cpp b/models/model_dirac/main.cpp deleted file mode 100644 index ecdff85a46..0000000000 --- a/models/model_dirac/main.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#include - -#include "wrapfunctions.h" /* model-provided functions */ -#include /* AMICI base functions */ - -template -std::ostream& operator<<(std::ostream& os, std::vector const& v) { - os << "["; - for (typename std::vector::const_iterator ii = v.begin(); ii != v.end(); - ++ii) { - os << " " << *ii; - } - os << "]"; - return os; -} - -/* - * This is a scaffold for a stand-alone AMICI simulation executable - * demonstrating the basic use of the AMICI C++ API. - */ - -int main() { - std::cout << "********************************" << std::endl; - std::cout << "** Running forward simulation **" << std::endl; - std::cout << "********************************" << std::endl << std::endl; - - // Create a model instance - auto model = amici::generic_model::getModel(); - - // Set desired output timepoints - model->setTimepoints({0.0, 1.0, 10.0, 100.0, 1000.0}); - - // Create a solver instance - auto solver = model->getSolver(); - - // Optionally set integration tolerance - solver->setAbsoluteTolerance(1e-16); - solver->setRelativeTolerance(1e-8); - - // Run the simulation using default parameters set during model import - // (can be changed using model->setParameters() or model->setParameterBy*()) - auto rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print observable time course - auto observable_ids = model->getObservableIds(); - std::cout << "Simulated observables for timepoints " << rdata->ts << "\n\n"; - for (int i_observable = 0; i_observable < rdata->ny; ++i_observable) { - std::cout << observable_ids[i_observable] << ":\n\t"; - for (int i_time = 0; i_time < rdata->nt; ++i_time) { - // rdata->y is a flat 2D array in row-major ordering - std::cout << rdata->y[i_time * rdata->ny + i_observable] << " "; - } - std::cout << std::endl << std::endl; - } - - std::cout << std::endl; - std::cout << "**********************************" << std::endl; - std::cout << "** Forward sensitivity analysis **" << std::endl; - std::cout << "**********************************" << std::endl << std::endl; - - // Enable first-order sensitivity analysis - solver->setSensitivityOrder(amici::SensitivityOrder::first); - // Use forward sensitivities - solver->setSensitivityMethod(amici::SensitivityMethod::forward); - - // Run the simulation - rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print state sensitivities sx... - // ... for the first timepoint... - int i_time = 0; - // ... with respect to the first parameter - int i_nplist = 0; - - // get identifiers from model - auto state_ids = model->getStateIds(); - auto parameter_ids = model->getParameterIds(); - - std::cout << "State sensitivities for timepoint " << rdata->ts[i_time] - << std::endl; // nt x nplist x nx - for (int i_state = 0; i_state < rdata->nx; ++i_state) { - std::cout << "\td(" << state_ids[i_state] << ")/d(" - << parameter_ids[model->plist(i_nplist)] << ") = "; - - // rdata->sx is a flat 3D array in row-major ordering - std::cout << rdata->sx - [i_time * rdata->nplist * rdata->nx - + i_nplist * rdata->nx + i_state]; - std::cout << std::endl; - } - - return 0; -} diff --git a/models/model_dirac/model_dirac.h b/models/model_dirac/model_dirac.h deleted file mode 100644 index a8803237ca..0000000000 --- a/models/model_dirac/model_dirac.h +++ /dev/null @@ -1,210 +0,0 @@ -#ifndef _amici_model_dirac_h -#define _amici_model_dirac_h -/* Generated by amiwrap (R2017b) d69c026f8f8a89a13f1fa1307548f2b8f7045fe1 */ -#include -#include -#include "amici/defines.h" -#include //SUNMatrixContent_Sparse definition -#include "amici/solver_cvodes.h" -#include "amici/model_ode.h" - -namespace amici { - -class Solver; - -namespace model_model_dirac{ - -extern void JSparse_model_dirac(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void Jy_model_dirac(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydsigma_model_dirac(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydy_model_dirac(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void deltasx_model_dirac(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl); -extern void deltax_model_dirac(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old); -extern void dxdotdp_model_dirac(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp); -extern void dydx_model_dirac(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void root_model_dirac(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl); -extern void sigmay_model_dirac(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y); -extern void stau_model_dirac(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie); -extern void xdot_model_dirac(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); -extern void y_model_dirac(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); - -class Model_model_dirac : public amici::Model_ODE { -public: - Model_model_dirac() - : amici::Model_ODE( - amici::ModelDimensions( - 2, - 2, - 2, - 2, - 0, - 4, - 0, - 1, - 1, - 0, - 0, - 2, - 2, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - {}, - 0, - 0, - 0, - 3, - 0, - 1 - ), - amici::SimulationParameters( - std::vector(0, 1.0), - std::vector(4, 1.0) - ), - amici::SecondOrderMode::none, - std::vector{0, 0}, - std::vector{}) - {}; - - amici::Model* clone() const override { return new Model_model_dirac(*this); }; - - std::string getAmiciCommit() const override { return "d69c026f8f8a89a13f1fa1307548f2b8f7045fe1"; }; - - void fJSparse(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - JSparse_model_dirac(JSparse, t, x, p, k, h, w, dwdx); - } - - void fJrz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fJy(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - Jy_model_dirac(nllh, iy, p, k, y, sigmay, my); - } - - void fJz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdJrzdsigma(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fdJrzdz(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fdJydsigma(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydsigma_model_dirac(dJydsigma, iy, p, k, y, sigmay, my); - } - - void fdJydy(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydy_model_dirac(dJydy, iy, p, k, y, sigmay, my); - } - - void fdJzdsigma(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdJzdz(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdeltaqB(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdeltasx(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) override { - deltasx_model_dirac(deltasx, t, x, p, k, h, w, ip, ie, xdot, xdot_old, sx, stau, tcl); - } - - void fdeltax(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old) override { - deltax_model_dirac(deltax, t, x, p, k, h, ie, xdot, xdot_old); - } - - void fdeltaxB(double *deltaxB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdrzdp(double *drzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdrzdx(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void fdsigmaydp(double *dsigmaydp, const realtype t, const realtype *p, const realtype *k, const realtype *y, const int ip) override { - } - - void fdsigmazdp(double *dsigmazdp, const realtype t, const realtype *p, const realtype *k, const int ip) override { - } - - void fdwdp(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static) override { - } - - void fdwdx(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) override { - } - - void fdxdotdp(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - dxdotdp_model_dirac(dxdotdp, t, x, p, k, h, ip, w, dwdp); - } - - void fdydp(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - } - - void fdydx(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - dydx_model_dirac(dydx, t, x, p, k, h, w, dwdx); - } - - void fdzdp(double *dzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdzdx(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void froot(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl) override { - root_model_dirac(root, t, x, p, k, h, tcl); - } - - void frz(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void fsigmay(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) override { - sigmay_model_dirac(sigmay, t, p, k, y); - } - - void fsigmaz(double *sigmaz, const realtype t, const realtype *p, const realtype *k) override { - } - - void fsrz(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - } - - void fstau(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) override { - stau_model_dirac(stau, t, x, p, k, h, tcl, sx, ip, ie); - } - - void fsx0(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) override { - } - - void fsz(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - } - - void fw(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) override { - } - - void fx0(realtype *x0, const realtype t, const realtype *p, const realtype *k) override { - } - - void fxdot(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - xdot_model_dirac(xdot, t, x, p, k, h, w); - } - - void fy(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - y_model_dirac(y, t, x, p, k, h, w); - } - - void fz(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - -}; - -} // namespace model_model_dirac - -} // namespace amici - -#endif /* _amici_model_dirac_h */ diff --git a/models/model_dirac/rebuild_model_dirac.m b/models/model_dirac/rebuild_model_dirac.m deleted file mode 100644 index 66aa6f62d9..0000000000 --- a/models/model_dirac/rebuild_model_dirac.m +++ /dev/null @@ -1,5 +0,0 @@ -function rebuild_model_dirac() -modelName = 'model_dirac'; -amimodel.compileAndLinkModel(modelName, '', [], [], [], []); -amimodel.generateMatlabWrapper(2, 1, 4, 0, 0, 0, [], ['simulate_' modelName '.m'], 'model_dirac', 'log10', 1, 1); -end diff --git a/models/model_dirac/root.cpp b/models/model_dirac/root.cpp deleted file mode 100644 index ce1c5f4364..0000000000 --- a/models/model_dirac/root.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_dirac{ - -void root_model_dirac(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl) { - root[0] = -t+p[1]; - root[1] = t-p[1]; -} - -} // namespace model_model_dirac - -} // namespace amici - diff --git a/models/model_dirac/sigmay.cpp b/models/model_dirac/sigmay.cpp deleted file mode 100644 index 9b5782f79f..0000000000 --- a/models/model_dirac/sigmay.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_dirac{ - -void sigmay_model_dirac(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) { - sigmay[0] = 1.0; -} - -} // namespace model_model_dirac - -} // namespace amici - diff --git a/models/model_dirac/stau.cpp b/models/model_dirac/stau.cpp deleted file mode 100644 index 67c725fcea..0000000000 --- a/models/model_dirac/stau.cpp +++ /dev/null @@ -1,37 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_dirac{ - -void stau_model_dirac(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) { -switch (ip) { - case 1: { - switch(ie) { - case 0: { - stau[0] = 1.0; - - } break; - - case 1: { - stau[0] = 1.0; - - } break; - - } - - } break; - -} -} - -} // namespace model_model_dirac - -} // namespace amici - diff --git a/models/model_dirac/swig/CMakeLists.txt b/models/model_dirac/swig/CMakeLists.txt deleted file mode 100644 index 523571c52e..0000000000 --- a/models/model_dirac/swig/CMakeLists.txt +++ /dev/null @@ -1,73 +0,0 @@ -cmake_minimum_required(VERSION 3.15) -cmake_policy(VERSION 3.15...3.27) - -# cmake >=3.27 -if(POLICY CMP0144) - cmake_policy(SET CMP0144 NEW) -endif(POLICY CMP0144) -# cmake >= 3.30 -if(POLICY CMP0167) - cmake_policy(SET CMP0167 NEW) -endif(POLICY CMP0167) - - -if(DEFINED ENV{SWIG}) - set(SWIG_EXECUTABLE $ENV{SWIG}) -endif() - -find_package(SWIG REQUIRED) -include(${SWIG_USE_FILE}) - -if(DEFINED ENV{PYTHON_EXECUTABLE}) - set(Python3_EXECUTABLE $ENV{PYTHON_EXECUTABLE}) -endif() -# We don't need "Interpreter" here, but without that, FindPython3 will -# ignore the Python version selected via $Python3_EXECUTABLE -find_package(Python3 COMPONENTS Interpreter Development) -include_directories(${Python3_INCLUDE_DIRS}) - -set(SWIG_LIBRARY_NAME _${PROJECT_NAME}) -set(CMAKE_SWIG_FLAGS "") -set_source_files_properties(${PROJECT_NAME}.i PROPERTIES CPLUSPLUS ON) - -# swig does not use INTERFACE_INCLUDE_DIRS of linked libraries, so add manually -get_target_property(AMICI_INCLUDE_DIRS Upstream::amici INTERFACE_INCLUDE_DIRECTORIES) -include_directories(${AMICI_INCLUDE_DIRS} .. ${AMICI_INCLUDE_DIRS}/../swig) - -swig_add_library(${SWIG_LIBRARY_NAME} - TYPE MODULE - LANGUAGE python - SOURCES ${PROJECT_NAME}.i) - - -set_target_properties(${SWIG_LIBRARY_NAME} - PROPERTIES - SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE - PREFIX "" -) - -# Python extension suffix -execute_process( - COMMAND ${Python3_EXECUTABLE} -c - "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" - OUTPUT_VARIABLE PY_EXT_SUFFIX OUTPUT_STRIP_TRAILING_WHITESPACE) -if(NOT "${PY_EXT_SUFFIX}" STREQUAL "") - message(STATUS "Python extension suffix is ${PY_EXT_SUFFIX}") - set_target_properties(${SWIG_LIBRARY_NAME} PROPERTIES SUFFIX "${PY_EXT_SUFFIX}" ) -endif() - - -swig_link_libraries(${SWIG_LIBRARY_NAME} - ${Python3_LIBRARIES} - model) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.py - $ DESTINATION .) - -# configure module setup script -set(SETUP_PY_IN ${Amici_DIR}/model_setup.template.py) -set(SETUP_PY_OUT ${CMAKE_CURRENT_BINARY_DIR}/setup.py) - -add_custom_target(install-python - DEPENDS ${SWIG_LIBRARY_NAME} - COMMAND python ${SETUP_PY_OUT} install) diff --git a/models/model_dirac/swig/model_dirac.i b/models/model_dirac/swig/model_dirac.i deleted file mode 100644 index 928a883496..0000000000 --- a/models/model_dirac/swig/model_dirac.i +++ /dev/null @@ -1,22 +0,0 @@ -%module model_dirac -%import amici.i -// Add necessary symbols to generated header - -%{ -#include "wrapfunctions.h" -#include "amici/model_ode.h" -#include "amici/model_dae.h" -using namespace amici; -%} - - -// Make model module accessible from the model -%feature("pythonappend") amici::generic_model::getModel %{ - if '.' in __name__: - import sys - val.module = sys.modules['.'.join(__name__.split('.')[:-1])] -%} - - -// Process symbols in header -%include "wrapfunctions.h" diff --git a/models/model_dirac/wrapfunctions.cpp b/models/model_dirac/wrapfunctions.cpp deleted file mode 100644 index b420ef18c9..0000000000 --- a/models/model_dirac/wrapfunctions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "amici/model.h" -#include "wrapfunctions.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel() { - return std::unique_ptr( - new amici::model_model_dirac::Model_model_dirac()); -} - -} // namespace generic_model - -} // namespace amici - diff --git a/models/model_dirac/wrapfunctions.h b/models/model_dirac/wrapfunctions.h deleted file mode 100644 index b3bc99a581..0000000000 --- a/models/model_dirac/wrapfunctions.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _amici_wrapfunctions_h -#define _amici_wrapfunctions_h - -#include "model_dirac.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel(); - -} // namespace generic_model - -} // namespace amici - -#endif /* _amici_wrapfunctions_h */ diff --git a/models/model_dirac/xdot.cpp b/models/model_dirac/xdot.cpp deleted file mode 100644 index 2a97a2d205..0000000000 --- a/models/model_dirac/xdot.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_dirac{ - -void xdot_model_dirac(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - xdot[0] = -p[0]*x[0]; - xdot[1] = p[2]*x[0]-p[3]*x[1]; -} - -} // namespace model_model_dirac - -} // namespace amici - diff --git a/models/model_dirac/y.cpp b/models/model_dirac/y.cpp deleted file mode 100644 index c24eb7723f..0000000000 --- a/models/model_dirac/y.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_dirac{ - -void y_model_dirac(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - y[0] = x[1]; -} - -} // namespace model_model_dirac - -} // namespace amici - diff --git a/models/model_events/CMakeLists.txt b/models/model_events/CMakeLists.txt deleted file mode 100644 index 706de289cf..0000000000 --- a/models/model_events/CMakeLists.txt +++ /dev/null @@ -1,132 +0,0 @@ -# Build AMICI model -cmake_minimum_required(VERSION 3.22) -cmake_policy(VERSION 3.22...3.30) - -project(model_events) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -include(CheckCXXCompilerFlag) -set(MY_CXX_FLAGS -Wall -Wno-unused-function -Wno-unused-variable) -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - list(APPEND MY_CXX_FLAGS -Wno-unused-but-set-variable) -endif() -foreach(flag ${MY_CXX_FLAGS}) - unset(CUR_FLAG_SUPPORTED CACHE) - check_cxx_compiler_flag(${flag} CUR_FLAG_SUPPORTED) - if(${CUR_FLAG_SUPPORTED}) - string(APPEND CMAKE_CXX_FLAGS " ${flag}") - endif() -endforeach() - -if(DEFINED ENV{AMICI_CXXFLAGS}) - message(STATUS "Appending flags from AMICI_CXXFLAGS: $ENV{AMICI_CXXFLAGS}") - add_compile_options("$ENV{AMICI_CXXFLAGS}") -endif() -if(DEFINED ENV{AMICI_LDFLAGS}) - message(STATUS "Appending flags from AMICI_LDFLAGS: $ENV{AMICI_LDFLAGS}") - link_libraries("$ENV{AMICI_LDFLAGS}") -endif() - -find_package(Amici REQUIRED HINTS - ${CMAKE_CURRENT_LIST_DIR}/../../build) -message(STATUS "Found AMICI ${Amici_DIR}") -set_target_properties(Upstream::amici PROPERTIES - MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo;Release; - MAP_IMPORTED_CONFIG_RELEASE Release - MAP_IMPORTED_CONFIG_DEBUG Debug;RelWithDebInfo;) - -# Debug build? -if("$ENV{ENABLE_AMICI_DEBUGGING}" OR "$ENV{ENABLE_GCOV_COVERAGE}") - add_compile_options(-UNDEBUG) - if(MSVC) - add_compile_options(-DEBUG) - else() - add_compile_options(-O0 -g) - endif() -endif() - -# coverage options -if($ENV{ENABLE_GCOV_COVERAGE}) - string(APPEND CMAKE_CXX_FLAGS_DEBUG " --coverage") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " --coverage") -endif() - -set(MODEL_DIR ${CMAKE_CURRENT_LIST_DIR}) - -set(SRC_LIST_LIB ${MODEL_DIR}/JSparse.cpp -${MODEL_DIR}/Jrz.cpp -${MODEL_DIR}/Jy.cpp -${MODEL_DIR}/Jz.cpp -${MODEL_DIR}/dJrzdsigma.cpp -${MODEL_DIR}/dJrzdz.cpp -${MODEL_DIR}/dJydsigma.cpp -${MODEL_DIR}/dJydy.cpp -${MODEL_DIR}/dJzdsigma.cpp -${MODEL_DIR}/dJzdz.cpp -${MODEL_DIR}/deltasx.cpp -${MODEL_DIR}/drzdx.cpp -${MODEL_DIR}/dxdotdp.cpp -${MODEL_DIR}/dydp.cpp -${MODEL_DIR}/dydx.cpp -${MODEL_DIR}/dzdx.cpp -${MODEL_DIR}/root.cpp -${MODEL_DIR}/rz.cpp -${MODEL_DIR}/sigmay.cpp -${MODEL_DIR}/sigmaz.cpp -${MODEL_DIR}/srz.cpp -${MODEL_DIR}/stau.cpp -${MODEL_DIR}/sz.cpp -${MODEL_DIR}/x0.cpp -${MODEL_DIR}/xdot.cpp -${MODEL_DIR}/y.cpp -${MODEL_DIR}/z.cpp - ${MODEL_DIR}/wrapfunctions.cpp) - -add_library(${PROJECT_NAME} ${SRC_LIST_LIB}) -add_library(model ALIAS ${PROJECT_NAME}) - -# Some special functions require boost -# -# TODO: set some flag during code generation whether the given model requires -# boost. for now, try to find it, add include directories and link against it. -# let the compiler/linker error if it is required but not found -find_package(Boost) - -target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") - -target_link_libraries( - ${PROJECT_NAME} - PUBLIC Upstream::amici - PRIVATE $<$:Boost::boost>) - -if(NOT "${AMICI_PYTHON_BUILD_EXT_ONLY}") - set(SRC_LIST_EXE main.cpp) - add_executable(simulate_${PROJECT_NAME} ${SRC_LIST_EXE}) - target_link_libraries(simulate_${PROJECT_NAME} ${PROJECT_NAME}) -endif() - -# SWIG -option(ENABLE_SWIG "Build swig/python library?" ON) -if(ENABLE_SWIG) - add_subdirectory(swig) -endif() - -# -include(GNUInstallDirs) -install( - TARGETS ${PROJECT_NAME} - EXPORT ${PROJECT_NAME}Targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - INCLUDES - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -export( - EXPORT ${PROJECT_NAME}Targets - FILE ${PROJECT_NAME}Config.cmake - NAMESPACE Upstream::) -# diff --git a/models/model_events/JSparse.cpp b/models/model_events/JSparse.cpp deleted file mode 100644 index cc527b9d36..0000000000 --- a/models/model_events/JSparse.cpp +++ /dev/null @@ -1,32 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -#include //SUNMatrixContent_Sparse definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void JSparse_model_events(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - JSparse->indexvals[0] = 0; - JSparse->indexvals[1] = 1; - JSparse->indexvals[2] = 1; - JSparse->indexvals[3] = 2; - JSparse->indexptrs[0] = 0; - JSparse->indexptrs[1] = 2; - JSparse->indexptrs[2] = 3; - JSparse->indexptrs[3] = 4; - JSparse->data[0] = p[0]*(h[3]-1.0); - JSparse->data[1] = p[1]*exp(t*(-1.0/1.0E1)); - JSparse->data[2] = -p[2]; - JSparse->data[3] = -1.0; -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/Jrz.cpp b/models/model_events/Jrz.cpp deleted file mode 100644 index 6f3aa7bf76..0000000000 --- a/models/model_events/Jrz.cpp +++ /dev/null @@ -1,27 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void Jrz_model_events(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) { -switch(iz){ - case 0: - nllh[0] = amici::log((sigmaz[0]*sigmaz[0])*3.141592653589793*2.0)*5.0E-1+(rz[0]*rz[0])*1.0/(sigmaz[0]*sigmaz[0])*5.0E-1; - break; - case 1: - nllh[0] = amici::log((sigmaz[1]*sigmaz[1])*3.141592653589793*2.0)*5.0E-1+(rz[1]*rz[1])*1.0/(sigmaz[1]*sigmaz[1])*5.0E-1; - break; -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/Jy.cpp b/models/model_events/Jy.cpp deleted file mode 100644 index 237bf2c0e6..0000000000 --- a/models/model_events/Jy.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void Jy_model_events(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - nllh[0] = amici::log((sigmay[0]*sigmay[0])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*5.0E-1; - break; -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/Jz.cpp b/models/model_events/Jz.cpp deleted file mode 100644 index 49e741c1be..0000000000 --- a/models/model_events/Jz.cpp +++ /dev/null @@ -1,27 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void Jz_model_events(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) { -switch(iz){ - case 0: - nllh[0] = amici::log((sigmaz[0]*sigmaz[0])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmaz[0]*sigmaz[0])*pow(mz[0]-z[0],2.0)*5.0E-1; - break; - case 1: - nllh[0] = amici::log((sigmaz[1]*sigmaz[1])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmaz[1]*sigmaz[1])*pow(mz[1]-z[1],2.0)*5.0E-1; - break; -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/dJrzdsigma.cpp b/models/model_events/dJrzdsigma.cpp deleted file mode 100644 index a0bde90ffd..0000000000 --- a/models/model_events/dJrzdsigma.cpp +++ /dev/null @@ -1,27 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void dJrzdsigma_model_events(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) { -switch(iz){ - case 0: - dJrzdsigma[0+0*1] = (rz[0]*rz[0])*1.0/(sigmaz[0]*sigmaz[0]*sigmaz[0])*-1.0+1.0/sigmaz[0]; - break; - case 1: - dJrzdsigma[0+1*1] = (rz[1]*rz[1])*1.0/(sigmaz[1]*sigmaz[1]*sigmaz[1])*-1.0+1.0/sigmaz[1]; - break; -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/dJrzdz.cpp b/models/model_events/dJrzdz.cpp deleted file mode 100644 index c82ffa207f..0000000000 --- a/models/model_events/dJrzdz.cpp +++ /dev/null @@ -1,27 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void dJrzdz_model_events(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) { -switch(iz){ - case 0: - dJrzdz[0+0*1] = rz[0]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - break; - case 1: - dJrzdz[0+1*1] = rz[1]*1.0/(sigmaz[1]*sigmaz[1])*1.0; - break; -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/dJydsigma.cpp b/models/model_events/dJydsigma.cpp deleted file mode 100644 index 9ad536a14a..0000000000 --- a/models/model_events/dJydsigma.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void dJydsigma_model_events(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydsigma[0] = 1.0/(sigmay[0]*sigmay[0]*sigmay[0])*pow(my[0]-y[0]*1.0,2.0)*-1.0+1.0/sigmay[0]; - break; -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/dJydy.cpp b/models/model_events/dJydy.cpp deleted file mode 100644 index 7fed2977b7..0000000000 --- a/models/model_events/dJydy.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void dJydy_model_events(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydy[0] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/dJzdsigma.cpp b/models/model_events/dJzdsigma.cpp deleted file mode 100644 index a45d1fbf03..0000000000 --- a/models/model_events/dJzdsigma.cpp +++ /dev/null @@ -1,27 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void dJzdsigma_model_events(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) { -switch(iz){ - case 0: - dJzdsigma[0+0*1] = 1.0/(sigmaz[0]*sigmaz[0]*sigmaz[0])*pow(mz[0]-z[0],2.0)*-1.0+1.0/sigmaz[0]; - break; - case 1: - dJzdsigma[0+1*1] = 1.0/(sigmaz[1]*sigmaz[1]*sigmaz[1])*pow(mz[1]-z[1],2.0)*-1.0+1.0/sigmaz[1]; - break; -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/dJzdz.cpp b/models/model_events/dJzdz.cpp deleted file mode 100644 index 9fb3b9a0e0..0000000000 --- a/models/model_events/dJzdz.cpp +++ /dev/null @@ -1,27 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void dJzdz_model_events(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) { -switch(iz){ - case 0: - dJzdz[0+0*1] = 1.0/(sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*-5.0E-1; - break; - case 1: - dJzdz[0+1*1] = 1.0/(sigmaz[1]*sigmaz[1])*(mz[1]*2.0-z[1]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/deltasx.cpp b/models/model_events/deltasx.cpp deleted file mode 100644 index 9dacb2ee54..0000000000 --- a/models/model_events/deltasx.cpp +++ /dev/null @@ -1,125 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void deltasx_model_events(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) { -switch (ip) { - case 0: { - switch(ie) { - case 2: { - deltasx[2] = -stau[0]*(xdot[2]-xdot_old[2]); - - } break; - - case 3: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 4: { - deltasx[2] = -stau[0]*(xdot[2]-xdot_old[2]); - - } break; - - case 5: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 2: { - deltasx[2] = -stau[0]*(xdot[2]-xdot_old[2]); - - } break; - - case 3: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 4: { - deltasx[2] = -stau[0]*(xdot[2]-xdot_old[2]); - - } break; - - case 5: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 2: { - deltasx[2] = -stau[0]*(xdot[2]-xdot_old[2]); - - } break; - - case 3: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 4: { - deltasx[2] = -stau[0]*(xdot[2]-xdot_old[2]); - - } break; - - case 5: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 2: { - deltasx[2] = -stau[0]*(xdot[2]-xdot_old[2]); - - } break; - - case 3: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 4: { - deltasx[2] = -stau[0]*(xdot[2]-xdot_old[2]); - - } break; - - case 5: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - } - - } break; - -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/drzdx.cpp b/models/model_events/drzdx.cpp deleted file mode 100644 index 850fb1e519..0000000000 --- a/models/model_events/drzdx.cpp +++ /dev/null @@ -1,23 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void drzdx_model_events(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) { - drzdx[0+1*2] = 1.0; - drzdx[0+2*2] = -1.0; - drzdx[1+0*2] = 1.0; - drzdx[1+2*2] = -1.0; -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/dxdotdp.cpp b/models/model_events/dxdotdp.cpp deleted file mode 100644 index 90e07ff62c..0000000000 --- a/models/model_events/dxdotdp.cpp +++ /dev/null @@ -1,36 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void dxdotdp_model_events(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) { -switch (ip) { - case 0: { - dxdotdp[0] = x[0]*(h[3]-1.0); - - } break; - - case 1: { - dxdotdp[1] = x[0]*exp(t*(-1.0/1.0E1)); - - } break; - - case 2: { - dxdotdp[1] = -x[1]; - - } break; - -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/dydp.cpp b/models/model_events/dydp.cpp deleted file mode 100644 index 45090f6a8a..0000000000 --- a/models/model_events/dydp.cpp +++ /dev/null @@ -1,26 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void dydp_model_events(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) { -switch (ip) { - case 3: { - dydp[0] = x[0]+x[1]+x[2]; - - } break; - -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/dydx.cpp b/models/model_events/dydx.cpp deleted file mode 100644 index 82f7a32171..0000000000 --- a/models/model_events/dydx.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void dydx_model_events(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - dydx[0+0*1] = p[3]; - dydx[0+1*1] = p[3]; - dydx[0+2*1] = p[3]; -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/dzdx.cpp b/models/model_events/dzdx.cpp deleted file mode 100644 index 7b77136900..0000000000 --- a/models/model_events/dzdx.cpp +++ /dev/null @@ -1,23 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void dzdx_model_events(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) { - dzdx[0+1*2] = -1.0/(h[2]+x[2]-p[2]*x[1]+p[1]*x[0]*exp(t*(-1.0/1.0E1))-1.0); - dzdx[0+2*2] = 1.0/(h[2]+x[2]-p[2]*x[1]+p[1]*x[0]*exp(t*(-1.0/1.0E1))-1.0); - dzdx[1+0*2] = -1.0/(h[2]+x[2]+p[0]*x[0]*(h[3]-1.0)-1.0); - dzdx[1+2*2] = 1.0/(h[2]+x[2]+p[0]*x[0]*(h[3]-1.0)-1.0); -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/main.cpp b/models/model_events/main.cpp deleted file mode 100644 index ecdff85a46..0000000000 --- a/models/model_events/main.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#include - -#include "wrapfunctions.h" /* model-provided functions */ -#include /* AMICI base functions */ - -template -std::ostream& operator<<(std::ostream& os, std::vector const& v) { - os << "["; - for (typename std::vector::const_iterator ii = v.begin(); ii != v.end(); - ++ii) { - os << " " << *ii; - } - os << "]"; - return os; -} - -/* - * This is a scaffold for a stand-alone AMICI simulation executable - * demonstrating the basic use of the AMICI C++ API. - */ - -int main() { - std::cout << "********************************" << std::endl; - std::cout << "** Running forward simulation **" << std::endl; - std::cout << "********************************" << std::endl << std::endl; - - // Create a model instance - auto model = amici::generic_model::getModel(); - - // Set desired output timepoints - model->setTimepoints({0.0, 1.0, 10.0, 100.0, 1000.0}); - - // Create a solver instance - auto solver = model->getSolver(); - - // Optionally set integration tolerance - solver->setAbsoluteTolerance(1e-16); - solver->setRelativeTolerance(1e-8); - - // Run the simulation using default parameters set during model import - // (can be changed using model->setParameters() or model->setParameterBy*()) - auto rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print observable time course - auto observable_ids = model->getObservableIds(); - std::cout << "Simulated observables for timepoints " << rdata->ts << "\n\n"; - for (int i_observable = 0; i_observable < rdata->ny; ++i_observable) { - std::cout << observable_ids[i_observable] << ":\n\t"; - for (int i_time = 0; i_time < rdata->nt; ++i_time) { - // rdata->y is a flat 2D array in row-major ordering - std::cout << rdata->y[i_time * rdata->ny + i_observable] << " "; - } - std::cout << std::endl << std::endl; - } - - std::cout << std::endl; - std::cout << "**********************************" << std::endl; - std::cout << "** Forward sensitivity analysis **" << std::endl; - std::cout << "**********************************" << std::endl << std::endl; - - // Enable first-order sensitivity analysis - solver->setSensitivityOrder(amici::SensitivityOrder::first); - // Use forward sensitivities - solver->setSensitivityMethod(amici::SensitivityMethod::forward); - - // Run the simulation - rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print state sensitivities sx... - // ... for the first timepoint... - int i_time = 0; - // ... with respect to the first parameter - int i_nplist = 0; - - // get identifiers from model - auto state_ids = model->getStateIds(); - auto parameter_ids = model->getParameterIds(); - - std::cout << "State sensitivities for timepoint " << rdata->ts[i_time] - << std::endl; // nt x nplist x nx - for (int i_state = 0; i_state < rdata->nx; ++i_state) { - std::cout << "\td(" << state_ids[i_state] << ")/d(" - << parameter_ids[model->plist(i_nplist)] << ") = "; - - // rdata->sx is a flat 3D array in row-major ordering - std::cout << rdata->sx - [i_time * rdata->nplist * rdata->nx - + i_nplist * rdata->nx + i_state]; - std::cout << std::endl; - } - - return 0; -} diff --git a/models/model_events/model_events.h b/models/model_events/model_events.h deleted file mode 100644 index bf68b4529a..0000000000 --- a/models/model_events/model_events.h +++ /dev/null @@ -1,238 +0,0 @@ -#ifndef _amici_model_events_h -#define _amici_model_events_h -/* Generated by amiwrap (R2017b) d69c026f8f8a89a13f1fa1307548f2b8f7045fe1 */ -#include -#include -#include "amici/defines.h" -#include //SUNMatrixContent_Sparse definition -#include "amici/solver_cvodes.h" -#include "amici/model_ode.h" - -namespace amici { - -class Solver; - -namespace model_model_events{ - -extern void JSparse_model_events(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void Jrz_model_events(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz); -extern void Jy_model_events(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void Jz_model_events(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz); -extern void dJrzdsigma_model_events(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz); -extern void dJrzdz_model_events(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz); -extern void dJydsigma_model_events(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydy_model_events(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJzdsigma_model_events(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz); -extern void dJzdz_model_events(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz); -extern void deltasx_model_events(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl); -extern void drzdx_model_events(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h); -extern void dxdotdp_model_events(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp); -extern void dydp_model_events(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp); -extern void dydx_model_events(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void dzdx_model_events(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h); -extern void root_model_events(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl); -extern void rz_model_events(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h); -extern void sigmay_model_events(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y); -extern void sigmaz_model_events(double *sigmaz, const realtype t, const realtype *p, const realtype *k); -extern void srz_model_events(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip); -extern void stau_model_events(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie); -extern void sz_model_events(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip); -extern void x0_model_events(realtype *x0, const realtype t, const realtype *p, const realtype *k); -extern void xdot_model_events(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); -extern void y_model_events(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); -extern void z_model_events(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h); - -class Model_model_events : public amici::Model_ODE { -public: - Model_model_events() - : amici::Model_ODE( - amici::ModelDimensions( - 3, - 3, - 3, - 3, - 0, - 4, - 4, - 1, - 1, - 2, - 2, - 6, - 6, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - {}, - 0, - 0, - 0, - 4, - 0, - 1 - ), - amici::SimulationParameters( - std::vector(4, 1.0), - std::vector(4, 1.0) - ), - amici::SecondOrderMode::none, - std::vector{0, 0, 0}, - std::vector{1, 2}) - {}; - - amici::Model* clone() const override { return new Model_model_events(*this); }; - - std::string getAmiciCommit() const override { return "d69c026f8f8a89a13f1fa1307548f2b8f7045fe1"; }; - - void fJSparse(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - JSparse_model_events(JSparse, t, x, p, k, h, w, dwdx); - } - - void fJrz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - Jrz_model_events(nllh, iz, p, k, rz, sigmaz); - } - - void fJy(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - Jy_model_events(nllh, iy, p, k, y, sigmay, my); - } - - void fJz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - Jz_model_events(nllh, iz, p, k, z, sigmaz, mz); - } - - void fdJrzdsigma(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - dJrzdsigma_model_events(dJrzdsigma, iz, p, k, rz, sigmaz); - } - - void fdJrzdz(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - dJrzdz_model_events(dJrzdz, iz, p, k, rz, sigmaz); - } - - void fdJydsigma(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydsigma_model_events(dJydsigma, iy, p, k, y, sigmay, my); - } - - void fdJydy(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydy_model_events(dJydy, iy, p, k, y, sigmay, my); - } - - void fdJzdsigma(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - dJzdsigma_model_events(dJzdsigma, iz, p, k, z, sigmaz, mz); - } - - void fdJzdz(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - dJzdz_model_events(dJzdz, iz, p, k, z, sigmaz, mz); - } - - void fdeltaqB(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdeltasx(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) override { - deltasx_model_events(deltasx, t, x, p, k, h, w, ip, ie, xdot, xdot_old, sx, stau, tcl); - } - - void fdeltax(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old) override { - } - - void fdeltaxB(double *deltaxB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdrzdp(double *drzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdrzdx(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - drzdx_model_events(drzdx, ie, t, x, p, k, h); - } - - void fdsigmaydp(double *dsigmaydp, const realtype t, const realtype *p, const realtype *k, const realtype *y, const int ip) override { - } - - void fdsigmazdp(double *dsigmazdp, const realtype t, const realtype *p, const realtype *k, const int ip) override { - } - - void fdwdp(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static) override { - } - - void fdwdx(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) override { - } - - void fdxdotdp(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - dxdotdp_model_events(dxdotdp, t, x, p, k, h, ip, w, dwdp); - } - - void fdydp(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - dydp_model_events(dydp, t, x, p, k, h, ip, w, dwdp); - } - - void fdydx(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - dydx_model_events(dydx, t, x, p, k, h, w, dwdx); - } - - void fdzdp(double *dzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdzdx(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - dzdx_model_events(dzdx, ie, t, x, p, k, h); - } - - void froot(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl) override { - root_model_events(root, t, x, p, k, h, tcl); - } - - void frz(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - rz_model_events(rz, ie, t, x, p, k, h); - } - - void fsigmay(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) override { - sigmay_model_events(sigmay, t, p, k, y); - } - - void fsigmaz(double *sigmaz, const realtype t, const realtype *p, const realtype *k) override { - sigmaz_model_events(sigmaz, t, p, k); - } - - void fsrz(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - srz_model_events(srz, ie, t, x, p, k, h, sx, ip); - } - - void fstau(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) override { - stau_model_events(stau, t, x, p, k, h, tcl, sx, ip, ie); - } - - void fsx0(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) override { - } - - void fsz(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - sz_model_events(sz, ie, t, x, p, k, h, sx, ip); - } - - void fw(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) override { - } - - void fx0(realtype *x0, const realtype t, const realtype *p, const realtype *k) override { - x0_model_events(x0, t, p, k); - } - - void fxdot(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - xdot_model_events(xdot, t, x, p, k, h, w); - } - - void fy(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - y_model_events(y, t, x, p, k, h, w); - } - - void fz(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - z_model_events(z, ie, t, x, p, k, h); - } - -}; - -} // namespace model_model_events - -} // namespace amici - -#endif /* _amici_model_events_h */ diff --git a/models/model_events/rebuild_model_events.m b/models/model_events/rebuild_model_events.m deleted file mode 100644 index bbb591694d..0000000000 --- a/models/model_events/rebuild_model_events.m +++ /dev/null @@ -1,5 +0,0 @@ -function rebuild_model_events() -modelName = 'model_events'; -amimodel.compileAndLinkModel(modelName, '', [], [], [], []); -amimodel.generateMatlabWrapper(3, 1, 4, 4, 2, 0, [], ['simulate_' modelName '.m'], 'model_events', 'log10', 1, 1); -end diff --git a/models/model_events/root.cpp b/models/model_events/root.cpp deleted file mode 100644 index 9207a8a25f..0000000000 --- a/models/model_events/root.cpp +++ /dev/null @@ -1,25 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void root_model_events(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl) { - root[0] = x[1]-x[2]; - root[1] = x[0]-x[2]; - root[2] = -t+4.0; - root[3] = -t+p[3]; - root[4] = t-4.0; - root[5] = t-p[3]; -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/rz.cpp b/models/model_events/rz.cpp deleted file mode 100644 index 357f7c5a34..0000000000 --- a/models/model_events/rz.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void rz_model_events(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) { - switch(ie) { - case 0: { - rz[0] = x[1]-x[2]; - - } break; - - case 1: { - rz[1] = x[0]-x[2]; - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - case 4: { - - } break; - - case 5: { - - } break; - - } -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/sigmay.cpp b/models/model_events/sigmay.cpp deleted file mode 100644 index 87bd4ffb30..0000000000 --- a/models/model_events/sigmay.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void sigmay_model_events(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) { - sigmay[0] = 1.0; -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/sigmaz.cpp b/models/model_events/sigmaz.cpp deleted file mode 100644 index 340598b2f6..0000000000 --- a/models/model_events/sigmaz.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void sigmaz_model_events(double *sigmaz, const realtype t, const realtype *p, const realtype *k) { - sigmaz[0] = 1.0; - sigmaz[1] = 1.0; -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/srz.cpp b/models/model_events/srz.cpp deleted file mode 100644 index 392d1ba15c..0000000000 --- a/models/model_events/srz.cpp +++ /dev/null @@ -1,149 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void srz_model_events(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - srz[0] = sx[1]-sx[2]; - - } break; - - case 1: { - srz[1] = sx[0]-sx[2]; - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - case 4: { - - } break; - - case 5: { - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - srz[0] = sx[1]-sx[2]; - - } break; - - case 1: { - srz[1] = sx[0]-sx[2]; - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - case 4: { - - } break; - - case 5: { - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - srz[0] = sx[1]-sx[2]; - - } break; - - case 1: { - srz[1] = sx[0]-sx[2]; - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - case 4: { - - } break; - - case 5: { - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - srz[0] = sx[1]-sx[2]; - - } break; - - case 1: { - srz[1] = sx[0]-sx[2]; - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - case 4: { - - } break; - - case 5: { - - } break; - - } - - } break; - -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/stau.cpp b/models/model_events/stau.cpp deleted file mode 100644 index 6a192189e1..0000000000 --- a/models/model_events/stau.cpp +++ /dev/null @@ -1,151 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void stau_model_events(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - stau[0] = -(sx[1]-sx[2])/(h[2]+x[2]-p[2]*x[1]+p[1]*x[0]*exp(t*(-1.0/1.0E1))-1.0); - - } break; - - case 1: { - stau[0] = -(sx[0]-sx[2])/(h[2]+x[2]+p[0]*x[0]*(h[3]-1.0)-1.0); - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - case 4: { - - } break; - - case 5: { - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - stau[0] = -(sx[1]-sx[2])/(h[2]+x[2]-p[2]*x[1]+p[1]*x[0]*exp(t*(-1.0/1.0E1))-1.0); - - } break; - - case 1: { - stau[0] = -(sx[0]-sx[2])/(h[2]+x[2]+p[0]*x[0]*(h[3]-1.0)-1.0); - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - case 4: { - - } break; - - case 5: { - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - stau[0] = -(sx[1]-sx[2])/(h[2]+x[2]-p[2]*x[1]+p[1]*x[0]*exp(t*(-1.0/1.0E1))-1.0); - - } break; - - case 1: { - stau[0] = -(sx[0]-sx[2])/(h[2]+x[2]+p[0]*x[0]*(h[3]-1.0)-1.0); - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - case 4: { - - } break; - - case 5: { - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - stau[0] = -(sx[1]-sx[2])/(h[2]+x[2]-p[2]*x[1]+p[1]*x[0]*exp(t*(-1.0/1.0E1))-1.0); - - } break; - - case 1: { - stau[0] = -(sx[0]-sx[2])/(h[2]+x[2]+p[0]*x[0]*(h[3]-1.0)-1.0); - - } break; - - case 2: { - - } break; - - case 3: { - stau[0] = 1.0; - - } break; - - case 4: { - - } break; - - case 5: { - stau[0] = 1.0; - - } break; - - } - - } break; - -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/swig/CMakeLists.txt b/models/model_events/swig/CMakeLists.txt deleted file mode 100644 index 523571c52e..0000000000 --- a/models/model_events/swig/CMakeLists.txt +++ /dev/null @@ -1,73 +0,0 @@ -cmake_minimum_required(VERSION 3.15) -cmake_policy(VERSION 3.15...3.27) - -# cmake >=3.27 -if(POLICY CMP0144) - cmake_policy(SET CMP0144 NEW) -endif(POLICY CMP0144) -# cmake >= 3.30 -if(POLICY CMP0167) - cmake_policy(SET CMP0167 NEW) -endif(POLICY CMP0167) - - -if(DEFINED ENV{SWIG}) - set(SWIG_EXECUTABLE $ENV{SWIG}) -endif() - -find_package(SWIG REQUIRED) -include(${SWIG_USE_FILE}) - -if(DEFINED ENV{PYTHON_EXECUTABLE}) - set(Python3_EXECUTABLE $ENV{PYTHON_EXECUTABLE}) -endif() -# We don't need "Interpreter" here, but without that, FindPython3 will -# ignore the Python version selected via $Python3_EXECUTABLE -find_package(Python3 COMPONENTS Interpreter Development) -include_directories(${Python3_INCLUDE_DIRS}) - -set(SWIG_LIBRARY_NAME _${PROJECT_NAME}) -set(CMAKE_SWIG_FLAGS "") -set_source_files_properties(${PROJECT_NAME}.i PROPERTIES CPLUSPLUS ON) - -# swig does not use INTERFACE_INCLUDE_DIRS of linked libraries, so add manually -get_target_property(AMICI_INCLUDE_DIRS Upstream::amici INTERFACE_INCLUDE_DIRECTORIES) -include_directories(${AMICI_INCLUDE_DIRS} .. ${AMICI_INCLUDE_DIRS}/../swig) - -swig_add_library(${SWIG_LIBRARY_NAME} - TYPE MODULE - LANGUAGE python - SOURCES ${PROJECT_NAME}.i) - - -set_target_properties(${SWIG_LIBRARY_NAME} - PROPERTIES - SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE - PREFIX "" -) - -# Python extension suffix -execute_process( - COMMAND ${Python3_EXECUTABLE} -c - "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" - OUTPUT_VARIABLE PY_EXT_SUFFIX OUTPUT_STRIP_TRAILING_WHITESPACE) -if(NOT "${PY_EXT_SUFFIX}" STREQUAL "") - message(STATUS "Python extension suffix is ${PY_EXT_SUFFIX}") - set_target_properties(${SWIG_LIBRARY_NAME} PROPERTIES SUFFIX "${PY_EXT_SUFFIX}" ) -endif() - - -swig_link_libraries(${SWIG_LIBRARY_NAME} - ${Python3_LIBRARIES} - model) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.py - $ DESTINATION .) - -# configure module setup script -set(SETUP_PY_IN ${Amici_DIR}/model_setup.template.py) -set(SETUP_PY_OUT ${CMAKE_CURRENT_BINARY_DIR}/setup.py) - -add_custom_target(install-python - DEPENDS ${SWIG_LIBRARY_NAME} - COMMAND python ${SETUP_PY_OUT} install) diff --git a/models/model_events/swig/model_events.i b/models/model_events/swig/model_events.i deleted file mode 100644 index e4a556aa15..0000000000 --- a/models/model_events/swig/model_events.i +++ /dev/null @@ -1,22 +0,0 @@ -%module model_events -%import amici.i -// Add necessary symbols to generated header - -%{ -#include "wrapfunctions.h" -#include "amici/model_ode.h" -#include "amici/model_dae.h" -using namespace amici; -%} - - -// Make model module accessible from the model -%feature("pythonappend") amici::generic_model::getModel %{ - if '.' in __name__: - import sys - val.module = sys.modules['.'.join(__name__.split('.')[:-1])] -%} - - -// Process symbols in header -%include "wrapfunctions.h" diff --git a/models/model_events/sz.cpp b/models/model_events/sz.cpp deleted file mode 100644 index 4e6af3fb7d..0000000000 --- a/models/model_events/sz.cpp +++ /dev/null @@ -1,149 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void sz_model_events(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - sz[0] = -(sx[1]-sx[2])/(h[2]+x[2]-p[2]*x[1]+p[1]*x[0]*exp(t*(-1.0/1.0E1))-1.0); - - } break; - - case 1: { - sz[1] = -(sx[0]-sx[2])/(h[2]+x[2]+p[0]*x[0]*(h[3]-1.0)-1.0); - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - case 4: { - - } break; - - case 5: { - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - sz[0] = -(sx[1]-sx[2])/(h[2]+x[2]-p[2]*x[1]+p[1]*x[0]*exp(t*(-1.0/1.0E1))-1.0); - - } break; - - case 1: { - sz[1] = -(sx[0]-sx[2])/(h[2]+x[2]+p[0]*x[0]*(h[3]-1.0)-1.0); - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - case 4: { - - } break; - - case 5: { - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - sz[0] = -(sx[1]-sx[2])/(h[2]+x[2]-p[2]*x[1]+p[1]*x[0]*exp(t*(-1.0/1.0E1))-1.0); - - } break; - - case 1: { - sz[1] = -(sx[0]-sx[2])/(h[2]+x[2]+p[0]*x[0]*(h[3]-1.0)-1.0); - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - case 4: { - - } break; - - case 5: { - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - sz[0] = -(sx[1]-sx[2])/(h[2]+x[2]-p[2]*x[1]+p[1]*x[0]*exp(t*(-1.0/1.0E1))-1.0); - - } break; - - case 1: { - sz[1] = -(sx[0]-sx[2])/(h[2]+x[2]+p[0]*x[0]*(h[3]-1.0)-1.0); - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - case 4: { - - } break; - - case 5: { - - } break; - - } - - } break; - -} -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/wrapfunctions.cpp b/models/model_events/wrapfunctions.cpp deleted file mode 100644 index 91742b50cf..0000000000 --- a/models/model_events/wrapfunctions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "amici/model.h" -#include "wrapfunctions.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel() { - return std::unique_ptr( - new amici::model_model_events::Model_model_events()); -} - -} // namespace generic_model - -} // namespace amici - diff --git a/models/model_events/wrapfunctions.h b/models/model_events/wrapfunctions.h deleted file mode 100644 index 4644891ea2..0000000000 --- a/models/model_events/wrapfunctions.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _amici_wrapfunctions_h -#define _amici_wrapfunctions_h - -#include "model_events.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel(); - -} // namespace generic_model - -} // namespace amici - -#endif /* _amici_wrapfunctions_h */ diff --git a/models/model_events/x0.cpp b/models/model_events/x0.cpp deleted file mode 100644 index 4718596030..0000000000 --- a/models/model_events/x0.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void x0_model_events(realtype *x0, const realtype t, const realtype *p, const realtype *k) { - x0[0] = k[0]; - x0[1] = k[1]; - x0[2] = k[2]; -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/xdot.cpp b/models/model_events/xdot.cpp deleted file mode 100644 index e1ad2d95d3..0000000000 --- a/models/model_events/xdot.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void xdot_model_events(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - xdot[0] = p[0]*x[0]*(h[3]-1.0); - xdot[1] = -p[2]*x[1]+p[1]*x[0]*exp(t*(-1.0/1.0E1)); - xdot[2] = -h[2]-x[2]+1.0; -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/y.cpp b/models/model_events/y.cpp deleted file mode 100644 index d5698f0467..0000000000 --- a/models/model_events/y.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void y_model_events(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - y[0] = p[3]*(x[0]+x[1]+x[2]); -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_events/z.cpp b/models/model_events/z.cpp deleted file mode 100644 index a4579c035e..0000000000 --- a/models/model_events/z.cpp +++ /dev/null @@ -1,47 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_events{ - -void z_model_events(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) { - switch(ie) { - case 0: { - z[0] = t; - - } break; - - case 1: { - z[1] = t; - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - case 4: { - - } break; - - case 5: { - - } break; - - } -} - -} // namespace model_model_events - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/CMakeLists.txt b/models/model_jakstat_adjoint/CMakeLists.txt deleted file mode 100644 index 4407583796..0000000000 --- a/models/model_jakstat_adjoint/CMakeLists.txt +++ /dev/null @@ -1,121 +0,0 @@ -# Build AMICI model -cmake_minimum_required(VERSION 3.22) -cmake_policy(VERSION 3.22...3.30) - -project(model_jakstat_adjoint) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -include(CheckCXXCompilerFlag) -set(MY_CXX_FLAGS -Wall -Wno-unused-function -Wno-unused-variable) -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - list(APPEND MY_CXX_FLAGS -Wno-unused-but-set-variable) -endif() -foreach(flag ${MY_CXX_FLAGS}) - unset(CUR_FLAG_SUPPORTED CACHE) - check_cxx_compiler_flag(${flag} CUR_FLAG_SUPPORTED) - if(${CUR_FLAG_SUPPORTED}) - string(APPEND CMAKE_CXX_FLAGS " ${flag}") - endif() -endforeach() - -if(DEFINED ENV{AMICI_CXXFLAGS}) - message(STATUS "Appending flags from AMICI_CXXFLAGS: $ENV{AMICI_CXXFLAGS}") - add_compile_options("$ENV{AMICI_CXXFLAGS}") -endif() -if(DEFINED ENV{AMICI_LDFLAGS}) - message(STATUS "Appending flags from AMICI_LDFLAGS: $ENV{AMICI_LDFLAGS}") - link_libraries("$ENV{AMICI_LDFLAGS}") -endif() - -find_package(Amici REQUIRED HINTS - ${CMAKE_CURRENT_LIST_DIR}/../../build) -message(STATUS "Found AMICI ${Amici_DIR}") -set_target_properties(Upstream::amici PROPERTIES - MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo;Release; - MAP_IMPORTED_CONFIG_RELEASE Release - MAP_IMPORTED_CONFIG_DEBUG Debug;RelWithDebInfo;) - -# Debug build? -if("$ENV{ENABLE_AMICI_DEBUGGING}" OR "$ENV{ENABLE_GCOV_COVERAGE}") - add_compile_options(-UNDEBUG) - if(MSVC) - add_compile_options(-DEBUG) - else() - add_compile_options(-O0 -g) - endif() -endif() - -# coverage options -if($ENV{ENABLE_GCOV_COVERAGE}) - string(APPEND CMAKE_CXX_FLAGS_DEBUG " --coverage") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " --coverage") -endif() - -set(MODEL_DIR ${CMAKE_CURRENT_LIST_DIR}) - -set(SRC_LIST_LIB ${MODEL_DIR}/JSparse.cpp -${MODEL_DIR}/Jy.cpp -${MODEL_DIR}/dJydsigma.cpp -${MODEL_DIR}/dJydy.cpp -${MODEL_DIR}/dsigmaydp.cpp -${MODEL_DIR}/dwdp.cpp -${MODEL_DIR}/dwdx.cpp -${MODEL_DIR}/dxdotdp.cpp -${MODEL_DIR}/dydp.cpp -${MODEL_DIR}/dydx.cpp -${MODEL_DIR}/sigmay.cpp -${MODEL_DIR}/sx0.cpp -${MODEL_DIR}/w.cpp -${MODEL_DIR}/x0.cpp -${MODEL_DIR}/xdot.cpp -${MODEL_DIR}/y.cpp - ${MODEL_DIR}/wrapfunctions.cpp) - -add_library(${PROJECT_NAME} ${SRC_LIST_LIB}) -add_library(model ALIAS ${PROJECT_NAME}) - -# Some special functions require boost -# -# TODO: set some flag during code generation whether the given model requires -# boost. for now, try to find it, add include directories and link against it. -# let the compiler/linker error if it is required but not found -find_package(Boost) - -target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") - -target_link_libraries( - ${PROJECT_NAME} - PUBLIC Upstream::amici - PRIVATE $<$:Boost::boost>) - -if(NOT "${AMICI_PYTHON_BUILD_EXT_ONLY}") - set(SRC_LIST_EXE main.cpp) - add_executable(simulate_${PROJECT_NAME} ${SRC_LIST_EXE}) - target_link_libraries(simulate_${PROJECT_NAME} ${PROJECT_NAME}) -endif() - -# SWIG -option(ENABLE_SWIG "Build swig/python library?" ON) -if(ENABLE_SWIG) - add_subdirectory(swig) -endif() - -# -include(GNUInstallDirs) -install( - TARGETS ${PROJECT_NAME} - EXPORT ${PROJECT_NAME}Targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - INCLUDES - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -export( - EXPORT ${PROJECT_NAME}Targets - FILE ${PROJECT_NAME}Config.cmake - NAMESPACE Upstream::) -# diff --git a/models/model_jakstat_adjoint/JSparse.cpp b/models/model_jakstat_adjoint/JSparse.cpp deleted file mode 100644 index e30cd2d042..0000000000 --- a/models/model_jakstat_adjoint/JSparse.cpp +++ /dev/null @@ -1,66 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -#include //SUNMatrixContent_Sparse definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void JSparse_model_jakstat_adjoint(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - JSparse->indexvals[0] = 0; - JSparse->indexvals[1] = 1; - JSparse->indexvals[2] = 1; - JSparse->indexvals[3] = 2; - JSparse->indexvals[4] = 2; - JSparse->indexvals[5] = 3; - JSparse->indexvals[6] = 3; - JSparse->indexvals[7] = 4; - JSparse->indexvals[8] = 4; - JSparse->indexvals[9] = 5; - JSparse->indexvals[10] = 5; - JSparse->indexvals[11] = 6; - JSparse->indexvals[12] = 6; - JSparse->indexvals[13] = 7; - JSparse->indexvals[14] = 7; - JSparse->indexvals[15] = 8; - JSparse->indexvals[16] = 0; - JSparse->indexvals[17] = 8; - JSparse->indexptrs[0] = 0; - JSparse->indexptrs[1] = 2; - JSparse->indexptrs[2] = 4; - JSparse->indexptrs[3] = 6; - JSparse->indexptrs[4] = 8; - JSparse->indexptrs[5] = 10; - JSparse->indexptrs[6] = 12; - JSparse->indexptrs[7] = 14; - JSparse->indexptrs[8] = 16; - JSparse->indexptrs[9] = 18; - JSparse->data[0] = -p[0]*w[0]; - JSparse->data[1] = p[0]*w[0]; - JSparse->data[2] = p[1]*dwdx[0]*-2.0; - JSparse->data[3] = p[1]*dwdx[0]; - JSparse->data[4] = -p[2]; - JSparse->data[5] = (k[0]*p[2])/k[1]; - JSparse->data[6] = -p[3]; - JSparse->data[7] = p[3]*2.0; - JSparse->data[8] = -p[3]; - JSparse->data[9] = p[3]; - JSparse->data[10] = -p[3]; - JSparse->data[11] = p[3]; - JSparse->data[12] = -p[3]; - JSparse->data[13] = p[3]; - JSparse->data[14] = -p[3]; - JSparse->data[15] = p[3]; - JSparse->data[16] = (k[1]*p[3])/k[0]; - JSparse->data[17] = -p[3]; -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/Jy.cpp b/models/model_jakstat_adjoint/Jy.cpp deleted file mode 100644 index 2db2d128ec..0000000000 --- a/models/model_jakstat_adjoint/Jy.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void Jy_model_jakstat_adjoint(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - nllh[0] = amici::log((sigmay[0]*sigmay[0])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*5.0E-1; - break; - case 1: - nllh[0] = amici::log((sigmay[1]*sigmay[1])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[1]*sigmay[1])*pow(my[1]-y[1],2.0)*5.0E-1; - break; - case 2: - nllh[0] = amici::log((sigmay[2]*sigmay[2])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[2]*sigmay[2])*pow(my[2]-y[2],2.0)*5.0E-1; - break; -} -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/dJydsigma.cpp b/models/model_jakstat_adjoint/dJydsigma.cpp deleted file mode 100644 index 1a11141f4d..0000000000 --- a/models/model_jakstat_adjoint/dJydsigma.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void dJydsigma_model_jakstat_adjoint(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydsigma[0+0*1] = 1.0/(sigmay[0]*sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*-1.0+1.0/sigmay[0]; - break; - case 1: - dJydsigma[0+1*1] = 1.0/(sigmay[1]*sigmay[1]*sigmay[1])*pow(my[1]-y[1],2.0)*-1.0+1.0/sigmay[1]; - break; - case 2: - dJydsigma[0+2*1] = 1.0/(sigmay[2]*sigmay[2]*sigmay[2])*pow(my[2]-y[2],2.0)*-1.0+1.0/sigmay[2]; - break; -} -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/dJydy.cpp b/models/model_jakstat_adjoint/dJydy.cpp deleted file mode 100644 index 32e0314afa..0000000000 --- a/models/model_jakstat_adjoint/dJydy.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void dJydy_model_jakstat_adjoint(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydy[0+0*1] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - break; - case 1: - dJydy[0+1*1] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - break; - case 2: - dJydy[0+2*1] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/dsigmaydp.cpp b/models/model_jakstat_adjoint/dsigmaydp.cpp deleted file mode 100644 index 7313fb731b..0000000000 --- a/models/model_jakstat_adjoint/dsigmaydp.cpp +++ /dev/null @@ -1,36 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void dsigmaydp_model_jakstat_adjoint(double *dsigmaydp, const realtype t, const realtype *p, const realtype *k, const realtype *y, const int ip) { -switch (ip) { - case 14: { - dsigmaydp[0] = 1.0; - - } break; - - case 15: { - dsigmaydp[1] = 1.0; - - } break; - - case 16: { - dsigmaydp[2] = 1.0; - - } break; - -} -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/dwdp.cpp b/models/model_jakstat_adjoint/dwdp.cpp deleted file mode 100644 index 092466e87b..0000000000 --- a/models/model_jakstat_adjoint/dwdp.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void dwdp_model_jakstat_adjoint(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static) { - dwdp[0] = amici::Dspline_pos(4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[1] = amici::Dspline_pos(6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[2] = amici::Dspline_pos(8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[3] = amici::Dspline_pos(10,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[4] = amici::Dspline_pos(12,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/dwdx.cpp b/models/model_jakstat_adjoint/dwdx.cpp deleted file mode 100644 index 354b72f246..0000000000 --- a/models/model_jakstat_adjoint/dwdx.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void dwdx_model_jakstat_adjoint(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) { - dwdx[0] = x[1]*2.0; -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/dxdotdp.cpp b/models/model_jakstat_adjoint/dxdotdp.cpp deleted file mode 100644 index 18473afb39..0000000000 --- a/models/model_jakstat_adjoint/dxdotdp.cpp +++ /dev/null @@ -1,80 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void dxdotdp_model_jakstat_adjoint(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) { -switch (ip) { - case 0: { - dxdotdp[0] = -w[0]*x[0]; - dxdotdp[1] = w[0]*x[0]; - - } break; - - case 1: { - dxdotdp[1] = w[1]*-2.0; - dxdotdp[2] = w[1]; - - } break; - - case 2: { - dxdotdp[2] = -x[2]; - dxdotdp[3] = (k[0]*x[2])/k[1]; - - } break; - - case 3: { - dxdotdp[0] = (k[1]*x[8])/k[0]; - dxdotdp[3] = -x[3]; - dxdotdp[4] = x[3]*2.0-x[4]; - dxdotdp[5] = x[4]-x[5]; - dxdotdp[6] = x[5]-x[6]; - dxdotdp[7] = x[6]-x[7]; - dxdotdp[8] = x[7]-x[8]; - - } break; - - case 5: { - dxdotdp[0] = -p[0]*x[0]*dwdp[0]; - dxdotdp[1] = p[0]*x[0]*dwdp[0]; - - } break; - - case 6: { - dxdotdp[0] = -p[0]*x[0]*dwdp[1]; - dxdotdp[1] = p[0]*x[0]*dwdp[1]; - - } break; - - case 7: { - dxdotdp[0] = -p[0]*x[0]*dwdp[2]; - dxdotdp[1] = p[0]*x[0]*dwdp[2]; - - } break; - - case 8: { - dxdotdp[0] = -p[0]*x[0]*dwdp[3]; - dxdotdp[1] = p[0]*x[0]*dwdp[3]; - - } break; - - case 9: { - dxdotdp[0] = -p[0]*x[0]*dwdp[4]; - dxdotdp[1] = p[0]*x[0]*dwdp[4]; - - } break; - -} -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/dydp.cpp b/models/model_jakstat_adjoint/dydp.cpp deleted file mode 100644 index c37f018f84..0000000000 --- a/models/model_jakstat_adjoint/dydp.cpp +++ /dev/null @@ -1,72 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void dydp_model_jakstat_adjoint(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) { -switch (ip) { - case 4: { - dydp[0] = -1.0/(p[4]*p[4])*p[13]*(x[1]+x[2]*2.0); - dydp[1] = -1.0/(p[4]*p[4])*p[12]*(x[0]+x[1]+x[2]*2.0); - - } break; - - case 5: { - dydp[2] = amici::Dspline_pos(4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - - } break; - - case 6: { - dydp[2] = amici::Dspline_pos(6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - - } break; - - case 7: { - dydp[2] = amici::Dspline_pos(8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - - } break; - - case 8: { - dydp[2] = amici::Dspline_pos(10,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - - } break; - - case 9: { - dydp[2] = amici::Dspline_pos(12,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - - } break; - - case 10: { - dydp[1] = 1.0; - - } break; - - case 11: { - dydp[0] = 1.0; - - } break; - - case 12: { - dydp[1] = (x[0]+x[1]+x[2]*2.0)/p[4]; - - } break; - - case 13: { - dydp[0] = (x[1]+x[2]*2.0)/p[4]; - - } break; - -} -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/dydx.cpp b/models/model_jakstat_adjoint/dydx.cpp deleted file mode 100644 index 3a16b74c17..0000000000 --- a/models/model_jakstat_adjoint/dydx.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void dydx_model_jakstat_adjoint(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - dydx[0+1*3] = p[13]/p[4]; - dydx[0+2*3] = (p[13]*2.0)/p[4]; - dydx[1+0*3] = p[12]/p[4]; - dydx[1+1*3] = p[12]/p[4]; - dydx[1+2*3] = (p[12]*2.0)/p[4]; -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/main.cpp b/models/model_jakstat_adjoint/main.cpp deleted file mode 100644 index ecdff85a46..0000000000 --- a/models/model_jakstat_adjoint/main.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#include - -#include "wrapfunctions.h" /* model-provided functions */ -#include /* AMICI base functions */ - -template -std::ostream& operator<<(std::ostream& os, std::vector const& v) { - os << "["; - for (typename std::vector::const_iterator ii = v.begin(); ii != v.end(); - ++ii) { - os << " " << *ii; - } - os << "]"; - return os; -} - -/* - * This is a scaffold for a stand-alone AMICI simulation executable - * demonstrating the basic use of the AMICI C++ API. - */ - -int main() { - std::cout << "********************************" << std::endl; - std::cout << "** Running forward simulation **" << std::endl; - std::cout << "********************************" << std::endl << std::endl; - - // Create a model instance - auto model = amici::generic_model::getModel(); - - // Set desired output timepoints - model->setTimepoints({0.0, 1.0, 10.0, 100.0, 1000.0}); - - // Create a solver instance - auto solver = model->getSolver(); - - // Optionally set integration tolerance - solver->setAbsoluteTolerance(1e-16); - solver->setRelativeTolerance(1e-8); - - // Run the simulation using default parameters set during model import - // (can be changed using model->setParameters() or model->setParameterBy*()) - auto rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print observable time course - auto observable_ids = model->getObservableIds(); - std::cout << "Simulated observables for timepoints " << rdata->ts << "\n\n"; - for (int i_observable = 0; i_observable < rdata->ny; ++i_observable) { - std::cout << observable_ids[i_observable] << ":\n\t"; - for (int i_time = 0; i_time < rdata->nt; ++i_time) { - // rdata->y is a flat 2D array in row-major ordering - std::cout << rdata->y[i_time * rdata->ny + i_observable] << " "; - } - std::cout << std::endl << std::endl; - } - - std::cout << std::endl; - std::cout << "**********************************" << std::endl; - std::cout << "** Forward sensitivity analysis **" << std::endl; - std::cout << "**********************************" << std::endl << std::endl; - - // Enable first-order sensitivity analysis - solver->setSensitivityOrder(amici::SensitivityOrder::first); - // Use forward sensitivities - solver->setSensitivityMethod(amici::SensitivityMethod::forward); - - // Run the simulation - rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print state sensitivities sx... - // ... for the first timepoint... - int i_time = 0; - // ... with respect to the first parameter - int i_nplist = 0; - - // get identifiers from model - auto state_ids = model->getStateIds(); - auto parameter_ids = model->getParameterIds(); - - std::cout << "State sensitivities for timepoint " << rdata->ts[i_time] - << std::endl; // nt x nplist x nx - for (int i_state = 0; i_state < rdata->nx; ++i_state) { - std::cout << "\td(" << state_ids[i_state] << ")/d(" - << parameter_ids[model->plist(i_nplist)] << ") = "; - - // rdata->sx is a flat 3D array in row-major ordering - std::cout << rdata->sx - [i_time * rdata->nplist * rdata->nx - + i_nplist * rdata->nx + i_state]; - std::cout << std::endl; - } - - return 0; -} diff --git a/models/model_jakstat_adjoint/model_jakstat_adjoint.h b/models/model_jakstat_adjoint/model_jakstat_adjoint.h deleted file mode 100644 index 7d3b9290f4..0000000000 --- a/models/model_jakstat_adjoint/model_jakstat_adjoint.h +++ /dev/null @@ -1,216 +0,0 @@ -#ifndef _amici_model_jakstat_adjoint_h -#define _amici_model_jakstat_adjoint_h -/* Generated by amiwrap (R2017b) d69c026f8f8a89a13f1fa1307548f2b8f7045fe1 */ -#include -#include -#include "amici/defines.h" -#include //SUNMatrixContent_Sparse definition -#include "amici/solver_cvodes.h" -#include "amici/model_ode.h" - -namespace amici { - -class Solver; - -namespace model_model_jakstat_adjoint{ - -extern void JSparse_model_jakstat_adjoint(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void Jy_model_jakstat_adjoint(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydsigma_model_jakstat_adjoint(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydy_model_jakstat_adjoint(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dsigmaydp_model_jakstat_adjoint(double *dsigmaydp, const realtype t, const realtype *p, const realtype *k, const realtype *y, const int ip); -extern void dwdp_model_jakstat_adjoint(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static); -extern void dwdx_model_jakstat_adjoint(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static); -extern void dxdotdp_model_jakstat_adjoint(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp); -extern void dydp_model_jakstat_adjoint(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp); -extern void dydx_model_jakstat_adjoint(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void sigmay_model_jakstat_adjoint(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y); -extern void sx0_model_jakstat_adjoint(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip); -extern void w_model_jakstat_adjoint(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static); -extern void x0_model_jakstat_adjoint(realtype *x0, const realtype t, const realtype *p, const realtype *k); -extern void xdot_model_jakstat_adjoint(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); -extern void y_model_jakstat_adjoint(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); - -class Model_model_jakstat_adjoint : public amici::Model_ODE { -public: - Model_model_jakstat_adjoint() - : amici::Model_ODE( - amici::ModelDimensions( - 9, - 9, - 9, - 9, - 0, - 17, - 2, - 3, - 3, - 0, - 0, - 0, - 0, - 0, - 1, - 2, - 1, - 5, - 0, - 0, - {}, - 0, - 0, - 0, - 18, - 8, - 1 - ), - amici::SimulationParameters( - std::vector(2, 1.0), - std::vector(17, 1.0) - ), - amici::SecondOrderMode::none, - std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{}) - {}; - - amici::Model* clone() const override { return new Model_model_jakstat_adjoint(*this); }; - - std::string getAmiciCommit() const override { return "d69c026f8f8a89a13f1fa1307548f2b8f7045fe1"; }; - - void fJSparse(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - JSparse_model_jakstat_adjoint(JSparse, t, x, p, k, h, w, dwdx); - } - - void fJrz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fJy(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - Jy_model_jakstat_adjoint(nllh, iy, p, k, y, sigmay, my); - } - - void fJz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdJrzdsigma(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fdJrzdz(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fdJydsigma(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydsigma_model_jakstat_adjoint(dJydsigma, iy, p, k, y, sigmay, my); - } - - void fdJydy(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydy_model_jakstat_adjoint(dJydy, iy, p, k, y, sigmay, my); - } - - void fdJzdsigma(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdJzdz(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdeltaqB(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdeltasx(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) override { - } - - void fdeltax(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old) override { - } - - void fdeltaxB(double *deltaxB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdrzdp(double *drzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdrzdx(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void fdsigmaydp(double *dsigmaydp, const realtype t, const realtype *p, const realtype *k, const realtype *y, const int ip) override { - dsigmaydp_model_jakstat_adjoint(dsigmaydp, t, p, k, y, ip); - } - - void fdsigmazdp(double *dsigmazdp, const realtype t, const realtype *p, const realtype *k, const int ip) override { - } - - void fdwdp(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static) override { - dwdp_model_jakstat_adjoint(dwdp, t, x, p, k, h, w, tcl, stcl, spl, sspl, include_static); - } - - void fdwdx(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) override { - dwdx_model_jakstat_adjoint(dwdx, t, x, p, k, h, w, tcl, spl, include_static); - } - - void fdxdotdp(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - dxdotdp_model_jakstat_adjoint(dxdotdp, t, x, p, k, h, ip, w, dwdp); - } - - void fdydp(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - dydp_model_jakstat_adjoint(dydp, t, x, p, k, h, ip, w, dwdp); - } - - void fdydx(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - dydx_model_jakstat_adjoint(dydx, t, x, p, k, h, w, dwdx); - } - - void fdzdp(double *dzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdzdx(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void froot(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl) override { - } - - void frz(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void fsigmay(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) override { - sigmay_model_jakstat_adjoint(sigmay, t, p, k, y); - } - - void fsigmaz(double *sigmaz, const realtype t, const realtype *p, const realtype *k) override { - } - - void fsrz(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - } - - void fstau(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) override { - } - - void fsx0(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) override { - sx0_model_jakstat_adjoint(sx0, t, x0, p, k, ip); - } - - void fsz(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - } - - void fw(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) override { - w_model_jakstat_adjoint(w, t, x, p, k, h, tcl, spl, include_static); - } - - void fx0(realtype *x0, const realtype t, const realtype *p, const realtype *k) override { - x0_model_jakstat_adjoint(x0, t, p, k); - } - - void fxdot(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - xdot_model_jakstat_adjoint(xdot, t, x, p, k, h, w); - } - - void fy(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - y_model_jakstat_adjoint(y, t, x, p, k, h, w); - } - - void fz(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - -}; - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - -#endif /* _amici_model_jakstat_adjoint_h */ diff --git a/models/model_jakstat_adjoint/rebuild_model_jakstat_adjoint.m b/models/model_jakstat_adjoint/rebuild_model_jakstat_adjoint.m deleted file mode 100644 index 443952d4c4..0000000000 --- a/models/model_jakstat_adjoint/rebuild_model_jakstat_adjoint.m +++ /dev/null @@ -1,5 +0,0 @@ -function rebuild_model_jakstat_adjoint() -modelName = 'model_jakstat_adjoint'; -amimodel.compileAndLinkModel(modelName, '', [], [], [], []); -amimodel.generateMatlabWrapper(9, 3, 17, 2, 0, 0, [], ['simulate_' modelName '.m'], 'model_jakstat_adjoint', 'log10', 1, 1); -end diff --git a/models/model_jakstat_adjoint/sigmay.cpp b/models/model_jakstat_adjoint/sigmay.cpp deleted file mode 100644 index 99dd28dff6..0000000000 --- a/models/model_jakstat_adjoint/sigmay.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void sigmay_model_jakstat_adjoint(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) { - sigmay[0] = p[14]; - sigmay[1] = p[15]; - sigmay[2] = p[16]; -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/swig/CMakeLists.txt b/models/model_jakstat_adjoint/swig/CMakeLists.txt deleted file mode 100644 index 523571c52e..0000000000 --- a/models/model_jakstat_adjoint/swig/CMakeLists.txt +++ /dev/null @@ -1,73 +0,0 @@ -cmake_minimum_required(VERSION 3.15) -cmake_policy(VERSION 3.15...3.27) - -# cmake >=3.27 -if(POLICY CMP0144) - cmake_policy(SET CMP0144 NEW) -endif(POLICY CMP0144) -# cmake >= 3.30 -if(POLICY CMP0167) - cmake_policy(SET CMP0167 NEW) -endif(POLICY CMP0167) - - -if(DEFINED ENV{SWIG}) - set(SWIG_EXECUTABLE $ENV{SWIG}) -endif() - -find_package(SWIG REQUIRED) -include(${SWIG_USE_FILE}) - -if(DEFINED ENV{PYTHON_EXECUTABLE}) - set(Python3_EXECUTABLE $ENV{PYTHON_EXECUTABLE}) -endif() -# We don't need "Interpreter" here, but without that, FindPython3 will -# ignore the Python version selected via $Python3_EXECUTABLE -find_package(Python3 COMPONENTS Interpreter Development) -include_directories(${Python3_INCLUDE_DIRS}) - -set(SWIG_LIBRARY_NAME _${PROJECT_NAME}) -set(CMAKE_SWIG_FLAGS "") -set_source_files_properties(${PROJECT_NAME}.i PROPERTIES CPLUSPLUS ON) - -# swig does not use INTERFACE_INCLUDE_DIRS of linked libraries, so add manually -get_target_property(AMICI_INCLUDE_DIRS Upstream::amici INTERFACE_INCLUDE_DIRECTORIES) -include_directories(${AMICI_INCLUDE_DIRS} .. ${AMICI_INCLUDE_DIRS}/../swig) - -swig_add_library(${SWIG_LIBRARY_NAME} - TYPE MODULE - LANGUAGE python - SOURCES ${PROJECT_NAME}.i) - - -set_target_properties(${SWIG_LIBRARY_NAME} - PROPERTIES - SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE - PREFIX "" -) - -# Python extension suffix -execute_process( - COMMAND ${Python3_EXECUTABLE} -c - "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" - OUTPUT_VARIABLE PY_EXT_SUFFIX OUTPUT_STRIP_TRAILING_WHITESPACE) -if(NOT "${PY_EXT_SUFFIX}" STREQUAL "") - message(STATUS "Python extension suffix is ${PY_EXT_SUFFIX}") - set_target_properties(${SWIG_LIBRARY_NAME} PROPERTIES SUFFIX "${PY_EXT_SUFFIX}" ) -endif() - - -swig_link_libraries(${SWIG_LIBRARY_NAME} - ${Python3_LIBRARIES} - model) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.py - $ DESTINATION .) - -# configure module setup script -set(SETUP_PY_IN ${Amici_DIR}/model_setup.template.py) -set(SETUP_PY_OUT ${CMAKE_CURRENT_BINARY_DIR}/setup.py) - -add_custom_target(install-python - DEPENDS ${SWIG_LIBRARY_NAME} - COMMAND python ${SETUP_PY_OUT} install) diff --git a/models/model_jakstat_adjoint/swig/model_jakstat_adjoint.i b/models/model_jakstat_adjoint/swig/model_jakstat_adjoint.i deleted file mode 100644 index a986a6a5d2..0000000000 --- a/models/model_jakstat_adjoint/swig/model_jakstat_adjoint.i +++ /dev/null @@ -1,22 +0,0 @@ -%module model_jakstat_adjoint -%import amici.i -// Add necessary symbols to generated header - -%{ -#include "wrapfunctions.h" -#include "amici/model_ode.h" -#include "amici/model_dae.h" -using namespace amici; -%} - - -// Make model module accessible from the model -%feature("pythonappend") amici::generic_model::getModel %{ - if '.' in __name__: - import sys - val.module = sys.modules['.'.join(__name__.split('.')[:-1])] -%} - - -// Process symbols in header -%include "wrapfunctions.h" diff --git a/models/model_jakstat_adjoint/sx0.cpp b/models/model_jakstat_adjoint/sx0.cpp deleted file mode 100644 index 7dc5332500..0000000000 --- a/models/model_jakstat_adjoint/sx0.cpp +++ /dev/null @@ -1,26 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void sx0_model_jakstat_adjoint(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) { -switch (ip) { - case 4: { - sx0[0] = 1.0; - - } break; - -} -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/w.cpp b/models/model_jakstat_adjoint/w.cpp deleted file mode 100644 index 430b96de3a..0000000000 --- a/models/model_jakstat_adjoint/w.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void w_model_jakstat_adjoint(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) { - w[0] = amici::spline_pos(t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - w[1] = x[1]*x[1]; -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/wrapfunctions.cpp b/models/model_jakstat_adjoint/wrapfunctions.cpp deleted file mode 100644 index 1b40155f0a..0000000000 --- a/models/model_jakstat_adjoint/wrapfunctions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "amici/model.h" -#include "wrapfunctions.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel() { - return std::unique_ptr( - new amici::model_model_jakstat_adjoint::Model_model_jakstat_adjoint()); -} - -} // namespace generic_model - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/wrapfunctions.h b/models/model_jakstat_adjoint/wrapfunctions.h deleted file mode 100644 index cf6f1a7e2c..0000000000 --- a/models/model_jakstat_adjoint/wrapfunctions.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _amici_wrapfunctions_h -#define _amici_wrapfunctions_h - -#include "model_jakstat_adjoint.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel(); - -} // namespace generic_model - -} // namespace amici - -#endif /* _amici_wrapfunctions_h */ diff --git a/models/model_jakstat_adjoint/x0.cpp b/models/model_jakstat_adjoint/x0.cpp deleted file mode 100644 index 2498586d7c..0000000000 --- a/models/model_jakstat_adjoint/x0.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void x0_model_jakstat_adjoint(realtype *x0, const realtype t, const realtype *p, const realtype *k) { - x0[0] = p[4]; -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/xdot.cpp b/models/model_jakstat_adjoint/xdot.cpp deleted file mode 100644 index a31ae44a9f..0000000000 --- a/models/model_jakstat_adjoint/xdot.cpp +++ /dev/null @@ -1,28 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void xdot_model_jakstat_adjoint(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - xdot[0] = (k[1]*p[3]*x[8]-k[0]*p[0]*w[0]*x[0])/k[0]; - xdot[1] = p[1]*w[1]*-2.0+p[0]*w[0]*x[0]; - xdot[2] = p[1]*w[1]-p[2]*x[2]; - xdot[3] = (k[0]*p[2]*x[2]-k[1]*p[3]*x[3])/k[1]; - xdot[4] = p[3]*(x[3]*2.0-x[4]); - xdot[5] = p[3]*(x[4]-x[5]); - xdot[6] = p[3]*(x[5]-x[6]); - xdot[7] = p[3]*(x[6]-x[7]); - xdot[8] = p[3]*(x[7]-x[8]); -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint/y.cpp b/models/model_jakstat_adjoint/y.cpp deleted file mode 100644 index 87b30353b1..0000000000 --- a/models/model_jakstat_adjoint/y.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint{ - -void y_model_jakstat_adjoint(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - y[0] = p[11]+(p[13]*(x[1]+x[2]*2.0))/p[4]; - y[1] = p[10]+(p[12]*(x[0]+x[1]+x[2]*2.0))/p[4]; - y[2] = amici::spline_pos(t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); -} - -} // namespace model_model_jakstat_adjoint - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/CMakeLists.txt b/models/model_jakstat_adjoint_o2/CMakeLists.txt deleted file mode 100644 index a8406acf6b..0000000000 --- a/models/model_jakstat_adjoint_o2/CMakeLists.txt +++ /dev/null @@ -1,121 +0,0 @@ -# Build AMICI model -cmake_minimum_required(VERSION 3.22) -cmake_policy(VERSION 3.22...3.30) - -project(model_jakstat_adjoint_o2) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -include(CheckCXXCompilerFlag) -set(MY_CXX_FLAGS -Wall -Wno-unused-function -Wno-unused-variable) -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - list(APPEND MY_CXX_FLAGS -Wno-unused-but-set-variable) -endif() -foreach(flag ${MY_CXX_FLAGS}) - unset(CUR_FLAG_SUPPORTED CACHE) - check_cxx_compiler_flag(${flag} CUR_FLAG_SUPPORTED) - if(${CUR_FLAG_SUPPORTED}) - string(APPEND CMAKE_CXX_FLAGS " ${flag}") - endif() -endforeach() - -if(DEFINED ENV{AMICI_CXXFLAGS}) - message(STATUS "Appending flags from AMICI_CXXFLAGS: $ENV{AMICI_CXXFLAGS}") - add_compile_options("$ENV{AMICI_CXXFLAGS}") -endif() -if(DEFINED ENV{AMICI_LDFLAGS}) - message(STATUS "Appending flags from AMICI_LDFLAGS: $ENV{AMICI_LDFLAGS}") - link_libraries("$ENV{AMICI_LDFLAGS}") -endif() - -find_package(Amici REQUIRED HINTS - ${CMAKE_CURRENT_LIST_DIR}/../../build) -message(STATUS "Found AMICI ${Amici_DIR}") -set_target_properties(Upstream::amici PROPERTIES - MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo;Release; - MAP_IMPORTED_CONFIG_RELEASE Release - MAP_IMPORTED_CONFIG_DEBUG Debug;RelWithDebInfo;) - -# Debug build? -if("$ENV{ENABLE_AMICI_DEBUGGING}" OR "$ENV{ENABLE_GCOV_COVERAGE}") - add_compile_options(-UNDEBUG) - if(MSVC) - add_compile_options(-DEBUG) - else() - add_compile_options(-O0 -g) - endif() -endif() - -# coverage options -if($ENV{ENABLE_GCOV_COVERAGE}) - string(APPEND CMAKE_CXX_FLAGS_DEBUG " --coverage") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " --coverage") -endif() - -set(MODEL_DIR ${CMAKE_CURRENT_LIST_DIR}) - -set(SRC_LIST_LIB ${MODEL_DIR}/JSparse.cpp -${MODEL_DIR}/Jy.cpp -${MODEL_DIR}/dJydsigma.cpp -${MODEL_DIR}/dJydy.cpp -${MODEL_DIR}/dsigmaydp.cpp -${MODEL_DIR}/dwdp.cpp -${MODEL_DIR}/dwdx.cpp -${MODEL_DIR}/dxdotdp.cpp -${MODEL_DIR}/dydp.cpp -${MODEL_DIR}/dydx.cpp -${MODEL_DIR}/sigmay.cpp -${MODEL_DIR}/sx0.cpp -${MODEL_DIR}/w.cpp -${MODEL_DIR}/x0.cpp -${MODEL_DIR}/xdot.cpp -${MODEL_DIR}/y.cpp - ${MODEL_DIR}/wrapfunctions.cpp) - -add_library(${PROJECT_NAME} ${SRC_LIST_LIB}) -add_library(model ALIAS ${PROJECT_NAME}) - -# Some special functions require boost -# -# TODO: set some flag during code generation whether the given model requires -# boost. for now, try to find it, add include directories and link against it. -# let the compiler/linker error if it is required but not found -find_package(Boost) - -target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") - -target_link_libraries( - ${PROJECT_NAME} - PUBLIC Upstream::amici - PRIVATE $<$:Boost::boost>) - -if(NOT "${AMICI_PYTHON_BUILD_EXT_ONLY}") - set(SRC_LIST_EXE main.cpp) - add_executable(simulate_${PROJECT_NAME} ${SRC_LIST_EXE}) - target_link_libraries(simulate_${PROJECT_NAME} ${PROJECT_NAME}) -endif() - -# SWIG -option(ENABLE_SWIG "Build swig/python library?" ON) -if(ENABLE_SWIG) - add_subdirectory(swig) -endif() - -# -include(GNUInstallDirs) -install( - TARGETS ${PROJECT_NAME} - EXPORT ${PROJECT_NAME}Targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - INCLUDES - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -export( - EXPORT ${PROJECT_NAME}Targets - FILE ${PROJECT_NAME}Config.cmake - NAMESPACE Upstream::) -# diff --git a/models/model_jakstat_adjoint_o2/JSparse.cpp b/models/model_jakstat_adjoint_o2/JSparse.cpp deleted file mode 100644 index eed36174c0..0000000000 --- a/models/model_jakstat_adjoint_o2/JSparse.cpp +++ /dev/null @@ -1,951 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -#include //SUNMatrixContent_Sparse definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void JSparse_model_jakstat_adjoint_o2(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - JSparse->indexvals[0] = 0; - JSparse->indexvals[1] = 1; - JSparse->indexvals[2] = 9; - JSparse->indexvals[3] = 10; - JSparse->indexvals[4] = 54; - JSparse->indexvals[5] = 55; - JSparse->indexvals[6] = 63; - JSparse->indexvals[7] = 64; - JSparse->indexvals[8] = 72; - JSparse->indexvals[9] = 73; - JSparse->indexvals[10] = 81; - JSparse->indexvals[11] = 82; - JSparse->indexvals[12] = 90; - JSparse->indexvals[13] = 91; - JSparse->indexvals[14] = 1; - JSparse->indexvals[15] = 2; - JSparse->indexvals[16] = 10; - JSparse->indexvals[17] = 11; - JSparse->indexvals[18] = 19; - JSparse->indexvals[19] = 20; - JSparse->indexvals[20] = 28; - JSparse->indexvals[21] = 29; - JSparse->indexvals[22] = 37; - JSparse->indexvals[23] = 38; - JSparse->indexvals[24] = 46; - JSparse->indexvals[25] = 47; - JSparse->indexvals[26] = 55; - JSparse->indexvals[27] = 56; - JSparse->indexvals[28] = 64; - JSparse->indexvals[29] = 65; - JSparse->indexvals[30] = 73; - JSparse->indexvals[31] = 74; - JSparse->indexvals[32] = 82; - JSparse->indexvals[33] = 83; - JSparse->indexvals[34] = 91; - JSparse->indexvals[35] = 92; - JSparse->indexvals[36] = 100; - JSparse->indexvals[37] = 101; - JSparse->indexvals[38] = 109; - JSparse->indexvals[39] = 110; - JSparse->indexvals[40] = 118; - JSparse->indexvals[41] = 119; - JSparse->indexvals[42] = 127; - JSparse->indexvals[43] = 128; - JSparse->indexvals[44] = 136; - JSparse->indexvals[45] = 137; - JSparse->indexvals[46] = 145; - JSparse->indexvals[47] = 146; - JSparse->indexvals[48] = 154; - JSparse->indexvals[49] = 155; - JSparse->indexvals[50] = 2; - JSparse->indexvals[51] = 3; - JSparse->indexvals[52] = 29; - JSparse->indexvals[53] = 30; - JSparse->indexvals[54] = 3; - JSparse->indexvals[55] = 4; - JSparse->indexvals[56] = 39; - JSparse->indexvals[57] = 40; - JSparse->indexvals[58] = 4; - JSparse->indexvals[59] = 5; - JSparse->indexvals[60] = 40; - JSparse->indexvals[61] = 41; - JSparse->indexvals[62] = 5; - JSparse->indexvals[63] = 6; - JSparse->indexvals[64] = 41; - JSparse->indexvals[65] = 42; - JSparse->indexvals[66] = 6; - JSparse->indexvals[67] = 7; - JSparse->indexvals[68] = 42; - JSparse->indexvals[69] = 43; - JSparse->indexvals[70] = 7; - JSparse->indexvals[71] = 8; - JSparse->indexvals[72] = 43; - JSparse->indexvals[73] = 44; - JSparse->indexvals[74] = 0; - JSparse->indexvals[75] = 8; - JSparse->indexvals[76] = 36; - JSparse->indexvals[77] = 44; - JSparse->indexvals[78] = 9; - JSparse->indexvals[79] = 10; - JSparse->indexvals[80] = 10; - JSparse->indexvals[81] = 11; - JSparse->indexvals[82] = 11; - JSparse->indexvals[83] = 12; - JSparse->indexvals[84] = 12; - JSparse->indexvals[85] = 13; - JSparse->indexvals[86] = 13; - JSparse->indexvals[87] = 14; - JSparse->indexvals[88] = 14; - JSparse->indexvals[89] = 15; - JSparse->indexvals[90] = 15; - JSparse->indexvals[91] = 16; - JSparse->indexvals[92] = 16; - JSparse->indexvals[93] = 17; - JSparse->indexvals[94] = 9; - JSparse->indexvals[95] = 17; - JSparse->indexvals[96] = 18; - JSparse->indexvals[97] = 19; - JSparse->indexvals[98] = 19; - JSparse->indexvals[99] = 20; - JSparse->indexvals[100] = 20; - JSparse->indexvals[101] = 21; - JSparse->indexvals[102] = 21; - JSparse->indexvals[103] = 22; - JSparse->indexvals[104] = 22; - JSparse->indexvals[105] = 23; - JSparse->indexvals[106] = 23; - JSparse->indexvals[107] = 24; - JSparse->indexvals[108] = 24; - JSparse->indexvals[109] = 25; - JSparse->indexvals[110] = 25; - JSparse->indexvals[111] = 26; - JSparse->indexvals[112] = 18; - JSparse->indexvals[113] = 26; - JSparse->indexvals[114] = 27; - JSparse->indexvals[115] = 28; - JSparse->indexvals[116] = 28; - JSparse->indexvals[117] = 29; - JSparse->indexvals[118] = 29; - JSparse->indexvals[119] = 30; - JSparse->indexvals[120] = 30; - JSparse->indexvals[121] = 31; - JSparse->indexvals[122] = 31; - JSparse->indexvals[123] = 32; - JSparse->indexvals[124] = 32; - JSparse->indexvals[125] = 33; - JSparse->indexvals[126] = 33; - JSparse->indexvals[127] = 34; - JSparse->indexvals[128] = 34; - JSparse->indexvals[129] = 35; - JSparse->indexvals[130] = 27; - JSparse->indexvals[131] = 35; - JSparse->indexvals[132] = 36; - JSparse->indexvals[133] = 37; - JSparse->indexvals[134] = 37; - JSparse->indexvals[135] = 38; - JSparse->indexvals[136] = 38; - JSparse->indexvals[137] = 39; - JSparse->indexvals[138] = 39; - JSparse->indexvals[139] = 40; - JSparse->indexvals[140] = 40; - JSparse->indexvals[141] = 41; - JSparse->indexvals[142] = 41; - JSparse->indexvals[143] = 42; - JSparse->indexvals[144] = 42; - JSparse->indexvals[145] = 43; - JSparse->indexvals[146] = 43; - JSparse->indexvals[147] = 44; - JSparse->indexvals[148] = 36; - JSparse->indexvals[149] = 44; - JSparse->indexvals[150] = 45; - JSparse->indexvals[151] = 46; - JSparse->indexvals[152] = 46; - JSparse->indexvals[153] = 47; - JSparse->indexvals[154] = 47; - JSparse->indexvals[155] = 48; - JSparse->indexvals[156] = 48; - JSparse->indexvals[157] = 49; - JSparse->indexvals[158] = 49; - JSparse->indexvals[159] = 50; - JSparse->indexvals[160] = 50; - JSparse->indexvals[161] = 51; - JSparse->indexvals[162] = 51; - JSparse->indexvals[163] = 52; - JSparse->indexvals[164] = 52; - JSparse->indexvals[165] = 53; - JSparse->indexvals[166] = 45; - JSparse->indexvals[167] = 53; - JSparse->indexvals[168] = 54; - JSparse->indexvals[169] = 55; - JSparse->indexvals[170] = 55; - JSparse->indexvals[171] = 56; - JSparse->indexvals[172] = 56; - JSparse->indexvals[173] = 57; - JSparse->indexvals[174] = 57; - JSparse->indexvals[175] = 58; - JSparse->indexvals[176] = 58; - JSparse->indexvals[177] = 59; - JSparse->indexvals[178] = 59; - JSparse->indexvals[179] = 60; - JSparse->indexvals[180] = 60; - JSparse->indexvals[181] = 61; - JSparse->indexvals[182] = 61; - JSparse->indexvals[183] = 62; - JSparse->indexvals[184] = 54; - JSparse->indexvals[185] = 62; - JSparse->indexvals[186] = 63; - JSparse->indexvals[187] = 64; - JSparse->indexvals[188] = 64; - JSparse->indexvals[189] = 65; - JSparse->indexvals[190] = 65; - JSparse->indexvals[191] = 66; - JSparse->indexvals[192] = 66; - JSparse->indexvals[193] = 67; - JSparse->indexvals[194] = 67; - JSparse->indexvals[195] = 68; - JSparse->indexvals[196] = 68; - JSparse->indexvals[197] = 69; - JSparse->indexvals[198] = 69; - JSparse->indexvals[199] = 70; - JSparse->indexvals[200] = 70; - JSparse->indexvals[201] = 71; - JSparse->indexvals[202] = 63; - JSparse->indexvals[203] = 71; - JSparse->indexvals[204] = 72; - JSparse->indexvals[205] = 73; - JSparse->indexvals[206] = 73; - JSparse->indexvals[207] = 74; - JSparse->indexvals[208] = 74; - JSparse->indexvals[209] = 75; - JSparse->indexvals[210] = 75; - JSparse->indexvals[211] = 76; - JSparse->indexvals[212] = 76; - JSparse->indexvals[213] = 77; - JSparse->indexvals[214] = 77; - JSparse->indexvals[215] = 78; - JSparse->indexvals[216] = 78; - JSparse->indexvals[217] = 79; - JSparse->indexvals[218] = 79; - JSparse->indexvals[219] = 80; - JSparse->indexvals[220] = 72; - JSparse->indexvals[221] = 80; - JSparse->indexvals[222] = 81; - JSparse->indexvals[223] = 82; - JSparse->indexvals[224] = 82; - JSparse->indexvals[225] = 83; - JSparse->indexvals[226] = 83; - JSparse->indexvals[227] = 84; - JSparse->indexvals[228] = 84; - JSparse->indexvals[229] = 85; - JSparse->indexvals[230] = 85; - JSparse->indexvals[231] = 86; - JSparse->indexvals[232] = 86; - JSparse->indexvals[233] = 87; - JSparse->indexvals[234] = 87; - JSparse->indexvals[235] = 88; - JSparse->indexvals[236] = 88; - JSparse->indexvals[237] = 89; - JSparse->indexvals[238] = 81; - JSparse->indexvals[239] = 89; - JSparse->indexvals[240] = 90; - JSparse->indexvals[241] = 91; - JSparse->indexvals[242] = 91; - JSparse->indexvals[243] = 92; - JSparse->indexvals[244] = 92; - JSparse->indexvals[245] = 93; - JSparse->indexvals[246] = 93; - JSparse->indexvals[247] = 94; - JSparse->indexvals[248] = 94; - JSparse->indexvals[249] = 95; - JSparse->indexvals[250] = 95; - JSparse->indexvals[251] = 96; - JSparse->indexvals[252] = 96; - JSparse->indexvals[253] = 97; - JSparse->indexvals[254] = 97; - JSparse->indexvals[255] = 98; - JSparse->indexvals[256] = 90; - JSparse->indexvals[257] = 98; - JSparse->indexvals[258] = 99; - JSparse->indexvals[259] = 100; - JSparse->indexvals[260] = 100; - JSparse->indexvals[261] = 101; - JSparse->indexvals[262] = 101; - JSparse->indexvals[263] = 102; - JSparse->indexvals[264] = 102; - JSparse->indexvals[265] = 103; - JSparse->indexvals[266] = 103; - JSparse->indexvals[267] = 104; - JSparse->indexvals[268] = 104; - JSparse->indexvals[269] = 105; - JSparse->indexvals[270] = 105; - JSparse->indexvals[271] = 106; - JSparse->indexvals[272] = 106; - JSparse->indexvals[273] = 107; - JSparse->indexvals[274] = 99; - JSparse->indexvals[275] = 107; - JSparse->indexvals[276] = 108; - JSparse->indexvals[277] = 109; - JSparse->indexvals[278] = 109; - JSparse->indexvals[279] = 110; - JSparse->indexvals[280] = 110; - JSparse->indexvals[281] = 111; - JSparse->indexvals[282] = 111; - JSparse->indexvals[283] = 112; - JSparse->indexvals[284] = 112; - JSparse->indexvals[285] = 113; - JSparse->indexvals[286] = 113; - JSparse->indexvals[287] = 114; - JSparse->indexvals[288] = 114; - JSparse->indexvals[289] = 115; - JSparse->indexvals[290] = 115; - JSparse->indexvals[291] = 116; - JSparse->indexvals[292] = 108; - JSparse->indexvals[293] = 116; - JSparse->indexvals[294] = 117; - JSparse->indexvals[295] = 118; - JSparse->indexvals[296] = 118; - JSparse->indexvals[297] = 119; - JSparse->indexvals[298] = 119; - JSparse->indexvals[299] = 120; - JSparse->indexvals[300] = 120; - JSparse->indexvals[301] = 121; - JSparse->indexvals[302] = 121; - JSparse->indexvals[303] = 122; - JSparse->indexvals[304] = 122; - JSparse->indexvals[305] = 123; - JSparse->indexvals[306] = 123; - JSparse->indexvals[307] = 124; - JSparse->indexvals[308] = 124; - JSparse->indexvals[309] = 125; - JSparse->indexvals[310] = 117; - JSparse->indexvals[311] = 125; - JSparse->indexvals[312] = 126; - JSparse->indexvals[313] = 127; - JSparse->indexvals[314] = 127; - JSparse->indexvals[315] = 128; - JSparse->indexvals[316] = 128; - JSparse->indexvals[317] = 129; - JSparse->indexvals[318] = 129; - JSparse->indexvals[319] = 130; - JSparse->indexvals[320] = 130; - JSparse->indexvals[321] = 131; - JSparse->indexvals[322] = 131; - JSparse->indexvals[323] = 132; - JSparse->indexvals[324] = 132; - JSparse->indexvals[325] = 133; - JSparse->indexvals[326] = 133; - JSparse->indexvals[327] = 134; - JSparse->indexvals[328] = 126; - JSparse->indexvals[329] = 134; - JSparse->indexvals[330] = 135; - JSparse->indexvals[331] = 136; - JSparse->indexvals[332] = 136; - JSparse->indexvals[333] = 137; - JSparse->indexvals[334] = 137; - JSparse->indexvals[335] = 138; - JSparse->indexvals[336] = 138; - JSparse->indexvals[337] = 139; - JSparse->indexvals[338] = 139; - JSparse->indexvals[339] = 140; - JSparse->indexvals[340] = 140; - JSparse->indexvals[341] = 141; - JSparse->indexvals[342] = 141; - JSparse->indexvals[343] = 142; - JSparse->indexvals[344] = 142; - JSparse->indexvals[345] = 143; - JSparse->indexvals[346] = 135; - JSparse->indexvals[347] = 143; - JSparse->indexvals[348] = 144; - JSparse->indexvals[349] = 145; - JSparse->indexvals[350] = 145; - JSparse->indexvals[351] = 146; - JSparse->indexvals[352] = 146; - JSparse->indexvals[353] = 147; - JSparse->indexvals[354] = 147; - JSparse->indexvals[355] = 148; - JSparse->indexvals[356] = 148; - JSparse->indexvals[357] = 149; - JSparse->indexvals[358] = 149; - JSparse->indexvals[359] = 150; - JSparse->indexvals[360] = 150; - JSparse->indexvals[361] = 151; - JSparse->indexvals[362] = 151; - JSparse->indexvals[363] = 152; - JSparse->indexvals[364] = 144; - JSparse->indexvals[365] = 152; - JSparse->indexvals[366] = 153; - JSparse->indexvals[367] = 154; - JSparse->indexvals[368] = 154; - JSparse->indexvals[369] = 155; - JSparse->indexvals[370] = 155; - JSparse->indexvals[371] = 156; - JSparse->indexvals[372] = 156; - JSparse->indexvals[373] = 157; - JSparse->indexvals[374] = 157; - JSparse->indexvals[375] = 158; - JSparse->indexvals[376] = 158; - JSparse->indexvals[377] = 159; - JSparse->indexvals[378] = 159; - JSparse->indexvals[379] = 160; - JSparse->indexvals[380] = 160; - JSparse->indexvals[381] = 161; - JSparse->indexvals[382] = 153; - JSparse->indexvals[383] = 161; - JSparse->indexptrs[0] = 0; - JSparse->indexptrs[1] = 14; - JSparse->indexptrs[2] = 50; - JSparse->indexptrs[3] = 54; - JSparse->indexptrs[4] = 58; - JSparse->indexptrs[5] = 62; - JSparse->indexptrs[6] = 66; - JSparse->indexptrs[7] = 70; - JSparse->indexptrs[8] = 74; - JSparse->indexptrs[9] = 78; - JSparse->indexptrs[10] = 80; - JSparse->indexptrs[11] = 82; - JSparse->indexptrs[12] = 84; - JSparse->indexptrs[13] = 86; - JSparse->indexptrs[14] = 88; - JSparse->indexptrs[15] = 90; - JSparse->indexptrs[16] = 92; - JSparse->indexptrs[17] = 94; - JSparse->indexptrs[18] = 96; - JSparse->indexptrs[19] = 98; - JSparse->indexptrs[20] = 100; - JSparse->indexptrs[21] = 102; - JSparse->indexptrs[22] = 104; - JSparse->indexptrs[23] = 106; - JSparse->indexptrs[24] = 108; - JSparse->indexptrs[25] = 110; - JSparse->indexptrs[26] = 112; - JSparse->indexptrs[27] = 114; - JSparse->indexptrs[28] = 116; - JSparse->indexptrs[29] = 118; - JSparse->indexptrs[30] = 120; - JSparse->indexptrs[31] = 122; - JSparse->indexptrs[32] = 124; - JSparse->indexptrs[33] = 126; - JSparse->indexptrs[34] = 128; - JSparse->indexptrs[35] = 130; - JSparse->indexptrs[36] = 132; - JSparse->indexptrs[37] = 134; - JSparse->indexptrs[38] = 136; - JSparse->indexptrs[39] = 138; - JSparse->indexptrs[40] = 140; - JSparse->indexptrs[41] = 142; - JSparse->indexptrs[42] = 144; - JSparse->indexptrs[43] = 146; - JSparse->indexptrs[44] = 148; - JSparse->indexptrs[45] = 150; - JSparse->indexptrs[46] = 152; - JSparse->indexptrs[47] = 154; - JSparse->indexptrs[48] = 156; - JSparse->indexptrs[49] = 158; - JSparse->indexptrs[50] = 160; - JSparse->indexptrs[51] = 162; - JSparse->indexptrs[52] = 164; - JSparse->indexptrs[53] = 166; - JSparse->indexptrs[54] = 168; - JSparse->indexptrs[55] = 170; - JSparse->indexptrs[56] = 172; - JSparse->indexptrs[57] = 174; - JSparse->indexptrs[58] = 176; - JSparse->indexptrs[59] = 178; - JSparse->indexptrs[60] = 180; - JSparse->indexptrs[61] = 182; - JSparse->indexptrs[62] = 184; - JSparse->indexptrs[63] = 186; - JSparse->indexptrs[64] = 188; - JSparse->indexptrs[65] = 190; - JSparse->indexptrs[66] = 192; - JSparse->indexptrs[67] = 194; - JSparse->indexptrs[68] = 196; - JSparse->indexptrs[69] = 198; - JSparse->indexptrs[70] = 200; - JSparse->indexptrs[71] = 202; - JSparse->indexptrs[72] = 204; - JSparse->indexptrs[73] = 206; - JSparse->indexptrs[74] = 208; - JSparse->indexptrs[75] = 210; - JSparse->indexptrs[76] = 212; - JSparse->indexptrs[77] = 214; - JSparse->indexptrs[78] = 216; - JSparse->indexptrs[79] = 218; - JSparse->indexptrs[80] = 220; - JSparse->indexptrs[81] = 222; - JSparse->indexptrs[82] = 224; - JSparse->indexptrs[83] = 226; - JSparse->indexptrs[84] = 228; - JSparse->indexptrs[85] = 230; - JSparse->indexptrs[86] = 232; - JSparse->indexptrs[87] = 234; - JSparse->indexptrs[88] = 236; - JSparse->indexptrs[89] = 238; - JSparse->indexptrs[90] = 240; - JSparse->indexptrs[91] = 242; - JSparse->indexptrs[92] = 244; - JSparse->indexptrs[93] = 246; - JSparse->indexptrs[94] = 248; - JSparse->indexptrs[95] = 250; - JSparse->indexptrs[96] = 252; - JSparse->indexptrs[97] = 254; - JSparse->indexptrs[98] = 256; - JSparse->indexptrs[99] = 258; - JSparse->indexptrs[100] = 260; - JSparse->indexptrs[101] = 262; - JSparse->indexptrs[102] = 264; - JSparse->indexptrs[103] = 266; - JSparse->indexptrs[104] = 268; - JSparse->indexptrs[105] = 270; - JSparse->indexptrs[106] = 272; - JSparse->indexptrs[107] = 274; - JSparse->indexptrs[108] = 276; - JSparse->indexptrs[109] = 278; - JSparse->indexptrs[110] = 280; - JSparse->indexptrs[111] = 282; - JSparse->indexptrs[112] = 284; - JSparse->indexptrs[113] = 286; - JSparse->indexptrs[114] = 288; - JSparse->indexptrs[115] = 290; - JSparse->indexptrs[116] = 292; - JSparse->indexptrs[117] = 294; - JSparse->indexptrs[118] = 296; - JSparse->indexptrs[119] = 298; - JSparse->indexptrs[120] = 300; - JSparse->indexptrs[121] = 302; - JSparse->indexptrs[122] = 304; - JSparse->indexptrs[123] = 306; - JSparse->indexptrs[124] = 308; - JSparse->indexptrs[125] = 310; - JSparse->indexptrs[126] = 312; - JSparse->indexptrs[127] = 314; - JSparse->indexptrs[128] = 316; - JSparse->indexptrs[129] = 318; - JSparse->indexptrs[130] = 320; - JSparse->indexptrs[131] = 322; - JSparse->indexptrs[132] = 324; - JSparse->indexptrs[133] = 326; - JSparse->indexptrs[134] = 328; - JSparse->indexptrs[135] = 330; - JSparse->indexptrs[136] = 332; - JSparse->indexptrs[137] = 334; - JSparse->indexptrs[138] = 336; - JSparse->indexptrs[139] = 338; - JSparse->indexptrs[140] = 340; - JSparse->indexptrs[141] = 342; - JSparse->indexptrs[142] = 344; - JSparse->indexptrs[143] = 346; - JSparse->indexptrs[144] = 348; - JSparse->indexptrs[145] = 350; - JSparse->indexptrs[146] = 352; - JSparse->indexptrs[147] = 354; - JSparse->indexptrs[148] = 356; - JSparse->indexptrs[149] = 358; - JSparse->indexptrs[150] = 360; - JSparse->indexptrs[151] = 362; - JSparse->indexptrs[152] = 364; - JSparse->indexptrs[153] = 366; - JSparse->indexptrs[154] = 368; - JSparse->indexptrs[155] = 370; - JSparse->indexptrs[156] = 372; - JSparse->indexptrs[157] = 374; - JSparse->indexptrs[158] = 376; - JSparse->indexptrs[159] = 378; - JSparse->indexptrs[160] = 380; - JSparse->indexptrs[161] = 382; - JSparse->indexptrs[162] = 384; - JSparse->data[0] = -k[0]*p[0]*w[0]*w[2]; - JSparse->data[1] = p[0]*w[0]; - JSparse->data[2] = -w[0]; - JSparse->data[3] = w[0]; - JSparse->data[4] = -p[0]*w[5]; - JSparse->data[5] = p[0]*w[5]; - JSparse->data[6] = -p[0]*w[6]; - JSparse->data[7] = p[0]*w[6]; - JSparse->data[8] = -p[0]*w[7]; - JSparse->data[9] = p[0]*w[7]; - JSparse->data[10] = -p[0]*w[8]; - JSparse->data[11] = p[0]*w[8]; - JSparse->data[12] = -p[0]*w[9]; - JSparse->data[13] = p[0]*w[9]; - JSparse->data[14] = p[1]*dwdx[0]*-2.0; - JSparse->data[15] = p[1]*dwdx[0]; - JSparse->data[16] = p[1]*x[10]*-4.0; - JSparse->data[17] = p[1]*x[10]*2.0; - JSparse->data[18] = dwdx[0]*-2.0-p[1]*x[19]*4.0; - JSparse->data[19] = dwdx[0]+p[1]*x[19]*2.0; - JSparse->data[20] = p[1]*x[28]*-4.0; - JSparse->data[21] = p[1]*x[28]*2.0; - JSparse->data[22] = p[1]*x[37]*-4.0; - JSparse->data[23] = p[1]*x[37]*2.0; - JSparse->data[24] = p[1]*x[46]*-4.0; - JSparse->data[25] = p[1]*x[46]*2.0; - JSparse->data[26] = p[1]*x[55]*-4.0; - JSparse->data[27] = p[1]*x[55]*2.0; - JSparse->data[28] = p[1]*x[64]*-4.0; - JSparse->data[29] = p[1]*x[64]*2.0; - JSparse->data[30] = p[1]*x[73]*-4.0; - JSparse->data[31] = p[1]*x[73]*2.0; - JSparse->data[32] = p[1]*x[82]*-4.0; - JSparse->data[33] = p[1]*x[82]*2.0; - JSparse->data[34] = p[1]*x[91]*-4.0; - JSparse->data[35] = p[1]*x[91]*2.0; - JSparse->data[36] = p[1]*x[100]*-4.0; - JSparse->data[37] = p[1]*x[100]*2.0; - JSparse->data[38] = p[1]*x[109]*-4.0; - JSparse->data[39] = p[1]*x[109]*2.0; - JSparse->data[40] = p[1]*x[118]*-4.0; - JSparse->data[41] = p[1]*x[118]*2.0; - JSparse->data[42] = p[1]*x[127]*-4.0; - JSparse->data[43] = p[1]*x[127]*2.0; - JSparse->data[44] = p[1]*x[136]*-4.0; - JSparse->data[45] = p[1]*x[136]*2.0; - JSparse->data[46] = p[1]*x[145]*-4.0; - JSparse->data[47] = p[1]*x[145]*2.0; - JSparse->data[48] = p[1]*x[154]*-4.0; - JSparse->data[49] = p[1]*x[154]*2.0; - JSparse->data[50] = -p[2]; - JSparse->data[51] = k[0]*p[2]*w[3]; - JSparse->data[52] = -1.0; - JSparse->data[53] = k[0]*w[3]; - JSparse->data[54] = -k[1]*p[3]*w[3]; - JSparse->data[55] = p[3]*dwdx[1]; - JSparse->data[56] = -1.0; - JSparse->data[57] = dwdx[1]; - JSparse->data[58] = -p[3]; - JSparse->data[59] = p[3]; - JSparse->data[60] = -1.0; - JSparse->data[61] = 1.0; - JSparse->data[62] = -p[3]; - JSparse->data[63] = p[3]; - JSparse->data[64] = -1.0; - JSparse->data[65] = 1.0; - JSparse->data[66] = -p[3]; - JSparse->data[67] = p[3]; - JSparse->data[68] = -1.0; - JSparse->data[69] = 1.0; - JSparse->data[70] = -p[3]; - JSparse->data[71] = p[3]; - JSparse->data[72] = -1.0; - JSparse->data[73] = 1.0; - JSparse->data[74] = k[1]*p[3]*w[2]; - JSparse->data[75] = -p[3]; - JSparse->data[76] = k[1]*w[2]; - JSparse->data[77] = -1.0; - JSparse->data[78] = -p[0]*w[0]; - JSparse->data[79] = p[0]*w[0]; - JSparse->data[80] = p[1]*x[1]*-4.0; - JSparse->data[81] = p[1]*x[1]*2.0; - JSparse->data[82] = -p[2]; - JSparse->data[83] = k[0]*p[2]*w[3]; - JSparse->data[84] = -p[3]; - JSparse->data[85] = p[3]*2.0; - JSparse->data[86] = -p[3]; - JSparse->data[87] = p[3]; - JSparse->data[88] = -p[3]; - JSparse->data[89] = p[3]; - JSparse->data[90] = -p[3]; - JSparse->data[91] = p[3]; - JSparse->data[92] = -p[3]; - JSparse->data[93] = p[3]; - JSparse->data[94] = k[1]*p[3]*w[2]; - JSparse->data[95] = -p[3]; - JSparse->data[96] = -p[0]*w[0]; - JSparse->data[97] = p[0]*w[0]; - JSparse->data[98] = p[1]*x[1]*-4.0; - JSparse->data[99] = p[1]*x[1]*2.0; - JSparse->data[100] = -p[2]; - JSparse->data[101] = k[0]*p[2]*w[3]; - JSparse->data[102] = -p[3]; - JSparse->data[103] = p[3]*2.0; - JSparse->data[104] = -p[3]; - JSparse->data[105] = p[3]; - JSparse->data[106] = -p[3]; - JSparse->data[107] = p[3]; - JSparse->data[108] = -p[3]; - JSparse->data[109] = p[3]; - JSparse->data[110] = -p[3]; - JSparse->data[111] = p[3]; - JSparse->data[112] = k[1]*p[3]*w[2]; - JSparse->data[113] = -p[3]; - JSparse->data[114] = -p[0]*w[0]; - JSparse->data[115] = p[0]*w[0]; - JSparse->data[116] = p[1]*x[1]*-4.0; - JSparse->data[117] = p[1]*x[1]*2.0; - JSparse->data[118] = -p[2]; - JSparse->data[119] = k[0]*p[2]*w[3]; - JSparse->data[120] = -p[3]; - JSparse->data[121] = p[3]*2.0; - JSparse->data[122] = -p[3]; - JSparse->data[123] = p[3]; - JSparse->data[124] = -p[3]; - JSparse->data[125] = p[3]; - JSparse->data[126] = -p[3]; - JSparse->data[127] = p[3]; - JSparse->data[128] = -p[3]; - JSparse->data[129] = p[3]; - JSparse->data[130] = k[1]*p[3]*w[2]; - JSparse->data[131] = -p[3]; - JSparse->data[132] = -p[0]*w[0]; - JSparse->data[133] = p[0]*w[0]; - JSparse->data[134] = p[1]*x[1]*-4.0; - JSparse->data[135] = p[1]*x[1]*2.0; - JSparse->data[136] = -p[2]; - JSparse->data[137] = k[0]*p[2]*w[3]; - JSparse->data[138] = -p[3]; - JSparse->data[139] = p[3]*2.0; - JSparse->data[140] = -p[3]; - JSparse->data[141] = p[3]; - JSparse->data[142] = -p[3]; - JSparse->data[143] = p[3]; - JSparse->data[144] = -p[3]; - JSparse->data[145] = p[3]; - JSparse->data[146] = -p[3]; - JSparse->data[147] = p[3]; - JSparse->data[148] = k[1]*p[3]*w[2]; - JSparse->data[149] = -p[3]; - JSparse->data[150] = -p[0]*w[0]; - JSparse->data[151] = p[0]*w[0]; - JSparse->data[152] = p[1]*x[1]*-4.0; - JSparse->data[153] = p[1]*x[1]*2.0; - JSparse->data[154] = -p[2]; - JSparse->data[155] = k[0]*p[2]*w[3]; - JSparse->data[156] = -p[3]; - JSparse->data[157] = p[3]*2.0; - JSparse->data[158] = -p[3]; - JSparse->data[159] = p[3]; - JSparse->data[160] = -p[3]; - JSparse->data[161] = p[3]; - JSparse->data[162] = -p[3]; - JSparse->data[163] = p[3]; - JSparse->data[164] = -p[3]; - JSparse->data[165] = p[3]; - JSparse->data[166] = k[1]*p[3]*w[2]; - JSparse->data[167] = -p[3]; - JSparse->data[168] = -p[0]*w[0]; - JSparse->data[169] = p[0]*w[0]; - JSparse->data[170] = p[1]*x[1]*-4.0; - JSparse->data[171] = p[1]*x[1]*2.0; - JSparse->data[172] = -p[2]; - JSparse->data[173] = k[0]*p[2]*w[3]; - JSparse->data[174] = -p[3]; - JSparse->data[175] = p[3]*2.0; - JSparse->data[176] = -p[3]; - JSparse->data[177] = p[3]; - JSparse->data[178] = -p[3]; - JSparse->data[179] = p[3]; - JSparse->data[180] = -p[3]; - JSparse->data[181] = p[3]; - JSparse->data[182] = -p[3]; - JSparse->data[183] = p[3]; - JSparse->data[184] = k[1]*p[3]*w[2]; - JSparse->data[185] = -p[3]; - JSparse->data[186] = -p[0]*w[0]; - JSparse->data[187] = p[0]*w[0]; - JSparse->data[188] = p[1]*x[1]*-4.0; - JSparse->data[189] = p[1]*x[1]*2.0; - JSparse->data[190] = -p[2]; - JSparse->data[191] = k[0]*p[2]*w[3]; - JSparse->data[192] = -p[3]; - JSparse->data[193] = p[3]*2.0; - JSparse->data[194] = -p[3]; - JSparse->data[195] = p[3]; - JSparse->data[196] = -p[3]; - JSparse->data[197] = p[3]; - JSparse->data[198] = -p[3]; - JSparse->data[199] = p[3]; - JSparse->data[200] = -p[3]; - JSparse->data[201] = p[3]; - JSparse->data[202] = k[1]*p[3]*w[2]; - JSparse->data[203] = -p[3]; - JSparse->data[204] = -p[0]*w[0]; - JSparse->data[205] = p[0]*w[0]; - JSparse->data[206] = p[1]*x[1]*-4.0; - JSparse->data[207] = p[1]*x[1]*2.0; - JSparse->data[208] = -p[2]; - JSparse->data[209] = k[0]*p[2]*w[3]; - JSparse->data[210] = -p[3]; - JSparse->data[211] = p[3]*2.0; - JSparse->data[212] = -p[3]; - JSparse->data[213] = p[3]; - JSparse->data[214] = -p[3]; - JSparse->data[215] = p[3]; - JSparse->data[216] = -p[3]; - JSparse->data[217] = p[3]; - JSparse->data[218] = -p[3]; - JSparse->data[219] = p[3]; - JSparse->data[220] = k[1]*p[3]*w[2]; - JSparse->data[221] = -p[3]; - JSparse->data[222] = -p[0]*w[0]; - JSparse->data[223] = p[0]*w[0]; - JSparse->data[224] = p[1]*x[1]*-4.0; - JSparse->data[225] = p[1]*x[1]*2.0; - JSparse->data[226] = -p[2]; - JSparse->data[227] = k[0]*p[2]*w[3]; - JSparse->data[228] = -p[3]; - JSparse->data[229] = p[3]*2.0; - JSparse->data[230] = -p[3]; - JSparse->data[231] = p[3]; - JSparse->data[232] = -p[3]; - JSparse->data[233] = p[3]; - JSparse->data[234] = -p[3]; - JSparse->data[235] = p[3]; - JSparse->data[236] = -p[3]; - JSparse->data[237] = p[3]; - JSparse->data[238] = k[1]*p[3]*w[2]; - JSparse->data[239] = -p[3]; - JSparse->data[240] = -p[0]*w[0]; - JSparse->data[241] = p[0]*w[0]; - JSparse->data[242] = p[1]*x[1]*-4.0; - JSparse->data[243] = p[1]*x[1]*2.0; - JSparse->data[244] = -p[2]; - JSparse->data[245] = k[0]*p[2]*w[3]; - JSparse->data[246] = -p[3]; - JSparse->data[247] = p[3]*2.0; - JSparse->data[248] = -p[3]; - JSparse->data[249] = p[3]; - JSparse->data[250] = -p[3]; - JSparse->data[251] = p[3]; - JSparse->data[252] = -p[3]; - JSparse->data[253] = p[3]; - JSparse->data[254] = -p[3]; - JSparse->data[255] = p[3]; - JSparse->data[256] = k[1]*p[3]*w[2]; - JSparse->data[257] = -p[3]; - JSparse->data[258] = -p[0]*w[0]; - JSparse->data[259] = p[0]*w[0]; - JSparse->data[260] = p[1]*x[1]*-4.0; - JSparse->data[261] = p[1]*x[1]*2.0; - JSparse->data[262] = -p[2]; - JSparse->data[263] = k[0]*p[2]*w[3]; - JSparse->data[264] = -p[3]; - JSparse->data[265] = p[3]*2.0; - JSparse->data[266] = -p[3]; - JSparse->data[267] = p[3]; - JSparse->data[268] = -p[3]; - JSparse->data[269] = p[3]; - JSparse->data[270] = -p[3]; - JSparse->data[271] = p[3]; - JSparse->data[272] = -p[3]; - JSparse->data[273] = p[3]; - JSparse->data[274] = k[1]*p[3]*w[2]; - JSparse->data[275] = -p[3]; - JSparse->data[276] = -p[0]*w[0]; - JSparse->data[277] = p[0]*w[0]; - JSparse->data[278] = p[1]*x[1]*-4.0; - JSparse->data[279] = p[1]*x[1]*2.0; - JSparse->data[280] = -p[2]; - JSparse->data[281] = k[0]*p[2]*w[3]; - JSparse->data[282] = -p[3]; - JSparse->data[283] = p[3]*2.0; - JSparse->data[284] = -p[3]; - JSparse->data[285] = p[3]; - JSparse->data[286] = -p[3]; - JSparse->data[287] = p[3]; - JSparse->data[288] = -p[3]; - JSparse->data[289] = p[3]; - JSparse->data[290] = -p[3]; - JSparse->data[291] = p[3]; - JSparse->data[292] = k[1]*p[3]*w[2]; - JSparse->data[293] = -p[3]; - JSparse->data[294] = -p[0]*w[0]; - JSparse->data[295] = p[0]*w[0]; - JSparse->data[296] = p[1]*x[1]*-4.0; - JSparse->data[297] = p[1]*x[1]*2.0; - JSparse->data[298] = -p[2]; - JSparse->data[299] = k[0]*p[2]*w[3]; - JSparse->data[300] = -p[3]; - JSparse->data[301] = p[3]*2.0; - JSparse->data[302] = -p[3]; - JSparse->data[303] = p[3]; - JSparse->data[304] = -p[3]; - JSparse->data[305] = p[3]; - JSparse->data[306] = -p[3]; - JSparse->data[307] = p[3]; - JSparse->data[308] = -p[3]; - JSparse->data[309] = p[3]; - JSparse->data[310] = k[1]*p[3]*w[2]; - JSparse->data[311] = -p[3]; - JSparse->data[312] = -p[0]*w[0]; - JSparse->data[313] = p[0]*w[0]; - JSparse->data[314] = p[1]*x[1]*-4.0; - JSparse->data[315] = p[1]*x[1]*2.0; - JSparse->data[316] = -p[2]; - JSparse->data[317] = k[0]*p[2]*w[3]; - JSparse->data[318] = -p[3]; - JSparse->data[319] = p[3]*2.0; - JSparse->data[320] = -p[3]; - JSparse->data[321] = p[3]; - JSparse->data[322] = -p[3]; - JSparse->data[323] = p[3]; - JSparse->data[324] = -p[3]; - JSparse->data[325] = p[3]; - JSparse->data[326] = -p[3]; - JSparse->data[327] = p[3]; - JSparse->data[328] = k[1]*p[3]*w[2]; - JSparse->data[329] = -p[3]; - JSparse->data[330] = -p[0]*w[0]; - JSparse->data[331] = p[0]*w[0]; - JSparse->data[332] = p[1]*x[1]*-4.0; - JSparse->data[333] = p[1]*x[1]*2.0; - JSparse->data[334] = -p[2]; - JSparse->data[335] = k[0]*p[2]*w[3]; - JSparse->data[336] = -p[3]; - JSparse->data[337] = p[3]*2.0; - JSparse->data[338] = -p[3]; - JSparse->data[339] = p[3]; - JSparse->data[340] = -p[3]; - JSparse->data[341] = p[3]; - JSparse->data[342] = -p[3]; - JSparse->data[343] = p[3]; - JSparse->data[344] = -p[3]; - JSparse->data[345] = p[3]; - JSparse->data[346] = k[1]*p[3]*w[2]; - JSparse->data[347] = -p[3]; - JSparse->data[348] = -p[0]*w[0]; - JSparse->data[349] = p[0]*w[0]; - JSparse->data[350] = p[1]*x[1]*-4.0; - JSparse->data[351] = p[1]*x[1]*2.0; - JSparse->data[352] = -p[2]; - JSparse->data[353] = k[0]*p[2]*w[3]; - JSparse->data[354] = -p[3]; - JSparse->data[355] = p[3]*2.0; - JSparse->data[356] = -p[3]; - JSparse->data[357] = p[3]; - JSparse->data[358] = -p[3]; - JSparse->data[359] = p[3]; - JSparse->data[360] = -p[3]; - JSparse->data[361] = p[3]; - JSparse->data[362] = -p[3]; - JSparse->data[363] = p[3]; - JSparse->data[364] = k[1]*p[3]*w[2]; - JSparse->data[365] = -p[3]; - JSparse->data[366] = -p[0]*w[0]; - JSparse->data[367] = p[0]*w[0]; - JSparse->data[368] = p[1]*x[1]*-4.0; - JSparse->data[369] = p[1]*x[1]*2.0; - JSparse->data[370] = -p[2]; - JSparse->data[371] = k[0]*p[2]*w[3]; - JSparse->data[372] = -p[3]; - JSparse->data[373] = p[3]*2.0; - JSparse->data[374] = -p[3]; - JSparse->data[375] = p[3]; - JSparse->data[376] = -p[3]; - JSparse->data[377] = p[3]; - JSparse->data[378] = -p[3]; - JSparse->data[379] = p[3]; - JSparse->data[380] = -p[3]; - JSparse->data[381] = p[3]; - JSparse->data[382] = k[1]*p[3]*w[2]; - JSparse->data[383] = -p[3]; -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/Jy.cpp b/models/model_jakstat_adjoint_o2/Jy.cpp deleted file mode 100644 index 63abdf4b43..0000000000 --- a/models/model_jakstat_adjoint_o2/Jy.cpp +++ /dev/null @@ -1,81 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void Jy_model_jakstat_adjoint_o2(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - nllh[0] = amici::log((sigmay[0]*sigmay[0])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*5.0E-1; - nllh[1] = y[3]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[2] = y[6]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[3] = y[9]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[4] = y[12]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[5] = y[15]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[6] = y[18]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[7] = y[21]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[8] = y[24]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[9] = y[27]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[10] = y[30]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[11] = y[33]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[12] = y[36]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[13] = y[39]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[14] = y[42]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[15] = 1.0/(sigmay[0]*sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*-1.0+1.0/sigmay[0]-y[45]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*5.0E-1; - nllh[16] = y[48]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[17] = y[51]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - break; - case 1: - nllh[0] = amici::log((sigmay[1]*sigmay[1])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[1]*sigmay[1])*pow(my[1]-y[1],2.0)*5.0E-1; - nllh[1] = y[4]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[2] = y[7]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[3] = y[10]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[4] = y[13]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[5] = y[16]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[6] = y[19]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[7] = y[22]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[8] = y[25]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[9] = y[28]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[10] = y[31]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[11] = y[34]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[12] = y[37]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[13] = y[40]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[14] = y[43]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[15] = y[46]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - nllh[16] = 1.0/(sigmay[1]*sigmay[1]*sigmay[1])*pow(my[1]-y[1],2.0)*-1.0+1.0/sigmay[1]-y[49]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*5.0E-1; - nllh[17] = y[52]*1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - break; - case 2: - nllh[0] = amici::log((sigmay[2]*sigmay[2])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[2]*sigmay[2])*pow(my[2]-y[2],2.0)*5.0E-1; - nllh[1] = y[5]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[2] = y[8]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[3] = y[11]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[4] = y[14]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[5] = y[17]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[6] = y[20]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[7] = y[23]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[8] = y[26]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[9] = y[29]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[10] = y[32]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[11] = y[35]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[12] = y[38]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[13] = y[41]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[14] = y[44]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[15] = y[47]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[16] = y[50]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - nllh[17] = 1.0/(sigmay[2]*sigmay[2]*sigmay[2])*pow(my[2]-y[2],2.0)*-1.0+1.0/sigmay[2]-y[53]*1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*5.0E-1; - break; -} -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/dJydsigma.cpp b/models/model_jakstat_adjoint_o2/dJydsigma.cpp deleted file mode 100644 index 0a3c94610e..0000000000 --- a/models/model_jakstat_adjoint_o2/dJydsigma.cpp +++ /dev/null @@ -1,81 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void dJydsigma_model_jakstat_adjoint_o2(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydsigma[0+0*18] = 1.0/(sigmay[0]*sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*-1.0+1.0/sigmay[0]; - dJydsigma[1+0*18] = y[3]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[2+0*18] = y[6]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[3+0*18] = y[9]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[4+0*18] = y[12]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[5+0*18] = y[15]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[6+0*18] = y[18]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[7+0*18] = y[21]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[8+0*18] = y[24]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[9+0*18] = y[27]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[10+0*18] = y[30]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[11+0*18] = y[33]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[12+0*18] = y[36]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[13+0*18] = y[39]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[14+0*18] = y[42]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[15+0*18] = 1.0/(sigmay[0]*sigmay[0]*sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*3.0-1.0/(sigmay[0]*sigmay[0])*1.0+y[45]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[16+0*18] = y[48]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[17+0*18] = y[51]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - break; - case 1: - dJydsigma[0+1*18] = 1.0/(sigmay[1]*sigmay[1]*sigmay[1])*pow(my[1]-y[1],2.0)*-1.0+1.0/sigmay[1]; - dJydsigma[1+1*18] = y[4]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[2+1*18] = y[7]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[3+1*18] = y[10]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[4+1*18] = y[13]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[5+1*18] = y[16]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[6+1*18] = y[19]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[7+1*18] = y[22]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[8+1*18] = y[25]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[9+1*18] = y[28]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[10+1*18] = y[31]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[11+1*18] = y[34]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[12+1*18] = y[37]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[13+1*18] = y[40]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[14+1*18] = y[43]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[15+1*18] = y[46]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[16+1*18] = 1.0/(sigmay[1]*sigmay[1]*sigmay[1]*sigmay[1])*pow(my[1]-y[1],2.0)*3.0-1.0/(sigmay[1]*sigmay[1])*1.0+y[49]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - dJydsigma[17+1*18] = y[52]*1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0; - break; - case 2: - dJydsigma[0+2*18] = 1.0/(sigmay[2]*sigmay[2]*sigmay[2])*pow(my[2]-y[2],2.0)*-1.0+1.0/sigmay[2]; - dJydsigma[1+2*18] = y[5]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[2+2*18] = y[8]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[3+2*18] = y[11]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[4+2*18] = y[14]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[5+2*18] = y[17]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[6+2*18] = y[20]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[7+2*18] = y[23]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[8+2*18] = y[26]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[9+2*18] = y[29]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[10+2*18] = y[32]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[11+2*18] = y[35]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[12+2*18] = y[38]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[13+2*18] = y[41]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[14+2*18] = y[44]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[15+2*18] = y[47]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[16+2*18] = y[50]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - dJydsigma[17+2*18] = 1.0/(sigmay[2]*sigmay[2]*sigmay[2]*sigmay[2])*pow(my[2]-y[2],2.0)*3.0-1.0/(sigmay[2]*sigmay[2])*1.0+y[53]*1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0; - break; -} -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/dJydy.cpp b/models/model_jakstat_adjoint_o2/dJydy.cpp deleted file mode 100644 index f940654cda..0000000000 --- a/models/model_jakstat_adjoint_o2/dJydy.cpp +++ /dev/null @@ -1,132 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void dJydy_model_jakstat_adjoint_o2(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydy[0+0*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[1+0*18] = y[3]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[1+3*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[2+0*18] = y[6]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[2+6*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[3+0*18] = y[9]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[3+9*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[4+0*18] = y[12]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[4+12*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[5+0*18] = y[15]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[5+15*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[6+0*18] = y[18]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[6+18*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[7+0*18] = y[21]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[7+21*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[8+0*18] = y[24]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[8+24*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[9+0*18] = y[27]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[9+27*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[10+0*18] = y[30]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[10+30*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[11+0*18] = y[33]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[11+33*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[12+0*18] = y[36]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[12+36*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[13+0*18] = y[39]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[13+39*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[14+0*18] = y[42]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[14+42*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[15+0*18] = 1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0+y[45]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[15+45*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[16+0*18] = y[48]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[16+48*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[17+0*18] = y[51]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[17+51*18] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - break; - case 1: - dJydy[0+1*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[1+1*18] = y[4]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[1+4*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[2+1*18] = y[7]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[2+7*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[3+1*18] = y[10]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[3+10*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[4+1*18] = y[13]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[4+13*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[5+1*18] = y[16]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[5+16*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[6+1*18] = y[19]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[6+19*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[7+1*18] = y[22]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[7+22*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[8+1*18] = y[25]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[8+25*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[9+1*18] = y[28]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[9+28*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[10+1*18] = y[31]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[10+31*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[11+1*18] = y[34]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[11+34*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[12+1*18] = y[37]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[12+37*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[13+1*18] = y[40]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[13+40*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[14+1*18] = y[43]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[14+43*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[15+1*18] = y[46]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[15+46*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[16+1*18] = 1.0/(sigmay[1]*sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*1.0+y[49]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[16+49*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - dJydy[17+1*18] = y[52]*1.0/(sigmay[1]*sigmay[1])*1.0; - dJydy[17+52*18] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - break; - case 2: - dJydy[0+2*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[1+2*18] = y[5]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[1+5*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[2+2*18] = y[8]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[2+8*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[3+2*18] = y[11]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[3+11*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[4+2*18] = y[14]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[4+14*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[5+2*18] = y[17]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[5+17*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[6+2*18] = y[20]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[6+20*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[7+2*18] = y[23]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[7+23*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[8+2*18] = y[26]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[8+26*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[9+2*18] = y[29]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[9+29*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[10+2*18] = y[32]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[10+32*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[11+2*18] = y[35]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[11+35*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[12+2*18] = y[38]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[12+38*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[13+2*18] = y[41]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[13+41*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[14+2*18] = y[44]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[14+44*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[15+2*18] = y[47]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[15+47*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[16+2*18] = y[50]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[16+50*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - dJydy[17+2*18] = 1.0/(sigmay[2]*sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*1.0+y[53]*1.0/(sigmay[2]*sigmay[2])*1.0; - dJydy[17+53*18] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/dsigmaydp.cpp b/models/model_jakstat_adjoint_o2/dsigmaydp.cpp deleted file mode 100644 index ac9cb8730d..0000000000 --- a/models/model_jakstat_adjoint_o2/dsigmaydp.cpp +++ /dev/null @@ -1,36 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void dsigmaydp_model_jakstat_adjoint_o2(double *dsigmaydp, const realtype t, const realtype *p, const realtype *k, const realtype *y, const int ip) { -switch (ip) { - case 14: { - dsigmaydp[0] = 1.0; - - } break; - - case 15: { - dsigmaydp[1] = 1.0; - - } break; - - case 16: { - dsigmaydp[2] = 1.0; - - } break; - -} -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/dwdp.cpp b/models/model_jakstat_adjoint_o2/dwdp.cpp deleted file mode 100644 index a936666e39..0000000000 --- a/models/model_jakstat_adjoint_o2/dwdp.cpp +++ /dev/null @@ -1,49 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void dwdp_model_jakstat_adjoint_o2(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static) { - dwdp[0] = amici::Dspline_pos(4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[1] = amici::DDspline_pos(4,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[2] = amici::DDspline_pos(6,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[3] = amici::DDspline_pos(8,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[4] = amici::DDspline_pos(10,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[5] = amici::DDspline_pos(12,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[6] = amici::Dspline_pos(6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[7] = amici::DDspline_pos(6,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[8] = amici::DDspline_pos(6,6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[9] = amici::DDspline_pos(8,6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[10] = amici::DDspline_pos(10,6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[11] = amici::DDspline_pos(12,6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[12] = amici::Dspline_pos(8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[13] = amici::DDspline_pos(8,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[14] = amici::DDspline_pos(8,6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[15] = amici::DDspline_pos(8,8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[16] = amici::DDspline_pos(10,8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[17] = amici::DDspline_pos(12,8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[18] = amici::Dspline_pos(10,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[19] = amici::DDspline_pos(10,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[20] = amici::DDspline_pos(10,6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[21] = amici::DDspline_pos(10,8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[22] = amici::DDspline_pos(10,10,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[23] = amici::DDspline_pos(12,10,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[24] = amici::Dspline_pos(12,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[25] = amici::DDspline_pos(12,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[26] = amici::DDspline_pos(12,6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[27] = amici::DDspline_pos(12,8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[28] = amici::DDspline_pos(12,10,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dwdp[29] = amici::DDspline_pos(12,12,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/dwdx.cpp b/models/model_jakstat_adjoint_o2/dwdx.cpp deleted file mode 100644 index 81ad6343f1..0000000000 --- a/models/model_jakstat_adjoint_o2/dwdx.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void dwdx_model_jakstat_adjoint_o2(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) { - dwdx[0] = x[1]*2.0; - dwdx[1] = 2.0; -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/dxdotdp.cpp b/models/model_jakstat_adjoint_o2/dxdotdp.cpp deleted file mode 100644 index 0f806991ce..0000000000 --- a/models/model_jakstat_adjoint_o2/dxdotdp.cpp +++ /dev/null @@ -1,471 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void dxdotdp_model_jakstat_adjoint_o2(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) { -switch (ip) { - case 0: { - dxdotdp[0] = -k[0]*w[0]*x[0]*w[2]; - dxdotdp[1] = w[0]*x[0]; - dxdotdp[9] = -w[0]*x[9]; - dxdotdp[10] = w[0]*x[9]; - dxdotdp[18] = -w[0]*x[18]; - dxdotdp[19] = w[0]*x[18]; - dxdotdp[27] = -w[0]*x[27]; - dxdotdp[28] = w[0]*x[27]; - dxdotdp[36] = -w[0]*x[36]; - dxdotdp[37] = w[0]*x[36]; - dxdotdp[45] = -w[0]*x[45]; - dxdotdp[46] = w[0]*x[45]; - dxdotdp[54] = -x[0]*w[5]-w[0]*x[54]; - dxdotdp[55] = x[0]*w[5]+w[0]*x[54]; - dxdotdp[63] = -x[0]*w[6]-w[0]*x[63]; - dxdotdp[64] = x[0]*w[6]+w[0]*x[63]; - dxdotdp[72] = -x[0]*w[7]-w[0]*x[72]; - dxdotdp[73] = x[0]*w[7]+w[0]*x[72]; - dxdotdp[81] = -x[0]*w[8]-w[0]*x[81]; - dxdotdp[82] = x[0]*w[8]+w[0]*x[81]; - dxdotdp[90] = -x[0]*w[9]-w[0]*x[90]; - dxdotdp[91] = x[0]*w[9]+w[0]*x[90]; - dxdotdp[99] = -w[0]*x[99]; - dxdotdp[100] = w[0]*x[99]; - dxdotdp[108] = -w[0]*x[108]; - dxdotdp[109] = w[0]*x[108]; - dxdotdp[117] = -w[0]*x[117]; - dxdotdp[118] = w[0]*x[117]; - dxdotdp[126] = -w[0]*x[126]; - dxdotdp[127] = w[0]*x[126]; - dxdotdp[135] = -w[0]*x[135]; - dxdotdp[136] = w[0]*x[135]; - dxdotdp[144] = -w[0]*x[144]; - dxdotdp[145] = w[0]*x[144]; - dxdotdp[153] = -w[0]*x[153]; - dxdotdp[154] = w[0]*x[153]; - - } break; - - case 1: { - dxdotdp[1] = w[1]*-2.0; - dxdotdp[2] = w[1]; - dxdotdp[10] = x[1]*x[10]*-4.0; - dxdotdp[11] = x[1]*x[10]*2.0; - dxdotdp[19] = x[1]*x[19]*-4.0; - dxdotdp[20] = x[1]*x[19]*2.0; - dxdotdp[28] = x[1]*x[28]*-4.0; - dxdotdp[29] = x[1]*x[28]*2.0; - dxdotdp[37] = x[1]*x[37]*-4.0; - dxdotdp[38] = x[1]*x[37]*2.0; - dxdotdp[46] = x[1]*x[46]*-4.0; - dxdotdp[47] = x[1]*x[46]*2.0; - dxdotdp[55] = x[1]*x[55]*-4.0; - dxdotdp[56] = x[1]*x[55]*2.0; - dxdotdp[64] = x[1]*x[64]*-4.0; - dxdotdp[65] = x[1]*x[64]*2.0; - dxdotdp[73] = x[1]*x[73]*-4.0; - dxdotdp[74] = x[1]*x[73]*2.0; - dxdotdp[82] = x[1]*x[82]*-4.0; - dxdotdp[83] = x[1]*x[82]*2.0; - dxdotdp[91] = x[1]*x[91]*-4.0; - dxdotdp[92] = x[1]*x[91]*2.0; - dxdotdp[100] = x[1]*x[100]*-4.0; - dxdotdp[101] = x[1]*x[100]*2.0; - dxdotdp[109] = x[1]*x[109]*-4.0; - dxdotdp[110] = x[1]*x[109]*2.0; - dxdotdp[118] = x[1]*x[118]*-4.0; - dxdotdp[119] = x[1]*x[118]*2.0; - dxdotdp[127] = x[1]*x[127]*-4.0; - dxdotdp[128] = x[1]*x[127]*2.0; - dxdotdp[136] = x[1]*x[136]*-4.0; - dxdotdp[137] = x[1]*x[136]*2.0; - dxdotdp[145] = x[1]*x[145]*-4.0; - dxdotdp[146] = x[1]*x[145]*2.0; - dxdotdp[154] = x[1]*x[154]*-4.0; - dxdotdp[155] = x[1]*x[154]*2.0; - - } break; - - case 2: { - dxdotdp[2] = -x[2]; - dxdotdp[3] = k[0]*w[3]*x[2]; - dxdotdp[11] = -x[11]; - dxdotdp[12] = k[0]*w[3]*x[11]; - dxdotdp[20] = -x[20]; - dxdotdp[21] = k[0]*w[3]*x[20]; - dxdotdp[29] = -x[29]; - dxdotdp[30] = k[0]*w[3]*x[29]; - dxdotdp[38] = -x[38]; - dxdotdp[39] = k[0]*w[3]*x[38]; - dxdotdp[47] = -x[47]; - dxdotdp[48] = k[0]*w[3]*x[47]; - dxdotdp[56] = -x[56]; - dxdotdp[57] = k[0]*w[3]*x[56]; - dxdotdp[65] = -x[65]; - dxdotdp[66] = k[0]*w[3]*x[65]; - dxdotdp[74] = -x[74]; - dxdotdp[75] = k[0]*w[3]*x[74]; - dxdotdp[83] = -x[83]; - dxdotdp[84] = k[0]*w[3]*x[83]; - dxdotdp[92] = -x[92]; - dxdotdp[93] = k[0]*w[3]*x[92]; - dxdotdp[101] = -x[101]; - dxdotdp[102] = k[0]*w[3]*x[101]; - dxdotdp[110] = -x[110]; - dxdotdp[111] = k[0]*w[3]*x[110]; - dxdotdp[119] = -x[119]; - dxdotdp[120] = k[0]*w[3]*x[119]; - dxdotdp[128] = -x[128]; - dxdotdp[129] = k[0]*w[3]*x[128]; - dxdotdp[137] = -x[137]; - dxdotdp[138] = k[0]*w[3]*x[137]; - dxdotdp[146] = -x[146]; - dxdotdp[147] = k[0]*w[3]*x[146]; - dxdotdp[155] = -x[155]; - dxdotdp[156] = k[0]*w[3]*x[155]; - - } break; - - case 3: { - dxdotdp[0] = k[1]*w[2]*x[8]; - dxdotdp[3] = -k[1]*w[3]*x[3]; - dxdotdp[4] = w[4]-x[4]; - dxdotdp[5] = x[4]-x[5]; - dxdotdp[6] = x[5]-x[6]; - dxdotdp[7] = x[6]-x[7]; - dxdotdp[8] = x[7]-x[8]; - dxdotdp[9] = k[1]*w[2]*x[17]; - dxdotdp[12] = -x[12]; - dxdotdp[13] = x[12]*2.0-x[13]; - dxdotdp[14] = x[13]-x[14]; - dxdotdp[15] = x[14]-x[15]; - dxdotdp[16] = x[15]-x[16]; - dxdotdp[17] = x[16]-x[17]; - dxdotdp[18] = k[1]*w[2]*x[26]; - dxdotdp[21] = -x[21]; - dxdotdp[22] = x[21]*2.0-x[22]; - dxdotdp[23] = x[22]-x[23]; - dxdotdp[24] = x[23]-x[24]; - dxdotdp[25] = x[24]-x[25]; - dxdotdp[26] = x[25]-x[26]; - dxdotdp[27] = k[1]*w[2]*x[35]; - dxdotdp[30] = -x[30]; - dxdotdp[31] = x[30]*2.0-x[31]; - dxdotdp[32] = x[31]-x[32]; - dxdotdp[33] = x[32]-x[33]; - dxdotdp[34] = x[33]-x[34]; - dxdotdp[35] = x[34]-x[35]; - dxdotdp[36] = k[1]*w[2]*x[44]; - dxdotdp[39] = -x[39]; - dxdotdp[40] = x[39]*2.0-x[40]; - dxdotdp[41] = x[40]-x[41]; - dxdotdp[42] = x[41]-x[42]; - dxdotdp[43] = x[42]-x[43]; - dxdotdp[44] = x[43]-x[44]; - dxdotdp[45] = k[1]*w[2]*x[53]; - dxdotdp[48] = -x[48]; - dxdotdp[49] = x[48]*2.0-x[49]; - dxdotdp[50] = x[49]-x[50]; - dxdotdp[51] = x[50]-x[51]; - dxdotdp[52] = x[51]-x[52]; - dxdotdp[53] = x[52]-x[53]; - dxdotdp[54] = k[1]*w[2]*x[62]; - dxdotdp[57] = -x[57]; - dxdotdp[58] = x[57]*2.0-x[58]; - dxdotdp[59] = x[58]-x[59]; - dxdotdp[60] = x[59]-x[60]; - dxdotdp[61] = x[60]-x[61]; - dxdotdp[62] = x[61]-x[62]; - dxdotdp[63] = k[1]*w[2]*x[71]; - dxdotdp[66] = -x[66]; - dxdotdp[67] = x[66]*2.0-x[67]; - dxdotdp[68] = x[67]-x[68]; - dxdotdp[69] = x[68]-x[69]; - dxdotdp[70] = x[69]-x[70]; - dxdotdp[71] = x[70]-x[71]; - dxdotdp[72] = k[1]*w[2]*x[80]; - dxdotdp[75] = -x[75]; - dxdotdp[76] = x[75]*2.0-x[76]; - dxdotdp[77] = x[76]-x[77]; - dxdotdp[78] = x[77]-x[78]; - dxdotdp[79] = x[78]-x[79]; - dxdotdp[80] = x[79]-x[80]; - dxdotdp[81] = k[1]*w[2]*x[89]; - dxdotdp[84] = -x[84]; - dxdotdp[85] = x[84]*2.0-x[85]; - dxdotdp[86] = x[85]-x[86]; - dxdotdp[87] = x[86]-x[87]; - dxdotdp[88] = x[87]-x[88]; - dxdotdp[89] = x[88]-x[89]; - dxdotdp[90] = k[1]*w[2]*x[98]; - dxdotdp[93] = -x[93]; - dxdotdp[94] = x[93]*2.0-x[94]; - dxdotdp[95] = x[94]-x[95]; - dxdotdp[96] = x[95]-x[96]; - dxdotdp[97] = x[96]-x[97]; - dxdotdp[98] = x[97]-x[98]; - dxdotdp[99] = k[1]*w[2]*x[107]; - dxdotdp[102] = -x[102]; - dxdotdp[103] = x[102]*2.0-x[103]; - dxdotdp[104] = x[103]-x[104]; - dxdotdp[105] = x[104]-x[105]; - dxdotdp[106] = x[105]-x[106]; - dxdotdp[107] = x[106]-x[107]; - dxdotdp[108] = k[1]*w[2]*x[116]; - dxdotdp[111] = -x[111]; - dxdotdp[112] = x[111]*2.0-x[112]; - dxdotdp[113] = x[112]-x[113]; - dxdotdp[114] = x[113]-x[114]; - dxdotdp[115] = x[114]-x[115]; - dxdotdp[116] = x[115]-x[116]; - dxdotdp[117] = k[1]*w[2]*x[125]; - dxdotdp[120] = -x[120]; - dxdotdp[121] = x[120]*2.0-x[121]; - dxdotdp[122] = x[121]-x[122]; - dxdotdp[123] = x[122]-x[123]; - dxdotdp[124] = x[123]-x[124]; - dxdotdp[125] = x[124]-x[125]; - dxdotdp[126] = k[1]*w[2]*x[134]; - dxdotdp[129] = -x[129]; - dxdotdp[130] = x[129]*2.0-x[130]; - dxdotdp[131] = x[130]-x[131]; - dxdotdp[132] = x[131]-x[132]; - dxdotdp[133] = x[132]-x[133]; - dxdotdp[134] = x[133]-x[134]; - dxdotdp[135] = k[1]*w[2]*x[143]; - dxdotdp[138] = -x[138]; - dxdotdp[139] = x[138]*2.0-x[139]; - dxdotdp[140] = x[139]-x[140]; - dxdotdp[141] = x[140]-x[141]; - dxdotdp[142] = x[141]-x[142]; - dxdotdp[143] = x[142]-x[143]; - dxdotdp[144] = k[1]*w[2]*x[152]; - dxdotdp[147] = -x[147]; - dxdotdp[148] = x[147]*2.0-x[148]; - dxdotdp[149] = x[148]-x[149]; - dxdotdp[150] = x[149]-x[150]; - dxdotdp[151] = x[150]-x[151]; - dxdotdp[152] = x[151]-x[152]; - dxdotdp[153] = k[1]*w[2]*x[161]; - dxdotdp[156] = -x[156]; - dxdotdp[157] = x[156]*2.0-x[157]; - dxdotdp[158] = x[157]-x[158]; - dxdotdp[159] = x[158]-x[159]; - dxdotdp[160] = x[159]-x[160]; - dxdotdp[161] = x[160]-x[161]; - - } break; - - case 5: { - dxdotdp[0] = -k[0]*p[0]*x[0]*w[2]*dwdp[0]; - dxdotdp[1] = p[0]*x[0]*dwdp[0]; - dxdotdp[9] = -dwdp[0]*(x[0]+p[0]*x[9]); - dxdotdp[10] = dwdp[0]*(x[0]+p[0]*x[9]); - dxdotdp[18] = -p[0]*x[18]*dwdp[0]; - dxdotdp[19] = p[0]*x[18]*dwdp[0]; - dxdotdp[27] = -p[0]*x[27]*dwdp[0]; - dxdotdp[28] = p[0]*x[27]*dwdp[0]; - dxdotdp[36] = -p[0]*x[36]*dwdp[0]; - dxdotdp[37] = p[0]*x[36]*dwdp[0]; - dxdotdp[45] = -p[0]*x[45]*dwdp[0]; - dxdotdp[46] = p[0]*x[45]*dwdp[0]; - dxdotdp[54] = -p[0]*x[0]*dwdp[1]-p[0]*x[54]*dwdp[0]; - dxdotdp[55] = p[0]*x[0]*dwdp[1]+p[0]*x[54]*dwdp[0]; - dxdotdp[63] = -p[0]*x[0]*dwdp[2]-p[0]*x[63]*dwdp[0]; - dxdotdp[64] = p[0]*x[0]*dwdp[2]+p[0]*x[63]*dwdp[0]; - dxdotdp[72] = -p[0]*x[0]*dwdp[3]-p[0]*x[72]*dwdp[0]; - dxdotdp[73] = p[0]*x[0]*dwdp[3]+p[0]*x[72]*dwdp[0]; - dxdotdp[81] = -p[0]*x[0]*dwdp[4]-p[0]*x[81]*dwdp[0]; - dxdotdp[82] = p[0]*x[0]*dwdp[4]+p[0]*x[81]*dwdp[0]; - dxdotdp[90] = -p[0]*x[0]*dwdp[5]-p[0]*x[90]*dwdp[0]; - dxdotdp[91] = p[0]*x[0]*dwdp[5]+p[0]*x[90]*dwdp[0]; - dxdotdp[99] = -p[0]*x[99]*dwdp[0]; - dxdotdp[100] = p[0]*x[99]*dwdp[0]; - dxdotdp[108] = -p[0]*x[108]*dwdp[0]; - dxdotdp[109] = p[0]*x[108]*dwdp[0]; - dxdotdp[117] = -p[0]*x[117]*dwdp[0]; - dxdotdp[118] = p[0]*x[117]*dwdp[0]; - dxdotdp[126] = -p[0]*x[126]*dwdp[0]; - dxdotdp[127] = p[0]*x[126]*dwdp[0]; - dxdotdp[135] = -p[0]*x[135]*dwdp[0]; - dxdotdp[136] = p[0]*x[135]*dwdp[0]; - dxdotdp[144] = -p[0]*x[144]*dwdp[0]; - dxdotdp[145] = p[0]*x[144]*dwdp[0]; - dxdotdp[153] = -p[0]*x[153]*dwdp[0]; - dxdotdp[154] = p[0]*x[153]*dwdp[0]; - - } break; - - case 6: { - dxdotdp[0] = -k[0]*p[0]*x[0]*w[2]*dwdp[6]; - dxdotdp[1] = p[0]*x[0]*dwdp[6]; - dxdotdp[9] = -dwdp[6]*(x[0]+p[0]*x[9]); - dxdotdp[10] = dwdp[6]*(x[0]+p[0]*x[9]); - dxdotdp[18] = -p[0]*x[18]*dwdp[6]; - dxdotdp[19] = p[0]*x[18]*dwdp[6]; - dxdotdp[27] = -p[0]*x[27]*dwdp[6]; - dxdotdp[28] = p[0]*x[27]*dwdp[6]; - dxdotdp[36] = -p[0]*x[36]*dwdp[6]; - dxdotdp[37] = p[0]*x[36]*dwdp[6]; - dxdotdp[45] = -p[0]*x[45]*dwdp[6]; - dxdotdp[46] = p[0]*x[45]*dwdp[6]; - dxdotdp[54] = -p[0]*x[0]*dwdp[7]-p[0]*x[54]*dwdp[6]; - dxdotdp[55] = p[0]*x[0]*dwdp[7]+p[0]*x[54]*dwdp[6]; - dxdotdp[63] = -p[0]*x[0]*dwdp[8]-p[0]*x[63]*dwdp[6]; - dxdotdp[64] = p[0]*x[0]*dwdp[8]+p[0]*x[63]*dwdp[6]; - dxdotdp[72] = -p[0]*x[0]*dwdp[9]-p[0]*x[72]*dwdp[6]; - dxdotdp[73] = p[0]*x[0]*dwdp[9]+p[0]*x[72]*dwdp[6]; - dxdotdp[81] = -p[0]*x[0]*dwdp[10]-p[0]*x[81]*dwdp[6]; - dxdotdp[82] = p[0]*x[0]*dwdp[10]+p[0]*x[81]*dwdp[6]; - dxdotdp[90] = -p[0]*x[0]*dwdp[11]-p[0]*x[90]*dwdp[6]; - dxdotdp[91] = p[0]*x[0]*dwdp[11]+p[0]*x[90]*dwdp[6]; - dxdotdp[99] = -p[0]*x[99]*dwdp[6]; - dxdotdp[100] = p[0]*x[99]*dwdp[6]; - dxdotdp[108] = -p[0]*x[108]*dwdp[6]; - dxdotdp[109] = p[0]*x[108]*dwdp[6]; - dxdotdp[117] = -p[0]*x[117]*dwdp[6]; - dxdotdp[118] = p[0]*x[117]*dwdp[6]; - dxdotdp[126] = -p[0]*x[126]*dwdp[6]; - dxdotdp[127] = p[0]*x[126]*dwdp[6]; - dxdotdp[135] = -p[0]*x[135]*dwdp[6]; - dxdotdp[136] = p[0]*x[135]*dwdp[6]; - dxdotdp[144] = -p[0]*x[144]*dwdp[6]; - dxdotdp[145] = p[0]*x[144]*dwdp[6]; - dxdotdp[153] = -p[0]*x[153]*dwdp[6]; - dxdotdp[154] = p[0]*x[153]*dwdp[6]; - - } break; - - case 7: { - dxdotdp[0] = -k[0]*p[0]*x[0]*w[2]*dwdp[12]; - dxdotdp[1] = p[0]*x[0]*dwdp[12]; - dxdotdp[9] = -dwdp[12]*(x[0]+p[0]*x[9]); - dxdotdp[10] = dwdp[12]*(x[0]+p[0]*x[9]); - dxdotdp[18] = -p[0]*x[18]*dwdp[12]; - dxdotdp[19] = p[0]*x[18]*dwdp[12]; - dxdotdp[27] = -p[0]*x[27]*dwdp[12]; - dxdotdp[28] = p[0]*x[27]*dwdp[12]; - dxdotdp[36] = -p[0]*x[36]*dwdp[12]; - dxdotdp[37] = p[0]*x[36]*dwdp[12]; - dxdotdp[45] = -p[0]*x[45]*dwdp[12]; - dxdotdp[46] = p[0]*x[45]*dwdp[12]; - dxdotdp[54] = -p[0]*x[0]*dwdp[13]-p[0]*x[54]*dwdp[12]; - dxdotdp[55] = p[0]*x[0]*dwdp[13]+p[0]*x[54]*dwdp[12]; - dxdotdp[63] = -p[0]*x[0]*dwdp[14]-p[0]*x[63]*dwdp[12]; - dxdotdp[64] = p[0]*x[0]*dwdp[14]+p[0]*x[63]*dwdp[12]; - dxdotdp[72] = -p[0]*x[0]*dwdp[15]-p[0]*x[72]*dwdp[12]; - dxdotdp[73] = p[0]*x[0]*dwdp[15]+p[0]*x[72]*dwdp[12]; - dxdotdp[81] = -p[0]*x[0]*dwdp[16]-p[0]*x[81]*dwdp[12]; - dxdotdp[82] = p[0]*x[0]*dwdp[16]+p[0]*x[81]*dwdp[12]; - dxdotdp[90] = -p[0]*x[0]*dwdp[17]-p[0]*x[90]*dwdp[12]; - dxdotdp[91] = p[0]*x[0]*dwdp[17]+p[0]*x[90]*dwdp[12]; - dxdotdp[99] = -p[0]*x[99]*dwdp[12]; - dxdotdp[100] = p[0]*x[99]*dwdp[12]; - dxdotdp[108] = -p[0]*x[108]*dwdp[12]; - dxdotdp[109] = p[0]*x[108]*dwdp[12]; - dxdotdp[117] = -p[0]*x[117]*dwdp[12]; - dxdotdp[118] = p[0]*x[117]*dwdp[12]; - dxdotdp[126] = -p[0]*x[126]*dwdp[12]; - dxdotdp[127] = p[0]*x[126]*dwdp[12]; - dxdotdp[135] = -p[0]*x[135]*dwdp[12]; - dxdotdp[136] = p[0]*x[135]*dwdp[12]; - dxdotdp[144] = -p[0]*x[144]*dwdp[12]; - dxdotdp[145] = p[0]*x[144]*dwdp[12]; - dxdotdp[153] = -p[0]*x[153]*dwdp[12]; - dxdotdp[154] = p[0]*x[153]*dwdp[12]; - - } break; - - case 8: { - dxdotdp[0] = -k[0]*p[0]*x[0]*w[2]*dwdp[18]; - dxdotdp[1] = p[0]*x[0]*dwdp[18]; - dxdotdp[9] = -dwdp[18]*(x[0]+p[0]*x[9]); - dxdotdp[10] = dwdp[18]*(x[0]+p[0]*x[9]); - dxdotdp[18] = -p[0]*x[18]*dwdp[18]; - dxdotdp[19] = p[0]*x[18]*dwdp[18]; - dxdotdp[27] = -p[0]*x[27]*dwdp[18]; - dxdotdp[28] = p[0]*x[27]*dwdp[18]; - dxdotdp[36] = -p[0]*x[36]*dwdp[18]; - dxdotdp[37] = p[0]*x[36]*dwdp[18]; - dxdotdp[45] = -p[0]*x[45]*dwdp[18]; - dxdotdp[46] = p[0]*x[45]*dwdp[18]; - dxdotdp[54] = -p[0]*x[0]*dwdp[19]-p[0]*x[54]*dwdp[18]; - dxdotdp[55] = p[0]*x[0]*dwdp[19]+p[0]*x[54]*dwdp[18]; - dxdotdp[63] = -p[0]*x[0]*dwdp[20]-p[0]*x[63]*dwdp[18]; - dxdotdp[64] = p[0]*x[0]*dwdp[20]+p[0]*x[63]*dwdp[18]; - dxdotdp[72] = -p[0]*x[0]*dwdp[21]-p[0]*x[72]*dwdp[18]; - dxdotdp[73] = p[0]*x[0]*dwdp[21]+p[0]*x[72]*dwdp[18]; - dxdotdp[81] = -p[0]*x[0]*dwdp[22]-p[0]*x[81]*dwdp[18]; - dxdotdp[82] = p[0]*x[0]*dwdp[22]+p[0]*x[81]*dwdp[18]; - dxdotdp[90] = -p[0]*x[0]*dwdp[23]-p[0]*x[90]*dwdp[18]; - dxdotdp[91] = p[0]*x[0]*dwdp[23]+p[0]*x[90]*dwdp[18]; - dxdotdp[99] = -p[0]*x[99]*dwdp[18]; - dxdotdp[100] = p[0]*x[99]*dwdp[18]; - dxdotdp[108] = -p[0]*x[108]*dwdp[18]; - dxdotdp[109] = p[0]*x[108]*dwdp[18]; - dxdotdp[117] = -p[0]*x[117]*dwdp[18]; - dxdotdp[118] = p[0]*x[117]*dwdp[18]; - dxdotdp[126] = -p[0]*x[126]*dwdp[18]; - dxdotdp[127] = p[0]*x[126]*dwdp[18]; - dxdotdp[135] = -p[0]*x[135]*dwdp[18]; - dxdotdp[136] = p[0]*x[135]*dwdp[18]; - dxdotdp[144] = -p[0]*x[144]*dwdp[18]; - dxdotdp[145] = p[0]*x[144]*dwdp[18]; - dxdotdp[153] = -p[0]*x[153]*dwdp[18]; - dxdotdp[154] = p[0]*x[153]*dwdp[18]; - - } break; - - case 9: { - dxdotdp[0] = -k[0]*p[0]*x[0]*w[2]*dwdp[24]; - dxdotdp[1] = p[0]*x[0]*dwdp[24]; - dxdotdp[9] = -dwdp[24]*(x[0]+p[0]*x[9]); - dxdotdp[10] = dwdp[24]*(x[0]+p[0]*x[9]); - dxdotdp[18] = -p[0]*x[18]*dwdp[24]; - dxdotdp[19] = p[0]*x[18]*dwdp[24]; - dxdotdp[27] = -p[0]*x[27]*dwdp[24]; - dxdotdp[28] = p[0]*x[27]*dwdp[24]; - dxdotdp[36] = -p[0]*x[36]*dwdp[24]; - dxdotdp[37] = p[0]*x[36]*dwdp[24]; - dxdotdp[45] = -p[0]*x[45]*dwdp[24]; - dxdotdp[46] = p[0]*x[45]*dwdp[24]; - dxdotdp[54] = -p[0]*x[0]*dwdp[25]-p[0]*x[54]*dwdp[24]; - dxdotdp[55] = p[0]*x[0]*dwdp[25]+p[0]*x[54]*dwdp[24]; - dxdotdp[63] = -p[0]*x[0]*dwdp[26]-p[0]*x[63]*dwdp[24]; - dxdotdp[64] = p[0]*x[0]*dwdp[26]+p[0]*x[63]*dwdp[24]; - dxdotdp[72] = -p[0]*x[0]*dwdp[27]-p[0]*x[72]*dwdp[24]; - dxdotdp[73] = p[0]*x[0]*dwdp[27]+p[0]*x[72]*dwdp[24]; - dxdotdp[81] = -p[0]*x[0]*dwdp[28]-p[0]*x[81]*dwdp[24]; - dxdotdp[82] = p[0]*x[0]*dwdp[28]+p[0]*x[81]*dwdp[24]; - dxdotdp[90] = -p[0]*x[0]*dwdp[29]-p[0]*x[90]*dwdp[24]; - dxdotdp[91] = p[0]*x[0]*dwdp[29]+p[0]*x[90]*dwdp[24]; - dxdotdp[99] = -p[0]*x[99]*dwdp[24]; - dxdotdp[100] = p[0]*x[99]*dwdp[24]; - dxdotdp[108] = -p[0]*x[108]*dwdp[24]; - dxdotdp[109] = p[0]*x[108]*dwdp[24]; - dxdotdp[117] = -p[0]*x[117]*dwdp[24]; - dxdotdp[118] = p[0]*x[117]*dwdp[24]; - dxdotdp[126] = -p[0]*x[126]*dwdp[24]; - dxdotdp[127] = p[0]*x[126]*dwdp[24]; - dxdotdp[135] = -p[0]*x[135]*dwdp[24]; - dxdotdp[136] = p[0]*x[135]*dwdp[24]; - dxdotdp[144] = -p[0]*x[144]*dwdp[24]; - dxdotdp[145] = p[0]*x[144]*dwdp[24]; - dxdotdp[153] = -p[0]*x[153]*dwdp[24]; - dxdotdp[154] = p[0]*x[153]*dwdp[24]; - - } break; - -} -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/dydp.cpp b/models/model_jakstat_adjoint_o2/dydp.cpp deleted file mode 100644 index 678e6c0201..0000000000 --- a/models/model_jakstat_adjoint_o2/dydp.cpp +++ /dev/null @@ -1,165 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void dydp_model_jakstat_adjoint_o2(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) { -switch (ip) { - case 4: { - dydp[0] = -1.0/(p[4]*p[4])*p[13]*(x[1]+x[2]*2.0); - dydp[1] = -1.0/(p[4]*p[4])*p[12]*(x[0]+x[1]+x[2]*2.0); - dydp[3] = -1.0/(p[4]*p[4])*p[13]*x[10]-1.0/(p[4]*p[4])*p[13]*x[11]*2.0; - dydp[4] = -1.0/(p[4]*p[4])*p[12]*x[9]-1.0/(p[4]*p[4])*p[12]*x[10]-1.0/(p[4]*p[4])*p[12]*x[11]*2.0; - dydp[6] = -1.0/(p[4]*p[4])*p[13]*x[19]-1.0/(p[4]*p[4])*p[13]*x[20]*2.0; - dydp[7] = -1.0/(p[4]*p[4])*p[12]*x[18]-1.0/(p[4]*p[4])*p[12]*x[19]-1.0/(p[4]*p[4])*p[12]*x[20]*2.0; - dydp[9] = -1.0/(p[4]*p[4])*p[13]*x[28]-1.0/(p[4]*p[4])*p[13]*x[29]*2.0; - dydp[10] = -1.0/(p[4]*p[4])*p[12]*x[27]-1.0/(p[4]*p[4])*p[12]*x[28]-1.0/(p[4]*p[4])*p[12]*x[29]*2.0; - dydp[12] = -1.0/(p[4]*p[4])*p[13]*x[37]-1.0/(p[4]*p[4])*p[13]*x[38]*2.0; - dydp[13] = -1.0/(p[4]*p[4])*p[12]*x[36]-1.0/(p[4]*p[4])*p[12]*x[37]-1.0/(p[4]*p[4])*p[12]*x[38]*2.0; - dydp[15] = -1.0/(p[4]*p[4])*p[13]*x[46]-1.0/(p[4]*p[4])*p[13]*x[47]*2.0+1.0/(p[4]*p[4]*p[4])*p[13]*(x[1]+x[2]*2.0)*2.0; - dydp[16] = -1.0/(p[4]*p[4])*p[12]*x[45]-1.0/(p[4]*p[4])*p[12]*x[46]-1.0/(p[4]*p[4])*p[12]*x[47]*2.0+1.0/(p[4]*p[4]*p[4])*p[12]*(x[0]+x[1]+x[2]*2.0)*2.0; - dydp[18] = -1.0/(p[4]*p[4])*p[13]*x[55]-1.0/(p[4]*p[4])*p[13]*x[56]*2.0; - dydp[19] = -1.0/(p[4]*p[4])*p[12]*x[54]-1.0/(p[4]*p[4])*p[12]*x[55]-1.0/(p[4]*p[4])*p[12]*x[56]*2.0; - dydp[21] = -1.0/(p[4]*p[4])*p[13]*x[64]-1.0/(p[4]*p[4])*p[13]*x[65]*2.0; - dydp[22] = -1.0/(p[4]*p[4])*p[12]*x[63]-1.0/(p[4]*p[4])*p[12]*x[64]-1.0/(p[4]*p[4])*p[12]*x[65]*2.0; - dydp[24] = -1.0/(p[4]*p[4])*p[13]*x[73]-1.0/(p[4]*p[4])*p[13]*x[74]*2.0; - dydp[25] = -1.0/(p[4]*p[4])*p[12]*x[72]-1.0/(p[4]*p[4])*p[12]*x[73]-1.0/(p[4]*p[4])*p[12]*x[74]*2.0; - dydp[27] = -1.0/(p[4]*p[4])*p[13]*x[82]-1.0/(p[4]*p[4])*p[13]*x[83]*2.0; - dydp[28] = -1.0/(p[4]*p[4])*p[12]*x[81]-1.0/(p[4]*p[4])*p[12]*x[82]-1.0/(p[4]*p[4])*p[12]*x[83]*2.0; - dydp[30] = -1.0/(p[4]*p[4])*p[13]*x[91]-1.0/(p[4]*p[4])*p[13]*x[92]*2.0; - dydp[31] = -1.0/(p[4]*p[4])*p[12]*x[90]-1.0/(p[4]*p[4])*p[12]*x[91]-1.0/(p[4]*p[4])*p[12]*x[92]*2.0; - dydp[33] = -1.0/(p[4]*p[4])*p[13]*x[100]-1.0/(p[4]*p[4])*p[13]*x[101]*2.0; - dydp[34] = -1.0/(p[4]*p[4])*p[12]*x[99]-1.0/(p[4]*p[4])*p[12]*x[100]-1.0/(p[4]*p[4])*p[12]*x[101]*2.0; - dydp[36] = -1.0/(p[4]*p[4])*p[13]*x[109]-1.0/(p[4]*p[4])*p[13]*x[110]*2.0; - dydp[37] = -1.0/(p[4]*p[4])*p[12]*x[108]-1.0/(p[4]*p[4])*p[12]*x[109]-1.0/(p[4]*p[4])*p[12]*x[110]*2.0; - dydp[39] = -1.0/(p[4]*p[4])*p[13]*x[118]-1.0/(p[4]*p[4])*p[13]*x[119]*2.0; - dydp[40] = -1.0/(p[4]*p[4])*(x[0]+x[1]+x[2]*2.0)-1.0/(p[4]*p[4])*p[12]*x[117]-1.0/(p[4]*p[4])*p[12]*x[118]-1.0/(p[4]*p[4])*p[12]*x[119]*2.0; - dydp[42] = -1.0/(p[4]*p[4])*(x[1]+x[2]*2.0)-1.0/(p[4]*p[4])*p[13]*x[127]-1.0/(p[4]*p[4])*p[13]*x[128]*2.0; - dydp[43] = -1.0/(p[4]*p[4])*p[12]*x[126]-1.0/(p[4]*p[4])*p[12]*x[127]-1.0/(p[4]*p[4])*p[12]*x[128]*2.0; - dydp[45] = -1.0/(p[4]*p[4])*p[13]*x[136]-1.0/(p[4]*p[4])*p[13]*x[137]*2.0; - dydp[46] = -1.0/(p[4]*p[4])*p[12]*x[135]-1.0/(p[4]*p[4])*p[12]*x[136]-1.0/(p[4]*p[4])*p[12]*x[137]*2.0; - dydp[48] = -1.0/(p[4]*p[4])*p[13]*x[145]-1.0/(p[4]*p[4])*p[13]*x[146]*2.0; - dydp[49] = -1.0/(p[4]*p[4])*p[12]*x[144]-1.0/(p[4]*p[4])*p[12]*x[145]-1.0/(p[4]*p[4])*p[12]*x[146]*2.0; - dydp[51] = -1.0/(p[4]*p[4])*p[13]*x[154]-1.0/(p[4]*p[4])*p[13]*x[155]*2.0; - dydp[52] = -1.0/(p[4]*p[4])*p[12]*x[153]-1.0/(p[4]*p[4])*p[12]*x[154]-1.0/(p[4]*p[4])*p[12]*x[155]*2.0; - - } break; - - case 5: { - dydp[2] = amici::Dspline_pos(4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[20] = amici::DDspline_pos(4,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[23] = amici::DDspline_pos(6,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[26] = amici::DDspline_pos(8,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[29] = amici::DDspline_pos(10,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[32] = amici::DDspline_pos(12,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - - } break; - - case 6: { - dydp[2] = amici::Dspline_pos(6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[20] = amici::DDspline_pos(6,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[23] = amici::DDspline_pos(6,6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[26] = amici::DDspline_pos(8,6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[29] = amici::DDspline_pos(10,6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[32] = amici::DDspline_pos(12,6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - - } break; - - case 7: { - dydp[2] = amici::Dspline_pos(8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[20] = amici::DDspline_pos(8,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[23] = amici::DDspline_pos(8,6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[26] = amici::DDspline_pos(8,8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[29] = amici::DDspline_pos(10,8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[32] = amici::DDspline_pos(12,8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - - } break; - - case 8: { - dydp[2] = amici::Dspline_pos(10,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[20] = amici::DDspline_pos(10,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[23] = amici::DDspline_pos(10,6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[26] = amici::DDspline_pos(10,8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[29] = amici::DDspline_pos(10,10,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[32] = amici::DDspline_pos(12,10,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - - } break; - - case 9: { - dydp[2] = amici::Dspline_pos(12,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[20] = amici::DDspline_pos(12,4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[23] = amici::DDspline_pos(12,6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[26] = amici::DDspline_pos(12,8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[29] = amici::DDspline_pos(12,10,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - dydp[32] = amici::DDspline_pos(12,12,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - - } break; - - case 10: { - dydp[1] = 1.0; - - } break; - - case 11: { - dydp[0] = 1.0; - - } break; - - case 12: { - dydp[1] = (x[0]+x[1]+x[2]*2.0)/p[4]; - dydp[4] = x[9]/p[4]+x[10]/p[4]+(x[11]*2.0)/p[4]; - dydp[7] = x[18]/p[4]+x[19]/p[4]+(x[20]*2.0)/p[4]; - dydp[10] = x[27]/p[4]+x[28]/p[4]+(x[29]*2.0)/p[4]; - dydp[13] = x[36]/p[4]+x[37]/p[4]+(x[38]*2.0)/p[4]; - dydp[16] = -1.0/(p[4]*p[4])*(x[0]+x[1]+x[2]*2.0)+x[45]/p[4]+x[46]/p[4]+(x[47]*2.0)/p[4]; - dydp[19] = x[54]/p[4]+x[55]/p[4]+(x[56]*2.0)/p[4]; - dydp[22] = x[63]/p[4]+x[64]/p[4]+(x[65]*2.0)/p[4]; - dydp[25] = x[72]/p[4]+x[73]/p[4]+(x[74]*2.0)/p[4]; - dydp[28] = x[81]/p[4]+x[82]/p[4]+(x[83]*2.0)/p[4]; - dydp[31] = x[90]/p[4]+x[91]/p[4]+(x[92]*2.0)/p[4]; - dydp[34] = x[99]/p[4]+x[100]/p[4]+(x[101]*2.0)/p[4]; - dydp[37] = x[108]/p[4]+x[109]/p[4]+(x[110]*2.0)/p[4]; - dydp[40] = x[117]/p[4]+x[118]/p[4]+(x[119]*2.0)/p[4]; - dydp[43] = x[126]/p[4]+x[127]/p[4]+(x[128]*2.0)/p[4]; - dydp[46] = x[135]/p[4]+x[136]/p[4]+(x[137]*2.0)/p[4]; - dydp[49] = x[144]/p[4]+x[145]/p[4]+(x[146]*2.0)/p[4]; - dydp[52] = x[153]/p[4]+x[154]/p[4]+(x[155]*2.0)/p[4]; - - } break; - - case 13: { - dydp[0] = (x[1]+x[2]*2.0)/p[4]; - dydp[3] = x[10]/p[4]+(x[11]*2.0)/p[4]; - dydp[6] = x[19]/p[4]+(x[20]*2.0)/p[4]; - dydp[9] = x[28]/p[4]+(x[29]*2.0)/p[4]; - dydp[12] = x[37]/p[4]+(x[38]*2.0)/p[4]; - dydp[15] = x[46]/p[4]+(x[47]*2.0)/p[4]-1.0/(p[4]*p[4])*(x[1]+x[2]*2.0); - dydp[18] = x[55]/p[4]+(x[56]*2.0)/p[4]; - dydp[21] = x[64]/p[4]+(x[65]*2.0)/p[4]; - dydp[24] = x[73]/p[4]+(x[74]*2.0)/p[4]; - dydp[27] = x[82]/p[4]+(x[83]*2.0)/p[4]; - dydp[30] = x[91]/p[4]+(x[92]*2.0)/p[4]; - dydp[33] = x[100]/p[4]+(x[101]*2.0)/p[4]; - dydp[36] = x[109]/p[4]+(x[110]*2.0)/p[4]; - dydp[39] = x[118]/p[4]+(x[119]*2.0)/p[4]; - dydp[42] = x[127]/p[4]+(x[128]*2.0)/p[4]; - dydp[45] = x[136]/p[4]+(x[137]*2.0)/p[4]; - dydp[48] = x[145]/p[4]+(x[146]*2.0)/p[4]; - dydp[51] = x[154]/p[4]+(x[155]*2.0)/p[4]; - - } break; - -} -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/dydx.cpp b/models/model_jakstat_adjoint_o2/dydx.cpp deleted file mode 100644 index ffd7796971..0000000000 --- a/models/model_jakstat_adjoint_o2/dydx.cpp +++ /dev/null @@ -1,119 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void dydx_model_jakstat_adjoint_o2(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - dydx[0+1*54] = p[13]/p[4]; - dydx[0+2*54] = (p[13]*2.0)/p[4]; - dydx[1+0*54] = p[12]/p[4]; - dydx[1+1*54] = p[12]/p[4]; - dydx[1+2*54] = (p[12]*2.0)/p[4]; - dydx[3+10*54] = p[13]/p[4]; - dydx[3+11*54] = (p[13]*2.0)/p[4]; - dydx[4+9*54] = p[12]/p[4]; - dydx[4+10*54] = p[12]/p[4]; - dydx[4+11*54] = (p[12]*2.0)/p[4]; - dydx[6+19*54] = p[13]/p[4]; - dydx[6+20*54] = (p[13]*2.0)/p[4]; - dydx[7+18*54] = p[12]/p[4]; - dydx[7+19*54] = p[12]/p[4]; - dydx[7+20*54] = (p[12]*2.0)/p[4]; - dydx[9+28*54] = p[13]/p[4]; - dydx[9+29*54] = (p[13]*2.0)/p[4]; - dydx[10+27*54] = p[12]/p[4]; - dydx[10+28*54] = p[12]/p[4]; - dydx[10+29*54] = (p[12]*2.0)/p[4]; - dydx[12+37*54] = p[13]/p[4]; - dydx[12+38*54] = (p[13]*2.0)/p[4]; - dydx[13+36*54] = p[12]/p[4]; - dydx[13+37*54] = p[12]/p[4]; - dydx[13+38*54] = (p[12]*2.0)/p[4]; - dydx[15+1*54] = -1.0/(p[4]*p[4])*p[13]; - dydx[15+2*54] = 1.0/(p[4]*p[4])*p[13]*-2.0; - dydx[15+46*54] = p[13]/p[4]; - dydx[15+47*54] = (p[13]*2.0)/p[4]; - dydx[16+0*54] = -1.0/(p[4]*p[4])*p[12]; - dydx[16+1*54] = -1.0/(p[4]*p[4])*p[12]; - dydx[16+2*54] = 1.0/(p[4]*p[4])*p[12]*-2.0; - dydx[16+45*54] = p[12]/p[4]; - dydx[16+46*54] = p[12]/p[4]; - dydx[16+47*54] = (p[12]*2.0)/p[4]; - dydx[18+55*54] = p[13]/p[4]; - dydx[18+56*54] = (p[13]*2.0)/p[4]; - dydx[19+54*54] = p[12]/p[4]; - dydx[19+55*54] = p[12]/p[4]; - dydx[19+56*54] = (p[12]*2.0)/p[4]; - dydx[21+64*54] = p[13]/p[4]; - dydx[21+65*54] = (p[13]*2.0)/p[4]; - dydx[22+63*54] = p[12]/p[4]; - dydx[22+64*54] = p[12]/p[4]; - dydx[22+65*54] = (p[12]*2.0)/p[4]; - dydx[24+73*54] = p[13]/p[4]; - dydx[24+74*54] = (p[13]*2.0)/p[4]; - dydx[25+72*54] = p[12]/p[4]; - dydx[25+73*54] = p[12]/p[4]; - dydx[25+74*54] = (p[12]*2.0)/p[4]; - dydx[27+82*54] = p[13]/p[4]; - dydx[27+83*54] = (p[13]*2.0)/p[4]; - dydx[28+81*54] = p[12]/p[4]; - dydx[28+82*54] = p[12]/p[4]; - dydx[28+83*54] = (p[12]*2.0)/p[4]; - dydx[30+91*54] = p[13]/p[4]; - dydx[30+92*54] = (p[13]*2.0)/p[4]; - dydx[31+90*54] = p[12]/p[4]; - dydx[31+91*54] = p[12]/p[4]; - dydx[31+92*54] = (p[12]*2.0)/p[4]; - dydx[33+100*54] = p[13]/p[4]; - dydx[33+101*54] = (p[13]*2.0)/p[4]; - dydx[34+99*54] = p[12]/p[4]; - dydx[34+100*54] = p[12]/p[4]; - dydx[34+101*54] = (p[12]*2.0)/p[4]; - dydx[36+109*54] = p[13]/p[4]; - dydx[36+110*54] = (p[13]*2.0)/p[4]; - dydx[37+108*54] = p[12]/p[4]; - dydx[37+109*54] = p[12]/p[4]; - dydx[37+110*54] = (p[12]*2.0)/p[4]; - dydx[39+118*54] = p[13]/p[4]; - dydx[39+119*54] = (p[13]*2.0)/p[4]; - dydx[40+0*54] = 1.0/p[4]; - dydx[40+1*54] = 1.0/p[4]; - dydx[40+2*54] = 2.0/p[4]; - dydx[40+117*54] = p[12]/p[4]; - dydx[40+118*54] = p[12]/p[4]; - dydx[40+119*54] = (p[12]*2.0)/p[4]; - dydx[42+1*54] = 1.0/p[4]; - dydx[42+2*54] = 2.0/p[4]; - dydx[42+127*54] = p[13]/p[4]; - dydx[42+128*54] = (p[13]*2.0)/p[4]; - dydx[43+126*54] = p[12]/p[4]; - dydx[43+127*54] = p[12]/p[4]; - dydx[43+128*54] = (p[12]*2.0)/p[4]; - dydx[45+136*54] = p[13]/p[4]; - dydx[45+137*54] = (p[13]*2.0)/p[4]; - dydx[46+135*54] = p[12]/p[4]; - dydx[46+136*54] = p[12]/p[4]; - dydx[46+137*54] = (p[12]*2.0)/p[4]; - dydx[48+145*54] = p[13]/p[4]; - dydx[48+146*54] = (p[13]*2.0)/p[4]; - dydx[49+144*54] = p[12]/p[4]; - dydx[49+145*54] = p[12]/p[4]; - dydx[49+146*54] = (p[12]*2.0)/p[4]; - dydx[51+154*54] = p[13]/p[4]; - dydx[51+155*54] = (p[13]*2.0)/p[4]; - dydx[52+153*54] = p[12]/p[4]; - dydx[52+154*54] = p[12]/p[4]; - dydx[52+155*54] = (p[12]*2.0)/p[4]; -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/main.cpp b/models/model_jakstat_adjoint_o2/main.cpp deleted file mode 100644 index ecdff85a46..0000000000 --- a/models/model_jakstat_adjoint_o2/main.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#include - -#include "wrapfunctions.h" /* model-provided functions */ -#include /* AMICI base functions */ - -template -std::ostream& operator<<(std::ostream& os, std::vector const& v) { - os << "["; - for (typename std::vector::const_iterator ii = v.begin(); ii != v.end(); - ++ii) { - os << " " << *ii; - } - os << "]"; - return os; -} - -/* - * This is a scaffold for a stand-alone AMICI simulation executable - * demonstrating the basic use of the AMICI C++ API. - */ - -int main() { - std::cout << "********************************" << std::endl; - std::cout << "** Running forward simulation **" << std::endl; - std::cout << "********************************" << std::endl << std::endl; - - // Create a model instance - auto model = amici::generic_model::getModel(); - - // Set desired output timepoints - model->setTimepoints({0.0, 1.0, 10.0, 100.0, 1000.0}); - - // Create a solver instance - auto solver = model->getSolver(); - - // Optionally set integration tolerance - solver->setAbsoluteTolerance(1e-16); - solver->setRelativeTolerance(1e-8); - - // Run the simulation using default parameters set during model import - // (can be changed using model->setParameters() or model->setParameterBy*()) - auto rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print observable time course - auto observable_ids = model->getObservableIds(); - std::cout << "Simulated observables for timepoints " << rdata->ts << "\n\n"; - for (int i_observable = 0; i_observable < rdata->ny; ++i_observable) { - std::cout << observable_ids[i_observable] << ":\n\t"; - for (int i_time = 0; i_time < rdata->nt; ++i_time) { - // rdata->y is a flat 2D array in row-major ordering - std::cout << rdata->y[i_time * rdata->ny + i_observable] << " "; - } - std::cout << std::endl << std::endl; - } - - std::cout << std::endl; - std::cout << "**********************************" << std::endl; - std::cout << "** Forward sensitivity analysis **" << std::endl; - std::cout << "**********************************" << std::endl << std::endl; - - // Enable first-order sensitivity analysis - solver->setSensitivityOrder(amici::SensitivityOrder::first); - // Use forward sensitivities - solver->setSensitivityMethod(amici::SensitivityMethod::forward); - - // Run the simulation - rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print state sensitivities sx... - // ... for the first timepoint... - int i_time = 0; - // ... with respect to the first parameter - int i_nplist = 0; - - // get identifiers from model - auto state_ids = model->getStateIds(); - auto parameter_ids = model->getParameterIds(); - - std::cout << "State sensitivities for timepoint " << rdata->ts[i_time] - << std::endl; // nt x nplist x nx - for (int i_state = 0; i_state < rdata->nx; ++i_state) { - std::cout << "\td(" << state_ids[i_state] << ")/d(" - << parameter_ids[model->plist(i_nplist)] << ") = "; - - // rdata->sx is a flat 3D array in row-major ordering - std::cout << rdata->sx - [i_time * rdata->nplist * rdata->nx - + i_nplist * rdata->nx + i_state]; - std::cout << std::endl; - } - - return 0; -} diff --git a/models/model_jakstat_adjoint_o2/model_jakstat_adjoint_o2.h b/models/model_jakstat_adjoint_o2/model_jakstat_adjoint_o2.h deleted file mode 100644 index d7b34417b6..0000000000 --- a/models/model_jakstat_adjoint_o2/model_jakstat_adjoint_o2.h +++ /dev/null @@ -1,216 +0,0 @@ -#ifndef _amici_model_jakstat_adjoint_o2_h -#define _amici_model_jakstat_adjoint_o2_h -/* Generated by amiwrap (R2017b) d69c026f8f8a89a13f1fa1307548f2b8f7045fe1 */ -#include -#include -#include "amici/defines.h" -#include //SUNMatrixContent_Sparse definition -#include "amici/solver_cvodes.h" -#include "amici/model_ode.h" - -namespace amici { - -class Solver; - -namespace model_model_jakstat_adjoint_o2{ - -extern void JSparse_model_jakstat_adjoint_o2(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void Jy_model_jakstat_adjoint_o2(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydsigma_model_jakstat_adjoint_o2(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydy_model_jakstat_adjoint_o2(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dsigmaydp_model_jakstat_adjoint_o2(double *dsigmaydp, const realtype t, const realtype *p, const realtype *k, const realtype *y, const int ip); -extern void dwdp_model_jakstat_adjoint_o2(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static); -extern void dwdx_model_jakstat_adjoint_o2(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static); -extern void dxdotdp_model_jakstat_adjoint_o2(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp); -extern void dydp_model_jakstat_adjoint_o2(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp); -extern void dydx_model_jakstat_adjoint_o2(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void sigmay_model_jakstat_adjoint_o2(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y); -extern void sx0_model_jakstat_adjoint_o2(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip); -extern void w_model_jakstat_adjoint_o2(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static); -extern void x0_model_jakstat_adjoint_o2(realtype *x0, const realtype t, const realtype *p, const realtype *k); -extern void xdot_model_jakstat_adjoint_o2(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); -extern void y_model_jakstat_adjoint_o2(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); - -class Model_model_jakstat_adjoint_o2 : public amici::Model_ODE { -public: - Model_model_jakstat_adjoint_o2() - : amici::Model_ODE( - amici::ModelDimensions( - 162, - 9, - 162, - 9, - 0, - 17, - 2, - 54, - 3, - 0, - 0, - 0, - 0, - 0, - 18, - 10, - 2, - 30, - 0, - 0, - {}, - 0, - 0, - 0, - 384, - 8, - 154 - ), - amici::SimulationParameters( - std::vector(2, 1.0), - std::vector(17, 1.0) - ), - amici::SecondOrderMode::full, - std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{}) - {}; - - amici::Model* clone() const override { return new Model_model_jakstat_adjoint_o2(*this); }; - - std::string getAmiciCommit() const override { return "d69c026f8f8a89a13f1fa1307548f2b8f7045fe1"; }; - - void fJSparse(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - JSparse_model_jakstat_adjoint_o2(JSparse, t, x, p, k, h, w, dwdx); - } - - void fJrz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fJy(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - Jy_model_jakstat_adjoint_o2(nllh, iy, p, k, y, sigmay, my); - } - - void fJz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdJrzdsigma(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fdJrzdz(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fdJydsigma(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydsigma_model_jakstat_adjoint_o2(dJydsigma, iy, p, k, y, sigmay, my); - } - - void fdJydy(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydy_model_jakstat_adjoint_o2(dJydy, iy, p, k, y, sigmay, my); - } - - void fdJzdsigma(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdJzdz(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdeltaqB(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdeltasx(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) override { - } - - void fdeltax(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old) override { - } - - void fdeltaxB(double *deltaxB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdrzdp(double *drzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdrzdx(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void fdsigmaydp(double *dsigmaydp, const realtype t, const realtype *p, const realtype *k, const realtype *y, const int ip) override { - dsigmaydp_model_jakstat_adjoint_o2(dsigmaydp, t, p, k, y, ip); - } - - void fdsigmazdp(double *dsigmazdp, const realtype t, const realtype *p, const realtype *k, const int ip) override { - } - - void fdwdp(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static) override { - dwdp_model_jakstat_adjoint_o2(dwdp, t, x, p, k, h, w, tcl, stcl, spl, sspl, include_static); - } - - void fdwdx(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) override { - dwdx_model_jakstat_adjoint_o2(dwdx, t, x, p, k, h, w, tcl, spl, include_static); - } - - void fdxdotdp(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - dxdotdp_model_jakstat_adjoint_o2(dxdotdp, t, x, p, k, h, ip, w, dwdp); - } - - void fdydp(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - dydp_model_jakstat_adjoint_o2(dydp, t, x, p, k, h, ip, w, dwdp); - } - - void fdydx(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - dydx_model_jakstat_adjoint_o2(dydx, t, x, p, k, h, w, dwdx); - } - - void fdzdp(double *dzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdzdx(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void froot(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl) override { - } - - void frz(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void fsigmay(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) override { - sigmay_model_jakstat_adjoint_o2(sigmay, t, p, k, y); - } - - void fsigmaz(double *sigmaz, const realtype t, const realtype *p, const realtype *k) override { - } - - void fsrz(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - } - - void fstau(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) override { - } - - void fsx0(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) override { - sx0_model_jakstat_adjoint_o2(sx0, t, x0, p, k, ip); - } - - void fsz(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - } - - void fw(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) override { - w_model_jakstat_adjoint_o2(w, t, x, p, k, h, tcl, spl, include_static); - } - - void fx0(realtype *x0, const realtype t, const realtype *p, const realtype *k) override { - x0_model_jakstat_adjoint_o2(x0, t, p, k); - } - - void fxdot(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - xdot_model_jakstat_adjoint_o2(xdot, t, x, p, k, h, w); - } - - void fy(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - y_model_jakstat_adjoint_o2(y, t, x, p, k, h, w); - } - - void fz(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - -}; - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - -#endif /* _amici_model_jakstat_adjoint_o2_h */ diff --git a/models/model_jakstat_adjoint_o2/sigmay.cpp b/models/model_jakstat_adjoint_o2/sigmay.cpp deleted file mode 100644 index 6b162c6f03..0000000000 --- a/models/model_jakstat_adjoint_o2/sigmay.cpp +++ /dev/null @@ -1,25 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void sigmay_model_jakstat_adjoint_o2(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) { - sigmay[0] = p[14]; - sigmay[1] = p[15]; - sigmay[2] = p[16]; - sigmay[17] = 1.0; - sigmay[35] = 1.0; - sigmay[53] = 1.0; -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/swig/CMakeLists.txt b/models/model_jakstat_adjoint_o2/swig/CMakeLists.txt deleted file mode 100644 index 523571c52e..0000000000 --- a/models/model_jakstat_adjoint_o2/swig/CMakeLists.txt +++ /dev/null @@ -1,73 +0,0 @@ -cmake_minimum_required(VERSION 3.15) -cmake_policy(VERSION 3.15...3.27) - -# cmake >=3.27 -if(POLICY CMP0144) - cmake_policy(SET CMP0144 NEW) -endif(POLICY CMP0144) -# cmake >= 3.30 -if(POLICY CMP0167) - cmake_policy(SET CMP0167 NEW) -endif(POLICY CMP0167) - - -if(DEFINED ENV{SWIG}) - set(SWIG_EXECUTABLE $ENV{SWIG}) -endif() - -find_package(SWIG REQUIRED) -include(${SWIG_USE_FILE}) - -if(DEFINED ENV{PYTHON_EXECUTABLE}) - set(Python3_EXECUTABLE $ENV{PYTHON_EXECUTABLE}) -endif() -# We don't need "Interpreter" here, but without that, FindPython3 will -# ignore the Python version selected via $Python3_EXECUTABLE -find_package(Python3 COMPONENTS Interpreter Development) -include_directories(${Python3_INCLUDE_DIRS}) - -set(SWIG_LIBRARY_NAME _${PROJECT_NAME}) -set(CMAKE_SWIG_FLAGS "") -set_source_files_properties(${PROJECT_NAME}.i PROPERTIES CPLUSPLUS ON) - -# swig does not use INTERFACE_INCLUDE_DIRS of linked libraries, so add manually -get_target_property(AMICI_INCLUDE_DIRS Upstream::amici INTERFACE_INCLUDE_DIRECTORIES) -include_directories(${AMICI_INCLUDE_DIRS} .. ${AMICI_INCLUDE_DIRS}/../swig) - -swig_add_library(${SWIG_LIBRARY_NAME} - TYPE MODULE - LANGUAGE python - SOURCES ${PROJECT_NAME}.i) - - -set_target_properties(${SWIG_LIBRARY_NAME} - PROPERTIES - SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE - PREFIX "" -) - -# Python extension suffix -execute_process( - COMMAND ${Python3_EXECUTABLE} -c - "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" - OUTPUT_VARIABLE PY_EXT_SUFFIX OUTPUT_STRIP_TRAILING_WHITESPACE) -if(NOT "${PY_EXT_SUFFIX}" STREQUAL "") - message(STATUS "Python extension suffix is ${PY_EXT_SUFFIX}") - set_target_properties(${SWIG_LIBRARY_NAME} PROPERTIES SUFFIX "${PY_EXT_SUFFIX}" ) -endif() - - -swig_link_libraries(${SWIG_LIBRARY_NAME} - ${Python3_LIBRARIES} - model) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.py - $ DESTINATION .) - -# configure module setup script -set(SETUP_PY_IN ${Amici_DIR}/model_setup.template.py) -set(SETUP_PY_OUT ${CMAKE_CURRENT_BINARY_DIR}/setup.py) - -add_custom_target(install-python - DEPENDS ${SWIG_LIBRARY_NAME} - COMMAND python ${SETUP_PY_OUT} install) diff --git a/models/model_jakstat_adjoint_o2/swig/model_jakstat_adjoint_o2.i b/models/model_jakstat_adjoint_o2/swig/model_jakstat_adjoint_o2.i deleted file mode 100644 index 50591d090c..0000000000 --- a/models/model_jakstat_adjoint_o2/swig/model_jakstat_adjoint_o2.i +++ /dev/null @@ -1,22 +0,0 @@ -%module model_jakstat_adjoint_o2 -%import amici.i -// Add necessary symbols to generated header - -%{ -#include "wrapfunctions.h" -#include "amici/model_ode.h" -#include "amici/model_dae.h" -using namespace amici; -%} - - -// Make model module accessible from the model -%feature("pythonappend") amici::generic_model::getModel %{ - if '.' in __name__: - import sys - val.module = sys.modules['.'.join(__name__.split('.')[:-1])] -%} - - -// Process symbols in header -%include "wrapfunctions.h" diff --git a/models/model_jakstat_adjoint_o2/sx0.cpp b/models/model_jakstat_adjoint_o2/sx0.cpp deleted file mode 100644 index bfc0aa2572..0000000000 --- a/models/model_jakstat_adjoint_o2/sx0.cpp +++ /dev/null @@ -1,26 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void sx0_model_jakstat_adjoint_o2(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) { -switch (ip) { - case 4: { - sx0[0] = 1.0; - - } break; - -} -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/w.cpp b/models/model_jakstat_adjoint_o2/w.cpp deleted file mode 100644 index 827202e139..0000000000 --- a/models/model_jakstat_adjoint_o2/w.cpp +++ /dev/null @@ -1,29 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void w_model_jakstat_adjoint_o2(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) { - w[0] = amici::spline_pos(t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - w[1] = x[1]*x[1]; - w[2] = 1.0/k[0]; - w[3] = 1.0/k[1]; - w[4] = x[3]*2.0; - w[5] = amici::Dspline_pos(4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - w[6] = amici::Dspline_pos(6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - w[7] = amici::Dspline_pos(8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - w[8] = amici::Dspline_pos(10,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - w[9] = amici::Dspline_pos(12,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/wrapfunctions.cpp b/models/model_jakstat_adjoint_o2/wrapfunctions.cpp deleted file mode 100644 index 470a21b4b5..0000000000 --- a/models/model_jakstat_adjoint_o2/wrapfunctions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "amici/model.h" -#include "wrapfunctions.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel() { - return std::unique_ptr( - new amici::model_model_jakstat_adjoint_o2::Model_model_jakstat_adjoint_o2()); -} - -} // namespace generic_model - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/wrapfunctions.h b/models/model_jakstat_adjoint_o2/wrapfunctions.h deleted file mode 100644 index 0bb7f64735..0000000000 --- a/models/model_jakstat_adjoint_o2/wrapfunctions.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _amici_wrapfunctions_h -#define _amici_wrapfunctions_h - -#include "model_jakstat_adjoint_o2.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel(); - -} // namespace generic_model - -} // namespace amici - -#endif /* _amici_wrapfunctions_h */ diff --git a/models/model_jakstat_adjoint_o2/x0.cpp b/models/model_jakstat_adjoint_o2/x0.cpp deleted file mode 100644 index 4ad7ee8cf9..0000000000 --- a/models/model_jakstat_adjoint_o2/x0.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void x0_model_jakstat_adjoint_o2(realtype *x0, const realtype t, const realtype *p, const realtype *k) { - x0[0] = p[4]; - x0[45] = 1.0; -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/xdot.cpp b/models/model_jakstat_adjoint_o2/xdot.cpp deleted file mode 100644 index 50baba5d8b..0000000000 --- a/models/model_jakstat_adjoint_o2/xdot.cpp +++ /dev/null @@ -1,181 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void xdot_model_jakstat_adjoint_o2(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - xdot[0] = w[2]*(k[1]*p[3]*x[8]-k[0]*p[0]*w[0]*x[0]); - xdot[1] = p[1]*w[1]*-2.0+p[0]*w[0]*x[0]; - xdot[2] = p[1]*w[1]-p[2]*x[2]; - xdot[3] = w[3]*(k[0]*p[2]*x[2]-k[1]*p[3]*x[3]); - xdot[4] = p[3]*(w[4]-x[4]); - xdot[5] = p[3]*(x[4]-x[5]); - xdot[6] = p[3]*(x[5]-x[6]); - xdot[7] = p[3]*(x[6]-x[7]); - xdot[8] = p[3]*(x[7]-x[8]); - xdot[9] = -w[0]*x[0]-p[0]*w[0]*x[9]+k[1]*p[3]*w[2]*x[17]; - xdot[10] = w[0]*x[0]+p[0]*w[0]*x[9]-p[1]*x[1]*x[10]*4.0; - xdot[11] = -p[2]*x[11]+p[1]*x[1]*x[10]*2.0; - xdot[12] = -p[3]*x[12]+k[0]*p[2]*w[3]*x[11]; - xdot[13] = p[3]*x[12]*2.0-p[3]*x[13]; - xdot[14] = p[3]*x[13]-p[3]*x[14]; - xdot[15] = p[3]*x[14]-p[3]*x[15]; - xdot[16] = p[3]*x[15]-p[3]*x[16]; - xdot[17] = p[3]*x[16]-p[3]*x[17]; - xdot[18] = -p[0]*w[0]*x[18]+k[1]*p[3]*w[2]*x[26]; - xdot[19] = w[1]*-2.0+p[0]*w[0]*x[18]-p[1]*x[1]*x[19]*4.0; - xdot[20] = w[1]-p[2]*x[20]+p[1]*x[1]*x[19]*2.0; - xdot[21] = -p[3]*x[21]+k[0]*p[2]*w[3]*x[20]; - xdot[22] = p[3]*x[21]*2.0-p[3]*x[22]; - xdot[23] = p[3]*x[22]-p[3]*x[23]; - xdot[24] = p[3]*x[23]-p[3]*x[24]; - xdot[25] = p[3]*x[24]-p[3]*x[25]; - xdot[26] = p[3]*x[25]-p[3]*x[26]; - xdot[27] = -p[0]*w[0]*x[27]+k[1]*p[3]*w[2]*x[35]; - xdot[28] = p[0]*w[0]*x[27]-p[1]*x[1]*x[28]*4.0; - xdot[29] = -x[2]-p[2]*x[29]+p[1]*x[1]*x[28]*2.0; - xdot[30] = -p[3]*x[30]+k[0]*w[3]*x[2]+k[0]*p[2]*w[3]*x[29]; - xdot[31] = p[3]*x[30]*2.0-p[3]*x[31]; - xdot[32] = p[3]*x[31]-p[3]*x[32]; - xdot[33] = p[3]*x[32]-p[3]*x[33]; - xdot[34] = p[3]*x[33]-p[3]*x[34]; - xdot[35] = p[3]*x[34]-p[3]*x[35]; - xdot[36] = k[1]*w[2]*x[8]-p[0]*w[0]*x[36]+k[1]*p[3]*w[2]*x[44]; - xdot[37] = p[0]*w[0]*x[36]-p[1]*x[1]*x[37]*4.0; - xdot[38] = -p[2]*x[38]+p[1]*x[1]*x[37]*2.0; - xdot[39] = -x[3]-p[3]*x[39]+k[0]*p[2]*w[3]*x[38]; - xdot[40] = w[4]-x[4]+p[3]*x[39]*2.0-p[3]*x[40]; - xdot[41] = x[4]-x[5]+p[3]*x[40]-p[3]*x[41]; - xdot[42] = x[5]-x[6]+p[3]*x[41]-p[3]*x[42]; - xdot[43] = x[6]-x[7]+p[3]*x[42]-p[3]*x[43]; - xdot[44] = x[7]-x[8]+p[3]*x[43]-p[3]*x[44]; - xdot[45] = -p[0]*w[0]*x[45]+k[1]*p[3]*w[2]*x[53]; - xdot[46] = p[0]*w[0]*x[45]-p[1]*x[1]*x[46]*4.0; - xdot[47] = -p[2]*x[47]+p[1]*x[1]*x[46]*2.0; - xdot[48] = -p[3]*x[48]+k[0]*p[2]*w[3]*x[47]; - xdot[49] = p[3]*x[48]*2.0-p[3]*x[49]; - xdot[50] = p[3]*x[49]-p[3]*x[50]; - xdot[51] = p[3]*x[50]-p[3]*x[51]; - xdot[52] = p[3]*x[51]-p[3]*x[52]; - xdot[53] = p[3]*x[52]-p[3]*x[53]; - xdot[54] = -p[0]*x[0]*w[5]-p[0]*w[0]*x[54]+k[1]*p[3]*w[2]*x[62]; - xdot[55] = p[0]*x[0]*w[5]+p[0]*w[0]*x[54]-p[1]*x[1]*x[55]*4.0; - xdot[56] = -p[2]*x[56]+p[1]*x[1]*x[55]*2.0; - xdot[57] = -p[3]*x[57]+k[0]*p[2]*w[3]*x[56]; - xdot[58] = p[3]*x[57]*2.0-p[3]*x[58]; - xdot[59] = p[3]*x[58]-p[3]*x[59]; - xdot[60] = p[3]*x[59]-p[3]*x[60]; - xdot[61] = p[3]*x[60]-p[3]*x[61]; - xdot[62] = p[3]*x[61]-p[3]*x[62]; - xdot[63] = -p[0]*x[0]*w[6]-p[0]*w[0]*x[63]+k[1]*p[3]*w[2]*x[71]; - xdot[64] = p[0]*x[0]*w[6]+p[0]*w[0]*x[63]-p[1]*x[1]*x[64]*4.0; - xdot[65] = -p[2]*x[65]+p[1]*x[1]*x[64]*2.0; - xdot[66] = -p[3]*x[66]+k[0]*p[2]*w[3]*x[65]; - xdot[67] = p[3]*x[66]*2.0-p[3]*x[67]; - xdot[68] = p[3]*x[67]-p[3]*x[68]; - xdot[69] = p[3]*x[68]-p[3]*x[69]; - xdot[70] = p[3]*x[69]-p[3]*x[70]; - xdot[71] = p[3]*x[70]-p[3]*x[71]; - xdot[72] = -p[0]*x[0]*w[7]-p[0]*w[0]*x[72]+k[1]*p[3]*w[2]*x[80]; - xdot[73] = p[0]*x[0]*w[7]+p[0]*w[0]*x[72]-p[1]*x[1]*x[73]*4.0; - xdot[74] = -p[2]*x[74]+p[1]*x[1]*x[73]*2.0; - xdot[75] = -p[3]*x[75]+k[0]*p[2]*w[3]*x[74]; - xdot[76] = p[3]*x[75]*2.0-p[3]*x[76]; - xdot[77] = p[3]*x[76]-p[3]*x[77]; - xdot[78] = p[3]*x[77]-p[3]*x[78]; - xdot[79] = p[3]*x[78]-p[3]*x[79]; - xdot[80] = p[3]*x[79]-p[3]*x[80]; - xdot[81] = -p[0]*x[0]*w[8]-p[0]*w[0]*x[81]+k[1]*p[3]*w[2]*x[89]; - xdot[82] = p[0]*x[0]*w[8]+p[0]*w[0]*x[81]-p[1]*x[1]*x[82]*4.0; - xdot[83] = -p[2]*x[83]+p[1]*x[1]*x[82]*2.0; - xdot[84] = -p[3]*x[84]+k[0]*p[2]*w[3]*x[83]; - xdot[85] = p[3]*x[84]*2.0-p[3]*x[85]; - xdot[86] = p[3]*x[85]-p[3]*x[86]; - xdot[87] = p[3]*x[86]-p[3]*x[87]; - xdot[88] = p[3]*x[87]-p[3]*x[88]; - xdot[89] = p[3]*x[88]-p[3]*x[89]; - xdot[90] = -p[0]*x[0]*w[9]-p[0]*w[0]*x[90]+k[1]*p[3]*w[2]*x[98]; - xdot[91] = p[0]*x[0]*w[9]+p[0]*w[0]*x[90]-p[1]*x[1]*x[91]*4.0; - xdot[92] = -p[2]*x[92]+p[1]*x[1]*x[91]*2.0; - xdot[93] = -p[3]*x[93]+k[0]*p[2]*w[3]*x[92]; - xdot[94] = p[3]*x[93]*2.0-p[3]*x[94]; - xdot[95] = p[3]*x[94]-p[3]*x[95]; - xdot[96] = p[3]*x[95]-p[3]*x[96]; - xdot[97] = p[3]*x[96]-p[3]*x[97]; - xdot[98] = p[3]*x[97]-p[3]*x[98]; - xdot[99] = -p[0]*w[0]*x[99]+k[1]*p[3]*w[2]*x[107]; - xdot[100] = p[0]*w[0]*x[99]-p[1]*x[1]*x[100]*4.0; - xdot[101] = -p[2]*x[101]+p[1]*x[1]*x[100]*2.0; - xdot[102] = -p[3]*x[102]+k[0]*p[2]*w[3]*x[101]; - xdot[103] = p[3]*x[102]*2.0-p[3]*x[103]; - xdot[104] = p[3]*x[103]-p[3]*x[104]; - xdot[105] = p[3]*x[104]-p[3]*x[105]; - xdot[106] = p[3]*x[105]-p[3]*x[106]; - xdot[107] = p[3]*x[106]-p[3]*x[107]; - xdot[108] = -p[0]*w[0]*x[108]+k[1]*p[3]*w[2]*x[116]; - xdot[109] = p[0]*w[0]*x[108]-p[1]*x[1]*x[109]*4.0; - xdot[110] = -p[2]*x[110]+p[1]*x[1]*x[109]*2.0; - xdot[111] = -p[3]*x[111]+k[0]*p[2]*w[3]*x[110]; - xdot[112] = p[3]*x[111]*2.0-p[3]*x[112]; - xdot[113] = p[3]*x[112]-p[3]*x[113]; - xdot[114] = p[3]*x[113]-p[3]*x[114]; - xdot[115] = p[3]*x[114]-p[3]*x[115]; - xdot[116] = p[3]*x[115]-p[3]*x[116]; - xdot[117] = -p[0]*w[0]*x[117]+k[1]*p[3]*w[2]*x[125]; - xdot[118] = p[0]*w[0]*x[117]-p[1]*x[1]*x[118]*4.0; - xdot[119] = -p[2]*x[119]+p[1]*x[1]*x[118]*2.0; - xdot[120] = -p[3]*x[120]+k[0]*p[2]*w[3]*x[119]; - xdot[121] = p[3]*x[120]*2.0-p[3]*x[121]; - xdot[122] = p[3]*x[121]-p[3]*x[122]; - xdot[123] = p[3]*x[122]-p[3]*x[123]; - xdot[124] = p[3]*x[123]-p[3]*x[124]; - xdot[125] = p[3]*x[124]-p[3]*x[125]; - xdot[126] = -p[0]*w[0]*x[126]+k[1]*p[3]*w[2]*x[134]; - xdot[127] = p[0]*w[0]*x[126]-p[1]*x[1]*x[127]*4.0; - xdot[128] = -p[2]*x[128]+p[1]*x[1]*x[127]*2.0; - xdot[129] = -p[3]*x[129]+k[0]*p[2]*w[3]*x[128]; - xdot[130] = p[3]*x[129]*2.0-p[3]*x[130]; - xdot[131] = p[3]*x[130]-p[3]*x[131]; - xdot[132] = p[3]*x[131]-p[3]*x[132]; - xdot[133] = p[3]*x[132]-p[3]*x[133]; - xdot[134] = p[3]*x[133]-p[3]*x[134]; - xdot[135] = -p[0]*w[0]*x[135]+k[1]*p[3]*w[2]*x[143]; - xdot[136] = p[0]*w[0]*x[135]-p[1]*x[1]*x[136]*4.0; - xdot[137] = -p[2]*x[137]+p[1]*x[1]*x[136]*2.0; - xdot[138] = -p[3]*x[138]+k[0]*p[2]*w[3]*x[137]; - xdot[139] = p[3]*x[138]*2.0-p[3]*x[139]; - xdot[140] = p[3]*x[139]-p[3]*x[140]; - xdot[141] = p[3]*x[140]-p[3]*x[141]; - xdot[142] = p[3]*x[141]-p[3]*x[142]; - xdot[143] = p[3]*x[142]-p[3]*x[143]; - xdot[144] = -p[0]*w[0]*x[144]+k[1]*p[3]*w[2]*x[152]; - xdot[145] = p[0]*w[0]*x[144]-p[1]*x[1]*x[145]*4.0; - xdot[146] = -p[2]*x[146]+p[1]*x[1]*x[145]*2.0; - xdot[147] = -p[3]*x[147]+k[0]*p[2]*w[3]*x[146]; - xdot[148] = p[3]*x[147]*2.0-p[3]*x[148]; - xdot[149] = p[3]*x[148]-p[3]*x[149]; - xdot[150] = p[3]*x[149]-p[3]*x[150]; - xdot[151] = p[3]*x[150]-p[3]*x[151]; - xdot[152] = p[3]*x[151]-p[3]*x[152]; - xdot[153] = -p[0]*w[0]*x[153]+k[1]*p[3]*w[2]*x[161]; - xdot[154] = p[0]*w[0]*x[153]-p[1]*x[1]*x[154]*4.0; - xdot[155] = -p[2]*x[155]+p[1]*x[1]*x[154]*2.0; - xdot[156] = -p[3]*x[156]+k[0]*p[2]*w[3]*x[155]; - xdot[157] = p[3]*x[156]*2.0-p[3]*x[157]; - xdot[158] = p[3]*x[157]-p[3]*x[158]; - xdot[159] = p[3]*x[158]-p[3]*x[159]; - xdot[160] = p[3]*x[159]-p[3]*x[160]; - xdot[161] = p[3]*x[160]-p[3]*x[161]; -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_jakstat_adjoint_o2/y.cpp b/models/model_jakstat_adjoint_o2/y.cpp deleted file mode 100644 index 17e3d938bc..0000000000 --- a/models/model_jakstat_adjoint_o2/y.cpp +++ /dev/null @@ -1,61 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_jakstat_adjoint_o2{ - -void y_model_jakstat_adjoint_o2(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - y[0] = p[11]+(p[13]*(x[1]+x[2]*2.0))/p[4]; - y[1] = p[10]+(p[12]*(x[0]+x[1]+x[2]*2.0))/p[4]; - y[2] = amici::spline_pos(t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - y[3] = (p[13]*x[10])/p[4]+(p[13]*x[11]*2.0)/p[4]; - y[4] = (p[12]*x[9])/p[4]+(p[12]*x[10])/p[4]+(p[12]*x[11]*2.0)/p[4]; - y[6] = (p[13]*x[19])/p[4]+(p[13]*x[20]*2.0)/p[4]; - y[7] = (p[12]*x[18])/p[4]+(p[12]*x[19])/p[4]+(p[12]*x[20]*2.0)/p[4]; - y[9] = (p[13]*x[28])/p[4]+(p[13]*x[29]*2.0)/p[4]; - y[10] = (p[12]*x[27])/p[4]+(p[12]*x[28])/p[4]+(p[12]*x[29]*2.0)/p[4]; - y[12] = (p[13]*x[37])/p[4]+(p[13]*x[38]*2.0)/p[4]; - y[13] = (p[12]*x[36])/p[4]+(p[12]*x[37])/p[4]+(p[12]*x[38]*2.0)/p[4]; - y[15] = (p[13]*x[46])/p[4]+(p[13]*x[47]*2.0)/p[4]-1.0/(p[4]*p[4])*p[13]*(x[1]+x[2]*2.0); - y[16] = (p[12]*x[45])/p[4]+(p[12]*x[46])/p[4]+(p[12]*x[47]*2.0)/p[4]-1.0/(p[4]*p[4])*p[12]*(x[0]+x[1]+x[2]*2.0); - y[18] = (p[13]*x[55])/p[4]+(p[13]*x[56]*2.0)/p[4]; - y[19] = (p[12]*x[54])/p[4]+(p[12]*x[55])/p[4]+(p[12]*x[56]*2.0)/p[4]; - y[20] = amici::Dspline_pos(4,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - y[21] = (p[13]*x[64])/p[4]+(p[13]*x[65]*2.0)/p[4]; - y[22] = (p[12]*x[63])/p[4]+(p[12]*x[64])/p[4]+(p[12]*x[65]*2.0)/p[4]; - y[23] = amici::Dspline_pos(6,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - y[24] = (p[13]*x[73])/p[4]+(p[13]*x[74]*2.0)/p[4]; - y[25] = (p[12]*x[72])/p[4]+(p[12]*x[73])/p[4]+(p[12]*x[74]*2.0)/p[4]; - y[26] = amici::Dspline_pos(8,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - y[27] = (p[13]*x[82])/p[4]+(p[13]*x[83]*2.0)/p[4]; - y[28] = (p[12]*x[81])/p[4]+(p[12]*x[82])/p[4]+(p[12]*x[83]*2.0)/p[4]; - y[29] = amici::Dspline_pos(10,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - y[30] = (p[13]*x[91])/p[4]+(p[13]*x[92]*2.0)/p[4]; - y[31] = (p[12]*x[90])/p[4]+(p[12]*x[91])/p[4]+(p[12]*x[92]*2.0)/p[4]; - y[32] = amici::Dspline_pos(12,t,5,0.0,p[5],5.0,p[6],1.0E1,p[7],2.0E1,p[8],6.0E1,p[9],0.0,0.0); - y[33] = (p[13]*x[100])/p[4]+(p[13]*x[101]*2.0)/p[4]; - y[34] = (p[12]*x[99])/p[4]+(p[12]*x[100])/p[4]+(p[12]*x[101]*2.0)/p[4]+1.0; - y[36] = (p[13]*x[109])/p[4]+(p[13]*x[110]*2.0)/p[4]+1.0; - y[37] = (p[12]*x[108])/p[4]+(p[12]*x[109])/p[4]+(p[12]*x[110]*2.0)/p[4]; - y[39] = (p[13]*x[118])/p[4]+(p[13]*x[119]*2.0)/p[4]; - y[40] = (x[0]+x[1]+x[2]*2.0)/p[4]+(p[12]*x[117])/p[4]+(p[12]*x[118])/p[4]+(p[12]*x[119]*2.0)/p[4]; - y[42] = (x[1]+x[2]*2.0)/p[4]+(p[13]*x[127])/p[4]+(p[13]*x[128]*2.0)/p[4]; - y[43] = (p[12]*x[126])/p[4]+(p[12]*x[127])/p[4]+(p[12]*x[128]*2.0)/p[4]; - y[45] = (p[13]*x[136])/p[4]+(p[13]*x[137]*2.0)/p[4]; - y[46] = (p[12]*x[135])/p[4]+(p[12]*x[136])/p[4]+(p[12]*x[137]*2.0)/p[4]; - y[48] = (p[13]*x[145])/p[4]+(p[13]*x[146]*2.0)/p[4]; - y[49] = (p[12]*x[144])/p[4]+(p[12]*x[145])/p[4]+(p[12]*x[146]*2.0)/p[4]; - y[51] = (p[13]*x[154])/p[4]+(p[13]*x[155]*2.0)/p[4]; - y[52] = (p[12]*x[153])/p[4]+(p[12]*x[154])/p[4]+(p[12]*x[155]*2.0)/p[4]; -} - -} // namespace model_model_jakstat_adjoint_o2 - -} // namespace amici - diff --git a/models/model_nested_events/CMakeLists.txt b/models/model_nested_events/CMakeLists.txt deleted file mode 100644 index 0dc2b916bb..0000000000 --- a/models/model_nested_events/CMakeLists.txt +++ /dev/null @@ -1,121 +0,0 @@ -# Build AMICI model -cmake_minimum_required(VERSION 3.22) -cmake_policy(VERSION 3.22...3.30) - -project(model_nested_events) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -include(CheckCXXCompilerFlag) -set(MY_CXX_FLAGS -Wall -Wno-unused-function -Wno-unused-variable) -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - list(APPEND MY_CXX_FLAGS -Wno-unused-but-set-variable) -endif() -foreach(flag ${MY_CXX_FLAGS}) - unset(CUR_FLAG_SUPPORTED CACHE) - check_cxx_compiler_flag(${flag} CUR_FLAG_SUPPORTED) - if(${CUR_FLAG_SUPPORTED}) - string(APPEND CMAKE_CXX_FLAGS " ${flag}") - endif() -endforeach() - -if(DEFINED ENV{AMICI_CXXFLAGS}) - message(STATUS "Appending flags from AMICI_CXXFLAGS: $ENV{AMICI_CXXFLAGS}") - add_compile_options("$ENV{AMICI_CXXFLAGS}") -endif() -if(DEFINED ENV{AMICI_LDFLAGS}) - message(STATUS "Appending flags from AMICI_LDFLAGS: $ENV{AMICI_LDFLAGS}") - link_libraries("$ENV{AMICI_LDFLAGS}") -endif() - -find_package(Amici REQUIRED HINTS - ${CMAKE_CURRENT_LIST_DIR}/../../build) -message(STATUS "Found AMICI ${Amici_DIR}") -set_target_properties(Upstream::amici PROPERTIES - MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo;Release; - MAP_IMPORTED_CONFIG_RELEASE Release - MAP_IMPORTED_CONFIG_DEBUG Debug;RelWithDebInfo;) - -# Debug build? -if("$ENV{ENABLE_AMICI_DEBUGGING}" OR "$ENV{ENABLE_GCOV_COVERAGE}") - add_compile_options(-UNDEBUG) - if(MSVC) - add_compile_options(-DEBUG) - else() - add_compile_options(-O0 -g) - endif() -endif() - -# coverage options -if($ENV{ENABLE_GCOV_COVERAGE}) - string(APPEND CMAKE_CXX_FLAGS_DEBUG " --coverage") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " --coverage") -endif() - -set(MODEL_DIR ${CMAKE_CURRENT_LIST_DIR}) - -set(SRC_LIST_LIB ${MODEL_DIR}/JSparse.cpp -${MODEL_DIR}/Jy.cpp -${MODEL_DIR}/dJydsigma.cpp -${MODEL_DIR}/dJydy.cpp -${MODEL_DIR}/deltaqB.cpp -${MODEL_DIR}/deltasx.cpp -${MODEL_DIR}/deltax.cpp -${MODEL_DIR}/dxdotdp.cpp -${MODEL_DIR}/dydx.cpp -${MODEL_DIR}/root.cpp -${MODEL_DIR}/sigmay.cpp -${MODEL_DIR}/stau.cpp -${MODEL_DIR}/sx0.cpp -${MODEL_DIR}/x0.cpp -${MODEL_DIR}/xdot.cpp -${MODEL_DIR}/y.cpp - ${MODEL_DIR}/wrapfunctions.cpp) - -add_library(${PROJECT_NAME} ${SRC_LIST_LIB}) -add_library(model ALIAS ${PROJECT_NAME}) - -# Some special functions require boost -# -# TODO: set some flag during code generation whether the given model requires -# boost. for now, try to find it, add include directories and link against it. -# let the compiler/linker error if it is required but not found -find_package(Boost) - -target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") - -target_link_libraries( - ${PROJECT_NAME} - PUBLIC Upstream::amici - PRIVATE $<$:Boost::boost>) - -if(NOT "${AMICI_PYTHON_BUILD_EXT_ONLY}") - set(SRC_LIST_EXE main.cpp) - add_executable(simulate_${PROJECT_NAME} ${SRC_LIST_EXE}) - target_link_libraries(simulate_${PROJECT_NAME} ${PROJECT_NAME}) -endif() - -# SWIG -option(ENABLE_SWIG "Build swig/python library?" ON) -if(ENABLE_SWIG) - add_subdirectory(swig) -endif() - -# -include(GNUInstallDirs) -install( - TARGETS ${PROJECT_NAME} - EXPORT ${PROJECT_NAME}Targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - INCLUDES - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -export( - EXPORT ${PROJECT_NAME}Targets - FILE ${PROJECT_NAME}Config.cmake - NAMESPACE Upstream::) -# diff --git a/models/model_nested_events/JSparse.cpp b/models/model_nested_events/JSparse.cpp deleted file mode 100644 index 9db399af7c..0000000000 --- a/models/model_nested_events/JSparse.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -#include //SUNMatrixContent_Sparse definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void JSparse_model_nested_events(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - JSparse->indexvals[0] = 0; - JSparse->indexptrs[0] = 0; - JSparse->indexptrs[1] = 1; - JSparse->data[0] = -p[4]-p[3]*(h[0]-1.0); -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/Jy.cpp b/models/model_nested_events/Jy.cpp deleted file mode 100644 index fe34fe3a19..0000000000 --- a/models/model_nested_events/Jy.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void Jy_model_nested_events(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - nllh[0] = amici::log((sigmay[0]*sigmay[0])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*5.0E-1; - break; -} -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/dJydsigma.cpp b/models/model_nested_events/dJydsigma.cpp deleted file mode 100644 index 5bcf4e5faa..0000000000 --- a/models/model_nested_events/dJydsigma.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void dJydsigma_model_nested_events(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydsigma[0] = 1.0/(sigmay[0]*sigmay[0]*sigmay[0])*pow(my[0]-y[0]*1.0,2.0)*-1.0+1.0/sigmay[0]; - break; -} -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/dJydy.cpp b/models/model_nested_events/dJydy.cpp deleted file mode 100644 index 1b5d06f40f..0000000000 --- a/models/model_nested_events/dJydy.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void dJydy_model_nested_events(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydy[0] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/deltaqB.cpp b/models/model_nested_events/deltaqB.cpp deleted file mode 100644 index e1e1571b52..0000000000 --- a/models/model_nested_events/deltaqB.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void deltaqB_model_nested_events(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) { -switch (ip) { -} -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/deltasx.cpp b/models/model_nested_events/deltasx.cpp deleted file mode 100644 index 15b55bb525..0000000000 --- a/models/model_nested_events/deltasx.cpp +++ /dev/null @@ -1,151 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void deltasx_model_nested_events(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 1: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 2: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 3: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 1: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 2: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0])+1.0; - - } break; - - case 3: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0])+1.0; - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 1: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 2: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 3: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 1: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 2: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 3: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - } - - } break; - - case 4: { - switch(ie) { - case 0: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 1: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 2: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - case 3: { - deltasx[0] = -stau[0]*(xdot[0]-xdot_old[0]); - - } break; - - } - - } break; - -} -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/deltax.cpp b/models/model_nested_events/deltax.cpp deleted file mode 100644 index ec62e695a1..0000000000 --- a/models/model_nested_events/deltax.cpp +++ /dev/null @@ -1,31 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void deltax_model_nested_events(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old) { - switch(ie) { - case 2: { - deltax[0] = p[1]; - - } break; - - case 3: { - deltax[0] = p[1]; - - } break; - - } -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/dxdotdp.cpp b/models/model_nested_events/dxdotdp.cpp deleted file mode 100644 index 7d073f0701..0000000000 --- a/models/model_nested_events/dxdotdp.cpp +++ /dev/null @@ -1,31 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void dxdotdp_model_nested_events(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) { -switch (ip) { - case 3: { - dxdotdp[0] = -x[0]*(h[0]-1.0); - - } break; - - case 4: { - dxdotdp[0] = -x[0]; - - } break; - -} -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/dydx.cpp b/models/model_nested_events/dydx.cpp deleted file mode 100644 index add7a46983..0000000000 --- a/models/model_nested_events/dydx.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void dydx_model_nested_events(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - dydx[0] = 1.0; -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/main.cpp b/models/model_nested_events/main.cpp deleted file mode 100644 index ecdff85a46..0000000000 --- a/models/model_nested_events/main.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#include - -#include "wrapfunctions.h" /* model-provided functions */ -#include /* AMICI base functions */ - -template -std::ostream& operator<<(std::ostream& os, std::vector const& v) { - os << "["; - for (typename std::vector::const_iterator ii = v.begin(); ii != v.end(); - ++ii) { - os << " " << *ii; - } - os << "]"; - return os; -} - -/* - * This is a scaffold for a stand-alone AMICI simulation executable - * demonstrating the basic use of the AMICI C++ API. - */ - -int main() { - std::cout << "********************************" << std::endl; - std::cout << "** Running forward simulation **" << std::endl; - std::cout << "********************************" << std::endl << std::endl; - - // Create a model instance - auto model = amici::generic_model::getModel(); - - // Set desired output timepoints - model->setTimepoints({0.0, 1.0, 10.0, 100.0, 1000.0}); - - // Create a solver instance - auto solver = model->getSolver(); - - // Optionally set integration tolerance - solver->setAbsoluteTolerance(1e-16); - solver->setRelativeTolerance(1e-8); - - // Run the simulation using default parameters set during model import - // (can be changed using model->setParameters() or model->setParameterBy*()) - auto rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print observable time course - auto observable_ids = model->getObservableIds(); - std::cout << "Simulated observables for timepoints " << rdata->ts << "\n\n"; - for (int i_observable = 0; i_observable < rdata->ny; ++i_observable) { - std::cout << observable_ids[i_observable] << ":\n\t"; - for (int i_time = 0; i_time < rdata->nt; ++i_time) { - // rdata->y is a flat 2D array in row-major ordering - std::cout << rdata->y[i_time * rdata->ny + i_observable] << " "; - } - std::cout << std::endl << std::endl; - } - - std::cout << std::endl; - std::cout << "**********************************" << std::endl; - std::cout << "** Forward sensitivity analysis **" << std::endl; - std::cout << "**********************************" << std::endl << std::endl; - - // Enable first-order sensitivity analysis - solver->setSensitivityOrder(amici::SensitivityOrder::first); - // Use forward sensitivities - solver->setSensitivityMethod(amici::SensitivityMethod::forward); - - // Run the simulation - rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print state sensitivities sx... - // ... for the first timepoint... - int i_time = 0; - // ... with respect to the first parameter - int i_nplist = 0; - - // get identifiers from model - auto state_ids = model->getStateIds(); - auto parameter_ids = model->getParameterIds(); - - std::cout << "State sensitivities for timepoint " << rdata->ts[i_time] - << std::endl; // nt x nplist x nx - for (int i_state = 0; i_state < rdata->nx; ++i_state) { - std::cout << "\td(" << state_ids[i_state] << ")/d(" - << parameter_ids[model->plist(i_nplist)] << ") = "; - - // rdata->sx is a flat 3D array in row-major ordering - std::cout << rdata->sx - [i_time * rdata->nplist * rdata->nx - + i_nplist * rdata->nx + i_state]; - std::cout << std::endl; - } - - return 0; -} diff --git a/models/model_nested_events/model_nested_events.h b/models/model_nested_events/model_nested_events.h deleted file mode 100644 index 0ca111adc7..0000000000 --- a/models/model_nested_events/model_nested_events.h +++ /dev/null @@ -1,216 +0,0 @@ -#ifndef _amici_model_nested_events_h -#define _amici_model_nested_events_h -/* Generated by amiwrap (R2017b) d69c026f8f8a89a13f1fa1307548f2b8f7045fe1 */ -#include -#include -#include "amici/defines.h" -#include //SUNMatrixContent_Sparse definition -#include "amici/solver_cvodes.h" -#include "amici/model_ode.h" - -namespace amici { - -class Solver; - -namespace model_model_nested_events{ - -extern void JSparse_model_nested_events(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void Jy_model_nested_events(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydsigma_model_nested_events(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydy_model_nested_events(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void deltaqB_model_nested_events(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB); -extern void deltasx_model_nested_events(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl); -extern void deltax_model_nested_events(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old); -extern void dxdotdp_model_nested_events(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp); -extern void dydx_model_nested_events(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void root_model_nested_events(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl); -extern void sigmay_model_nested_events(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y); -extern void stau_model_nested_events(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie); -extern void sx0_model_nested_events(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip); -extern void x0_model_nested_events(realtype *x0, const realtype t, const realtype *p, const realtype *k); -extern void xdot_model_nested_events(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); -extern void y_model_nested_events(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); - -class Model_model_nested_events : public amici::Model_ODE { -public: - Model_model_nested_events() - : amici::Model_ODE( - amici::ModelDimensions( - 1, - 1, - 1, - 1, - 0, - 5, - 0, - 1, - 1, - 0, - 0, - 4, - 4, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - {}, - 0, - 0, - 0, - 1, - 0, - 0 - ), - amici::SimulationParameters( - std::vector(0, 1.0), - std::vector(5, 1.0) - ), - amici::SecondOrderMode::none, - std::vector{0}, - std::vector{}) - {}; - - amici::Model* clone() const override { return new Model_model_nested_events(*this); }; - - std::string getAmiciCommit() const override { return "d69c026f8f8a89a13f1fa1307548f2b8f7045fe1"; }; - - void fJSparse(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - JSparse_model_nested_events(JSparse, t, x, p, k, h, w, dwdx); - } - - void fJrz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fJy(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - Jy_model_nested_events(nllh, iy, p, k, y, sigmay, my); - } - - void fJz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdJrzdsigma(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fdJrzdz(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fdJydsigma(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydsigma_model_nested_events(dJydsigma, iy, p, k, y, sigmay, my); - } - - void fdJydy(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydy_model_nested_events(dJydy, iy, p, k, y, sigmay, my); - } - - void fdJzdsigma(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdJzdz(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdeltaqB(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - deltaqB_model_nested_events(deltaqB, t, x, p, k, h, ip, ie, xdot, xdot_old, xB); - } - - void fdeltasx(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) override { - deltasx_model_nested_events(deltasx, t, x, p, k, h, w, ip, ie, xdot, xdot_old, sx, stau, tcl); - } - - void fdeltax(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old) override { - deltax_model_nested_events(deltax, t, x, p, k, h, ie, xdot, xdot_old); - } - - void fdeltaxB(double *deltaxB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdrzdp(double *drzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdrzdx(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void fdsigmaydp(double *dsigmaydp, const realtype t, const realtype *p, const realtype *k, const realtype *y, const int ip) override { - } - - void fdsigmazdp(double *dsigmazdp, const realtype t, const realtype *p, const realtype *k, const int ip) override { - } - - void fdwdp(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static) override { - } - - void fdwdx(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) override { - } - - void fdxdotdp(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - dxdotdp_model_nested_events(dxdotdp, t, x, p, k, h, ip, w, dwdp); - } - - void fdydp(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - } - - void fdydx(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - dydx_model_nested_events(dydx, t, x, p, k, h, w, dwdx); - } - - void fdzdp(double *dzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdzdx(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void froot(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl) override { - root_model_nested_events(root, t, x, p, k, h, tcl); - } - - void frz(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void fsigmay(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) override { - sigmay_model_nested_events(sigmay, t, p, k, y); - } - - void fsigmaz(double *sigmaz, const realtype t, const realtype *p, const realtype *k) override { - } - - void fsrz(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - } - - void fstau(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) override { - stau_model_nested_events(stau, t, x, p, k, h, tcl, sx, ip, ie); - } - - void fsx0(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) override { - sx0_model_nested_events(sx0, t, x0, p, k, ip); - } - - void fsz(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - } - - void fw(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) override { - } - - void fx0(realtype *x0, const realtype t, const realtype *p, const realtype *k) override { - x0_model_nested_events(x0, t, p, k); - } - - void fxdot(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - xdot_model_nested_events(xdot, t, x, p, k, h, w); - } - - void fy(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - y_model_nested_events(y, t, x, p, k, h, w); - } - - void fz(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - -}; - -} // namespace model_model_nested_events - -} // namespace amici - -#endif /* _amici_model_nested_events_h */ diff --git a/models/model_nested_events/rebuild_model_nested_events.m b/models/model_nested_events/rebuild_model_nested_events.m deleted file mode 100644 index 38f3e1b9cc..0000000000 --- a/models/model_nested_events/rebuild_model_nested_events.m +++ /dev/null @@ -1,5 +0,0 @@ -function rebuild_model_nested_events() -modelName = 'model_nested_events'; -amimodel.compileAndLinkModel(modelName, '', [], [], [], []); -amimodel.generateMatlabWrapper(1, 1, 5, 0, 0, 0, [], ['simulate_' modelName '.m'], 'model_nested_events', 'log10', 1, 1); -end diff --git a/models/model_nested_events/root.cpp b/models/model_nested_events/root.cpp deleted file mode 100644 index 0cf33d2d57..0000000000 --- a/models/model_nested_events/root.cpp +++ /dev/null @@ -1,23 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void root_model_nested_events(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl) { - root[0] = -x[0]+1.0; - root[1] = x[0]-1.0; - root[2] = t-p[2]; - root[3] = -t+p[2]; -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/sigmay.cpp b/models/model_nested_events/sigmay.cpp deleted file mode 100644 index 0f928ca69a..0000000000 --- a/models/model_nested_events/sigmay.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void sigmay_model_nested_events(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) { - sigmay[0] = 1.0; -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/stau.cpp b/models/model_nested_events/stau.cpp deleted file mode 100644 index bfaad2f012..0000000000 --- a/models/model_nested_events/stau.cpp +++ /dev/null @@ -1,143 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void stau_model_nested_events(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - stau[0] = sx[0]/(p[4]*x[0]+p[3]*x[0]*(h[0]-1.0)); - - } break; - - case 1: { - stau[0] = sx[0]/(p[4]*x[0]+p[3]*x[0]*(h[0]-1.0)); - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - stau[0] = sx[0]/(p[4]*x[0]+p[3]*x[0]*(h[0]-1.0)); - - } break; - - case 1: { - stau[0] = sx[0]/(p[4]*x[0]+p[3]*x[0]*(h[0]-1.0)); - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - stau[0] = sx[0]/(p[4]*x[0]+p[3]*x[0]*(h[0]-1.0)); - - } break; - - case 1: { - stau[0] = sx[0]/(p[4]*x[0]+p[3]*x[0]*(h[0]-1.0)); - - } break; - - case 2: { - stau[0] = 1.0; - - } break; - - case 3: { - stau[0] = 1.0; - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - stau[0] = sx[0]/(p[4]*x[0]+p[3]*x[0]*(h[0]-1.0)); - - } break; - - case 1: { - stau[0] = sx[0]/(p[4]*x[0]+p[3]*x[0]*(h[0]-1.0)); - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - } - - } break; - - case 4: { - switch(ie) { - case 0: { - stau[0] = sx[0]/(p[4]*x[0]+p[3]*x[0]*(h[0]-1.0)); - - } break; - - case 1: { - stau[0] = sx[0]/(p[4]*x[0]+p[3]*x[0]*(h[0]-1.0)); - - } break; - - case 2: { - - } break; - - case 3: { - - } break; - - } - - } break; - -} -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/swig/CMakeLists.txt b/models/model_nested_events/swig/CMakeLists.txt deleted file mode 100644 index 523571c52e..0000000000 --- a/models/model_nested_events/swig/CMakeLists.txt +++ /dev/null @@ -1,73 +0,0 @@ -cmake_minimum_required(VERSION 3.15) -cmake_policy(VERSION 3.15...3.27) - -# cmake >=3.27 -if(POLICY CMP0144) - cmake_policy(SET CMP0144 NEW) -endif(POLICY CMP0144) -# cmake >= 3.30 -if(POLICY CMP0167) - cmake_policy(SET CMP0167 NEW) -endif(POLICY CMP0167) - - -if(DEFINED ENV{SWIG}) - set(SWIG_EXECUTABLE $ENV{SWIG}) -endif() - -find_package(SWIG REQUIRED) -include(${SWIG_USE_FILE}) - -if(DEFINED ENV{PYTHON_EXECUTABLE}) - set(Python3_EXECUTABLE $ENV{PYTHON_EXECUTABLE}) -endif() -# We don't need "Interpreter" here, but without that, FindPython3 will -# ignore the Python version selected via $Python3_EXECUTABLE -find_package(Python3 COMPONENTS Interpreter Development) -include_directories(${Python3_INCLUDE_DIRS}) - -set(SWIG_LIBRARY_NAME _${PROJECT_NAME}) -set(CMAKE_SWIG_FLAGS "") -set_source_files_properties(${PROJECT_NAME}.i PROPERTIES CPLUSPLUS ON) - -# swig does not use INTERFACE_INCLUDE_DIRS of linked libraries, so add manually -get_target_property(AMICI_INCLUDE_DIRS Upstream::amici INTERFACE_INCLUDE_DIRECTORIES) -include_directories(${AMICI_INCLUDE_DIRS} .. ${AMICI_INCLUDE_DIRS}/../swig) - -swig_add_library(${SWIG_LIBRARY_NAME} - TYPE MODULE - LANGUAGE python - SOURCES ${PROJECT_NAME}.i) - - -set_target_properties(${SWIG_LIBRARY_NAME} - PROPERTIES - SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE - PREFIX "" -) - -# Python extension suffix -execute_process( - COMMAND ${Python3_EXECUTABLE} -c - "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" - OUTPUT_VARIABLE PY_EXT_SUFFIX OUTPUT_STRIP_TRAILING_WHITESPACE) -if(NOT "${PY_EXT_SUFFIX}" STREQUAL "") - message(STATUS "Python extension suffix is ${PY_EXT_SUFFIX}") - set_target_properties(${SWIG_LIBRARY_NAME} PROPERTIES SUFFIX "${PY_EXT_SUFFIX}" ) -endif() - - -swig_link_libraries(${SWIG_LIBRARY_NAME} - ${Python3_LIBRARIES} - model) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.py - $ DESTINATION .) - -# configure module setup script -set(SETUP_PY_IN ${Amici_DIR}/model_setup.template.py) -set(SETUP_PY_OUT ${CMAKE_CURRENT_BINARY_DIR}/setup.py) - -add_custom_target(install-python - DEPENDS ${SWIG_LIBRARY_NAME} - COMMAND python ${SETUP_PY_OUT} install) diff --git a/models/model_nested_events/swig/model_nested_events.i b/models/model_nested_events/swig/model_nested_events.i deleted file mode 100644 index bec3ccac55..0000000000 --- a/models/model_nested_events/swig/model_nested_events.i +++ /dev/null @@ -1,22 +0,0 @@ -%module model_nested_events -%import amici.i -// Add necessary symbols to generated header - -%{ -#include "wrapfunctions.h" -#include "amici/model_ode.h" -#include "amici/model_dae.h" -using namespace amici; -%} - - -// Make model module accessible from the model -%feature("pythonappend") amici::generic_model::getModel %{ - if '.' in __name__: - import sys - val.module = sys.modules['.'.join(__name__.split('.')[:-1])] -%} - - -// Process symbols in header -%include "wrapfunctions.h" diff --git a/models/model_nested_events/sx0.cpp b/models/model_nested_events/sx0.cpp deleted file mode 100644 index 01a33b32a4..0000000000 --- a/models/model_nested_events/sx0.cpp +++ /dev/null @@ -1,26 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void sx0_model_nested_events(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) { -switch (ip) { - case 0: { - sx0[0] = 1.0; - - } break; - -} -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/wrapfunctions.cpp b/models/model_nested_events/wrapfunctions.cpp deleted file mode 100644 index 190a4caa1a..0000000000 --- a/models/model_nested_events/wrapfunctions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "amici/model.h" -#include "wrapfunctions.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel() { - return std::unique_ptr( - new amici::model_model_nested_events::Model_model_nested_events()); -} - -} // namespace generic_model - -} // namespace amici - diff --git a/models/model_nested_events/wrapfunctions.h b/models/model_nested_events/wrapfunctions.h deleted file mode 100644 index 2eb9041ec4..0000000000 --- a/models/model_nested_events/wrapfunctions.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _amici_wrapfunctions_h -#define _amici_wrapfunctions_h - -#include "model_nested_events.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel(); - -} // namespace generic_model - -} // namespace amici - -#endif /* _amici_wrapfunctions_h */ diff --git a/models/model_nested_events/x0.cpp b/models/model_nested_events/x0.cpp deleted file mode 100644 index ad0addfb6a..0000000000 --- a/models/model_nested_events/x0.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void x0_model_nested_events(realtype *x0, const realtype t, const realtype *p, const realtype *k) { - x0[0] = p[0]; -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/xdot.cpp b/models/model_nested_events/xdot.cpp deleted file mode 100644 index 0fd26c1b75..0000000000 --- a/models/model_nested_events/xdot.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void xdot_model_nested_events(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - xdot[0] = -p[4]*x[0]-p[3]*x[0]*(h[0]-1.0); -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_nested_events/y.cpp b/models/model_nested_events/y.cpp deleted file mode 100644 index 308c9ad8f5..0000000000 --- a/models/model_nested_events/y.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_nested_events{ - -void y_model_nested_events(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - y[0] = x[0]; -} - -} // namespace model_model_nested_events - -} // namespace amici - diff --git a/models/model_neuron/CMakeLists.txt b/models/model_neuron/CMakeLists.txt deleted file mode 100644 index 8de63e6084..0000000000 --- a/models/model_neuron/CMakeLists.txt +++ /dev/null @@ -1,135 +0,0 @@ -# Build AMICI model -cmake_minimum_required(VERSION 3.22) -cmake_policy(VERSION 3.22...3.30) - -project(model_neuron) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -include(CheckCXXCompilerFlag) -set(MY_CXX_FLAGS -Wall -Wno-unused-function -Wno-unused-variable) -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - list(APPEND MY_CXX_FLAGS -Wno-unused-but-set-variable) -endif() -foreach(flag ${MY_CXX_FLAGS}) - unset(CUR_FLAG_SUPPORTED CACHE) - check_cxx_compiler_flag(${flag} CUR_FLAG_SUPPORTED) - if(${CUR_FLAG_SUPPORTED}) - string(APPEND CMAKE_CXX_FLAGS " ${flag}") - endif() -endforeach() - -if(DEFINED ENV{AMICI_CXXFLAGS}) - message(STATUS "Appending flags from AMICI_CXXFLAGS: $ENV{AMICI_CXXFLAGS}") - add_compile_options("$ENV{AMICI_CXXFLAGS}") -endif() -if(DEFINED ENV{AMICI_LDFLAGS}) - message(STATUS "Appending flags from AMICI_LDFLAGS: $ENV{AMICI_LDFLAGS}") - link_libraries("$ENV{AMICI_LDFLAGS}") -endif() - -find_package(Amici REQUIRED HINTS - ${CMAKE_CURRENT_LIST_DIR}/../../build) -message(STATUS "Found AMICI ${Amici_DIR}") -set_target_properties(Upstream::amici PROPERTIES - MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo;Release; - MAP_IMPORTED_CONFIG_RELEASE Release - MAP_IMPORTED_CONFIG_DEBUG Debug;RelWithDebInfo;) - -# Debug build? -if("$ENV{ENABLE_AMICI_DEBUGGING}" OR "$ENV{ENABLE_GCOV_COVERAGE}") - add_compile_options(-UNDEBUG) - if(MSVC) - add_compile_options(-DEBUG) - else() - add_compile_options(-O0 -g) - endif() -endif() - -# coverage options -if($ENV{ENABLE_GCOV_COVERAGE}) - string(APPEND CMAKE_CXX_FLAGS_DEBUG " --coverage") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " --coverage") -endif() - -set(MODEL_DIR ${CMAKE_CURRENT_LIST_DIR}) - -set(SRC_LIST_LIB ${MODEL_DIR}/JSparse.cpp -${MODEL_DIR}/Jrz.cpp -${MODEL_DIR}/Jy.cpp -${MODEL_DIR}/Jz.cpp -${MODEL_DIR}/dJrzdsigma.cpp -${MODEL_DIR}/dJrzdz.cpp -${MODEL_DIR}/dJydsigma.cpp -${MODEL_DIR}/dJydy.cpp -${MODEL_DIR}/dJzdsigma.cpp -${MODEL_DIR}/dJzdz.cpp -${MODEL_DIR}/deltaqB.cpp -${MODEL_DIR}/deltasx.cpp -${MODEL_DIR}/deltax.cpp -${MODEL_DIR}/deltaxB.cpp -${MODEL_DIR}/drzdx.cpp -${MODEL_DIR}/dxdotdp.cpp -${MODEL_DIR}/dydx.cpp -${MODEL_DIR}/dzdx.cpp -${MODEL_DIR}/root.cpp -${MODEL_DIR}/rz.cpp -${MODEL_DIR}/sigmay.cpp -${MODEL_DIR}/sigmaz.cpp -${MODEL_DIR}/srz.cpp -${MODEL_DIR}/stau.cpp -${MODEL_DIR}/sx0.cpp -${MODEL_DIR}/sz.cpp -${MODEL_DIR}/x0.cpp -${MODEL_DIR}/xdot.cpp -${MODEL_DIR}/y.cpp -${MODEL_DIR}/z.cpp - ${MODEL_DIR}/wrapfunctions.cpp) - -add_library(${PROJECT_NAME} ${SRC_LIST_LIB}) -add_library(model ALIAS ${PROJECT_NAME}) - -# Some special functions require boost -# -# TODO: set some flag during code generation whether the given model requires -# boost. for now, try to find it, add include directories and link against it. -# let the compiler/linker error if it is required but not found -find_package(Boost) - -target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") - -target_link_libraries( - ${PROJECT_NAME} - PUBLIC Upstream::amici - PRIVATE $<$:Boost::boost>) - -if(NOT "${AMICI_PYTHON_BUILD_EXT_ONLY}") - set(SRC_LIST_EXE main.cpp) - add_executable(simulate_${PROJECT_NAME} ${SRC_LIST_EXE}) - target_link_libraries(simulate_${PROJECT_NAME} ${PROJECT_NAME}) -endif() - -# SWIG -option(ENABLE_SWIG "Build swig/python library?" ON) -if(ENABLE_SWIG) - add_subdirectory(swig) -endif() - -# -include(GNUInstallDirs) -install( - TARGETS ${PROJECT_NAME} - EXPORT ${PROJECT_NAME}Targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - INCLUDES - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -export( - EXPORT ${PROJECT_NAME}Targets - FILE ${PROJECT_NAME}Config.cmake - NAMESPACE Upstream::) -# diff --git a/models/model_neuron/JSparse.cpp b/models/model_neuron/JSparse.cpp deleted file mode 100644 index bb293ee60b..0000000000 --- a/models/model_neuron/JSparse.cpp +++ /dev/null @@ -1,31 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -#include //SUNMatrixContent_Sparse definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void JSparse_model_neuron(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - JSparse->indexvals[0] = 0; - JSparse->indexvals[1] = 1; - JSparse->indexvals[2] = 0; - JSparse->indexvals[3] = 1; - JSparse->indexptrs[0] = 0; - JSparse->indexptrs[1] = 2; - JSparse->indexptrs[2] = 4; - JSparse->data[0] = x[0]*(2.0/2.5E1)+5.0; - JSparse->data[1] = p[0]*p[1]; - JSparse->data[2] = -1.0; - JSparse->data[3] = -p[0]; -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/Jrz.cpp b/models/model_neuron/Jrz.cpp deleted file mode 100644 index 506e4cb90c..0000000000 --- a/models/model_neuron/Jrz.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void Jrz_model_neuron(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) { -switch(iz){ - case 0: - nllh[0] = amici::log((sigmaz[0]*sigmaz[0])*3.141592653589793*2.0)*5.0E-1+(rz[0]*rz[0])*1.0/(sigmaz[0]*sigmaz[0])*5.0E-1; - break; -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/Jy.cpp b/models/model_neuron/Jy.cpp deleted file mode 100644 index 34432dff69..0000000000 --- a/models/model_neuron/Jy.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void Jy_model_neuron(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - nllh[0] = amici::log((sigmay[0]*sigmay[0])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*5.0E-1; - break; -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/Jz.cpp b/models/model_neuron/Jz.cpp deleted file mode 100644 index 7139094a91..0000000000 --- a/models/model_neuron/Jz.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void Jz_model_neuron(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) { -switch(iz){ - case 0: - nllh[0] = amici::log((sigmaz[0]*sigmaz[0])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmaz[0]*sigmaz[0])*pow(mz[0]-z[0],2.0)*5.0E-1; - break; -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/dJrzdsigma.cpp b/models/model_neuron/dJrzdsigma.cpp deleted file mode 100644 index 86144a4052..0000000000 --- a/models/model_neuron/dJrzdsigma.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void dJrzdsigma_model_neuron(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) { -switch(iz){ - case 0: - dJrzdsigma[0] = (rz[0]*rz[0])*1.0/(sigmaz[0]*sigmaz[0]*sigmaz[0])*-1.0+1.0/sigmaz[0]; - break; -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/dJrzdz.cpp b/models/model_neuron/dJrzdz.cpp deleted file mode 100644 index f797c1433e..0000000000 --- a/models/model_neuron/dJrzdz.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void dJrzdz_model_neuron(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) { -switch(iz){ - case 0: - dJrzdz[0] = rz[0]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - break; -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/dJydsigma.cpp b/models/model_neuron/dJydsigma.cpp deleted file mode 100644 index 719f080743..0000000000 --- a/models/model_neuron/dJydsigma.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void dJydsigma_model_neuron(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydsigma[0] = 1.0/(sigmay[0]*sigmay[0]*sigmay[0])*pow(my[0]-y[0]*1.0,2.0)*-1.0+1.0/sigmay[0]; - break; -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/dJydy.cpp b/models/model_neuron/dJydy.cpp deleted file mode 100644 index 7a6dc85c87..0000000000 --- a/models/model_neuron/dJydy.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void dJydy_model_neuron(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydy[0] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/dJzdsigma.cpp b/models/model_neuron/dJzdsigma.cpp deleted file mode 100644 index a321ec18d6..0000000000 --- a/models/model_neuron/dJzdsigma.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void dJzdsigma_model_neuron(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) { -switch(iz){ - case 0: - dJzdsigma[0] = 1.0/(sigmaz[0]*sigmaz[0]*sigmaz[0])*pow(mz[0]-z[0]*1.0,2.0)*-1.0+1.0/sigmaz[0]; - break; -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/dJzdz.cpp b/models/model_neuron/dJzdz.cpp deleted file mode 100644 index 14cf0a3e07..0000000000 --- a/models/model_neuron/dJzdz.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void dJzdz_model_neuron(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) { -switch(iz){ - case 0: - dJzdz[0] = 1.0/(sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/deltaqB.cpp b/models/model_neuron/deltaqB.cpp deleted file mode 100644 index 1cc27dbbe1..0000000000 --- a/models/model_neuron/deltaqB.cpp +++ /dev/null @@ -1,43 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void deltaqB_model_neuron(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) { -switch (ip) { - case 2: { - switch(ie) { - case 0: { - deltaqB[0] = xB[0]; - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - deltaqB[0] = -xB[1]; - - } break; - - } - - } break; - -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/deltasx.cpp b/models/model_neuron/deltasx.cpp deleted file mode 100644 index 29bd503840..0000000000 --- a/models/model_neuron/deltasx.cpp +++ /dev/null @@ -1,69 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void deltasx_model_neuron(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - deltasx[0] = -sx[0]-stau[0]*(xdot[0]-xdot_old[0])-stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1]); - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - deltasx[0] = -sx[0]-stau[0]*(xdot[0]-xdot_old[0])-stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1]); - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - deltasx[0] = -sx[0]-stau[0]*(xdot[0]-xdot_old[0])-stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-1.0; - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1]); - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - deltasx[0] = -sx[0]-stau[0]*(xdot[0]-xdot_old[0])-stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1])+1.0; - - } break; - - } - - } break; - -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/deltax.cpp b/models/model_neuron/deltax.cpp deleted file mode 100644 index 7fdf2e3724..0000000000 --- a/models/model_neuron/deltax.cpp +++ /dev/null @@ -1,27 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void deltax_model_neuron(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old) { - switch(ie) { - case 0: { - deltax[0] = -p[2]-x[0]; - deltax[1] = p[3]; - - } break; - - } -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/deltaxB.cpp b/models/model_neuron/deltaxB.cpp deleted file mode 100644 index 3e45e3ba8a..0000000000 --- a/models/model_neuron/deltaxB.cpp +++ /dev/null @@ -1,26 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void deltaxB_model_neuron(double *deltaxB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) { - switch(ie) { - case 0: { - deltaxB[0] = xB[0]; - - } break; - - } -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/drzdx.cpp b/models/model_neuron/drzdx.cpp deleted file mode 100644 index 7bf19536e7..0000000000 --- a/models/model_neuron/drzdx.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void drzdx_model_neuron(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) { - drzdx[0+0*1] = 1.0; -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/dxdotdp.cpp b/models/model_neuron/dxdotdp.cpp deleted file mode 100644 index e866012713..0000000000 --- a/models/model_neuron/dxdotdp.cpp +++ /dev/null @@ -1,31 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void dxdotdp_model_neuron(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) { -switch (ip) { - case 0: { - dxdotdp[1] = -x[1]+p[1]*x[0]; - - } break; - - case 1: { - dxdotdp[1] = p[0]*x[0]; - - } break; - -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/dydx.cpp b/models/model_neuron/dydx.cpp deleted file mode 100644 index e6c0a52abf..0000000000 --- a/models/model_neuron/dydx.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void dydx_model_neuron(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - dydx[0+0*1] = 1.0; -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/dzdx.cpp b/models/model_neuron/dzdx.cpp deleted file mode 100644 index 20b1638399..0000000000 --- a/models/model_neuron/dzdx.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void dzdx_model_neuron(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) { - dzdx[0+0*1] = -1.0/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/main.cpp b/models/model_neuron/main.cpp deleted file mode 100644 index ecdff85a46..0000000000 --- a/models/model_neuron/main.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#include - -#include "wrapfunctions.h" /* model-provided functions */ -#include /* AMICI base functions */ - -template -std::ostream& operator<<(std::ostream& os, std::vector const& v) { - os << "["; - for (typename std::vector::const_iterator ii = v.begin(); ii != v.end(); - ++ii) { - os << " " << *ii; - } - os << "]"; - return os; -} - -/* - * This is a scaffold for a stand-alone AMICI simulation executable - * demonstrating the basic use of the AMICI C++ API. - */ - -int main() { - std::cout << "********************************" << std::endl; - std::cout << "** Running forward simulation **" << std::endl; - std::cout << "********************************" << std::endl << std::endl; - - // Create a model instance - auto model = amici::generic_model::getModel(); - - // Set desired output timepoints - model->setTimepoints({0.0, 1.0, 10.0, 100.0, 1000.0}); - - // Create a solver instance - auto solver = model->getSolver(); - - // Optionally set integration tolerance - solver->setAbsoluteTolerance(1e-16); - solver->setRelativeTolerance(1e-8); - - // Run the simulation using default parameters set during model import - // (can be changed using model->setParameters() or model->setParameterBy*()) - auto rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print observable time course - auto observable_ids = model->getObservableIds(); - std::cout << "Simulated observables for timepoints " << rdata->ts << "\n\n"; - for (int i_observable = 0; i_observable < rdata->ny; ++i_observable) { - std::cout << observable_ids[i_observable] << ":\n\t"; - for (int i_time = 0; i_time < rdata->nt; ++i_time) { - // rdata->y is a flat 2D array in row-major ordering - std::cout << rdata->y[i_time * rdata->ny + i_observable] << " "; - } - std::cout << std::endl << std::endl; - } - - std::cout << std::endl; - std::cout << "**********************************" << std::endl; - std::cout << "** Forward sensitivity analysis **" << std::endl; - std::cout << "**********************************" << std::endl << std::endl; - - // Enable first-order sensitivity analysis - solver->setSensitivityOrder(amici::SensitivityOrder::first); - // Use forward sensitivities - solver->setSensitivityMethod(amici::SensitivityMethod::forward); - - // Run the simulation - rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print state sensitivities sx... - // ... for the first timepoint... - int i_time = 0; - // ... with respect to the first parameter - int i_nplist = 0; - - // get identifiers from model - auto state_ids = model->getStateIds(); - auto parameter_ids = model->getParameterIds(); - - std::cout << "State sensitivities for timepoint " << rdata->ts[i_time] - << std::endl; // nt x nplist x nx - for (int i_state = 0; i_state < rdata->nx; ++i_state) { - std::cout << "\td(" << state_ids[i_state] << ")/d(" - << parameter_ids[model->plist(i_nplist)] << ") = "; - - // rdata->sx is a flat 3D array in row-major ordering - std::cout << rdata->sx - [i_time * rdata->nplist * rdata->nx - + i_nplist * rdata->nx + i_state]; - std::cout << std::endl; - } - - return 0; -} diff --git a/models/model_neuron/model_neuron.h b/models/model_neuron/model_neuron.h deleted file mode 100644 index 99fb505d60..0000000000 --- a/models/model_neuron/model_neuron.h +++ /dev/null @@ -1,244 +0,0 @@ -#ifndef _amici_model_neuron_h -#define _amici_model_neuron_h -/* Generated by amiwrap (R2017b) d69c026f8f8a89a13f1fa1307548f2b8f7045fe1 */ -#include -#include -#include "amici/defines.h" -#include //SUNMatrixContent_Sparse definition -#include "amici/solver_cvodes.h" -#include "amici/model_ode.h" - -namespace amici { - -class Solver; - -namespace model_model_neuron{ - -extern void JSparse_model_neuron(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void Jrz_model_neuron(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz); -extern void Jy_model_neuron(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void Jz_model_neuron(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz); -extern void dJrzdsigma_model_neuron(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz); -extern void dJrzdz_model_neuron(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz); -extern void dJydsigma_model_neuron(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydy_model_neuron(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJzdsigma_model_neuron(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz); -extern void dJzdz_model_neuron(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz); -extern void deltaqB_model_neuron(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB); -extern void deltasx_model_neuron(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl); -extern void deltax_model_neuron(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old); -extern void deltaxB_model_neuron(double *deltaxB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB); -extern void drzdx_model_neuron(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h); -extern void dxdotdp_model_neuron(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp); -extern void dydx_model_neuron(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void dzdx_model_neuron(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h); -extern void root_model_neuron(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl); -extern void rz_model_neuron(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h); -extern void sigmay_model_neuron(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y); -extern void sigmaz_model_neuron(double *sigmaz, const realtype t, const realtype *p, const realtype *k); -extern void srz_model_neuron(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip); -extern void stau_model_neuron(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie); -extern void sx0_model_neuron(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip); -extern void sz_model_neuron(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip); -extern void x0_model_neuron(realtype *x0, const realtype t, const realtype *p, const realtype *k); -extern void xdot_model_neuron(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); -extern void y_model_neuron(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); -extern void z_model_neuron(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h); - -class Model_model_neuron : public amici::Model_ODE { -public: - Model_model_neuron() - : amici::Model_ODE( - amici::ModelDimensions( - 2, - 2, - 2, - 2, - 0, - 4, - 2, - 1, - 1, - 1, - 1, - 1, - 1, - 0, - 1, - 0, - 0, - 0, - 0, - 0, - {}, - 0, - 0, - 0, - 4, - 1, - 1 - ), - amici::SimulationParameters( - std::vector(2, 1.0), - std::vector(4, 1.0) - ), - amici::SecondOrderMode::none, - std::vector{0, 0}, - std::vector{1}) - {}; - - amici::Model* clone() const override { return new Model_model_neuron(*this); }; - - std::string getAmiciCommit() const override { return "d69c026f8f8a89a13f1fa1307548f2b8f7045fe1"; }; - - void fJSparse(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - JSparse_model_neuron(JSparse, t, x, p, k, h, w, dwdx); - } - - void fJrz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - Jrz_model_neuron(nllh, iz, p, k, rz, sigmaz); - } - - void fJy(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - Jy_model_neuron(nllh, iy, p, k, y, sigmay, my); - } - - void fJz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - Jz_model_neuron(nllh, iz, p, k, z, sigmaz, mz); - } - - void fdJrzdsigma(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - dJrzdsigma_model_neuron(dJrzdsigma, iz, p, k, rz, sigmaz); - } - - void fdJrzdz(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - dJrzdz_model_neuron(dJrzdz, iz, p, k, rz, sigmaz); - } - - void fdJydsigma(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydsigma_model_neuron(dJydsigma, iy, p, k, y, sigmay, my); - } - - void fdJydy(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydy_model_neuron(dJydy, iy, p, k, y, sigmay, my); - } - - void fdJzdsigma(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - dJzdsigma_model_neuron(dJzdsigma, iz, p, k, z, sigmaz, mz); - } - - void fdJzdz(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - dJzdz_model_neuron(dJzdz, iz, p, k, z, sigmaz, mz); - } - - void fdeltaqB(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - deltaqB_model_neuron(deltaqB, t, x, p, k, h, ip, ie, xdot, xdot_old, xB); - } - - void fdeltasx(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) override { - deltasx_model_neuron(deltasx, t, x, p, k, h, w, ip, ie, xdot, xdot_old, sx, stau, tcl); - } - - void fdeltax(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old) override { - deltax_model_neuron(deltax, t, x, p, k, h, ie, xdot, xdot_old); - } - - void fdeltaxB(double *deltaxB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - deltaxB_model_neuron(deltaxB, t, x, p, k, h, ie, xdot, xdot_old, xB); - } - - void fdrzdp(double *drzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdrzdx(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - drzdx_model_neuron(drzdx, ie, t, x, p, k, h); - } - - void fdsigmaydp(double *dsigmaydp, const realtype t, const realtype *p, const realtype *k, const realtype *y, const int ip) override { - } - - void fdsigmazdp(double *dsigmazdp, const realtype t, const realtype *p, const realtype *k, const int ip) override { - } - - void fdwdp(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static) override { - } - - void fdwdx(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) override { - } - - void fdxdotdp(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - dxdotdp_model_neuron(dxdotdp, t, x, p, k, h, ip, w, dwdp); - } - - void fdydp(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - } - - void fdydx(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - dydx_model_neuron(dydx, t, x, p, k, h, w, dwdx); - } - - void fdzdp(double *dzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdzdx(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - dzdx_model_neuron(dzdx, ie, t, x, p, k, h); - } - - void froot(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl) override { - root_model_neuron(root, t, x, p, k, h, tcl); - } - - void frz(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - rz_model_neuron(rz, ie, t, x, p, k, h); - } - - void fsigmay(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) override { - sigmay_model_neuron(sigmay, t, p, k, y); - } - - void fsigmaz(double *sigmaz, const realtype t, const realtype *p, const realtype *k) override { - sigmaz_model_neuron(sigmaz, t, p, k); - } - - void fsrz(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - srz_model_neuron(srz, ie, t, x, p, k, h, sx, ip); - } - - void fstau(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) override { - stau_model_neuron(stau, t, x, p, k, h, tcl, sx, ip, ie); - } - - void fsx0(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) override { - sx0_model_neuron(sx0, t, x0, p, k, ip); - } - - void fsz(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - sz_model_neuron(sz, ie, t, x, p, k, h, sx, ip); - } - - void fw(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) override { - } - - void fx0(realtype *x0, const realtype t, const realtype *p, const realtype *k) override { - x0_model_neuron(x0, t, p, k); - } - - void fxdot(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - xdot_model_neuron(xdot, t, x, p, k, h, w); - } - - void fy(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - y_model_neuron(y, t, x, p, k, h, w); - } - - void fz(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - z_model_neuron(z, ie, t, x, p, k, h); - } - -}; - -} // namespace model_model_neuron - -} // namespace amici - -#endif /* _amici_model_neuron_h */ diff --git a/models/model_neuron/rebuild_model_neuron.m b/models/model_neuron/rebuild_model_neuron.m deleted file mode 100644 index 0c368819dc..0000000000 --- a/models/model_neuron/rebuild_model_neuron.m +++ /dev/null @@ -1,5 +0,0 @@ -function rebuild_model_neuron() -modelName = 'model_neuron'; -amimodel.compileAndLinkModel(modelName, '', [], [], [], []); -amimodel.generateMatlabWrapper(2, 1, 4, 2, 1, 0, [], ['simulate_' modelName '.m'], 'model_neuron', 'log10', 1, 1); -end diff --git a/models/model_neuron/root.cpp b/models/model_neuron/root.cpp deleted file mode 100644 index 6a68f67719..0000000000 --- a/models/model_neuron/root.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void root_model_neuron(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl) { - root[0] = x[0]-3.0E1; -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/rz.cpp b/models/model_neuron/rz.cpp deleted file mode 100644 index a85f19c886..0000000000 --- a/models/model_neuron/rz.cpp +++ /dev/null @@ -1,26 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void rz_model_neuron(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) { - switch(ie) { - case 0: { - rz[0] = x[0]-3.0E1; - - } break; - - } -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/sigmay.cpp b/models/model_neuron/sigmay.cpp deleted file mode 100644 index 8bc0d292f8..0000000000 --- a/models/model_neuron/sigmay.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void sigmay_model_neuron(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) { - sigmay[0] = 1.0; -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/sigmaz.cpp b/models/model_neuron/sigmaz.cpp deleted file mode 100644 index ce17fae268..0000000000 --- a/models/model_neuron/sigmaz.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void sigmaz_model_neuron(double *sigmaz, const realtype t, const realtype *p, const realtype *k) { - sigmaz[0] = 1.0; -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/srz.cpp b/models/model_neuron/srz.cpp deleted file mode 100644 index 19ff0285c3..0000000000 --- a/models/model_neuron/srz.cpp +++ /dev/null @@ -1,65 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void srz_model_neuron(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - srz[0] = sx[0]; - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - srz[0] = sx[0]; - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - srz[0] = sx[0]; - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - srz[0] = sx[0]; - - } break; - - } - - } break; - -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/stau.cpp b/models/model_neuron/stau.cpp deleted file mode 100644 index d77cfb5bdc..0000000000 --- a/models/model_neuron/stau.cpp +++ /dev/null @@ -1,65 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void stau_model_neuron(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - stau[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - stau[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - stau[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - stau[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/swig/CMakeLists.txt b/models/model_neuron/swig/CMakeLists.txt deleted file mode 100644 index 523571c52e..0000000000 --- a/models/model_neuron/swig/CMakeLists.txt +++ /dev/null @@ -1,73 +0,0 @@ -cmake_minimum_required(VERSION 3.15) -cmake_policy(VERSION 3.15...3.27) - -# cmake >=3.27 -if(POLICY CMP0144) - cmake_policy(SET CMP0144 NEW) -endif(POLICY CMP0144) -# cmake >= 3.30 -if(POLICY CMP0167) - cmake_policy(SET CMP0167 NEW) -endif(POLICY CMP0167) - - -if(DEFINED ENV{SWIG}) - set(SWIG_EXECUTABLE $ENV{SWIG}) -endif() - -find_package(SWIG REQUIRED) -include(${SWIG_USE_FILE}) - -if(DEFINED ENV{PYTHON_EXECUTABLE}) - set(Python3_EXECUTABLE $ENV{PYTHON_EXECUTABLE}) -endif() -# We don't need "Interpreter" here, but without that, FindPython3 will -# ignore the Python version selected via $Python3_EXECUTABLE -find_package(Python3 COMPONENTS Interpreter Development) -include_directories(${Python3_INCLUDE_DIRS}) - -set(SWIG_LIBRARY_NAME _${PROJECT_NAME}) -set(CMAKE_SWIG_FLAGS "") -set_source_files_properties(${PROJECT_NAME}.i PROPERTIES CPLUSPLUS ON) - -# swig does not use INTERFACE_INCLUDE_DIRS of linked libraries, so add manually -get_target_property(AMICI_INCLUDE_DIRS Upstream::amici INTERFACE_INCLUDE_DIRECTORIES) -include_directories(${AMICI_INCLUDE_DIRS} .. ${AMICI_INCLUDE_DIRS}/../swig) - -swig_add_library(${SWIG_LIBRARY_NAME} - TYPE MODULE - LANGUAGE python - SOURCES ${PROJECT_NAME}.i) - - -set_target_properties(${SWIG_LIBRARY_NAME} - PROPERTIES - SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE - PREFIX "" -) - -# Python extension suffix -execute_process( - COMMAND ${Python3_EXECUTABLE} -c - "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" - OUTPUT_VARIABLE PY_EXT_SUFFIX OUTPUT_STRIP_TRAILING_WHITESPACE) -if(NOT "${PY_EXT_SUFFIX}" STREQUAL "") - message(STATUS "Python extension suffix is ${PY_EXT_SUFFIX}") - set_target_properties(${SWIG_LIBRARY_NAME} PROPERTIES SUFFIX "${PY_EXT_SUFFIX}" ) -endif() - - -swig_link_libraries(${SWIG_LIBRARY_NAME} - ${Python3_LIBRARIES} - model) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.py - $ DESTINATION .) - -# configure module setup script -set(SETUP_PY_IN ${Amici_DIR}/model_setup.template.py) -set(SETUP_PY_OUT ${CMAKE_CURRENT_BINARY_DIR}/setup.py) - -add_custom_target(install-python - DEPENDS ${SWIG_LIBRARY_NAME} - COMMAND python ${SETUP_PY_OUT} install) diff --git a/models/model_neuron/swig/model_neuron.i b/models/model_neuron/swig/model_neuron.i deleted file mode 100644 index 856ba04978..0000000000 --- a/models/model_neuron/swig/model_neuron.i +++ /dev/null @@ -1,22 +0,0 @@ -%module model_neuron -%import amici.i -// Add necessary symbols to generated header - -%{ -#include "wrapfunctions.h" -#include "amici/model_ode.h" -#include "amici/model_dae.h" -using namespace amici; -%} - - -// Make model module accessible from the model -%feature("pythonappend") amici::generic_model::getModel %{ - if '.' in __name__: - import sys - val.module = sys.modules['.'.join(__name__.split('.')[:-1])] -%} - - -// Process symbols in header -%include "wrapfunctions.h" diff --git a/models/model_neuron/sx0.cpp b/models/model_neuron/sx0.cpp deleted file mode 100644 index 3712b90049..0000000000 --- a/models/model_neuron/sx0.cpp +++ /dev/null @@ -1,26 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void sx0_model_neuron(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) { -switch (ip) { - case 1: { - sx0[1] = k[0]; - - } break; - -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/sz.cpp b/models/model_neuron/sz.cpp deleted file mode 100644 index e82da414f6..0000000000 --- a/models/model_neuron/sz.cpp +++ /dev/null @@ -1,65 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void sz_model_neuron(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - sz[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - sz[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - sz[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - sz[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - -} -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/wrapfunctions.cpp b/models/model_neuron/wrapfunctions.cpp deleted file mode 100644 index 74dc0ab024..0000000000 --- a/models/model_neuron/wrapfunctions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "amici/model.h" -#include "wrapfunctions.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel() { - return std::unique_ptr( - new amici::model_model_neuron::Model_model_neuron()); -} - -} // namespace generic_model - -} // namespace amici - diff --git a/models/model_neuron/wrapfunctions.h b/models/model_neuron/wrapfunctions.h deleted file mode 100644 index dee20b752a..0000000000 --- a/models/model_neuron/wrapfunctions.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _amici_wrapfunctions_h -#define _amici_wrapfunctions_h - -#include "model_neuron.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel(); - -} // namespace generic_model - -} // namespace amici - -#endif /* _amici_wrapfunctions_h */ diff --git a/models/model_neuron/x0.cpp b/models/model_neuron/x0.cpp deleted file mode 100644 index 348a787e27..0000000000 --- a/models/model_neuron/x0.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void x0_model_neuron(realtype *x0, const realtype t, const realtype *p, const realtype *k) { - x0[0] = k[0]; - x0[1] = k[0]*p[1]; -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/xdot.cpp b/models/model_neuron/xdot.cpp deleted file mode 100644 index c39724e74e..0000000000 --- a/models/model_neuron/xdot.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void xdot_model_neuron(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - xdot[0] = k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2; - xdot[1] = -p[0]*(x[1]-p[1]*x[0]); -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/y.cpp b/models/model_neuron/y.cpp deleted file mode 100644 index 97818ac920..0000000000 --- a/models/model_neuron/y.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void y_model_neuron(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - y[0] = x[0]; -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron/z.cpp b/models/model_neuron/z.cpp deleted file mode 100644 index 9571db0448..0000000000 --- a/models/model_neuron/z.cpp +++ /dev/null @@ -1,26 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron{ - -void z_model_neuron(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) { - switch(ie) { - case 0: { - z[0] = t; - - } break; - - } -} - -} // namespace model_model_neuron - -} // namespace amici - diff --git a/models/model_neuron_o2/CMakeLists.txt b/models/model_neuron_o2/CMakeLists.txt deleted file mode 100644 index 1caad81d23..0000000000 --- a/models/model_neuron_o2/CMakeLists.txt +++ /dev/null @@ -1,137 +0,0 @@ -# Build AMICI model -cmake_minimum_required(VERSION 3.22) -cmake_policy(VERSION 3.22...3.30) - -project(model_neuron_o2) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -include(CheckCXXCompilerFlag) -set(MY_CXX_FLAGS -Wall -Wno-unused-function -Wno-unused-variable) -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - list(APPEND MY_CXX_FLAGS -Wno-unused-but-set-variable) -endif() -foreach(flag ${MY_CXX_FLAGS}) - unset(CUR_FLAG_SUPPORTED CACHE) - check_cxx_compiler_flag(${flag} CUR_FLAG_SUPPORTED) - if(${CUR_FLAG_SUPPORTED}) - string(APPEND CMAKE_CXX_FLAGS " ${flag}") - endif() -endforeach() - -if(DEFINED ENV{AMICI_CXXFLAGS}) - message(STATUS "Appending flags from AMICI_CXXFLAGS: $ENV{AMICI_CXXFLAGS}") - add_compile_options("$ENV{AMICI_CXXFLAGS}") -endif() -if(DEFINED ENV{AMICI_LDFLAGS}) - message(STATUS "Appending flags from AMICI_LDFLAGS: $ENV{AMICI_LDFLAGS}") - link_libraries("$ENV{AMICI_LDFLAGS}") -endif() - -find_package(Amici REQUIRED HINTS - ${CMAKE_CURRENT_LIST_DIR}/../../build) -message(STATUS "Found AMICI ${Amici_DIR}") -set_target_properties(Upstream::amici PROPERTIES - MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo;Release; - MAP_IMPORTED_CONFIG_RELEASE Release - MAP_IMPORTED_CONFIG_DEBUG Debug;RelWithDebInfo;) - -# Debug build? -if("$ENV{ENABLE_AMICI_DEBUGGING}" OR "$ENV{ENABLE_GCOV_COVERAGE}") - add_compile_options(-UNDEBUG) - if(MSVC) - add_compile_options(-DEBUG) - else() - add_compile_options(-O0 -g) - endif() -endif() - -# coverage options -if($ENV{ENABLE_GCOV_COVERAGE}) - string(APPEND CMAKE_CXX_FLAGS_DEBUG " --coverage") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " --coverage") -endif() - -set(MODEL_DIR ${CMAKE_CURRENT_LIST_DIR}) - -set(SRC_LIST_LIB ${MODEL_DIR}/JSparse.cpp -${MODEL_DIR}/Jrz.cpp -${MODEL_DIR}/Jy.cpp -${MODEL_DIR}/Jz.cpp -${MODEL_DIR}/dJrzdsigma.cpp -${MODEL_DIR}/dJrzdz.cpp -${MODEL_DIR}/dJydsigma.cpp -${MODEL_DIR}/dJydy.cpp -${MODEL_DIR}/dJzdsigma.cpp -${MODEL_DIR}/dJzdz.cpp -${MODEL_DIR}/deltaqB.cpp -${MODEL_DIR}/deltasx.cpp -${MODEL_DIR}/deltax.cpp -${MODEL_DIR}/deltaxB.cpp -${MODEL_DIR}/drzdx.cpp -${MODEL_DIR}/dwdx.cpp -${MODEL_DIR}/dxdotdp.cpp -${MODEL_DIR}/dydx.cpp -${MODEL_DIR}/dzdx.cpp -${MODEL_DIR}/root.cpp -${MODEL_DIR}/rz.cpp -${MODEL_DIR}/sigmay.cpp -${MODEL_DIR}/sigmaz.cpp -${MODEL_DIR}/srz.cpp -${MODEL_DIR}/stau.cpp -${MODEL_DIR}/sx0.cpp -${MODEL_DIR}/sz.cpp -${MODEL_DIR}/w.cpp -${MODEL_DIR}/x0.cpp -${MODEL_DIR}/xdot.cpp -${MODEL_DIR}/y.cpp -${MODEL_DIR}/z.cpp - ${MODEL_DIR}/wrapfunctions.cpp) - -add_library(${PROJECT_NAME} ${SRC_LIST_LIB}) -add_library(model ALIAS ${PROJECT_NAME}) - -# Some special functions require boost -# -# TODO: set some flag during code generation whether the given model requires -# boost. for now, try to find it, add include directories and link against it. -# let the compiler/linker error if it is required but not found -find_package(Boost) - -target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") - -target_link_libraries( - ${PROJECT_NAME} - PUBLIC Upstream::amici - PRIVATE $<$:Boost::boost>) - -if(NOT "${AMICI_PYTHON_BUILD_EXT_ONLY}") - set(SRC_LIST_EXE main.cpp) - add_executable(simulate_${PROJECT_NAME} ${SRC_LIST_EXE}) - target_link_libraries(simulate_${PROJECT_NAME} ${PROJECT_NAME}) -endif() - -# SWIG -option(ENABLE_SWIG "Build swig/python library?" ON) -if(ENABLE_SWIG) - add_subdirectory(swig) -endif() - -# -include(GNUInstallDirs) -install( - TARGETS ${PROJECT_NAME} - EXPORT ${PROJECT_NAME}Targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - INCLUDES - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -export( - EXPORT ${PROJECT_NAME}Targets - FILE ${PROJECT_NAME}Config.cmake - NAMESPACE Upstream::) -# diff --git a/models/model_neuron_o2/JSparse.cpp b/models/model_neuron_o2/JSparse.cpp deleted file mode 100644 index 1ef9bc119b..0000000000 --- a/models/model_neuron_o2/JSparse.cpp +++ /dev/null @@ -1,85 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -#include //SUNMatrixContent_Sparse definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void JSparse_model_neuron_o2(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - JSparse->indexvals[0] = 0; - JSparse->indexvals[1] = 1; - JSparse->indexvals[2] = 2; - JSparse->indexvals[3] = 3; - JSparse->indexvals[4] = 4; - JSparse->indexvals[5] = 5; - JSparse->indexvals[6] = 6; - JSparse->indexvals[7] = 8; - JSparse->indexvals[8] = 0; - JSparse->indexvals[9] = 1; - JSparse->indexvals[10] = 3; - JSparse->indexvals[11] = 2; - JSparse->indexvals[12] = 3; - JSparse->indexvals[13] = 2; - JSparse->indexvals[14] = 3; - JSparse->indexvals[15] = 4; - JSparse->indexvals[16] = 5; - JSparse->indexvals[17] = 4; - JSparse->indexvals[18] = 5; - JSparse->indexvals[19] = 6; - JSparse->indexvals[20] = 7; - JSparse->indexvals[21] = 6; - JSparse->indexvals[22] = 7; - JSparse->indexvals[23] = 8; - JSparse->indexvals[24] = 9; - JSparse->indexvals[25] = 8; - JSparse->indexvals[26] = 9; - JSparse->indexptrs[0] = 0; - JSparse->indexptrs[1] = 8; - JSparse->indexptrs[2] = 11; - JSparse->indexptrs[3] = 13; - JSparse->indexptrs[4] = 15; - JSparse->indexptrs[5] = 17; - JSparse->indexptrs[6] = 19; - JSparse->indexptrs[7] = 21; - JSparse->indexptrs[8] = 23; - JSparse->indexptrs[9] = 25; - JSparse->indexptrs[10] = 27; - JSparse->data[0] = x[0]*(2.0/2.5E1)+5.0; - JSparse->data[1] = p[0]*p[1]; - JSparse->data[2] = x[2]*dwdx[1]; - JSparse->data[3] = p[1]; - JSparse->data[4] = x[4]*dwdx[1]; - JSparse->data[5] = p[0]; - JSparse->data[6] = x[6]*dwdx[1]; - JSparse->data[7] = x[8]*dwdx[1]; - JSparse->data[8] = -1.0; - JSparse->data[9] = -p[0]; - JSparse->data[10] = -1.0; - JSparse->data[11] = w[1]; - JSparse->data[12] = p[0]*p[1]; - JSparse->data[13] = -1.0; - JSparse->data[14] = -p[0]; - JSparse->data[15] = w[1]; - JSparse->data[16] = p[0]*p[1]; - JSparse->data[17] = -1.0; - JSparse->data[18] = -p[0]; - JSparse->data[19] = w[1]; - JSparse->data[20] = p[0]*p[1]; - JSparse->data[21] = -1.0; - JSparse->data[22] = -p[0]; - JSparse->data[23] = w[1]; - JSparse->data[24] = p[0]*p[1]; - JSparse->data[25] = -1.0; - JSparse->data[26] = -p[0]; -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/Jrz.cpp b/models/model_neuron_o2/Jrz.cpp deleted file mode 100644 index a2f3b57e40..0000000000 --- a/models/model_neuron_o2/Jrz.cpp +++ /dev/null @@ -1,28 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void Jrz_model_neuron_o2(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) { -switch(iz){ - case 0: - nllh[0] = amici::log((sigmaz[0]*sigmaz[0])*3.141592653589793*2.0)*5.0E-1+(rz[0]*rz[0])*1.0/(sigmaz[0]*sigmaz[0])*5.0E-1; - nllh[1] = rz[0]*rz[1]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - nllh[2] = rz[0]*rz[2]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - nllh[3] = rz[0]*rz[3]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - nllh[4] = rz[0]*rz[4]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - break; -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/Jy.cpp b/models/model_neuron_o2/Jy.cpp deleted file mode 100644 index 6df39fa045..0000000000 --- a/models/model_neuron_o2/Jy.cpp +++ /dev/null @@ -1,28 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void Jy_model_neuron_o2(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - nllh[0] = amici::log((sigmay[0]*sigmay[0])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*5.0E-1; - nllh[1] = y[1]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[2] = y[2]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[3] = y[3]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - nllh[4] = y[4]*1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/Jz.cpp b/models/model_neuron_o2/Jz.cpp deleted file mode 100644 index aa263ca005..0000000000 --- a/models/model_neuron_o2/Jz.cpp +++ /dev/null @@ -1,28 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void Jz_model_neuron_o2(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) { -switch(iz){ - case 0: - nllh[0] = amici::log((sigmaz[0]*sigmaz[0])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmaz[0]*sigmaz[0])*pow(mz[0]-z[0],2.0)*5.0E-1; - nllh[1] = z[1]*1.0/(sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*-5.0E-1; - nllh[2] = z[2]*1.0/(sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*-5.0E-1; - nllh[3] = z[3]*1.0/(sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*-5.0E-1; - nllh[4] = z[4]*1.0/(sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/dJrzdsigma.cpp b/models/model_neuron_o2/dJrzdsigma.cpp deleted file mode 100644 index b6a0e08a66..0000000000 --- a/models/model_neuron_o2/dJrzdsigma.cpp +++ /dev/null @@ -1,28 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void dJrzdsigma_model_neuron_o2(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) { -switch(iz){ - case 0: - dJrzdsigma[0+0*5] = (rz[0]*rz[0])*1.0/(sigmaz[0]*sigmaz[0]*sigmaz[0])*-1.0+1.0/sigmaz[0]; - dJrzdsigma[1+0*5] = rz[0]*rz[1]*1.0/(sigmaz[0]*sigmaz[0]*sigmaz[0])*-2.0; - dJrzdsigma[2+0*5] = rz[0]*rz[2]*1.0/(sigmaz[0]*sigmaz[0]*sigmaz[0])*-2.0; - dJrzdsigma[3+0*5] = rz[0]*rz[3]*1.0/(sigmaz[0]*sigmaz[0]*sigmaz[0])*-2.0; - dJrzdsigma[4+0*5] = rz[0]*rz[4]*1.0/(sigmaz[0]*sigmaz[0]*sigmaz[0])*-2.0; - break; -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/dJrzdz.cpp b/models/model_neuron_o2/dJrzdz.cpp deleted file mode 100644 index 84963ae35b..0000000000 --- a/models/model_neuron_o2/dJrzdz.cpp +++ /dev/null @@ -1,32 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void dJrzdz_model_neuron_o2(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) { -switch(iz){ - case 0: - dJrzdz[0+0*5] = rz[0]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - dJrzdz[1+0*5] = rz[1]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - dJrzdz[1+1*5] = rz[0]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - dJrzdz[2+0*5] = rz[2]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - dJrzdz[2+2*5] = rz[0]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - dJrzdz[3+0*5] = rz[3]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - dJrzdz[3+3*5] = rz[0]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - dJrzdz[4+0*5] = rz[4]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - dJrzdz[4+4*5] = rz[0]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - break; -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/dJydsigma.cpp b/models/model_neuron_o2/dJydsigma.cpp deleted file mode 100644 index 4313cb2c7e..0000000000 --- a/models/model_neuron_o2/dJydsigma.cpp +++ /dev/null @@ -1,28 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void dJydsigma_model_neuron_o2(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydsigma[0+0*5] = 1.0/(sigmay[0]*sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*-1.0+1.0/sigmay[0]; - dJydsigma[1+0*5] = y[1]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[2+0*5] = y[2]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[3+0*5] = y[3]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - dJydsigma[4+0*5] = y[4]*1.0/(sigmay[0]*sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*1.0; - break; -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/dJydy.cpp b/models/model_neuron_o2/dJydy.cpp deleted file mode 100644 index 673a2eb12b..0000000000 --- a/models/model_neuron_o2/dJydy.cpp +++ /dev/null @@ -1,32 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void dJydy_model_neuron_o2(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydy[0+0*5] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[1+0*5] = y[1]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[1+1*5] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[2+0*5] = y[2]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[2+2*5] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[3+0*5] = y[3]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[3+3*5] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - dJydy[4+0*5] = y[4]*1.0/(sigmay[0]*sigmay[0])*1.0; - dJydy[4+4*5] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/dJzdsigma.cpp b/models/model_neuron_o2/dJzdsigma.cpp deleted file mode 100644 index 8b2465d46a..0000000000 --- a/models/model_neuron_o2/dJzdsigma.cpp +++ /dev/null @@ -1,28 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void dJzdsigma_model_neuron_o2(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) { -switch(iz){ - case 0: - dJzdsigma[0+0*5] = 1.0/(sigmaz[0]*sigmaz[0]*sigmaz[0])*pow(mz[0]-z[0],2.0)*-1.0+1.0/sigmaz[0]; - dJzdsigma[1+0*5] = z[1]*1.0/(sigmaz[0]*sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*1.0; - dJzdsigma[2+0*5] = z[2]*1.0/(sigmaz[0]*sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*1.0; - dJzdsigma[3+0*5] = z[3]*1.0/(sigmaz[0]*sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*1.0; - dJzdsigma[4+0*5] = z[4]*1.0/(sigmaz[0]*sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*1.0; - break; -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/dJzdz.cpp b/models/model_neuron_o2/dJzdz.cpp deleted file mode 100644 index 96ba0d2540..0000000000 --- a/models/model_neuron_o2/dJzdz.cpp +++ /dev/null @@ -1,32 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void dJzdz_model_neuron_o2(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) { -switch(iz){ - case 0: - dJzdz[0+0*5] = 1.0/(sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*-5.0E-1; - dJzdz[1+0*5] = z[1]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - dJzdz[1+1*5] = 1.0/(sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*-5.0E-1; - dJzdz[2+0*5] = z[2]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - dJzdz[2+2*5] = 1.0/(sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*-5.0E-1; - dJzdz[3+0*5] = z[3]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - dJzdz[3+3*5] = 1.0/(sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*-5.0E-1; - dJzdz[4+0*5] = z[4]*1.0/(sigmaz[0]*sigmaz[0])*1.0; - dJzdz[4+4*5] = 1.0/(sigmaz[0]*sigmaz[0])*(mz[0]*2.0-z[0]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/deltaqB.cpp b/models/model_neuron_o2/deltaqB.cpp deleted file mode 100644 index 7e19de1c0e..0000000000 --- a/models/model_neuron_o2/deltaqB.cpp +++ /dev/null @@ -1,65 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void deltaqB_model_neuron_o2(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - deltaqB[0] = (x[2]*xB[3]*(p[3]+p[1]*p[2]+p[1]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(x[4]*xB[5]*(p[3]+p[1]*p[2]+p[1]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(x[6]*xB[7]*(p[3]+p[1]*p[2]+p[1]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(x[8]*xB[9]*(p[3]+p[1]*p[2]+p[1]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - deltaqB[0] = (x[2]*xB[3]*(p[0]*p[2]+p[0]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(x[4]*xB[5]*(p[0]*p[2]+p[0]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(x[6]*xB[7]*(p[0]*p[2]+p[0]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(x[8]*xB[9]*(p[0]*p[2]+p[0]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - deltaqB[0] = xB[0]-(x[2]*xB[2]*(p[2]*(2.0/2.5E1)-5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(x[4]*xB[4]*(p[2]*(2.0/2.5E1)-5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(x[6]*xB[6]*(p[2]*(2.0/2.5E1)-5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(x[8]*xB[8]*(p[2]*(2.0/2.5E1)-5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(p[0]*p[1]*x[2]*xB[3])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(p[0]*p[1]*x[4]*xB[5])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(p[0]*p[1]*x[6]*xB[7])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(p[0]*p[1]*x[8]*xB[9])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - deltaqB[0] = -xB[1]+(x[2]*xB[2])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(x[4]*xB[4])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(x[6]*xB[6])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(x[8]*xB[8])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(p[0]*x[2]*xB[3])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(p[0]*x[4]*xB[5])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(p[0]*x[6]*xB[7])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(p[0]*x[8]*xB[9])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/deltasx.cpp b/models/model_neuron_o2/deltasx.cpp deleted file mode 100644 index 10c0d6a052..0000000000 --- a/models/model_neuron_o2/deltasx.cpp +++ /dev/null @@ -1,101 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void deltasx_model_neuron_o2(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - deltasx[0] = -sx[0]-stau[0]*(xdot[0]-xdot_old[0])-stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1]); - deltasx[2] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[2]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[2]-xdot_old[2])-((sx[2]-stau[0]*(x[3]-w[1]*x[2]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[3] = -stau[0]*(xdot[3]-xdot_old[3])-((p[0]*p[1]*x[2])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[2]-stau[0]*(x[3]-w[1]*x[2])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(x[2]*(p[3]+p[1]*p[2]+p[1]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - deltasx[4] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[4]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[4]-xdot_old[4])-((sx[4]-stau[0]*(x[5]-w[1]*x[4]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[5] = -stau[0]*(xdot[5]-xdot_old[5])-((p[0]*p[1]*x[4])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[4]-stau[0]*(x[5]-w[1]*x[4])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(x[4]*(p[3]+p[1]*p[2]+p[1]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - deltasx[6] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[6]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[6]-xdot_old[6])-((sx[6]-stau[0]*(x[7]-w[1]*x[6]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[7] = -stau[0]*(xdot[7]-xdot_old[7])-((p[0]*p[1]*x[6])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[6]-stau[0]*(x[7]-w[1]*x[6])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(x[6]*(p[3]+p[1]*p[2]+p[1]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - deltasx[8] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[8]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[8]-xdot_old[8])-((sx[8]-stau[0]*(x[9]-w[1]*x[8]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[9] = -stau[0]*(xdot[9]-xdot_old[9])-((p[0]*p[1]*x[8])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[8]-stau[0]*(x[9]-w[1]*x[8])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(x[8]*(p[3]+p[1]*p[2]+p[1]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - deltasx[0] = -sx[0]-stau[0]*(xdot[0]-xdot_old[0])-stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1]); - deltasx[2] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[2]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[2]-xdot_old[2])-((sx[2]-stau[0]*(x[3]-w[1]*x[2]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[3] = -stau[0]*(xdot[3]-xdot_old[3])-((p[0]*p[1]*x[2])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[2]-stau[0]*(x[3]-w[1]*x[2])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(x[2]*(p[0]*p[2]+p[0]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - deltasx[4] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[4]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[4]-xdot_old[4])-((sx[4]-stau[0]*(x[5]-w[1]*x[4]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[5] = -stau[0]*(xdot[5]-xdot_old[5])-((p[0]*p[1]*x[4])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[4]-stau[0]*(x[5]-w[1]*x[4])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(x[4]*(p[0]*p[2]+p[0]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - deltasx[6] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[6]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[6]-xdot_old[6])-((sx[6]-stau[0]*(x[7]-w[1]*x[6]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[7] = -stau[0]*(xdot[7]-xdot_old[7])-((p[0]*p[1]*x[6])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[6]-stau[0]*(x[7]-w[1]*x[6])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(x[6]*(p[0]*p[2]+p[0]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - deltasx[8] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[8]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[8]-xdot_old[8])-((sx[8]-stau[0]*(x[9]-w[1]*x[8]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[9] = -stau[0]*(xdot[9]-xdot_old[9])-((p[0]*p[1]*x[8])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[8]-stau[0]*(x[9]-w[1]*x[8])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(x[8]*(p[0]*p[2]+p[0]*x[0]))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - deltasx[0] = -sx[0]-stau[0]*(xdot[0]-xdot_old[0])-stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-1.0; - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1]); - deltasx[2] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[2]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[2]-xdot_old[2])+(x[2]*(p[2]*(2.0/2.5E1)-5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-((sx[2]-stau[0]*(x[3]-w[1]*x[2]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[3] = -stau[0]*(xdot[3]-xdot_old[3])-((p[0]*p[1]*x[2])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[2]-stau[0]*(x[3]-w[1]*x[2])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(p[0]*p[1]*x[2])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - deltasx[4] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[4]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[4]-xdot_old[4])+(x[4]*(p[2]*(2.0/2.5E1)-5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-((sx[4]-stau[0]*(x[5]-w[1]*x[4]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[5] = -stau[0]*(xdot[5]-xdot_old[5])-((p[0]*p[1]*x[4])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[4]-stau[0]*(x[5]-w[1]*x[4])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(p[0]*p[1]*x[4])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - deltasx[6] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[6]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[6]-xdot_old[6])+(x[6]*(p[2]*(2.0/2.5E1)-5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-((sx[6]-stau[0]*(x[7]-w[1]*x[6]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[7] = -stau[0]*(xdot[7]-xdot_old[7])-((p[0]*p[1]*x[6])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[6]-stau[0]*(x[7]-w[1]*x[6])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(p[0]*p[1]*x[6])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - deltasx[8] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[8]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[8]-xdot_old[8])+(x[8]*(p[2]*(2.0/2.5E1)-5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-((sx[8]-stau[0]*(x[9]-w[1]*x[8]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[9] = -stau[0]*(xdot[9]-xdot_old[9])-((p[0]*p[1]*x[8])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[8]-stau[0]*(x[9]-w[1]*x[8])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(p[0]*p[1]*x[8])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - deltasx[0] = -sx[0]-stau[0]*(xdot[0]-xdot_old[0])-stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltasx[1] = -stau[0]*(xdot[1]-xdot_old[1])+1.0; - deltasx[2] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[2]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[2]-xdot_old[2])-x[2]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-((sx[2]-stau[0]*(x[3]-w[1]*x[2]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[3] = -stau[0]*(xdot[3]-xdot_old[3])-((p[0]*p[1]*x[2])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[2]-stau[0]*(x[3]-w[1]*x[2])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(p[0]*x[2])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - deltasx[4] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[4]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[4]-xdot_old[4])-x[4]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-((sx[4]-stau[0]*(x[5]-w[1]*x[4]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[5] = -stau[0]*(xdot[5]-xdot_old[5])-((p[0]*p[1]*x[4])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[4]-stau[0]*(x[5]-w[1]*x[4])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(p[0]*x[4])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - deltasx[6] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[6]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[6]-xdot_old[6])-x[6]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-((sx[6]-stau[0]*(x[7]-w[1]*x[6]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[7] = -stau[0]*(xdot[7]-xdot_old[7])-((p[0]*p[1]*x[6])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[6]-stau[0]*(x[7]-w[1]*x[6])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(p[0]*x[6])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - deltasx[8] = -(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))*((x[8]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))-stau[0]*(xdot[8]-xdot_old[8])-x[8]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-((sx[8]-stau[0]*(x[9]-w[1]*x[8]))*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltasx[9] = -stau[0]*(xdot[9]-xdot_old[9])-((p[0]*p[1]*x[8])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*(sx[0]+stau[0]*(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2))-((p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*(sx[8]-stau[0]*(x[9]-w[1]*x[8])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(p[0]*x[8])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(sx[1]-p[0]*stau[0]*(x[1]-p[1]*x[0]))*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - - } break; - - } - - } break; - -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/deltax.cpp b/models/model_neuron_o2/deltax.cpp deleted file mode 100644 index c77cf46cf5..0000000000 --- a/models/model_neuron_o2/deltax.cpp +++ /dev/null @@ -1,35 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void deltax_model_neuron_o2(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old) { - switch(ie) { - case 0: { - deltax[0] = -p[2]-x[0]; - deltax[1] = p[3]; - deltax[2] = -(x[2]*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltax[3] = -(x[2]*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltax[4] = -(x[4]*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltax[5] = -(x[4]*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltax[6] = -(x[6]*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-1.0; - deltax[7] = -(x[6]*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltax[8] = -(x[8]*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltax[9] = -(x[8]*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+1.0; - - } break; - - } -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/deltaxB.cpp b/models/model_neuron_o2/deltaxB.cpp deleted file mode 100644 index 7d804618ee..0000000000 --- a/models/model_neuron_o2/deltaxB.cpp +++ /dev/null @@ -1,31 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void deltaxB_model_neuron_o2(double *deltaxB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) { - switch(ie) { - case 0: { - deltaxB[0] = xB[0]+xB[2]*((x[2]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))+xB[4]*((x[4]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))+xB[6]*((x[6]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))+xB[8]*((x[8]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))+xB[3]*((p[0]*p[1]*x[2])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))+xB[5]*((p[0]*p[1]*x[4])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))+xB[7]*((p[0]*p[1]*x[6])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))+xB[9]*((p[0]*p[1]*x[8])/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)); - deltaxB[1] = x[2]*xB[3]*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)+x[4]*xB[5]*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)+x[6]*xB[7]*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)+x[8]*xB[9]*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0]))*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)+x[2]*xB[2]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1))+x[4]*xB[4]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1))+x[6]*xB[6]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1))+x[8]*xB[8]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)); - deltaxB[2] = (xB[3]*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(xB[2]*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltaxB[4] = (xB[5]*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(xB[4]*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltaxB[6] = (xB[7]*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(xB[6]*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - deltaxB[8] = (xB[9]*(p[0]*(p[3]+x[1]+p[1]*p[2])-p[0]*(x[1]-p[1]*x[0])))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+(xB[8]*(p[2]*5.0+p[3]+x[0]*5.0-(p[2]*p[2])*(1.0/2.5E1)+(x[0]*x[0])*(1.0/2.5E1)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/drzdx.cpp b/models/model_neuron_o2/drzdx.cpp deleted file mode 100644 index 17787035bd..0000000000 --- a/models/model_neuron_o2/drzdx.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void drzdx_model_neuron_o2(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) { - drzdx[0+0*5] = 1.0; - drzdx[1+2*5] = 1.0; - drzdx[2+4*5] = 1.0; - drzdx[3+6*5] = 1.0; - drzdx[4+8*5] = 1.0; -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/dwdx.cpp b/models/model_neuron_o2/dwdx.cpp deleted file mode 100644 index 3a2036c023..0000000000 --- a/models/model_neuron_o2/dwdx.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void dwdx_model_neuron_o2(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) { - dwdx[0] = 2.0/2.5E1; - dwdx[1] = dwdx[0]; -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/dxdotdp.cpp b/models/model_neuron_o2/dxdotdp.cpp deleted file mode 100644 index e9d6c535ea..0000000000 --- a/models/model_neuron_o2/dxdotdp.cpp +++ /dev/null @@ -1,39 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void dxdotdp_model_neuron_o2(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) { -switch (ip) { - case 0: { - dxdotdp[1] = -x[1]+p[1]*x[0]; - dxdotdp[3] = -x[3]+p[1]*x[2]; - dxdotdp[5] = x[0]-x[5]+p[1]*x[4]; - dxdotdp[7] = -x[7]+p[1]*x[6]; - dxdotdp[9] = -x[9]+p[1]*x[8]; - - } break; - - case 1: { - dxdotdp[1] = p[0]*x[0]; - dxdotdp[3] = x[0]+p[0]*x[2]; - dxdotdp[5] = p[0]*x[4]; - dxdotdp[7] = p[0]*x[6]; - dxdotdp[9] = p[0]*x[8]; - - } break; - -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/dydx.cpp b/models/model_neuron_o2/dydx.cpp deleted file mode 100644 index 9776535163..0000000000 --- a/models/model_neuron_o2/dydx.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void dydx_model_neuron_o2(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - dydx[0+0*5] = 1.0; - dydx[1+2*5] = 1.0; - dydx[2+4*5] = 1.0; - dydx[3+6*5] = 1.0; - dydx[4+8*5] = 1.0; -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/dzdx.cpp b/models/model_neuron_o2/dzdx.cpp deleted file mode 100644 index 7c60b2b6e9..0000000000 --- a/models/model_neuron_o2/dzdx.cpp +++ /dev/null @@ -1,32 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void dzdx_model_neuron_o2(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) { - dzdx[0+0*5] = -1.0/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - dzdx[1+0*5] = x[2]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - dzdx[1+1*5] = -x[2]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - dzdx[1+2*5] = -1.0/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - dzdx[2+0*5] = x[4]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - dzdx[2+1*5] = -x[4]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - dzdx[2+4*5] = -1.0/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - dzdx[3+0*5] = x[6]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - dzdx[3+1*5] = -x[6]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - dzdx[3+6*5] = -1.0/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - dzdx[4+0*5] = x[8]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - dzdx[4+1*5] = -x[8]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0); - dzdx[4+8*5] = -1.0/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/main.cpp b/models/model_neuron_o2/main.cpp deleted file mode 100644 index ecdff85a46..0000000000 --- a/models/model_neuron_o2/main.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#include - -#include "wrapfunctions.h" /* model-provided functions */ -#include /* AMICI base functions */ - -template -std::ostream& operator<<(std::ostream& os, std::vector const& v) { - os << "["; - for (typename std::vector::const_iterator ii = v.begin(); ii != v.end(); - ++ii) { - os << " " << *ii; - } - os << "]"; - return os; -} - -/* - * This is a scaffold for a stand-alone AMICI simulation executable - * demonstrating the basic use of the AMICI C++ API. - */ - -int main() { - std::cout << "********************************" << std::endl; - std::cout << "** Running forward simulation **" << std::endl; - std::cout << "********************************" << std::endl << std::endl; - - // Create a model instance - auto model = amici::generic_model::getModel(); - - // Set desired output timepoints - model->setTimepoints({0.0, 1.0, 10.0, 100.0, 1000.0}); - - // Create a solver instance - auto solver = model->getSolver(); - - // Optionally set integration tolerance - solver->setAbsoluteTolerance(1e-16); - solver->setRelativeTolerance(1e-8); - - // Run the simulation using default parameters set during model import - // (can be changed using model->setParameters() or model->setParameterBy*()) - auto rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print observable time course - auto observable_ids = model->getObservableIds(); - std::cout << "Simulated observables for timepoints " << rdata->ts << "\n\n"; - for (int i_observable = 0; i_observable < rdata->ny; ++i_observable) { - std::cout << observable_ids[i_observable] << ":\n\t"; - for (int i_time = 0; i_time < rdata->nt; ++i_time) { - // rdata->y is a flat 2D array in row-major ordering - std::cout << rdata->y[i_time * rdata->ny + i_observable] << " "; - } - std::cout << std::endl << std::endl; - } - - std::cout << std::endl; - std::cout << "**********************************" << std::endl; - std::cout << "** Forward sensitivity analysis **" << std::endl; - std::cout << "**********************************" << std::endl << std::endl; - - // Enable first-order sensitivity analysis - solver->setSensitivityOrder(amici::SensitivityOrder::first); - // Use forward sensitivities - solver->setSensitivityMethod(amici::SensitivityMethod::forward); - - // Run the simulation - rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print state sensitivities sx... - // ... for the first timepoint... - int i_time = 0; - // ... with respect to the first parameter - int i_nplist = 0; - - // get identifiers from model - auto state_ids = model->getStateIds(); - auto parameter_ids = model->getParameterIds(); - - std::cout << "State sensitivities for timepoint " << rdata->ts[i_time] - << std::endl; // nt x nplist x nx - for (int i_state = 0; i_state < rdata->nx; ++i_state) { - std::cout << "\td(" << state_ids[i_state] << ")/d(" - << parameter_ids[model->plist(i_nplist)] << ") = "; - - // rdata->sx is a flat 3D array in row-major ordering - std::cout << rdata->sx - [i_time * rdata->nplist * rdata->nx - + i_nplist * rdata->nx + i_state]; - std::cout << std::endl; - } - - return 0; -} diff --git a/models/model_neuron_o2/model_neuron_o2.h b/models/model_neuron_o2/model_neuron_o2.h deleted file mode 100644 index f29e1c88f3..0000000000 --- a/models/model_neuron_o2/model_neuron_o2.h +++ /dev/null @@ -1,248 +0,0 @@ -#ifndef _amici_model_neuron_o2_h -#define _amici_model_neuron_o2_h -/* Generated by amiwrap (R2017b) d69c026f8f8a89a13f1fa1307548f2b8f7045fe1 */ -#include -#include -#include "amici/defines.h" -#include //SUNMatrixContent_Sparse definition -#include "amici/solver_cvodes.h" -#include "amici/model_ode.h" - -namespace amici { - -class Solver; - -namespace model_model_neuron_o2{ - -extern void JSparse_model_neuron_o2(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void Jrz_model_neuron_o2(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz); -extern void Jy_model_neuron_o2(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void Jz_model_neuron_o2(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz); -extern void dJrzdsigma_model_neuron_o2(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz); -extern void dJrzdz_model_neuron_o2(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz); -extern void dJydsigma_model_neuron_o2(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydy_model_neuron_o2(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJzdsigma_model_neuron_o2(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz); -extern void dJzdz_model_neuron_o2(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz); -extern void deltaqB_model_neuron_o2(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB); -extern void deltasx_model_neuron_o2(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl); -extern void deltax_model_neuron_o2(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old); -extern void deltaxB_model_neuron_o2(double *deltaxB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB); -extern void drzdx_model_neuron_o2(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h); -extern void dwdx_model_neuron_o2(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static); -extern void dxdotdp_model_neuron_o2(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp); -extern void dydx_model_neuron_o2(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void dzdx_model_neuron_o2(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h); -extern void root_model_neuron_o2(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl); -extern void rz_model_neuron_o2(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h); -extern void sigmay_model_neuron_o2(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y); -extern void sigmaz_model_neuron_o2(double *sigmaz, const realtype t, const realtype *p, const realtype *k); -extern void srz_model_neuron_o2(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip); -extern void stau_model_neuron_o2(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie); -extern void sx0_model_neuron_o2(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip); -extern void sz_model_neuron_o2(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip); -extern void w_model_neuron_o2(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static); -extern void x0_model_neuron_o2(realtype *x0, const realtype t, const realtype *p, const realtype *k); -extern void xdot_model_neuron_o2(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); -extern void y_model_neuron_o2(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); -extern void z_model_neuron_o2(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h); - -class Model_model_neuron_o2 : public amici::Model_ODE { -public: - Model_model_neuron_o2() - : amici::Model_ODE( - amici::ModelDimensions( - 10, - 2, - 10, - 2, - 0, - 4, - 2, - 5, - 1, - 5, - 1, - 1, - 1, - 0, - 5, - 2, - 2, - 0, - 0, - 0, - {}, - 0, - 0, - 0, - 27, - 1, - 8 - ), - amici::SimulationParameters( - std::vector(2, 1.0), - std::vector(4, 1.0) - ), - amici::SecondOrderMode::full, - std::vector{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, - std::vector{1, 1, 1, 1, 1}) - {}; - - amici::Model* clone() const override { return new Model_model_neuron_o2(*this); }; - - std::string getAmiciCommit() const override { return "d69c026f8f8a89a13f1fa1307548f2b8f7045fe1"; }; - - void fJSparse(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - JSparse_model_neuron_o2(JSparse, t, x, p, k, h, w, dwdx); - } - - void fJrz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - Jrz_model_neuron_o2(nllh, iz, p, k, rz, sigmaz); - } - - void fJy(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - Jy_model_neuron_o2(nllh, iy, p, k, y, sigmay, my); - } - - void fJz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - Jz_model_neuron_o2(nllh, iz, p, k, z, sigmaz, mz); - } - - void fdJrzdsigma(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - dJrzdsigma_model_neuron_o2(dJrzdsigma, iz, p, k, rz, sigmaz); - } - - void fdJrzdz(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - dJrzdz_model_neuron_o2(dJrzdz, iz, p, k, rz, sigmaz); - } - - void fdJydsigma(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydsigma_model_neuron_o2(dJydsigma, iy, p, k, y, sigmay, my); - } - - void fdJydy(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydy_model_neuron_o2(dJydy, iy, p, k, y, sigmay, my); - } - - void fdJzdsigma(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - dJzdsigma_model_neuron_o2(dJzdsigma, iz, p, k, z, sigmaz, mz); - } - - void fdJzdz(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - dJzdz_model_neuron_o2(dJzdz, iz, p, k, z, sigmaz, mz); - } - - void fdeltaqB(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - deltaqB_model_neuron_o2(deltaqB, t, x, p, k, h, ip, ie, xdot, xdot_old, xB); - } - - void fdeltasx(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) override { - deltasx_model_neuron_o2(deltasx, t, x, p, k, h, w, ip, ie, xdot, xdot_old, sx, stau, tcl); - } - - void fdeltax(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old) override { - deltax_model_neuron_o2(deltax, t, x, p, k, h, ie, xdot, xdot_old); - } - - void fdeltaxB(double *deltaxB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - deltaxB_model_neuron_o2(deltaxB, t, x, p, k, h, ie, xdot, xdot_old, xB); - } - - void fdrzdp(double *drzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdrzdx(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - drzdx_model_neuron_o2(drzdx, ie, t, x, p, k, h); - } - - void fdsigmaydp(double *dsigmaydp, const realtype t, const realtype *p, const realtype *k, const realtype *y, const int ip) override { - } - - void fdsigmazdp(double *dsigmazdp, const realtype t, const realtype *p, const realtype *k, const int ip) override { - } - - void fdwdp(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static) override { - } - - void fdwdx(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) override { - dwdx_model_neuron_o2(dwdx, t, x, p, k, h, w, tcl, spl, include_static); - } - - void fdxdotdp(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - dxdotdp_model_neuron_o2(dxdotdp, t, x, p, k, h, ip, w, dwdp); - } - - void fdydp(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - } - - void fdydx(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - dydx_model_neuron_o2(dydx, t, x, p, k, h, w, dwdx); - } - - void fdzdp(double *dzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdzdx(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - dzdx_model_neuron_o2(dzdx, ie, t, x, p, k, h); - } - - void froot(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl) override { - root_model_neuron_o2(root, t, x, p, k, h, tcl); - } - - void frz(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - rz_model_neuron_o2(rz, ie, t, x, p, k, h); - } - - void fsigmay(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) override { - sigmay_model_neuron_o2(sigmay, t, p, k, y); - } - - void fsigmaz(double *sigmaz, const realtype t, const realtype *p, const realtype *k) override { - sigmaz_model_neuron_o2(sigmaz, t, p, k); - } - - void fsrz(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - srz_model_neuron_o2(srz, ie, t, x, p, k, h, sx, ip); - } - - void fstau(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) override { - stau_model_neuron_o2(stau, t, x, p, k, h, tcl, sx, ip, ie); - } - - void fsx0(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) override { - sx0_model_neuron_o2(sx0, t, x0, p, k, ip); - } - - void fsz(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - sz_model_neuron_o2(sz, ie, t, x, p, k, h, sx, ip); - } - - void fw(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) override { - w_model_neuron_o2(w, t, x, p, k, h, tcl, spl, include_static); - } - - void fx0(realtype *x0, const realtype t, const realtype *p, const realtype *k) override { - x0_model_neuron_o2(x0, t, p, k); - } - - void fxdot(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - xdot_model_neuron_o2(xdot, t, x, p, k, h, w); - } - - void fy(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - y_model_neuron_o2(y, t, x, p, k, h, w); - } - - void fz(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - z_model_neuron_o2(z, ie, t, x, p, k, h); - } - -}; - -} // namespace model_model_neuron_o2 - -} // namespace amici - -#endif /* _amici_model_neuron_o2_h */ diff --git a/models/model_neuron_o2/root.cpp b/models/model_neuron_o2/root.cpp deleted file mode 100644 index 7fba331de0..0000000000 --- a/models/model_neuron_o2/root.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void root_model_neuron_o2(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl) { - root[0] = x[0]-3.0E1; -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/rz.cpp b/models/model_neuron_o2/rz.cpp deleted file mode 100644 index ff5a6c1f8c..0000000000 --- a/models/model_neuron_o2/rz.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void rz_model_neuron_o2(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) { - switch(ie) { - case 0: { - rz[0] = x[0]-3.0E1; - rz[1] = x[2]; - rz[2] = x[4]; - rz[3] = x[6]; - rz[4] = x[8]; - - } break; - - } -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/sigmay.cpp b/models/model_neuron_o2/sigmay.cpp deleted file mode 100644 index 3e5743cb70..0000000000 --- a/models/model_neuron_o2/sigmay.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void sigmay_model_neuron_o2(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) { - sigmay[0] = 1.0; -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/sigmaz.cpp b/models/model_neuron_o2/sigmaz.cpp deleted file mode 100644 index 8ef2b748ab..0000000000 --- a/models/model_neuron_o2/sigmaz.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void sigmaz_model_neuron_o2(double *sigmaz, const realtype t, const realtype *p, const realtype *k) { - sigmaz[0] = 1.0; -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/srz.cpp b/models/model_neuron_o2/srz.cpp deleted file mode 100644 index 22c9a50f4f..0000000000 --- a/models/model_neuron_o2/srz.cpp +++ /dev/null @@ -1,81 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void srz_model_neuron_o2(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - srz[0] = sx[0]; - srz[1] = sx[2]; - srz[2] = sx[4]; - srz[3] = sx[6]; - srz[4] = sx[8]; - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - srz[0] = sx[0]; - srz[1] = sx[2]; - srz[2] = sx[4]; - srz[3] = sx[6]; - srz[4] = sx[8]; - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - srz[0] = sx[0]; - srz[1] = sx[2]; - srz[2] = sx[4]; - srz[3] = sx[6]; - srz[4] = sx[8]; - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - srz[0] = sx[0]; - srz[1] = sx[2]; - srz[2] = sx[4]; - srz[3] = sx[6]; - srz[4] = sx[8]; - - } break; - - } - - } break; - -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/stau.cpp b/models/model_neuron_o2/stau.cpp deleted file mode 100644 index c639781b90..0000000000 --- a/models/model_neuron_o2/stau.cpp +++ /dev/null @@ -1,65 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void stau_model_neuron_o2(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - stau[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - stau[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - stau[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - stau[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/swig/CMakeLists.txt b/models/model_neuron_o2/swig/CMakeLists.txt deleted file mode 100644 index 523571c52e..0000000000 --- a/models/model_neuron_o2/swig/CMakeLists.txt +++ /dev/null @@ -1,73 +0,0 @@ -cmake_minimum_required(VERSION 3.15) -cmake_policy(VERSION 3.15...3.27) - -# cmake >=3.27 -if(POLICY CMP0144) - cmake_policy(SET CMP0144 NEW) -endif(POLICY CMP0144) -# cmake >= 3.30 -if(POLICY CMP0167) - cmake_policy(SET CMP0167 NEW) -endif(POLICY CMP0167) - - -if(DEFINED ENV{SWIG}) - set(SWIG_EXECUTABLE $ENV{SWIG}) -endif() - -find_package(SWIG REQUIRED) -include(${SWIG_USE_FILE}) - -if(DEFINED ENV{PYTHON_EXECUTABLE}) - set(Python3_EXECUTABLE $ENV{PYTHON_EXECUTABLE}) -endif() -# We don't need "Interpreter" here, but without that, FindPython3 will -# ignore the Python version selected via $Python3_EXECUTABLE -find_package(Python3 COMPONENTS Interpreter Development) -include_directories(${Python3_INCLUDE_DIRS}) - -set(SWIG_LIBRARY_NAME _${PROJECT_NAME}) -set(CMAKE_SWIG_FLAGS "") -set_source_files_properties(${PROJECT_NAME}.i PROPERTIES CPLUSPLUS ON) - -# swig does not use INTERFACE_INCLUDE_DIRS of linked libraries, so add manually -get_target_property(AMICI_INCLUDE_DIRS Upstream::amici INTERFACE_INCLUDE_DIRECTORIES) -include_directories(${AMICI_INCLUDE_DIRS} .. ${AMICI_INCLUDE_DIRS}/../swig) - -swig_add_library(${SWIG_LIBRARY_NAME} - TYPE MODULE - LANGUAGE python - SOURCES ${PROJECT_NAME}.i) - - -set_target_properties(${SWIG_LIBRARY_NAME} - PROPERTIES - SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE - PREFIX "" -) - -# Python extension suffix -execute_process( - COMMAND ${Python3_EXECUTABLE} -c - "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" - OUTPUT_VARIABLE PY_EXT_SUFFIX OUTPUT_STRIP_TRAILING_WHITESPACE) -if(NOT "${PY_EXT_SUFFIX}" STREQUAL "") - message(STATUS "Python extension suffix is ${PY_EXT_SUFFIX}") - set_target_properties(${SWIG_LIBRARY_NAME} PROPERTIES SUFFIX "${PY_EXT_SUFFIX}" ) -endif() - - -swig_link_libraries(${SWIG_LIBRARY_NAME} - ${Python3_LIBRARIES} - model) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.py - $ DESTINATION .) - -# configure module setup script -set(SETUP_PY_IN ${Amici_DIR}/model_setup.template.py) -set(SETUP_PY_OUT ${CMAKE_CURRENT_BINARY_DIR}/setup.py) - -add_custom_target(install-python - DEPENDS ${SWIG_LIBRARY_NAME} - COMMAND python ${SETUP_PY_OUT} install) diff --git a/models/model_neuron_o2/swig/model_neuron_o2.i b/models/model_neuron_o2/swig/model_neuron_o2.i deleted file mode 100644 index 6c9c51ddb2..0000000000 --- a/models/model_neuron_o2/swig/model_neuron_o2.i +++ /dev/null @@ -1,22 +0,0 @@ -%module model_neuron_o2 -%import amici.i -// Add necessary symbols to generated header - -%{ -#include "wrapfunctions.h" -#include "amici/model_ode.h" -#include "amici/model_dae.h" -using namespace amici; -%} - - -// Make model module accessible from the model -%feature("pythonappend") amici::generic_model::getModel %{ - if '.' in __name__: - import sys - val.module = sys.modules['.'.join(__name__.split('.')[:-1])] -%} - - -// Process symbols in header -%include "wrapfunctions.h" diff --git a/models/model_neuron_o2/sx0.cpp b/models/model_neuron_o2/sx0.cpp deleted file mode 100644 index 4fdd5f4a24..0000000000 --- a/models/model_neuron_o2/sx0.cpp +++ /dev/null @@ -1,26 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void sx0_model_neuron_o2(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) { -switch (ip) { - case 1: { - sx0[1] = k[0]; - - } break; - -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/sz.cpp b/models/model_neuron_o2/sz.cpp deleted file mode 100644 index 9720d84418..0000000000 --- a/models/model_neuron_o2/sz.cpp +++ /dev/null @@ -1,81 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void sz_model_neuron_o2(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) { -switch (ip) { - case 0: { - switch(ie) { - case 0: { - sz[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[1] = x[2]*(x[3]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*-2.0-sx[2]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[2]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[2]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[2] = -x[4]*(x[3]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-x[2]*(x[5]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-sx[4]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[4]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[4]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[3] = -x[6]*(x[3]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-x[2]*(x[7]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-sx[6]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[6]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[6]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[4] = -x[8]*(x[3]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-x[2]*(x[9]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-sx[8]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[8]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[8]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 1: { - switch(ie) { - case 0: { - sz[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[1] = -x[4]*(x[3]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-x[2]*(x[5]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-sx[2]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[2]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[2]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[2] = x[4]*(x[5]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*-2.0-sx[4]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[4]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[4]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[3] = -x[6]*(x[5]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-x[4]*(x[7]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-sx[6]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[6]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[6]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[4] = -x[8]*(x[5]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-x[4]*(x[9]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-sx[8]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[8]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[8]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 2: { - switch(ie) { - case 0: { - sz[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[1] = -x[6]*(x[3]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-x[2]*(x[7]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-sx[2]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[2]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[2]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[2] = -x[6]*(x[5]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-x[4]*(x[7]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-sx[4]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[4]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[4]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[3] = x[6]*(x[7]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*-2.0-sx[6]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[6]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[6]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[4] = -x[8]*(x[7]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-x[6]*(x[9]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-sx[8]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[8]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[8]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - - case 3: { - switch(ie) { - case 0: { - sz[0] = -sx[0]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[1] = -x[8]*(x[3]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[2]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-x[2]*(x[9]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-sx[2]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[2]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[2]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[2] = -x[8]*(x[5]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[4]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-x[4]*(x[9]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-sx[4]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[4]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[4]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[3] = -x[8]*(x[7]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[6]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-x[6]*(x[9]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))-sx[6]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[6]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[6]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - sz[4] = x[8]*(x[9]*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)-x[8]*(x[0]*(2.0/2.5E1)+5.0)*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0))*-2.0-sx[8]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)-(sx[0]*((x[8]*(x[0]*(2.0/2.5E1)+5.0))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2)+p[0]*x[8]*(x[1]-p[1]*x[0])*1.0/pow(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2,2.0)))/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } - - } break; - -} -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/w.cpp b/models/model_neuron_o2/w.cpp deleted file mode 100644 index fca88b9e36..0000000000 --- a/models/model_neuron_o2/w.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void w_model_neuron_o2(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) { - w[0] = x[0]*(2.0/2.5E1); - w[1] = w[0]+5.0; -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/wrapfunctions.cpp b/models/model_neuron_o2/wrapfunctions.cpp deleted file mode 100644 index 572bd4a1fc..0000000000 --- a/models/model_neuron_o2/wrapfunctions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "amici/model.h" -#include "wrapfunctions.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel() { - return std::unique_ptr( - new amici::model_model_neuron_o2::Model_model_neuron_o2()); -} - -} // namespace generic_model - -} // namespace amici - diff --git a/models/model_neuron_o2/wrapfunctions.h b/models/model_neuron_o2/wrapfunctions.h deleted file mode 100644 index 52c7094f90..0000000000 --- a/models/model_neuron_o2/wrapfunctions.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _amici_wrapfunctions_h -#define _amici_wrapfunctions_h - -#include "model_neuron_o2.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel(); - -} // namespace generic_model - -} // namespace amici - -#endif /* _amici_wrapfunctions_h */ diff --git a/models/model_neuron_o2/x0.cpp b/models/model_neuron_o2/x0.cpp deleted file mode 100644 index 0a997336b3..0000000000 --- a/models/model_neuron_o2/x0.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void x0_model_neuron_o2(realtype *x0, const realtype t, const realtype *p, const realtype *k) { - x0[0] = k[0]; - x0[1] = k[0]*p[1]; - x0[5] = k[0]; -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/xdot.cpp b/models/model_neuron_o2/xdot.cpp deleted file mode 100644 index 809a83fa76..0000000000 --- a/models/model_neuron_o2/xdot.cpp +++ /dev/null @@ -1,29 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void xdot_model_neuron_o2(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - xdot[0] = k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2; - xdot[1] = -p[0]*(x[1]-p[1]*x[0]); - xdot[2] = -x[3]+w[1]*x[2]; - xdot[3] = -x[1]+p[1]*x[0]-p[0]*x[3]+p[0]*p[1]*x[2]; - xdot[4] = -x[5]+w[1]*x[4]; - xdot[5] = p[0]*x[0]-p[0]*x[5]+p[0]*p[1]*x[4]; - xdot[6] = -x[7]+w[1]*x[6]; - xdot[7] = -p[0]*x[7]+p[0]*p[1]*x[6]; - xdot[8] = -x[9]+w[1]*x[8]; - xdot[9] = -p[0]*x[9]+p[0]*p[1]*x[8]; -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/y.cpp b/models/model_neuron_o2/y.cpp deleted file mode 100644 index f6aef48c86..0000000000 --- a/models/model_neuron_o2/y.cpp +++ /dev/null @@ -1,24 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void y_model_neuron_o2(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - y[0] = x[0]; - y[1] = x[2]; - y[2] = x[4]; - y[3] = x[6]; - y[4] = x[8]; -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_neuron_o2/z.cpp b/models/model_neuron_o2/z.cpp deleted file mode 100644 index 18af0194f4..0000000000 --- a/models/model_neuron_o2/z.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_neuron_o2{ - -void z_model_neuron_o2(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) { - switch(ie) { - case 0: { - z[0] = t; - z[1] = -x[2]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - z[2] = -x[4]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - z[3] = -x[6]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - z[4] = -x[8]/(k[1]+x[0]*5.0-x[1]+(x[0]*x[0])*(1.0/2.5E1)+1.4E2); - - } break; - - } -} - -} // namespace model_model_neuron_o2 - -} // namespace amici - diff --git a/models/model_robertson/CMakeLists.txt b/models/model_robertson/CMakeLists.txt deleted file mode 100644 index b9c6c2ecb1..0000000000 --- a/models/model_robertson/CMakeLists.txt +++ /dev/null @@ -1,119 +0,0 @@ -# Build AMICI model -cmake_minimum_required(VERSION 3.22) -cmake_policy(VERSION 3.22...3.30) - -project(model_robertson) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -include(CheckCXXCompilerFlag) -set(MY_CXX_FLAGS -Wall -Wno-unused-function -Wno-unused-variable) -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - list(APPEND MY_CXX_FLAGS -Wno-unused-but-set-variable) -endif() -foreach(flag ${MY_CXX_FLAGS}) - unset(CUR_FLAG_SUPPORTED CACHE) - check_cxx_compiler_flag(${flag} CUR_FLAG_SUPPORTED) - if(${CUR_FLAG_SUPPORTED}) - string(APPEND CMAKE_CXX_FLAGS " ${flag}") - endif() -endforeach() - -if(DEFINED ENV{AMICI_CXXFLAGS}) - message(STATUS "Appending flags from AMICI_CXXFLAGS: $ENV{AMICI_CXXFLAGS}") - add_compile_options("$ENV{AMICI_CXXFLAGS}") -endif() -if(DEFINED ENV{AMICI_LDFLAGS}) - message(STATUS "Appending flags from AMICI_LDFLAGS: $ENV{AMICI_LDFLAGS}") - link_libraries("$ENV{AMICI_LDFLAGS}") -endif() - -find_package(Amici REQUIRED HINTS - ${CMAKE_CURRENT_LIST_DIR}/../../build) -message(STATUS "Found AMICI ${Amici_DIR}") -set_target_properties(Upstream::amici PROPERTIES - MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo;Release; - MAP_IMPORTED_CONFIG_RELEASE Release - MAP_IMPORTED_CONFIG_DEBUG Debug;RelWithDebInfo;) - -# Debug build? -if("$ENV{ENABLE_AMICI_DEBUGGING}" OR "$ENV{ENABLE_GCOV_COVERAGE}") - add_compile_options(-UNDEBUG) - if(MSVC) - add_compile_options(-DEBUG) - else() - add_compile_options(-O0 -g) - endif() -endif() - -# coverage options -if($ENV{ENABLE_GCOV_COVERAGE}) - string(APPEND CMAKE_CXX_FLAGS_DEBUG " --coverage") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " --coverage") -endif() - -set(MODEL_DIR ${CMAKE_CURRENT_LIST_DIR}) - -set(SRC_LIST_LIB ${MODEL_DIR}/JSparse.cpp -${MODEL_DIR}/Jy.cpp -${MODEL_DIR}/M.cpp -${MODEL_DIR}/dJydsigma.cpp -${MODEL_DIR}/dJydy.cpp -${MODEL_DIR}/dwdp.cpp -${MODEL_DIR}/dwdx.cpp -${MODEL_DIR}/dxdotdp.cpp -${MODEL_DIR}/dydx.cpp -${MODEL_DIR}/sigmay.cpp -${MODEL_DIR}/w.cpp -${MODEL_DIR}/x0.cpp -${MODEL_DIR}/xdot.cpp -${MODEL_DIR}/y.cpp - ${MODEL_DIR}/wrapfunctions.cpp) - -add_library(${PROJECT_NAME} ${SRC_LIST_LIB}) -add_library(model ALIAS ${PROJECT_NAME}) - -# Some special functions require boost -# -# TODO: set some flag during code generation whether the given model requires -# boost. for now, try to find it, add include directories and link against it. -# let the compiler/linker error if it is required but not found -find_package(Boost) - -target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") - -target_link_libraries( - ${PROJECT_NAME} - PUBLIC Upstream::amici - PRIVATE $<$:Boost::boost>) - -if(NOT "${AMICI_PYTHON_BUILD_EXT_ONLY}") - set(SRC_LIST_EXE main.cpp) - add_executable(simulate_${PROJECT_NAME} ${SRC_LIST_EXE}) - target_link_libraries(simulate_${PROJECT_NAME} ${PROJECT_NAME}) -endif() - -# SWIG -option(ENABLE_SWIG "Build swig/python library?" ON) -if(ENABLE_SWIG) - add_subdirectory(swig) -endif() - -# -include(GNUInstallDirs) -install( - TARGETS ${PROJECT_NAME} - EXPORT ${PROJECT_NAME}Targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - INCLUDES - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -export( - EXPORT ${PROJECT_NAME}Targets - FILE ${PROJECT_NAME}Config.cmake - NAMESPACE Upstream::) -# diff --git a/models/model_robertson/JSparse.cpp b/models/model_robertson/JSparse.cpp deleted file mode 100644 index 46c0faa1d3..0000000000 --- a/models/model_robertson/JSparse.cpp +++ /dev/null @@ -1,42 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -#include //SUNMatrixContent_Sparse definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_robertson{ - -void JSparse_model_robertson(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype cj, const realtype *dx, const realtype *w, const realtype *dwdx) { - JSparse->indexvals[0] = 0; - JSparse->indexvals[1] = 1; - JSparse->indexvals[2] = 2; - JSparse->indexvals[3] = 0; - JSparse->indexvals[4] = 1; - JSparse->indexvals[5] = 2; - JSparse->indexvals[6] = 0; - JSparse->indexvals[7] = 1; - JSparse->indexvals[8] = 2; - JSparse->indexptrs[0] = 0; - JSparse->indexptrs[1] = 3; - JSparse->indexptrs[2] = 6; - JSparse->indexptrs[3] = 9; - JSparse->data[0] = -cj-p[0]; - JSparse->data[1] = p[0]; - JSparse->data[2] = 1.0; - JSparse->data[3] = dwdx[0]; - JSparse->data[4] = -cj-dwdx[0]-p[2]*x[1]*2.0; - JSparse->data[5] = 1.0; - JSparse->data[6] = dwdx[1]; - JSparse->data[7] = -dwdx[1]; - JSparse->data[8] = 1.0; -} - -} // namespace model_model_robertson - -} // namespace amici - diff --git a/models/model_robertson/Jy.cpp b/models/model_robertson/Jy.cpp deleted file mode 100644 index f3f5fe1a80..0000000000 --- a/models/model_robertson/Jy.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_robertson{ - -void Jy_model_robertson(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - nllh[0] = amici::log((sigmay[0]*sigmay[0])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*5.0E-1; - break; - case 1: - nllh[0] = amici::log((sigmay[1]*sigmay[1])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[1]*sigmay[1])*pow(my[1]-y[1],2.0)*5.0E-1; - break; - case 2: - nllh[0] = amici::log((sigmay[2]*sigmay[2])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[2]*sigmay[2])*pow(my[2]-y[2],2.0)*5.0E-1; - break; -} -} - -} // namespace model_model_robertson - -} // namespace amici - diff --git a/models/model_robertson/M.cpp b/models/model_robertson/M.cpp deleted file mode 100644 index 51b497e8fc..0000000000 --- a/models/model_robertson/M.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_robertson{ - -void M_model_robertson(realtype *M, const realtype t, const realtype *x, const realtype *p, const realtype *k) { - M[0+0*3] = 1.0; - M[1+1*3] = 1.0; -} - -} // namespace model_model_robertson - -} // namespace amici - diff --git a/models/model_robertson/dJydsigma.cpp b/models/model_robertson/dJydsigma.cpp deleted file mode 100644 index b4a4419f8a..0000000000 --- a/models/model_robertson/dJydsigma.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_robertson{ - -void dJydsigma_model_robertson(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydsigma[0+0*1] = 1.0/(sigmay[0]*sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*-1.0+1.0/sigmay[0]; - break; - case 1: - dJydsigma[0+1*1] = 1.0/(sigmay[1]*sigmay[1]*sigmay[1])*pow(my[1]-y[1],2.0)*-1.0+1.0/sigmay[1]; - break; - case 2: - dJydsigma[0+2*1] = 1.0/(sigmay[2]*sigmay[2]*sigmay[2])*pow(my[2]-y[2],2.0)*-1.0+1.0/sigmay[2]; - break; -} -} - -} // namespace model_model_robertson - -} // namespace amici - diff --git a/models/model_robertson/dJydy.cpp b/models/model_robertson/dJydy.cpp deleted file mode 100644 index 6b337d31ea..0000000000 --- a/models/model_robertson/dJydy.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_robertson{ - -void dJydy_model_robertson(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydy[0+0*1] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - break; - case 1: - dJydy[0+1*1] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - break; - case 2: - dJydy[0+2*1] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_robertson - -} // namespace amici - diff --git a/models/model_robertson/dwdp.cpp b/models/model_robertson/dwdp.cpp deleted file mode 100644 index 5911b99078..0000000000 --- a/models/model_robertson/dwdp.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_robertson{ - -void dwdp_model_robertson(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static) { - dwdp[0] = x[1]*x[2]; -} - -} // namespace model_model_robertson - -} // namespace amici - diff --git a/models/model_robertson/dwdx.cpp b/models/model_robertson/dwdx.cpp deleted file mode 100644 index 1e75c29246..0000000000 --- a/models/model_robertson/dwdx.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_robertson{ - -void dwdx_model_robertson(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) { - dwdx[0] = p[1]*x[2]; - dwdx[1] = p[1]*x[1]; -} - -} // namespace model_model_robertson - -} // namespace amici - diff --git a/models/model_robertson/dxdotdp.cpp b/models/model_robertson/dxdotdp.cpp deleted file mode 100644 index 0067e86b88..0000000000 --- a/models/model_robertson/dxdotdp.cpp +++ /dev/null @@ -1,38 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_robertson{ - -void dxdotdp_model_robertson(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *dx, const realtype *w, const realtype *dwdp) { -switch (ip) { - case 0: { - dxdotdp[0] = -x[0]; - dxdotdp[1] = x[0]; - - } break; - - case 1: { - dxdotdp[0] = dwdp[0]; - dxdotdp[1] = -dwdp[0]; - - } break; - - case 2: { - dxdotdp[1] = -x[1]*x[1]; - - } break; - -} -} - -} // namespace model_model_robertson - -} // namespace amici - diff --git a/models/model_robertson/dydx.cpp b/models/model_robertson/dydx.cpp deleted file mode 100644 index 5ffe7dab16..0000000000 --- a/models/model_robertson/dydx.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_robertson{ - -void dydx_model_robertson(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - dydx[0+0*3] = 1.0; - dydx[1+1*3] = 1.0E4; - dydx[2+2*3] = 1.0; -} - -} // namespace model_model_robertson - -} // namespace amici - diff --git a/models/model_robertson/main.cpp b/models/model_robertson/main.cpp deleted file mode 100644 index ecdff85a46..0000000000 --- a/models/model_robertson/main.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#include - -#include "wrapfunctions.h" /* model-provided functions */ -#include /* AMICI base functions */ - -template -std::ostream& operator<<(std::ostream& os, std::vector const& v) { - os << "["; - for (typename std::vector::const_iterator ii = v.begin(); ii != v.end(); - ++ii) { - os << " " << *ii; - } - os << "]"; - return os; -} - -/* - * This is a scaffold for a stand-alone AMICI simulation executable - * demonstrating the basic use of the AMICI C++ API. - */ - -int main() { - std::cout << "********************************" << std::endl; - std::cout << "** Running forward simulation **" << std::endl; - std::cout << "********************************" << std::endl << std::endl; - - // Create a model instance - auto model = amici::generic_model::getModel(); - - // Set desired output timepoints - model->setTimepoints({0.0, 1.0, 10.0, 100.0, 1000.0}); - - // Create a solver instance - auto solver = model->getSolver(); - - // Optionally set integration tolerance - solver->setAbsoluteTolerance(1e-16); - solver->setRelativeTolerance(1e-8); - - // Run the simulation using default parameters set during model import - // (can be changed using model->setParameters() or model->setParameterBy*()) - auto rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print observable time course - auto observable_ids = model->getObservableIds(); - std::cout << "Simulated observables for timepoints " << rdata->ts << "\n\n"; - for (int i_observable = 0; i_observable < rdata->ny; ++i_observable) { - std::cout << observable_ids[i_observable] << ":\n\t"; - for (int i_time = 0; i_time < rdata->nt; ++i_time) { - // rdata->y is a flat 2D array in row-major ordering - std::cout << rdata->y[i_time * rdata->ny + i_observable] << " "; - } - std::cout << std::endl << std::endl; - } - - std::cout << std::endl; - std::cout << "**********************************" << std::endl; - std::cout << "** Forward sensitivity analysis **" << std::endl; - std::cout << "**********************************" << std::endl << std::endl; - - // Enable first-order sensitivity analysis - solver->setSensitivityOrder(amici::SensitivityOrder::first); - // Use forward sensitivities - solver->setSensitivityMethod(amici::SensitivityMethod::forward); - - // Run the simulation - rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print state sensitivities sx... - // ... for the first timepoint... - int i_time = 0; - // ... with respect to the first parameter - int i_nplist = 0; - - // get identifiers from model - auto state_ids = model->getStateIds(); - auto parameter_ids = model->getParameterIds(); - - std::cout << "State sensitivities for timepoint " << rdata->ts[i_time] - << std::endl; // nt x nplist x nx - for (int i_state = 0; i_state < rdata->nx; ++i_state) { - std::cout << "\td(" << state_ids[i_state] << ")/d(" - << parameter_ids[model->plist(i_nplist)] << ") = "; - - // rdata->sx is a flat 3D array in row-major ordering - std::cout << rdata->sx - [i_time * rdata->nplist * rdata->nx - + i_nplist * rdata->nx + i_state]; - std::cout << std::endl; - } - - return 0; -} diff --git a/models/model_robertson/model_robertson.h b/models/model_robertson/model_robertson.h deleted file mode 100644 index ef524b9239..0000000000 --- a/models/model_robertson/model_robertson.h +++ /dev/null @@ -1,215 +0,0 @@ -#ifndef _amici_model_robertson_h -#define _amici_model_robertson_h -/* Generated by amiwrap (R2017b) d69c026f8f8a89a13f1fa1307548f2b8f7045fe1 */ -#include -#include -#include "amici/defines.h" -#include //SUNMatrixContent_Sparse definition -#include "amici/solver_idas.h" -#include "amici/model_dae.h" - -namespace amici { - -class Solver; - -namespace model_model_robertson{ - -extern void JSparse_model_robertson(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype cj, const realtype *dx, const realtype *w, const realtype *dwdx); -extern void Jy_model_robertson(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void M_model_robertson(realtype *M, const realtype t, const realtype *x, const realtype *p, const realtype *k); -extern void dJydsigma_model_robertson(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydy_model_robertson(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dwdp_model_robertson(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static); -extern void dwdx_model_robertson(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static); -extern void dxdotdp_model_robertson(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *dx, const realtype *w, const realtype *dwdp); -extern void dydx_model_robertson(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void sigmay_model_robertson(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y); -extern void w_model_robertson(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static); -extern void x0_model_robertson(realtype *x0, const realtype t, const realtype *p, const realtype *k); -extern void xdot_model_robertson(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *dx, const realtype *w); -extern void y_model_robertson(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); - -class Model_model_robertson : public amici::Model_DAE { -public: - Model_model_robertson() - : amici::Model_DAE( - amici::ModelDimensions( - 3, - 3, - 3, - 3, - 0, - 3, - 1, - 3, - 3, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 2, - 1, - 0, - 0, - {}, - 0, - 0, - 0, - 9, - 2, - 2 - ), - amici::SimulationParameters( - std::vector(1, 1.0), - std::vector(3, 1.0) - ), - amici::SecondOrderMode::none, - std::vector{1, 1, 0}, - std::vector{}) - {}; - - amici::Model* clone() const override { return new Model_model_robertson(*this); }; - - std::string getAmiciCommit() const override { return "d69c026f8f8a89a13f1fa1307548f2b8f7045fe1"; }; - - void fJSparse(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype cj, const realtype *dx, const realtype *w, const realtype *dwdx) override { - JSparse_model_robertson(JSparse, t, x, p, k, h, cj, dx, w, dwdx); - } - - void fJrz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fJy(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - Jy_model_robertson(nllh, iy, p, k, y, sigmay, my); - } - - void fJz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fM(realtype *M, const realtype t, const realtype *x, const realtype *p, const realtype *k) override { - M_model_robertson(M, t, x, p, k); - } - - void fdJrzdsigma(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fdJrzdz(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fdJydsigma(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydsigma_model_robertson(dJydsigma, iy, p, k, y, sigmay, my); - } - - void fdJydy(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydy_model_robertson(dJydy, iy, p, k, y, sigmay, my); - } - - void fdJzdsigma(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdJzdz(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdeltaqB(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdeltasx(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) override { - } - - void fdeltax(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old) override { - } - - void fdeltaxB(double *deltaxB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdrzdp(double *drzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdrzdx(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void fdsigmaydp(double *dsigmaydp, const realtype t, const realtype *p, const realtype *k, const realtype *y, const int ip) override { - } - - void fdsigmazdp(double *dsigmazdp, const realtype t, const realtype *p, const realtype *k, const int ip) override { - } - - void fdwdp(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static) override { - dwdp_model_robertson(dwdp, t, x, p, k, h, w, tcl, stcl, spl, sspl, include_static); - } - - void fdwdx(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) override { - dwdx_model_robertson(dwdx, t, x, p, k, h, w, tcl, spl, include_static); - } - - void fdxdotdp(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *dx, const realtype *w, const realtype *dwdp) override { - dxdotdp_model_robertson(dxdotdp, t, x, p, k, h, ip, dx, w, dwdp); - } - - void fdydp(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - } - - void fdydx(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - dydx_model_robertson(dydx, t, x, p, k, h, w, dwdx); - } - - void fdzdp(double *dzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdzdx(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void froot(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *dx) override { - } - - void frz(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void fsigmay(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) override { - sigmay_model_robertson(sigmay, t, p, k, y); - } - - void fsigmaz(double *sigmaz, const realtype t, const realtype *p, const realtype *k) override { - } - - void fsrz(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - } - - void fstau(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) override { - } - - void fsx0(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) override { - } - - void fsz(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - } - - void fw(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) override { - w_model_robertson(w, t, x, p, k, h, tcl, spl, include_static); - } - - void fx0(realtype *x0, const realtype t, const realtype *p, const realtype *k) override { - x0_model_robertson(x0, t, p, k); - } - - void fxdot(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *dx, const realtype *w) override { - xdot_model_robertson(xdot, t, x, p, k, h, dx, w); - } - - void fy(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - y_model_robertson(y, t, x, p, k, h, w); - } - - void fz(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - -}; - -} // namespace model_model_robertson - -} // namespace amici - -#endif /* _amici_model_robertson_h */ diff --git a/models/model_robertson/rebuild_model_robertson.m b/models/model_robertson/rebuild_model_robertson.m deleted file mode 100644 index 3fcf9fe467..0000000000 --- a/models/model_robertson/rebuild_model_robertson.m +++ /dev/null @@ -1,5 +0,0 @@ -function rebuild_model_robertson() -modelName = 'model_robertson'; -amimodel.compileAndLinkModel(modelName, '', [], [], [], []); -amimodel.generateMatlabWrapper(3, 3, 3, 1, 0, 0, [], ['simulate_' modelName '.m'], 'model_robertson', 'log10', 1, 1); -end diff --git a/models/model_robertson/sigmay.cpp b/models/model_robertson/sigmay.cpp deleted file mode 100644 index 9e1e5e019c..0000000000 --- a/models/model_robertson/sigmay.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_robertson{ - -void sigmay_model_robertson(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) { - sigmay[0] = 1.0; - sigmay[1] = 1.0; - sigmay[2] = 1.0; -} - -} // namespace model_model_robertson - -} // namespace amici - diff --git a/models/model_robertson/swig/CMakeLists.txt b/models/model_robertson/swig/CMakeLists.txt deleted file mode 100644 index 523571c52e..0000000000 --- a/models/model_robertson/swig/CMakeLists.txt +++ /dev/null @@ -1,73 +0,0 @@ -cmake_minimum_required(VERSION 3.15) -cmake_policy(VERSION 3.15...3.27) - -# cmake >=3.27 -if(POLICY CMP0144) - cmake_policy(SET CMP0144 NEW) -endif(POLICY CMP0144) -# cmake >= 3.30 -if(POLICY CMP0167) - cmake_policy(SET CMP0167 NEW) -endif(POLICY CMP0167) - - -if(DEFINED ENV{SWIG}) - set(SWIG_EXECUTABLE $ENV{SWIG}) -endif() - -find_package(SWIG REQUIRED) -include(${SWIG_USE_FILE}) - -if(DEFINED ENV{PYTHON_EXECUTABLE}) - set(Python3_EXECUTABLE $ENV{PYTHON_EXECUTABLE}) -endif() -# We don't need "Interpreter" here, but without that, FindPython3 will -# ignore the Python version selected via $Python3_EXECUTABLE -find_package(Python3 COMPONENTS Interpreter Development) -include_directories(${Python3_INCLUDE_DIRS}) - -set(SWIG_LIBRARY_NAME _${PROJECT_NAME}) -set(CMAKE_SWIG_FLAGS "") -set_source_files_properties(${PROJECT_NAME}.i PROPERTIES CPLUSPLUS ON) - -# swig does not use INTERFACE_INCLUDE_DIRS of linked libraries, so add manually -get_target_property(AMICI_INCLUDE_DIRS Upstream::amici INTERFACE_INCLUDE_DIRECTORIES) -include_directories(${AMICI_INCLUDE_DIRS} .. ${AMICI_INCLUDE_DIRS}/../swig) - -swig_add_library(${SWIG_LIBRARY_NAME} - TYPE MODULE - LANGUAGE python - SOURCES ${PROJECT_NAME}.i) - - -set_target_properties(${SWIG_LIBRARY_NAME} - PROPERTIES - SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE - PREFIX "" -) - -# Python extension suffix -execute_process( - COMMAND ${Python3_EXECUTABLE} -c - "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" - OUTPUT_VARIABLE PY_EXT_SUFFIX OUTPUT_STRIP_TRAILING_WHITESPACE) -if(NOT "${PY_EXT_SUFFIX}" STREQUAL "") - message(STATUS "Python extension suffix is ${PY_EXT_SUFFIX}") - set_target_properties(${SWIG_LIBRARY_NAME} PROPERTIES SUFFIX "${PY_EXT_SUFFIX}" ) -endif() - - -swig_link_libraries(${SWIG_LIBRARY_NAME} - ${Python3_LIBRARIES} - model) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.py - $ DESTINATION .) - -# configure module setup script -set(SETUP_PY_IN ${Amici_DIR}/model_setup.template.py) -set(SETUP_PY_OUT ${CMAKE_CURRENT_BINARY_DIR}/setup.py) - -add_custom_target(install-python - DEPENDS ${SWIG_LIBRARY_NAME} - COMMAND python ${SETUP_PY_OUT} install) diff --git a/models/model_robertson/swig/model_robertson.i b/models/model_robertson/swig/model_robertson.i deleted file mode 100644 index a6b8705783..0000000000 --- a/models/model_robertson/swig/model_robertson.i +++ /dev/null @@ -1,22 +0,0 @@ -%module model_robertson -%import amici.i -// Add necessary symbols to generated header - -%{ -#include "wrapfunctions.h" -#include "amici/model_ode.h" -#include "amici/model_dae.h" -using namespace amici; -%} - - -// Make model module accessible from the model -%feature("pythonappend") amici::generic_model::getModel %{ - if '.' in __name__: - import sys - val.module = sys.modules['.'.join(__name__.split('.')[:-1])] -%} - - -// Process symbols in header -%include "wrapfunctions.h" diff --git a/models/model_robertson/w.cpp b/models/model_robertson/w.cpp deleted file mode 100644 index ae4145ba6b..0000000000 --- a/models/model_robertson/w.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_robertson{ - -void w_model_robertson(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) { - w[0] = p[1]*x[1]*x[2]; -} - -} // namespace model_model_robertson - -} // namespace amici - diff --git a/models/model_robertson/wrapfunctions.cpp b/models/model_robertson/wrapfunctions.cpp deleted file mode 100644 index 31b42cd13f..0000000000 --- a/models/model_robertson/wrapfunctions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "amici/model.h" -#include "wrapfunctions.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel() { - return std::unique_ptr( - new amici::model_model_robertson::Model_model_robertson()); -} - -} // namespace generic_model - -} // namespace amici - diff --git a/models/model_robertson/wrapfunctions.h b/models/model_robertson/wrapfunctions.h deleted file mode 100644 index 0771b13b6e..0000000000 --- a/models/model_robertson/wrapfunctions.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _amici_wrapfunctions_h -#define _amici_wrapfunctions_h - -#include "model_robertson.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel(); - -} // namespace generic_model - -} // namespace amici - -#endif /* _amici_wrapfunctions_h */ diff --git a/models/model_robertson/x0.cpp b/models/model_robertson/x0.cpp deleted file mode 100644 index ce0f24bfc5..0000000000 --- a/models/model_robertson/x0.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_robertson{ - -void x0_model_robertson(realtype *x0, const realtype t, const realtype *p, const realtype *k) { - x0[0] = k[0]; -} - -} // namespace model_model_robertson - -} // namespace amici - diff --git a/models/model_robertson/xdot.cpp b/models/model_robertson/xdot.cpp deleted file mode 100644 index a756a318a9..0000000000 --- a/models/model_robertson/xdot.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_robertson{ - -void xdot_model_robertson(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *dx, const realtype *w) { - xdot[0] = w[0]-dx[0]-p[0]*x[0]; - xdot[1] = -w[0]-dx[1]+p[0]*x[0]-p[2]*(x[1]*x[1]); - xdot[2] = x[0]+x[1]+x[2]-1.0; -} - -} // namespace model_model_robertson - -} // namespace amici - diff --git a/models/model_robertson/y.cpp b/models/model_robertson/y.cpp deleted file mode 100644 index 9e66126e99..0000000000 --- a/models/model_robertson/y.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_robertson{ - -void y_model_robertson(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - y[0] = x[0]; - y[1] = x[1]*1.0E4; - y[2] = x[2]; -} - -} // namespace model_model_robertson - -} // namespace amici - diff --git a/models/model_steadystate/CMakeLists.txt b/models/model_steadystate/CMakeLists.txt deleted file mode 100644 index 05d04f8081..0000000000 --- a/models/model_steadystate/CMakeLists.txt +++ /dev/null @@ -1,118 +0,0 @@ -# Build AMICI model -cmake_minimum_required(VERSION 3.22) -cmake_policy(VERSION 3.22...3.30) - -project(model_steadystate) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - -include(CheckCXXCompilerFlag) -set(MY_CXX_FLAGS -Wall -Wno-unused-function -Wno-unused-variable) -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - list(APPEND MY_CXX_FLAGS -Wno-unused-but-set-variable) -endif() -foreach(flag ${MY_CXX_FLAGS}) - unset(CUR_FLAG_SUPPORTED CACHE) - check_cxx_compiler_flag(${flag} CUR_FLAG_SUPPORTED) - if(${CUR_FLAG_SUPPORTED}) - string(APPEND CMAKE_CXX_FLAGS " ${flag}") - endif() -endforeach() - -if(DEFINED ENV{AMICI_CXXFLAGS}) - message(STATUS "Appending flags from AMICI_CXXFLAGS: $ENV{AMICI_CXXFLAGS}") - add_compile_options("$ENV{AMICI_CXXFLAGS}") -endif() -if(DEFINED ENV{AMICI_LDFLAGS}) - message(STATUS "Appending flags from AMICI_LDFLAGS: $ENV{AMICI_LDFLAGS}") - link_libraries("$ENV{AMICI_LDFLAGS}") -endif() - -find_package(Amici REQUIRED HINTS - ${CMAKE_CURRENT_LIST_DIR}/../../build) -message(STATUS "Found AMICI ${Amici_DIR}") -set_target_properties(Upstream::amici PROPERTIES - MAP_IMPORTED_CONFIG_RELWITHDEBINFO RelWithDebInfo;Release; - MAP_IMPORTED_CONFIG_RELEASE Release - MAP_IMPORTED_CONFIG_DEBUG Debug;RelWithDebInfo;) - -# Debug build? -if("$ENV{ENABLE_AMICI_DEBUGGING}" OR "$ENV{ENABLE_GCOV_COVERAGE}") - add_compile_options(-UNDEBUG) - if(MSVC) - add_compile_options(-DEBUG) - else() - add_compile_options(-O0 -g) - endif() -endif() - -# coverage options -if($ENV{ENABLE_GCOV_COVERAGE}) - string(APPEND CMAKE_CXX_FLAGS_DEBUG " --coverage") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG " --coverage") -endif() - -set(MODEL_DIR ${CMAKE_CURRENT_LIST_DIR}) - -set(SRC_LIST_LIB ${MODEL_DIR}/JSparse.cpp -${MODEL_DIR}/Jy.cpp -${MODEL_DIR}/dJydsigma.cpp -${MODEL_DIR}/dJydy.cpp -${MODEL_DIR}/dwdp.cpp -${MODEL_DIR}/dwdx.cpp -${MODEL_DIR}/dxdotdp.cpp -${MODEL_DIR}/dydx.cpp -${MODEL_DIR}/sigmay.cpp -${MODEL_DIR}/w.cpp -${MODEL_DIR}/x0.cpp -${MODEL_DIR}/xdot.cpp -${MODEL_DIR}/y.cpp - ${MODEL_DIR}/wrapfunctions.cpp) - -add_library(${PROJECT_NAME} ${SRC_LIST_LIB}) -add_library(model ALIAS ${PROJECT_NAME}) - -# Some special functions require boost -# -# TODO: set some flag during code generation whether the given model requires -# boost. for now, try to find it, add include directories and link against it. -# let the compiler/linker error if it is required but not found -find_package(Boost) - -target_include_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}") - -target_link_libraries( - ${PROJECT_NAME} - PUBLIC Upstream::amici - PRIVATE $<$:Boost::boost>) - -if(NOT "${AMICI_PYTHON_BUILD_EXT_ONLY}") - set(SRC_LIST_EXE main.cpp) - add_executable(simulate_${PROJECT_NAME} ${SRC_LIST_EXE}) - target_link_libraries(simulate_${PROJECT_NAME} ${PROJECT_NAME}) -endif() - -# SWIG -option(ENABLE_SWIG "Build swig/python library?" ON) -if(ENABLE_SWIG) - add_subdirectory(swig) -endif() - -# -include(GNUInstallDirs) -install( - TARGETS ${PROJECT_NAME} - EXPORT ${PROJECT_NAME}Targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - INCLUDES - DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -export( - EXPORT ${PROJECT_NAME}Targets - FILE ${PROJECT_NAME}Config.cmake - NAMESPACE Upstream::) -# diff --git a/models/model_steadystate/JSparse.cpp b/models/model_steadystate/JSparse.cpp deleted file mode 100644 index 7cd519d68a..0000000000 --- a/models/model_steadystate/JSparse.cpp +++ /dev/null @@ -1,42 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -#include //SUNMatrixContent_Sparse definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_steadystate{ - -void JSparse_model_steadystate(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - JSparse->indexvals[0] = 0; - JSparse->indexvals[1] = 1; - JSparse->indexvals[2] = 2; - JSparse->indexvals[3] = 0; - JSparse->indexvals[4] = 1; - JSparse->indexvals[5] = 2; - JSparse->indexvals[6] = 0; - JSparse->indexvals[7] = 1; - JSparse->indexvals[8] = 2; - JSparse->indexptrs[0] = 0; - JSparse->indexptrs[1] = 3; - JSparse->indexptrs[2] = 6; - JSparse->indexptrs[3] = 9; - JSparse->data[0] = -p[1]*x[1]-p[0]*dwdx[0]*2.0; - JSparse->data[1] = -p[1]*x[1]+p[0]*dwdx[0]; - JSparse->data[2] = p[1]*x[1]; - JSparse->data[3] = p[2]*2.0-p[1]*x[0]; - JSparse->data[4] = -p[2]-p[1]*x[0]; - JSparse->data[5] = p[1]*x[0]; - JSparse->data[6] = dwdx[1]; - JSparse->data[7] = dwdx[1]; - JSparse->data[8] = -k[3]-dwdx[1]; -} - -} // namespace model_model_steadystate - -} // namespace amici - diff --git a/models/model_steadystate/Jy.cpp b/models/model_steadystate/Jy.cpp deleted file mode 100644 index c2e5258216..0000000000 --- a/models/model_steadystate/Jy.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_steadystate{ - -void Jy_model_steadystate(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - nllh[0] = amici::log((sigmay[0]*sigmay[0])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*5.0E-1; - break; - case 1: - nllh[0] = amici::log((sigmay[1]*sigmay[1])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[1]*sigmay[1])*pow(my[1]-y[1],2.0)*5.0E-1; - break; - case 2: - nllh[0] = amici::log((sigmay[2]*sigmay[2])*3.141592653589793*2.0)*5.0E-1+1.0/(sigmay[2]*sigmay[2])*pow(my[2]-y[2],2.0)*5.0E-1; - break; -} -} - -} // namespace model_model_steadystate - -} // namespace amici - diff --git a/models/model_steadystate/dJydsigma.cpp b/models/model_steadystate/dJydsigma.cpp deleted file mode 100644 index 3b1d5259da..0000000000 --- a/models/model_steadystate/dJydsigma.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_steadystate{ - -void dJydsigma_model_steadystate(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydsigma[0+0*1] = 1.0/(sigmay[0]*sigmay[0]*sigmay[0])*pow(my[0]-y[0],2.0)*-1.0+1.0/sigmay[0]; - break; - case 1: - dJydsigma[0+1*1] = 1.0/(sigmay[1]*sigmay[1]*sigmay[1])*pow(my[1]-y[1],2.0)*-1.0+1.0/sigmay[1]; - break; - case 2: - dJydsigma[0+2*1] = 1.0/(sigmay[2]*sigmay[2]*sigmay[2])*pow(my[2]-y[2],2.0)*-1.0+1.0/sigmay[2]; - break; -} -} - -} // namespace model_model_steadystate - -} // namespace amici - diff --git a/models/model_steadystate/dJydy.cpp b/models/model_steadystate/dJydy.cpp deleted file mode 100644 index 137c754b4e..0000000000 --- a/models/model_steadystate/dJydy.cpp +++ /dev/null @@ -1,30 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_steadystate{ - -void dJydy_model_steadystate(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) { -switch(iy){ - case 0: - dJydy[0+0*1] = 1.0/(sigmay[0]*sigmay[0])*(my[0]*2.0-y[0]*2.0)*-5.0E-1; - break; - case 1: - dJydy[0+1*1] = 1.0/(sigmay[1]*sigmay[1])*(my[1]*2.0-y[1]*2.0)*-5.0E-1; - break; - case 2: - dJydy[0+2*1] = 1.0/(sigmay[2]*sigmay[2])*(my[2]*2.0-y[2]*2.0)*-5.0E-1; - break; -} -} - -} // namespace model_model_steadystate - -} // namespace amici - diff --git a/models/model_steadystate/dwdp.cpp b/models/model_steadystate/dwdp.cpp deleted file mode 100644 index d31310d341..0000000000 --- a/models/model_steadystate/dwdp.cpp +++ /dev/null @@ -1,20 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_steadystate{ - -void dwdp_model_steadystate(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static) { - dwdp[0] = x[2]; -} - -} // namespace model_model_steadystate - -} // namespace amici - diff --git a/models/model_steadystate/dwdx.cpp b/models/model_steadystate/dwdx.cpp deleted file mode 100644 index dcd5f5e49e..0000000000 --- a/models/model_steadystate/dwdx.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_steadystate{ - -void dwdx_model_steadystate(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) { - dwdx[0] = x[0]*2.0; - dwdx[1] = p[3]; -} - -} // namespace model_model_steadystate - -} // namespace amici - diff --git a/models/model_steadystate/dxdotdp.cpp b/models/model_steadystate/dxdotdp.cpp deleted file mode 100644 index 0ed5e880cb..0000000000 --- a/models/model_steadystate/dxdotdp.cpp +++ /dev/null @@ -1,52 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_steadystate{ - -void dxdotdp_model_steadystate(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) { -switch (ip) { - case 0: { - dxdotdp[0] = w[1]*-2.0; - dxdotdp[1] = w[1]; - - } break; - - case 1: { - dxdotdp[0] = -x[0]*x[1]; - dxdotdp[1] = -x[0]*x[1]; - dxdotdp[2] = x[0]*x[1]; - - } break; - - case 2: { - dxdotdp[0] = x[1]*2.0; - dxdotdp[1] = -x[1]; - - } break; - - case 3: { - dxdotdp[0] = dwdp[0]; - dxdotdp[1] = dwdp[0]; - dxdotdp[2] = -dwdp[0]; - - } break; - - case 4: { - dxdotdp[0] = 1.0; - - } break; - -} -} - -} // namespace model_model_steadystate - -} // namespace amici - diff --git a/models/model_steadystate/dydx.cpp b/models/model_steadystate/dydx.cpp deleted file mode 100644 index 3f69ca1c4c..0000000000 --- a/models/model_steadystate/dydx.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_steadystate{ - -void dydx_model_steadystate(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) { - dydx[0+0*3] = 1.0; - dydx[1+1*3] = 1.0; - dydx[2+2*3] = 1.0; -} - -} // namespace model_model_steadystate - -} // namespace amici - diff --git a/models/model_steadystate/main.cpp b/models/model_steadystate/main.cpp deleted file mode 100644 index ecdff85a46..0000000000 --- a/models/model_steadystate/main.cpp +++ /dev/null @@ -1,93 +0,0 @@ -#include - -#include "wrapfunctions.h" /* model-provided functions */ -#include /* AMICI base functions */ - -template -std::ostream& operator<<(std::ostream& os, std::vector const& v) { - os << "["; - for (typename std::vector::const_iterator ii = v.begin(); ii != v.end(); - ++ii) { - os << " " << *ii; - } - os << "]"; - return os; -} - -/* - * This is a scaffold for a stand-alone AMICI simulation executable - * demonstrating the basic use of the AMICI C++ API. - */ - -int main() { - std::cout << "********************************" << std::endl; - std::cout << "** Running forward simulation **" << std::endl; - std::cout << "********************************" << std::endl << std::endl; - - // Create a model instance - auto model = amici::generic_model::getModel(); - - // Set desired output timepoints - model->setTimepoints({0.0, 1.0, 10.0, 100.0, 1000.0}); - - // Create a solver instance - auto solver = model->getSolver(); - - // Optionally set integration tolerance - solver->setAbsoluteTolerance(1e-16); - solver->setRelativeTolerance(1e-8); - - // Run the simulation using default parameters set during model import - // (can be changed using model->setParameters() or model->setParameterBy*()) - auto rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print observable time course - auto observable_ids = model->getObservableIds(); - std::cout << "Simulated observables for timepoints " << rdata->ts << "\n\n"; - for (int i_observable = 0; i_observable < rdata->ny; ++i_observable) { - std::cout << observable_ids[i_observable] << ":\n\t"; - for (int i_time = 0; i_time < rdata->nt; ++i_time) { - // rdata->y is a flat 2D array in row-major ordering - std::cout << rdata->y[i_time * rdata->ny + i_observable] << " "; - } - std::cout << std::endl << std::endl; - } - - std::cout << std::endl; - std::cout << "**********************************" << std::endl; - std::cout << "** Forward sensitivity analysis **" << std::endl; - std::cout << "**********************************" << std::endl << std::endl; - - // Enable first-order sensitivity analysis - solver->setSensitivityOrder(amici::SensitivityOrder::first); - // Use forward sensitivities - solver->setSensitivityMethod(amici::SensitivityMethod::forward); - - // Run the simulation - rdata = runAmiciSimulation(*solver, nullptr, *model); - - // Print state sensitivities sx... - // ... for the first timepoint... - int i_time = 0; - // ... with respect to the first parameter - int i_nplist = 0; - - // get identifiers from model - auto state_ids = model->getStateIds(); - auto parameter_ids = model->getParameterIds(); - - std::cout << "State sensitivities for timepoint " << rdata->ts[i_time] - << std::endl; // nt x nplist x nx - for (int i_state = 0; i_state < rdata->nx; ++i_state) { - std::cout << "\td(" << state_ids[i_state] << ")/d(" - << parameter_ids[model->plist(i_nplist)] << ") = "; - - // rdata->sx is a flat 3D array in row-major ordering - std::cout << rdata->sx - [i_time * rdata->nplist * rdata->nx - + i_nplist * rdata->nx + i_state]; - std::cout << std::endl; - } - - return 0; -} diff --git a/models/model_steadystate/model_steadystate.h b/models/model_steadystate/model_steadystate.h deleted file mode 100644 index a27a5a74df..0000000000 --- a/models/model_steadystate/model_steadystate.h +++ /dev/null @@ -1,210 +0,0 @@ -#ifndef _amici_model_steadystate_h -#define _amici_model_steadystate_h -/* Generated by amiwrap (R2017b) d69c026f8f8a89a13f1fa1307548f2b8f7045fe1 */ -#include -#include -#include "amici/defines.h" -#include //SUNMatrixContent_Sparse definition -#include "amici/solver_cvodes.h" -#include "amici/model_ode.h" - -namespace amici { - -class Solver; - -namespace model_model_steadystate{ - -extern void JSparse_model_steadystate(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void Jy_model_steadystate(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydsigma_model_steadystate(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dJydy_model_steadystate(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my); -extern void dwdp_model_steadystate(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static); -extern void dwdx_model_steadystate(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static); -extern void dxdotdp_model_steadystate(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp); -extern void dydx_model_steadystate(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx); -extern void sigmay_model_steadystate(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y); -extern void w_model_steadystate(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static); -extern void x0_model_steadystate(realtype *x0, const realtype t, const realtype *p, const realtype *k); -extern void xdot_model_steadystate(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); -extern void y_model_steadystate(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w); - -class Model_model_steadystate : public amici::Model_ODE { -public: - Model_model_steadystate() - : amici::Model_ODE( - amici::ModelDimensions( - 3, - 3, - 3, - 3, - 0, - 5, - 4, - 3, - 3, - 0, - 0, - 0, - 0, - 0, - 1, - 2, - 2, - 1, - 0, - 0, - {}, - 0, - 0, - 0, - 9, - 2, - 2 - ), - amici::SimulationParameters( - std::vector(4, 1.0), - std::vector(5, 1.0) - ), - amici::SecondOrderMode::none, - std::vector{0, 0, 0}, - std::vector{}) - {}; - - amici::Model* clone() const override { return new Model_model_steadystate(*this); }; - - std::string getAmiciCommit() const override { return "d69c026f8f8a89a13f1fa1307548f2b8f7045fe1"; }; - - void fJSparse(SUNMatrixContent_Sparse JSparse, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - JSparse_model_steadystate(JSparse, t, x, p, k, h, w, dwdx); - } - - void fJrz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fJy(double *nllh, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - Jy_model_steadystate(nllh, iy, p, k, y, sigmay, my); - } - - void fJz(double *nllh, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdJrzdsigma(double *dJrzdsigma, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fdJrzdz(double *dJrzdz, const int iz, const realtype *p, const realtype *k, const double *rz, const double *sigmaz) override { - } - - void fdJydsigma(double *dJydsigma, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydsigma_model_steadystate(dJydsigma, iy, p, k, y, sigmay, my); - } - - void fdJydy(double *dJydy, const int iy, const realtype *p, const realtype *k, const double *y, const double *sigmay, const double *my) override { - dJydy_model_steadystate(dJydy, iy, p, k, y, sigmay, my); - } - - void fdJzdsigma(double *dJzdsigma, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdJzdz(double *dJzdz, const int iz, const realtype *p, const realtype *k, const double *z, const double *sigmaz, const double *mz) override { - } - - void fdeltaqB(double *deltaqB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdeltasx(double *deltasx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const int ip, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *sx, const realtype *stau, const realtype *tcl) override { - } - - void fdeltax(double *deltax, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old) override { - } - - void fdeltaxB(double *deltaxB, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ie, const realtype *xdot, const realtype *xdot_old, const realtype *xB) override { - } - - void fdrzdp(double *drzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdrzdx(double *drzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void fdsigmaydp(double *dsigmaydp, const realtype t, const realtype *p, const realtype *k, const realtype *y, const int ip) override { - } - - void fdsigmazdp(double *dsigmazdp, const realtype t, const realtype *p, const realtype *k, const int ip) override { - } - - void fdwdp(realtype *dwdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *stcl, const realtype *spl, const realtype *sspl, bool include_static) override { - dwdp_model_steadystate(dwdp, t, x, p, k, h, w, tcl, stcl, spl, sspl, include_static); - } - - void fdwdx(realtype *dwdx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *tcl, const realtype *spl, bool include_static) override { - dwdx_model_steadystate(dwdx, t, x, p, k, h, w, tcl, spl, include_static); - } - - void fdxdotdp(realtype *dxdotdp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - dxdotdp_model_steadystate(dxdotdp, t, x, p, k, h, ip, w, dwdp); - } - - void fdydp(double *dydp, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip, const realtype *w, const realtype *dwdp) override { - } - - void fdydx(double *dydx, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w, const realtype *dwdx) override { - dydx_model_steadystate(dydx, t, x, p, k, h, w, dwdx); - } - - void fdzdp(double *dzdp, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const int ip) override { - } - - void fdzdx(double *dzdx, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void froot(realtype *root, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl) override { - } - - void frz(double *rz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - - void fsigmay(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) override { - sigmay_model_steadystate(sigmay, t, p, k, y); - } - - void fsigmaz(double *sigmaz, const realtype t, const realtype *p, const realtype *k) override { - } - - void fsrz(double *srz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - } - - void fstau(double *stau, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *sx, const int ip, const int ie) override { - } - - void fsx0(realtype *sx0, const realtype t,const realtype *x0, const realtype *p, const realtype *k, const int ip) override { - } - - void fsz(double *sz, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *sx, const int ip) override { - } - - void fw(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) override { - w_model_steadystate(w, t, x, p, k, h, tcl, spl, include_static); - } - - void fx0(realtype *x0, const realtype t, const realtype *p, const realtype *k) override { - x0_model_steadystate(x0, t, p, k); - } - - void fxdot(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - xdot_model_steadystate(xdot, t, x, p, k, h, w); - } - - void fy(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) override { - y_model_steadystate(y, t, x, p, k, h, w); - } - - void fz(double *z, const int ie, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h) override { - } - -}; - -} // namespace model_model_steadystate - -} // namespace amici - -#endif /* _amici_model_steadystate_h */ diff --git a/models/model_steadystate/rebuild_model_steadystate.m b/models/model_steadystate/rebuild_model_steadystate.m deleted file mode 100644 index f7a6f63e5d..0000000000 --- a/models/model_steadystate/rebuild_model_steadystate.m +++ /dev/null @@ -1,5 +0,0 @@ -function rebuild_model_steadystate() -modelName = 'model_steadystate'; -amimodel.compileAndLinkModel(modelName, '', [], [], [], []); -amimodel.generateMatlabWrapper(3, 3, 5, 4, 0, 0, [], ['simulate_' modelName '.m'], 'model_steadystate', 'log10', 1, 1); -end diff --git a/models/model_steadystate/sigmay.cpp b/models/model_steadystate/sigmay.cpp deleted file mode 100644 index d895acd6ca..0000000000 --- a/models/model_steadystate/sigmay.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_steadystate{ - -void sigmay_model_steadystate(double *sigmay, const realtype t, const realtype *p, const realtype *k, const realtype *y) { - sigmay[0] = 1.0; - sigmay[1] = 1.0; - sigmay[2] = 1.0; -} - -} // namespace model_model_steadystate - -} // namespace amici - diff --git a/models/model_steadystate/swig/CMakeLists.txt b/models/model_steadystate/swig/CMakeLists.txt deleted file mode 100644 index 523571c52e..0000000000 --- a/models/model_steadystate/swig/CMakeLists.txt +++ /dev/null @@ -1,73 +0,0 @@ -cmake_minimum_required(VERSION 3.15) -cmake_policy(VERSION 3.15...3.27) - -# cmake >=3.27 -if(POLICY CMP0144) - cmake_policy(SET CMP0144 NEW) -endif(POLICY CMP0144) -# cmake >= 3.30 -if(POLICY CMP0167) - cmake_policy(SET CMP0167 NEW) -endif(POLICY CMP0167) - - -if(DEFINED ENV{SWIG}) - set(SWIG_EXECUTABLE $ENV{SWIG}) -endif() - -find_package(SWIG REQUIRED) -include(${SWIG_USE_FILE}) - -if(DEFINED ENV{PYTHON_EXECUTABLE}) - set(Python3_EXECUTABLE $ENV{PYTHON_EXECUTABLE}) -endif() -# We don't need "Interpreter" here, but without that, FindPython3 will -# ignore the Python version selected via $Python3_EXECUTABLE -find_package(Python3 COMPONENTS Interpreter Development) -include_directories(${Python3_INCLUDE_DIRS}) - -set(SWIG_LIBRARY_NAME _${PROJECT_NAME}) -set(CMAKE_SWIG_FLAGS "") -set_source_files_properties(${PROJECT_NAME}.i PROPERTIES CPLUSPLUS ON) - -# swig does not use INTERFACE_INCLUDE_DIRS of linked libraries, so add manually -get_target_property(AMICI_INCLUDE_DIRS Upstream::amici INTERFACE_INCLUDE_DIRECTORIES) -include_directories(${AMICI_INCLUDE_DIRS} .. ${AMICI_INCLUDE_DIRS}/../swig) - -swig_add_library(${SWIG_LIBRARY_NAME} - TYPE MODULE - LANGUAGE python - SOURCES ${PROJECT_NAME}.i) - - -set_target_properties(${SWIG_LIBRARY_NAME} - PROPERTIES - SWIG_USE_TARGET_INCLUDE_DIRECTORIES TRUE - PREFIX "" -) - -# Python extension suffix -execute_process( - COMMAND ${Python3_EXECUTABLE} -c - "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))" - OUTPUT_VARIABLE PY_EXT_SUFFIX OUTPUT_STRIP_TRAILING_WHITESPACE) -if(NOT "${PY_EXT_SUFFIX}" STREQUAL "") - message(STATUS "Python extension suffix is ${PY_EXT_SUFFIX}") - set_target_properties(${SWIG_LIBRARY_NAME} PROPERTIES SUFFIX "${PY_EXT_SUFFIX}" ) -endif() - - -swig_link_libraries(${SWIG_LIBRARY_NAME} - ${Python3_LIBRARIES} - model) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.py - $ DESTINATION .) - -# configure module setup script -set(SETUP_PY_IN ${Amici_DIR}/model_setup.template.py) -set(SETUP_PY_OUT ${CMAKE_CURRENT_BINARY_DIR}/setup.py) - -add_custom_target(install-python - DEPENDS ${SWIG_LIBRARY_NAME} - COMMAND python ${SETUP_PY_OUT} install) diff --git a/models/model_steadystate/swig/model_steadystate.i b/models/model_steadystate/swig/model_steadystate.i deleted file mode 100644 index e96f7db31d..0000000000 --- a/models/model_steadystate/swig/model_steadystate.i +++ /dev/null @@ -1,22 +0,0 @@ -%module model_steadystate -%import amici.i -// Add necessary symbols to generated header - -%{ -#include "wrapfunctions.h" -#include "amici/model_ode.h" -#include "amici/model_dae.h" -using namespace amici; -%} - - -// Make model module accessible from the model -%feature("pythonappend") amici::generic_model::getModel %{ - if '.' in __name__: - import sys - val.module = sys.modules['.'.join(__name__.split('.')[:-1])] -%} - - -// Process symbols in header -%include "wrapfunctions.h" diff --git a/models/model_steadystate/w.cpp b/models/model_steadystate/w.cpp deleted file mode 100644 index 5a0acafc83..0000000000 --- a/models/model_steadystate/w.cpp +++ /dev/null @@ -1,21 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_steadystate{ - -void w_model_steadystate(realtype *w, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *tcl, const realtype *spl, bool include_static) { - w[0] = p[3]*x[2]; - w[1] = x[0]*x[0]; -} - -} // namespace model_model_steadystate - -} // namespace amici - diff --git a/models/model_steadystate/wrapfunctions.cpp b/models/model_steadystate/wrapfunctions.cpp deleted file mode 100644 index a7a0f3cf9a..0000000000 --- a/models/model_steadystate/wrapfunctions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "amici/model.h" -#include "wrapfunctions.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel() { - return std::unique_ptr( - new amici::model_model_steadystate::Model_model_steadystate()); -} - -} // namespace generic_model - -} // namespace amici - diff --git a/models/model_steadystate/wrapfunctions.h b/models/model_steadystate/wrapfunctions.h deleted file mode 100644 index 57011adfae..0000000000 --- a/models/model_steadystate/wrapfunctions.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifndef _amici_wrapfunctions_h -#define _amici_wrapfunctions_h - -#include "model_steadystate.h" - -namespace amici { - -namespace generic_model { - -std::unique_ptr getModel(); - -} // namespace generic_model - -} // namespace amici - -#endif /* _amici_wrapfunctions_h */ diff --git a/models/model_steadystate/x0.cpp b/models/model_steadystate/x0.cpp deleted file mode 100644 index 1193148161..0000000000 --- a/models/model_steadystate/x0.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_steadystate{ - -void x0_model_steadystate(realtype *x0, const realtype t, const realtype *p, const realtype *k) { - x0[0] = k[0]; - x0[1] = k[1]; - x0[2] = k[2]; -} - -} // namespace model_model_steadystate - -} // namespace amici - diff --git a/models/model_steadystate/xdot.cpp b/models/model_steadystate/xdot.cpp deleted file mode 100644 index 65b2ca396f..0000000000 --- a/models/model_steadystate/xdot.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_steadystate{ - -void xdot_model_steadystate(realtype *xdot, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - xdot[0] = p[4]+w[0]-p[0]*w[1]*2.0+p[2]*x[1]*2.0-p[1]*x[0]*x[1]; - xdot[1] = w[0]+p[0]*w[1]-p[2]*x[1]-p[1]*x[0]*x[1]; - xdot[2] = -w[0]-k[3]*x[2]+p[1]*x[0]*x[1]; -} - -} // namespace model_model_steadystate - -} // namespace amici - diff --git a/models/model_steadystate/y.cpp b/models/model_steadystate/y.cpp deleted file mode 100644 index 9b2ea9ad62..0000000000 --- a/models/model_steadystate/y.cpp +++ /dev/null @@ -1,22 +0,0 @@ - -#include "amici/symbolic_functions.h" -#include "amici/defines.h" //realtype definition -typedef amici::realtype realtype; -#include - -using namespace amici; - -namespace amici { - -namespace model_model_steadystate{ - -void y_model_steadystate(double *y, const realtype t, const realtype *x, const realtype *p, const realtype *k, const realtype *h, const realtype *w) { - y[0] = x[0]; - y[1] = x[1]; - y[2] = x[2]; -} - -} // namespace model_model_steadystate - -} // namespace amici - diff --git a/python/tests/test_pregenerated_models.py b/python/tests/test_pregenerated_models.py index f9a6ccb5b6..0c03fa66a9 100755 --- a/python/tests/test_pregenerated_models.py +++ b/python/tests/test_pregenerated_models.py @@ -15,19 +15,10 @@ cpp_test_dir = Path(__file__).parents[2] / "tests" / "cpp" options_file = str(cpp_test_dir / "testOptions.h5") -# matlab-generated expected results -expected_results_file = str(cpp_test_dir / "expectedResults.h5") -expected_results_matlab = h5py.File(expected_results_file, "r") # python-generated expected results expected_results_file_py = str(cpp_test_dir / "expected_results_py.h5") expected_results_py = h5py.File(expected_results_file_py, "r") -model_cases = [ - (sub_test, case) - for sub_test in expected_results_matlab.keys() - for case in list(expected_results_matlab[sub_test].keys()) -] - model_cases_py = [ (sub_test, case) for sub_test in expected_results_py.keys() @@ -35,204 +26,6 @@ ] -@skip_on_valgrind -@pytest.mark.skipif( - os.environ.get("AMICI_SKIP_CMAKE_TESTS", "") == "TRUE", - reason="skipping cmake based test", -) -@pytest.mark.parametrize("sub_test,case", model_cases) -def test_pregenerated_model(sub_test, case): - """Tests models that were pregenerated using the matlab code - generation routines and cmake build routines. - - NOTE: requires having run `make python-tests` in /build/ before to build - the python modules for the test models. - """ - expected_results = expected_results_matlab - - if case.startswith("sensi2"): - model_name = sub_test + "_o2" - else: - model_name = sub_test - - model_swig_folder = str( - Path(__file__).parents[2] - / "build" - / "tests" - / "cpp" - / f"external_{model_name}-prefix" - / "src" - / f"external_{model_name}-build" - / "swig" - ) - - if not Path(model_swig_folder).exists(): - pytest.skip(f"Model {model_name} not found in {model_swig_folder}.") - - test_model_module = amici.import_model_module( - module_name=model_name, module_path=model_swig_folder - ) - model = test_model_module.getModel() - solver = model.getSolver() - amici.readModelDataFromHDF5( - options_file, model.get(), f"/{sub_test}/{case}/options" - ) - if model_name == "model_steadystate": - model.setSteadyStateComputationMode( - amici.SteadyStateComputationMode.integrateIfNewtonFails - ) - model.setSteadyStateSensitivityMode( - amici.SteadyStateSensitivityMode.integrateIfNewtonFails - ) - amici.readSolverSettingsFromHDF5( - options_file, solver.get(), f"/{sub_test}/{case}/options" - ) - - edata = None - if "data" in expected_results[sub_test][case].keys(): - edata = amici.readSimulationExpData( - str(expected_results_file), f"/{sub_test}/{case}/data", model.get() - ) - rdata = amici.runAmiciSimulation(model, solver, edata) - - check_derivative_opts = dict() - - if model_name == "model_nested_events": - check_derivative_opts["rtol"] = 1e-2 - elif model_name == "model_events": - check_derivative_opts["atol"] = 1e-3 - - if ( - edata - and solver.getSensitivityMethod() - and solver.getSensitivityOrder() - and len(model.getParameterList()) - and not model_name.startswith("model_neuron") - and not case.endswith("byhandpreeq") - ): - check_derivatives( - model, - solver, - edata, - **check_derivative_opts, - ) - - verify_simulation_opts = dict() - - if model_name.startswith("model_neuron"): - verify_simulation_opts["atol"] = 1e-5 - verify_simulation_opts["rtol"] = 1e-2 - - if ( - model_name.startswith("model_robertson") - and case == "sensiforwardSPBCG" - ): - verify_simulation_opts["atol"] = 1e-3 - verify_simulation_opts["rtol"] = 1e-3 - - verify_simulation_results( - rdata, - expected_results[sub_test][case]["results"], - **verify_simulation_opts, - ) - - if model_name == "model_steadystate" and case == "sensiforwarderrorint": - edata = amici.amici.ExpData(model.get()) - - # Test runAmiciSimulations: ensure running twice - # with same ExpData yields same results - if ( - edata - and model_name != "model_neuron_o2" - and not ( - model_name == "model_robertson" and case == "sensiforwardSPBCG" - ) - ): - if isinstance(edata, amici.amici.ExpData): - edatas = [edata, edata] - else: - edatas = [edata.get(), edata.get()] - - rdatas = amici.runAmiciSimulations( - model, solver, edatas, num_threads=2, failfast=False - ) - verify_simulation_results( - rdatas[0], - expected_results[sub_test][case]["results"], - **verify_simulation_opts, - ) - verify_simulation_results( - rdatas[1], - expected_results[sub_test][case]["results"], - **verify_simulation_opts, - ) - - # test residuals mode - if solver.getSensitivityMethod() == amici.SensitivityMethod.adjoint: - with pytest.raises(RuntimeError): - solver.setReturnDataReportingMode(amici.RDataReporting.residuals) - else: - solver.setReturnDataReportingMode(amici.RDataReporting.residuals) - rdata = amici.runAmiciSimulation(model, solver, edata) - verify_simulation_results( - rdata, - expected_results[sub_test][case]["results"], - fields=["t", "res", "sres", "y", "sy", "sigmay", "ssigmay"], - **verify_simulation_opts, - ) - with pytest.raises(RuntimeError): - solver.setSensitivityMethod(amici.SensitivityMethod.adjoint) - - chi2_ref = rdata.chi2 - - # test likelihood mode - solver.setReturnDataReportingMode(amici.RDataReporting.likelihood) - rdata = amici.runAmiciSimulation(model, solver, edata) - verify_simulation_results( - rdata, - expected_results[sub_test][case]["results"], - fields=["t", "llh", "sllh", "s2llh", "FIM"], - **verify_simulation_opts, - ) - - # test sigma residuals - - if ( - model_name == "model_jakstat_adjoint" - and solver.getSensitivityMethod() != amici.SensitivityMethod.adjoint - ): - model.setAddSigmaResiduals(True) - solver.setReturnDataReportingMode(amici.RDataReporting.full) - rdata = amici.runAmiciSimulation(model, solver, edata) - # check whether activation changes chi2 - assert chi2_ref != rdata.chi2 - - if ( - edata - and solver.getSensitivityMethod() - and solver.getSensitivityOrder() - and len(model.getParameterList()) - ): - check_derivatives(model, solver, edata, **check_derivative_opts) - - chi2_ref = rdata.chi2 - res_ref = rdata.res - - model.setMinimumSigmaResiduals(100) - rdata = amici.runAmiciSimulation(model, solver, edata) - # check whether changing the minimum changes res but not chi2 - assert np.isclose(chi2_ref, rdata.chi2) - assert not np.allclose(res_ref, rdata.res) - - model.setMinimumSigmaResiduals(-10) - rdata = amici.runAmiciSimulation(model, solver, edata) - # check whether having a bad minimum results in nan chi2 - assert np.isnan(rdata.chi2) - - with pytest.raises(RuntimeError): - model.getParameterByName("thisParameterDoesNotExist") - - @skip_on_valgrind @pytest.mark.skipif( os.environ.get("AMICI_SKIP_CMAKE_TESTS", "") == "TRUE", @@ -287,7 +80,9 @@ def test_pregenerated_model_py(sub_test, case): edata = None if "data" in expected_results[sub_test][case].keys(): edata = amici.readSimulationExpData( - str(expected_results_file), f"/{sub_test}/{case}/data", model.get() + str(expected_results_file_py), + f"/{sub_test}/{case}/data", + model.get(), ) rdata = amici.runAmiciSimulation(model, solver, edata) diff --git a/tests/cpp/CMakeLists.txt b/tests/cpp/CMakeLists.txt index 584384ce97..58a1c8e586 100644 --- a/tests/cpp/CMakeLists.txt +++ b/tests/cpp/CMakeLists.txt @@ -45,25 +45,6 @@ add_custom_target( # models depend on Upstream::amici add_library(Upstream::amici ALIAS amici) -# Amici testing library -add_library(amici-testing testfunctions.cpp) -target_compile_definitions( - amici-testing - PUBLIC NEW_OPTION_FILE="${CMAKE_CURRENT_SOURCE_DIR}/testOptions.h5" - PUBLIC HDFFILE="${CMAKE_CURRENT_SOURCE_DIR}/expectedResults.h5" - PUBLIC HDFFILEWRITE="${CMAKE_CURRENT_SOURCE_DIR}/writeResults.h5") -target_include_directories(amici-testing PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -target_link_libraries( - amici-testing - PUBLIC Upstream::amici - PUBLIC gtest_main) - -# Names of models for which tests are to be run -set(TEST_MODELS - jakstat_adjoint_o2 - neuron_o2 - ) - if(ENABLE_SWIG AND ENABLE_PYTHON) add_custom_target( python-tests @@ -76,7 +57,6 @@ add_subdirectory(unittests) include(ExternalProject) - # Amici testing library add_library(amici-testing-py testfunctions.cpp) target_compile_definitions( @@ -91,6 +71,7 @@ target_link_libraries( PUBLIC gtest_main) +# Names of models for which tests are to be run set(PY_TEST_MODELS dirac_py @@ -143,42 +124,3 @@ foreach(MODEL IN ITEMS ${PY_TEST_MODELS}) add_dependencies(python-tests external_model_${MODEL}) endif() endforeach() - - -foreach(MODEL IN ITEMS ${TEST_MODELS}) - # Build model - string( - CONCAT MODEL_LIBRARY_DIR - "${CMAKE_CURRENT_BINARY_DIR}/external_model_${MODEL}-prefix/src/" - "external_model_${MODEL}-build/") - string( - CONCAT MODEL_LIBRARY - "${MODEL_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}model_${MODEL}" - "${CMAKE_STATIC_LIBRARY_SUFFIX}") - ExternalProject_Add( - external_model_${MODEL} - PREFIX "" - SOURCE_DIR "${CMAKE_SOURCE_DIR}/models/model_${MODEL}/" - INSTALL_COMMAND "" - TEST_COMMAND "" - BUILD_ALWAYS 1 - DEPENDS amici - CMAKE_ARGS "-DCMAKE_BUILD_TYPE=Debug" - BUILD_BYPRODUCTS "${MODEL_LIBRARY}") - # Rebuild if amici files are updated - ExternalProject_Add_StepDependencies(external_model_${MODEL} build amici) - - add_library(model_${MODEL} STATIC IMPORTED) - add_dependencies(model_${MODEL} external_model_${MODEL}) - - set_target_properties( - model_${MODEL} - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - "${CMAKE_SOURCE_DIR}/models/model_${MODEL}/" IMPORTED_LOCATION - "${MODEL_LIBRARY}") - # Build tests for this model - add_subdirectory(${MODEL}) - if(TARGET python-tests) - add_dependencies(python-tests external_model_${MODEL}) - endif() -endforeach() diff --git a/tests/cpp/expectedResults.h5 b/tests/cpp/expectedResults.h5 deleted file mode 100644 index c87ab70dccdf889f63dcdc2f2a48523deab9c198..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4198368 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%0Dc>*N`=z32AR&Sp^lcUut%7=&LJDvZ@Y%US#~91< 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

GGd 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%0AUKJptrXZ8NQ@iXrUz_40wwfSp&&T8$${*CxP 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 wX1ZYuFts}J3(#9uW!x=o3{ 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�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⪻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

pCRg>R9Ymn0n*2?+6h4f(ox}KqoJsB_lw3xI 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 z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| 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≺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

>UH-v36$gF~2Vi&gYAy+Z>8}LL<-sy-3|n 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

-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 z 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