Claude and Claude Opus 5.5
4029a0b27e
Add body-free periodic GPU consumer for BlockLayout2D
...
blocks.cu: separate compilation entry with NX/NY = block window (halo
included), blockIdx.z selects the block; BlockHaloCopy refreshes halos
from owner cores, BlockStep pulls/collides core cells with the existing
compute_rho_u/compute_feq/collide_srt_no_force. Existing kernels and
refinement numerics unchanged.
block_stepper.py: PeriodicBlockStepper (D2Q9/SRT/FP32 double buffers,
doubly periodic layout); launch-limit and free-memory checks before any
allocation; uploads only halo pairs; spare buffer starts NaN; lifecycle
mirrors FixedPatchStepper.
Tests: CPU contract doubles (rejections before CUDA/allocation, initialize
guards, failure/close/retry) and one GPU case: 32x24, 8 steps, 1x1/2x2/4x2
splits bit-identical, FP64 oracle max abs <= 3e-6, drift reported.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-15 02:49:09 +00:00
Frank14f
263f3b0c7a
Preserve bounded validation evidence and historical failures
2026-10-15 10:13:51 +08:00
Frank14f
cdbb9c42f6
Add jet, surface and fixed-patch tests and runnable examples
2026-10-15 10:13:49 +08:00
Frank14f and Cursor
6e3756c587
fix(esopull): correct init layout and pre-streaming semantics (v0.5.1)
...
EsoPull curved boundaries and wall BCs now use consistent backing-layout
reads; InitEsoPull writes equilibrium in t=0 EsoPull layout. Cache N_OBJS
after compile and atomic config header writes to avoid parallel races.
Adds config screening tools, flume configs, and FP16S/EsoPull diagnosis doc.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-27 22:32:01 +08:00
Frank14f and Cursor
04c2bc75ea
feat(obs): unified zero_obs control and time-normalised readback
...
- Replace split zero_force_segment / zero_sensor_segment with unified
zero_obs_async() — a single memset covers all three obs segments
(force, torque, sensor), resetting the step accumulator.
- Add _obs_accum_steps counter so read_*(normalize=True) returns the
physically meaningful per-step average for all telemetry fields.
- Sensor now always applies area-normalisation internally; the normalize
parameter only controls the additional time-normalisation step.
- run() gains zero_obs=True parameter (default) to control reset-on-step.
- 7 new integration tests covering accumulation, zeroing, and normalise.
- Fix bug in test_sensor_accuracy.py (undefined loop variable i).
- Bump version to 0.4.0 for the API change.
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-21 00:50:20 +08:00
Frank14f and Cursor
d5b7e98750
feat(compat): FP16S and ddf_shifting compatibility, EsoPull curved closure
...
Phase A: FP16S store precision verification
- Kan99b K2 FP16S: quantization sensitivity documented (St 0.170 -> 0.142)
- Sah04 S2 FP16S: PASS (St error 1.53% within 5% gate)
- Sah04 S4 FP16S: diverges at high blockage (known limitation)
Phase B: ddf_shifting code fixes
- Fix inlet west_velocity_rho_closure for shifted DDF (common.cuh)
- Fix curved force/torque accumulation for shifted DDF (curved_boundary.cuh, aux_kernels.cu)
- Fix host upload_ddf() asymmetry (field.py)
- Add checkpoint streaming/ddf_shifting match check (checkpoint.py)
- MRT shifting fix: MRT is NOT shift-invariant; unshift/reshift around collision
- Generalize inlet knowns repair from Zou-He to all west inlet schemes
Phase C: EsoPull curved boundary semantic closure (from round 2)
- streaming/esopull_semantic_helpers.cuh: single truth for physical-value semantics
- step/esopull_macro.cu: MacroscopicEsoPullKernel for correct GPU diagnostics
- SensorKernel, ForceRegionKernel share semantic helpers
- Kan99b K2: bit-identical to double-buffer
- Code-level comments document compatibility boundaries
- README updated with compatibility matrix
- output/round3_compatibility_summary.md: full round documentation
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-06-03 10:48:42 +08:00
Frank14f
2e052480c2
重构body api,性能分析,项目整理
2026-05-31 01:42:58 +08:00