Implement atmosphere and dynamics data

This commit is contained in:
deamonkai
2026-03-28 16:33:32 -05:00
parent 563dbee7eb
commit c0f275caeb
9 changed files with 127 additions and 92 deletions

View File

@@ -41,6 +41,9 @@ This file is the durable handoff for AI agents working in this repository. Keep
- Compute `P11k = P0*(T/T0)^(-g/(lapserate*R))`.
- Compute `P = P11k*exp(-g*(z - 11000)/(R*T))`.
- Then compute `rho = P/(R*T)` and `acousticSpeed = sqrt(gamma*R*T)`.
- Active implementation assumptions:
- `Maz = 0 deg` is currently assumed in `code/Interceptor_3DOF.m` to preserve the coplanar `y = 0` engagement geometry until a source document says otherwise.
- The target and missile thrust, mass, and drag arrays were manually transcribed from the image-based plots in `docs/Missile and Target Data for 3DOF Spring 26.pdf` on `2026-03-28`.
- Assignment baseline confirmed from the handout:
- Velocity pursuit guidance gain = `0.5`
- Blind range = `2 m`
@@ -60,18 +63,20 @@ This file is the durable handoff for AI agents working in this repository. Keep
## Code Status
- [`code/Interceptor_3DOF.m`](./code/Interceptor_3DOF.m) drives the integration loop, plotting, and CSV export.
- [`code/T3dxdt.m`](./code/T3dxdt.m), [`code/M3dxdt.m`](./code/M3dxdt.m), and [`code/getGuidance.m`](./code/getGuidance.m) still contain `XX` placeholders.
- `getRho.m` is referenced by the driver and both dynamics functions, but the file is missing.
- Because `getRho.m` does not exist yet, neither the lower-atmosphere branch nor the addendum-defined stratosphere branch for `z > 11 km` is implemented in the repo.
- [`code/getRho.m`](./code/getRho.m) now exists and implements both the lower-atmosphere model and the addendum-defined stratosphere branch for `z > 11 km`.
- [`code/Interceptor_3DOF.m`](./code/Interceptor_3DOF.m) and [`code/getGuidance.m`](./code/getGuidance.m) now contain the known scalar assignment constants.
- [`code/T3dxdt.m`](./code/T3dxdt.m) and [`code/M3dxdt.m`](./code/M3dxdt.m) now contain manually transcribed target/missile reference areas, thrust curves, mass curves, and drag tables.
- [`code/getGuidance.m`](./code/getGuidance.m) now normalizes input shapes to column vectors so `M3dxdt` can call it without row/column mismatch failures.
- Octave now evaluates `getRho.m`, `T3dxdt.m`, and `M3dxdt.m` successfully, and the full script begins integrating without placeholder errors.
- End-to-end validation is still incomplete because the current nested `ode45` loop runs very slowly in Octave and was not observed through final plot/CSV generation within the available runtime.
- [`code/getMD.m`](./code/getMD.m) exists and computes miss distance at the point of closest approach.
- The missile/target data PDF appears image-based; a future agent should log the extraction method used when those tables are transcribed.
## Next Actions
1. Implement `getRho.m` and integrate it into the simulation, including the required stratosphere branch for altitude `> 11 km`.
2. Transcribe missile and target geometry, thrust, mass, and drag data from the missile/target packet.
3. Replace all remaining `XX` placeholders with sourced values.
4. Run the MATLAB model and verify the required plots and CSV outputs.
1. Complete an end-to-end Octave validation run and confirm that the required plots and CSV files are produced.
2. Investigate the runtime cost of the nested `ode45` loop in [`code/Interceptor_3DOF.m`](./code/Interceptor_3DOF.m) if full validation remains too slow.
3. Confirm whether the temporary `Maz = 0 deg` assumption should remain.
4. Decide whether the manually transcribed target/missile curves need a second pass for tighter fidelity.
## Update Protocol For Agents