qualia_core_db/domains/financial/economics/
macro_flows.rs1use crate::ode_solver::{rk4_step, PhysicalState};
4
5pub fn simulate_macroeconomic_flow(
10 initial_m: f64,
11 initial_p: f64,
12 velocity: f64,
13 real_gdp: f64,
14 time_horizon: f64,
15 steps: usize,
16) -> PhysicalState {
17 let dt = time_horizon / steps as f64;
18 let mut state = PhysicalState {
19 time: 0.0,
20 values: vec![initial_m, initial_p],
21 };
22
23 let macro_derivative = |_t: f64, y: &[f64]| -> Vec<f64> {
24 let current_m = y[0];
25 let current_p = y[1];
26 let dm_dt = current_m * 0.02;
27 let target_p = (current_m * velocity) / real_gdp;
28 let dp_dt = 0.5 * (target_p - current_p);
29 vec![dm_dt, dp_dt]
30 };
31
32 for _ in 0..steps {
33 rk4_step(&mut state, dt, ¯o_derivative);
34 }
35
36 state
37}