P5-1 instruments and discriminators: RTX_FSI2O_NO_WALL_VEL, _FREEZE_PATCH, _VOLUME_PRESERVE (the imposed wall velocity's net flux removed uniformly along the wall), the pass trace carries the fluid's power on the flag, the wall-pressure roughness, the patch's pressure level, the wall's net volume flux against the FEA polygon's area rate, and the mass defects — the s = 1 runaway is the flag's thickness breathing (ν = 0.4 Quad8) seen by the body-fitted wall as a volume flux equal to the polygon's area rate, answered by the projection's pressure level at ρ/dt
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
Documentation / Build API Documentation (push) Canceled after 0s
Documentation / Build User Guide (push) Canceled after 0s
CI / Python Bindings (maturin) (macos-latest) (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 / 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
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
Documentation / Build API Documentation (push) Canceled after 0s
Documentation / Build User Guide (push) Canceled after 0s
CI / Python Bindings (maturin) (macos-latest) (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 / 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
2ed36c3a8c
commit
565215baf9
@@ -218,6 +218,7 @@ pub fn run_march_overset(case: BenchmarkCase, config: &OversetMarchConfig) -> Ov
|
||||
f
|
||||
});
|
||||
let (t_fluid, t_structure) = (std::cell::Cell::new(0.0_f64), std::cell::Cell::new(0.0_f64));
|
||||
let prev_area = std::cell::Cell::new(fluid.borrow().shared.read().unwrap().area());
|
||||
let phase_start = std::time::Instant::now();
|
||||
|
||||
for step in 0..coupled_steps {
|
||||
@@ -256,8 +257,25 @@ pub fn run_march_overset(case: BenchmarkCase, config: &OversetMarchConfig) -> Ov
|
||||
.sum::<f64>()
|
||||
.sqrt();
|
||||
let load: f64 = nodal.iter().map(|(_, f)| f.norm()).sum();
|
||||
// The fluid's power on the flag at this candidate: Σ F · v
|
||||
// with v the candidate's mean interface velocity. Physical
|
||||
// damping is negative; a spurious velocity-proportional
|
||||
// reaction shows as positive power growing with v².
|
||||
let (mut power, mut fx, mut fy) = (0.0, 0.0, 0.0);
|
||||
for (k, (_, f)) in nodal.iter().enumerate() {
|
||||
let vx = (d_candidate[2 * k] - d_n[2 * k]) / dt;
|
||||
let vy = (d_candidate[2 * k + 1] - d_n[2 * k + 1]) / dt;
|
||||
power += f.x * vx + f.y * vy;
|
||||
fx += f.x;
|
||||
fy += f.y;
|
||||
}
|
||||
let (pd, bd, div) = fl.last_defects.get();
|
||||
let (rough, flips, tn_max, tn_mean) = fl.wall_roughness();
|
||||
let (level, wall_flux, wall_area, poly_flux, poly_area) =
|
||||
fl.level_and_wall_flux();
|
||||
let area_rate = (poly_area - prev_area.get()) / dt;
|
||||
println!(
|
||||
" step {step} pass: |d_new − d_candidate| = {residual:.3e}, |d_new| = {:.3e}, nodal load {load:.2}, {faces} faces",
|
||||
" step {step} pass: |d_new − d_candidate| = {residual:.3e}, |d_new| = {:.3e}, nodal Σ|F| {load:.2} ΣF ({fx:+.2}, {fy:+.2}), power {power:+.3e} W/m, wall t_n roughness {rough:.2} ({flips} flips, max {tn_max:.1} mean {tn_mean:.1} Pa), patch p level {level:+.1} Pa, wall net flux {wall_flux:+.3e} m²/s over {wall_area:.3} m (polygon {poly_flux:+.3e}; flag area rate {area_rate:+.3e}), patch mass defect {pd:.2e} bg {bd:.2e} div {div:.1e}, {faces} faces",
|
||||
d_new.iter().map(|v| v * v).sum::<f64>().sqrt()
|
||||
);
|
||||
}
|
||||
@@ -329,6 +347,7 @@ pub fn run_march_overset(case: BenchmarkCase, config: &OversetMarchConfig) -> Ov
|
||||
let (new_state, nodal, conservation, faces) = latest.borrow_mut().take().expect("pass ran");
|
||||
flag_state = new_state;
|
||||
committed_nodal = nodal;
|
||||
prev_area.set(fluid.borrow().shared.read().unwrap().area());
|
||||
worst_conservation = worst_conservation.max(conservation);
|
||||
faces_used = faces;
|
||||
let ux = flag_state.displacement[a_dofs[0]];
|
||||
|
||||
Reference in New Issue
Block a user