P6-b design 2: the Robin wall on the patch's Inner side — RobinWall { alpha, datum } with the wall velocity u_s + (t_f − datum)/α (explicit, damped by the wall's own viscous gain μ/(α d)) and the compliant-wall pressure term |S| p'/α implicit in the projection (the added-mass operator in the fluid's own response); Dirichlet bit for bit when off; MMS pin on the skewed annulus (orders 2.46/2.13 at α = 10 and 100 μ/h, the Dirichlet values; a 1e12 wall reproduces Dirichlet to 2e-6); OversetPisoSolver::patch_mut; harness knob RTX_FSI2O_ROBIN_ALPHA with the previous pass's tractions as the datum, printed in the header
CI / Build (macos-latest) (push) Waiting to run
CI / Test (macos-latest) (push) Blocked by required conditions
CI / Test (ubuntu-latest) (push) Blocked by required conditions
CI / Python Bindings (maturin) (macos-latest) (push) Blocked by required conditions
CI / Python Bindings (maturin) (ubuntu-latest) (push) Blocked by required conditions
CI / WASM Build + Size Check (push) Blocked by required conditions
CI / Distributed Training Tests (push) Blocked by required conditions
CI / CI Success (push) Blocked by required conditions
CI / Build (ubuntu-latest) (push) Failing after 7s
CI / Format Check (push) Failing after 17s
Documentation / Build User Guide (push) Successful in 19s
Documentation / Build API Documentation (push) Failing after 1m51s
CI / Build CPU-Only (Explicit) (push) Failing after 1m58s
CI / Clippy Check (push) Failing after 2m13s
Performance Benchmarks / Run Benchmarks (push) Successful in 2m54s
CI / Build (macos-latest) (push) Waiting to run
CI / Test (macos-latest) (push) Blocked by required conditions
CI / Test (ubuntu-latest) (push) Blocked by required conditions
CI / Python Bindings (maturin) (macos-latest) (push) Blocked by required conditions
CI / Python Bindings (maturin) (ubuntu-latest) (push) Blocked by required conditions
CI / WASM Build + Size Check (push) Blocked by required conditions
CI / Distributed Training Tests (push) Blocked by required conditions
CI / CI Success (push) Blocked by required conditions
CI / Build (ubuntu-latest) (push) Failing after 7s
CI / Format Check (push) Failing after 17s
Documentation / Build User Guide (push) Successful in 19s
Documentation / Build API Documentation (push) Failing after 1m51s
CI / Build CPU-Only (Explicit) (push) Failing after 1m58s
CI / Clippy Check (push) Failing after 2m13s
Performance Benchmarks / Run Benchmarks (push) Successful in 2m54s
Co-Authored-By: Claude Fable 5.1 <[email protected]> Claude-Session: https://claude.ai/code/session_01YJPeT6WA2e7YvAnS875AHL
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
c144a5f733
commit
c3dbd5040a
@@ -18,7 +18,7 @@ use rtx_cfd::solvers::incompressible::{
|
||||
AleBoundaries, ConvectionScheme, CurvilinearParameters, CurvilinearPisoSolver,
|
||||
EmbeddedParameters, EmbeddedPisoSolver, FlowField, MgPrecision, NormalDiffusion, OversetField,
|
||||
OversetParameters, OversetPisoSolver, OversetResult, OversetSolverState, PatchConvection,
|
||||
PatchField, PoissonSolverKind, SideBoundary,
|
||||
PatchField, PoissonSolverKind, RobinWall, SideBoundary,
|
||||
};
|
||||
use rtx_cfd::{CfdConfig, CfdResult};
|
||||
use rtx_fea::mesh::{Mesh, NodeId};
|
||||
@@ -967,6 +967,24 @@ impl OversetFluid {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// The fluid's traction on every Inner (wall) face, in the patch's
|
||||
/// Inner-face order — the Robin wall's datum for the next pass.
|
||||
pub fn inner_tractions(&self) -> Vec<[f64; 2]> {
|
||||
self.solver
|
||||
.patch()
|
||||
.wall_tractions(&self.field.patch, PatchSide::Inner, self.solver.time())
|
||||
.into_iter()
|
||||
.map(|(_, _, _, t)| t)
|
||||
.collect()
|
||||
}
|
||||
/// Put the Robin wall (impedance `alpha`, datum per Inner face) on the
|
||||
/// patch, or remove it.
|
||||
pub fn set_robin(&mut self, alpha: f64, datum: Option<Vec<[f64; 2]>>) {
|
||||
self.solver
|
||||
.patch_mut()
|
||||
.set_robin_wall(datum.map(|d| RobinWall { alpha, datum: d }));
|
||||
}
|
||||
|
||||
/// Drag and lift on cylinder + flag from the patch's wall stress.
|
||||
pub fn measure_force(&self) -> (f64, f64) {
|
||||
let f = self
|
||||
|
||||
Reference in New Issue
Block a user