P5-1 instruments: the overset fluid saves/loads its rigid-phase state (RTX_FSI2O_SAVE / _LOAD — a coupling experiment then costs seconds, not the 12-minute rigid march), dumps the interface edges when the composite refuses a patch (RTX_FSI2O_DUMP_DIR, at the advance where the overlap is rebuilt), the release time is the fluid's clock; patch_cylinder_flag_deformed: cells inside the flag are holes at small bends and both sweep counts (the cantilever shape does not reproduce the P5-1 death — the CSVs show a coupling runaway), and a dumped-edges reproduction test
Documentation / Build User Guide (push) Canceled after 0s
Documentation / Build API Documentation (push) Canceled after 0s
Performance Benchmarks / Run Benchmarks (push) Canceled after 0s
CI / Format Check (push) Canceled after 0s
CI / Clippy Check (push) Canceled after 0s
CI / Build (macos-latest) (push) Canceled after 0s
CI / Build (ubuntu-latest) (push) Canceled after 0s
CI / Test (macos-latest) (push) Canceled after 0s
CI / Test (ubuntu-latest) (push) Canceled after 0s
CI / Build CPU-Only (Explicit) (push) Canceled after 0s
CI / Python Bindings (maturin) (macos-latest) (push) Canceled after 0s
CI / Python Bindings (maturin) (ubuntu-latest) (push) Canceled after 0s
CI / WASM Build + Size Check (push) Canceled after 0s
CI / Distributed Training Tests (push) Canceled after 0s
CI / CI Success (push) Canceled after 0s
Documentation / Build User Guide (push) Canceled after 0s
Documentation / Build API Documentation (push) Canceled after 0s
Performance Benchmarks / Run Benchmarks (push) Canceled after 0s
CI / Format Check (push) Canceled after 0s
CI / Clippy Check (push) Canceled after 0s
CI / Build (macos-latest) (push) Canceled after 0s
CI / Build (ubuntu-latest) (push) Canceled after 0s
CI / Test (macos-latest) (push) Canceled after 0s
CI / Test (ubuntu-latest) (push) Canceled after 0s
CI / Build CPU-Only (Explicit) (push) Canceled after 0s
CI / Python Bindings (maturin) (macos-latest) (push) Canceled after 0s
CI / Python Bindings (maturin) (ubuntu-latest) (push) Canceled after 0s
CI / WASM Build + Size Check (push) Canceled after 0s
CI / Distributed Training Tests (push) Canceled after 0s
CI / CI Success (push) Canceled after 0s
Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_0116sg1Qz1gMv9hdcKP1XUam
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
d74571e21a
commit
2ed36c3a8c
@@ -98,12 +98,27 @@ pub fn run_march_overset(case: BenchmarkCase, config: &OversetMarchConfig) -> Ov
|
||||
let dt = dt_fluid * cfg.subcycle as f64;
|
||||
let zero_d = vec![0.0; 2 * fluid.interface.wetted.len()];
|
||||
|
||||
// Phase 1: rigid flag to t_release.
|
||||
// Phase 1: rigid flag to t_release (`RTX_FSI2O_LOAD=dir` replaces the
|
||||
// march with the saved state; `RTX_FSI2O_SAVE=dir` saves it).
|
||||
let start = std::time::Instant::now();
|
||||
let rigid_steps = (cfg.t_release / dt_fluid).round() as usize;
|
||||
for _ in 0..rigid_steps {
|
||||
fluid.step().expect("rigid fluid step");
|
||||
if let Ok(dir) = std::env::var("RTX_FSI2O_LOAD") {
|
||||
let t = fluid.load(&dir).expect("load");
|
||||
assert!(
|
||||
(t - cfg.t_release).abs() < dt_fluid,
|
||||
"the saved state is at t = {t}, not t_release = {}",
|
||||
cfg.t_release
|
||||
);
|
||||
} else {
|
||||
for _ in 0..rigid_steps {
|
||||
fluid.step().expect("rigid fluid step");
|
||||
}
|
||||
if let Ok(dir) = std::env::var("RTX_FSI2O_SAVE") {
|
||||
fluid.save(&dir).expect("save");
|
||||
}
|
||||
}
|
||||
// The release time is the fluid's clock (the rigid step count rounds).
|
||||
let t_release = fluid.time();
|
||||
let (rigid_drag, rigid_lift) = fluid.measure_force();
|
||||
println!(
|
||||
" {} OVERSET rigid phase: {rigid_steps} steps (dt {dt_fluid:.3e}) to t = {:.2} s in {:.0} s wall; wall drag {rigid_drag:.2} (rigid-flag reference {:.1}; the overset's own CFD2 at ny = 41: 137.8), lift {rigid_lift:.2}; rounds mean {:.2}",
|
||||
@@ -280,7 +295,7 @@ pub fn run_march_overset(case: BenchmarkCase, config: &OversetMarchConfig) -> Ov
|
||||
outcome = iqn_ref.solve(&d_predicted, pass);
|
||||
}
|
||||
}
|
||||
let t_now = cfg.t_release + (step + 1) as f64 * dt;
|
||||
let t_now = t_release + (step + 1) as f64 * dt;
|
||||
match outcome {
|
||||
Ok(c) => {
|
||||
total_subiterations += c.iterations;
|
||||
|
||||
Reference in New Issue
Block a user