embedded3 S2-7b: the curved instrument's per-wall operator probe (curved_operator_probe) and RTX_E3_CURVED_SCHEME; host prototype RTX_E3_WALL_FOOT=centroid (the shear closure's wall velocity at the foot from the open part's CENTROID, not the face centre — on a rotating wall the two feet are ½h(1−α) apart: rigid-mode probe residual 4.5× smaller, the rotating wall's offset −0.022 → ±0.002 h, its cut pressure zeroth → first order); default off, device refuses it
CI / Clippy Check (push) Failing after 4s
CI / Format Check (push) Failing after 4s
Performance Benchmarks / Run Benchmarks (push) Failing after 6s
CI / Build (ubuntu-latest) (push) Failing after 5s
Documentation / Build User Guide (push) Successful in 5s
CI / Build CPU-Only (Explicit) (push) Failing after 1m0s
Documentation / Build API Documentation (push) Failing after 1m2s
CI / Build (macos-latest) (push) Canceled after 0s
CI / Test (macos-latest) (push) Canceled after 0s
CI / Test (ubuntu-latest) (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
CI / Clippy Check (push) Failing after 4s
CI / Format Check (push) Failing after 4s
Performance Benchmarks / Run Benchmarks (push) Failing after 6s
CI / Build (ubuntu-latest) (push) Failing after 5s
Documentation / Build User Guide (push) Successful in 5s
CI / Build CPU-Only (Explicit) (push) Failing after 1m0s
Documentation / Build API Documentation (push) Failing after 1m2s
CI / Build (macos-latest) (push) Canceled after 0s
CI / Test (macos-latest) (push) Canceled after 0s
CI / Test (ubuntu-latest) (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]>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
599023d786
commit
7fffbb1301
@@ -224,6 +224,7 @@ impl Mask {
|
||||
wall_exchange_foot: false,
|
||||
conv_sides_exact: false,
|
||||
wall_flux_true_normal: false,
|
||||
wall_foot_centroid: false,
|
||||
grad_weights: None,
|
||||
diffusion_centroid: false,
|
||||
face_shifts: None,
|
||||
|
||||
+12
-3
@@ -120,12 +120,21 @@ impl Solver {
|
||||
let ec = e(c);
|
||||
let cell_minus = add(p, ec, -1);
|
||||
let cell_plus = p;
|
||||
let ub = mask.surface_velocity_at(body, x, c, t_old);
|
||||
let shift0 = mask.face_shift(c, p);
|
||||
// S2-7b: the wall velocity at the foot from the open part's centroid.
|
||||
let foot_of = |q: [i64; 3], xq: [f64; 3]| -> [f64; 3] {
|
||||
if mask.wall_foot_centroid {
|
||||
let sq = mask.face_shift(c, q);
|
||||
[xq[0] + sq[0], xq[1] + sq[1], xq[2] + sq[2]]
|
||||
} else {
|
||||
xq
|
||||
}
|
||||
};
|
||||
let ub = mask.surface_velocity_at(body, foot_of(p, x), c, t_old);
|
||||
|
||||
let mut mass_out = 0.0;
|
||||
let mut conv = 0.0;
|
||||
let mut diff = 0.0;
|
||||
let shift0 = mask.face_shift(c, p);
|
||||
// The implicit exchange with solid neighbour faces (S2-5).
|
||||
let (mut wall_implicit, mut wall_rhs) = (0.0, 0.0);
|
||||
for d in 0..3 {
|
||||
@@ -251,7 +260,7 @@ impl Solver {
|
||||
return 0.0;
|
||||
}
|
||||
let cvq = mask.cv_geometry(c, q);
|
||||
let ubq = mask.surface_velocity_at(body, lat.face_position(c, q), c, t_old);
|
||||
let ubq = mask.surface_velocity_at(body, foot_of(q, lat.face_position(c, q)), c, t_old);
|
||||
// Explicit, with a coefficient ∝ 1/d_f: take the gradient from
|
||||
// the faces at least TRANSVERSE_DISTANCE_FLOOR h off the wall —
|
||||
// a FULL neighbour too, over its own distance along the cut
|
||||
|
||||
@@ -180,7 +180,8 @@ impl DeviceStep {
|
||||
assert!(
|
||||
!solver.params.wall_exchange_foot
|
||||
&& !solver.params.conv_sides_exact
|
||||
&& !solver.params.wall_flux_true_normal,
|
||||
&& !solver.params.wall_flux_true_normal
|
||||
&& !solver.params.wall_foot_centroid,
|
||||
"the axis-foot exchange / exact convective sides (S2-7b) are host prototypes: the device kernels do not carry them"
|
||||
);
|
||||
assert!(
|
||||
|
||||
@@ -181,6 +181,13 @@ pub struct Parameters {
|
||||
/// of a rotating or flexing wall. `RTX_E3_WALL_FLUX=true`; the device
|
||||
/// refuses it.
|
||||
pub wall_flux_true_normal: bool,
|
||||
/// HOST PROTOTYPE (S2-7b, moving walls): the shear closure's wall velocity
|
||||
/// at the foot of the normal from the face's open-part CENTROID (where
|
||||
/// its value lives) instead of from the face centre — the two feet are
|
||||
/// ½h(1 − α) apart along the wall, an O(Ωh) velocity error over d_f on a
|
||||
/// rotating or flexing wall (zero on a wall at rest or in translation).
|
||||
/// `RTX_E3_WALL_FOOT=centroid`; the device refuses it.
|
||||
pub wall_foot_centroid: bool,
|
||||
/// S2-5: the cross-direction diffusion between two faces over the
|
||||
/// distance between their OPEN-PART CENTROIDS (a cut face's velocity
|
||||
/// is its open part's mean, ½h(1 − α) off the face centre along the
|
||||
@@ -226,6 +233,7 @@ impl Default for Parameters {
|
||||
wall_exchange_foot: std::env::var("RTX_E3_WALL_EXCHANGE").is_ok_and(|v| v == "axisfoot"),
|
||||
conv_sides_exact: std::env::var("RTX_E3_CONV_SIDES").is_ok_and(|v| v == "exact"),
|
||||
wall_flux_true_normal: std::env::var("RTX_E3_WALL_FLUX").is_ok_and(|v| v == "true"),
|
||||
wall_foot_centroid: std::env::var("RTX_E3_WALL_FOOT").is_ok_and(|v| v == "centroid"),
|
||||
pressure_centroid: std::env::var("RTX_E3_PRESSURE_CENTROID").is_ok_and(|v| v == "1"),
|
||||
momentum_volume_tiled: std::env::var("RTX_E3_MOMENTUM_VOLUME")
|
||||
.is_ok_and(|v| v == "tiled"),
|
||||
@@ -375,6 +383,7 @@ impl Solver {
|
||||
m.wall_exchange_foot = self.params.wall_exchange_foot;
|
||||
m.conv_sides_exact = self.params.conv_sides_exact;
|
||||
m.wall_flux_true_normal = self.params.wall_flux_true_normal;
|
||||
m.wall_foot_centroid = self.params.wall_foot_centroid;
|
||||
m.diffusion_centroid = self.params.diffusion_centroid;
|
||||
if self.params.diffusion_centroid {
|
||||
m.compute_face_shifts();
|
||||
|
||||
@@ -119,6 +119,7 @@ pub struct Mask {
|
||||
pub(super) wall_exchange_foot: bool,
|
||||
pub(super) conv_sides_exact: bool,
|
||||
pub(super) wall_flux_true_normal: bool,
|
||||
pub(super) wall_foot_centroid: bool,
|
||||
/// The centroid prototype's pressure-gradient weights per u / v / w face.
|
||||
/// The centroid-distance cross diffusion (S2-5).
|
||||
pub(super) diffusion_centroid: bool,
|
||||
@@ -550,6 +551,7 @@ impl Mask {
|
||||
wall_exchange_foot: false,
|
||||
conv_sides_exact: false,
|
||||
wall_flux_true_normal: false,
|
||||
wall_foot_centroid: false,
|
||||
grad_weights: None,
|
||||
diffusion_centroid: false,
|
||||
face_shifts: None,
|
||||
|
||||
Reference in New Issue
Block a user