Files
2026-02-16 21:52:26 +08:00

55 lines
2.0 KiB
Markdown

TASK: Produce a deterministic function-level design for simulation with RK4 + nested CPL.
INPUT DATA:
- MODEL_SPEC from Prompt 1
- TTE_SPEC from Prompt 2
- Scenario definition: provides u(t) = [L(t),C(t),N(t),Ψ(t),T_a(t)] for any t
- Initial state x0 = [z0, v_p0, T_b0, S0, w0]
- Fixed constants: dt, t_max
METHODOLOGY:
Define these pure functions (no side effects):
1) params_to_constitutive(x, params):
returns V_oc, R0, Q_eff at current state (with guards z_eff, floors)
2) power_mapping(u, x, params):
returns P_tot
3) current_cpl(V_oc, v_p, R0, P_tot):
returns Δ and I using the specified quadratic root
4) rhs(t, x, u, params):
computes dx/dt using I(t) found by CPL closure
RK4 step (must be spelled out exactly):
Given (t_n, x_n):
- Compute u_n = scenario.u(t_n)
- Stage 1 uses rhs(t_n, x_n, u_n)
- Stage 2 uses rhs(t_n+dt/2, x_n + dt*k1/2, u(t_n+dt/2))
- Stage 3 uses rhs(t_n+dt/2, x_n + dt*k2/2, u(t_n+dt/2))
- Stage 4 uses rhs(t_n+dt, x_n + dt*k3, u(t_n+dt))
- x_{n+1} = x_n + dt*(k1 + 2k2 + 2k3 + k4)/6
After updating, clamp states to bounds (z,S,w) as per MODEL_SPEC.
Event evaluation:
At each grid point, store V_term, z, Δ.
After each step, check crossings using TTE_SPEC.
DELIVERABLES:
A) A complete “SIM_API_v1” specification listing:
- Function signatures
- Inputs/outputs (including units)
- Exactly what arrays are stored each step
- Termination output bundle
B) A single canonical output schema:
"trajectory" table columns exactly:
t, z, v_p, T_b, S, w, V_oc, R0, Q_eff, P_tot, Δ, I, V_term
plus metadata: dt, t_max, termination_reason, t_star, TTE_seconds
VALIDATION:
- Must state the convergence requirement:
step-halving: compare dt vs dt/2 with:
max|z_dt - z_dt2| < 1e-4 and relative TTE error < 1% (exactly these thresholds)
- Must include feasibility guard: if Δ becomes negative at any rhs evaluation, trigger event DELTA_ZERO.
OUTPUT FORMAT:
Return YAML only with keys: SIM_API_v1, OutputSchema, ValidationPlan.
No prose.