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>
This commit is contained in:
Frank14f
2026-06-27 22:32:01 +08:00
co-authored by Cursor
parent 00b957f904
commit 6e3756c587
28 changed files with 1536 additions and 157 deletions
@@ -30,6 +30,7 @@ D_LATTICE = 30.0
R_LATTICE = 15.0
_STORE_PRECISION = "FP32"
_DDF_SHIFTING = False
_STREAMING = "double_buffer"
KAN99B_ANCHOR = {
@@ -139,7 +140,7 @@ def _build_cfg(
cfg["physics"]["viscosity"] = float(_nu_from_re(re))
cfg["physics"]["rho"] = 1.0
cfg["method"]["collision"] = "MRT"
cfg["method"]["streaming"] = "double_buffer"
cfg["method"]["streaming"] = _STREAMING
cfg["method"]["store_precision"] = _STORE_PRECISION
cfg["method"]["ddf_shifting"] = _DDF_SHIFTING
cfg["method"]["les"]["enabled"] = False
@@ -505,12 +506,16 @@ def main() -> int:
help="DDF store precision (FP32, FP16S).")
ap.add_argument("--ddf-shifting", action="store_true",
help="Enable DDF shifting mode (f - w storage).")
ap.add_argument("--streaming", type=str, default="double_buffer",
choices=("double_buffer", "esopull"),
help="Streaming mode (double_buffer or esopull).")
ap.add_argument("--json-out", type=str, default="", help="Optional explicit summary JSON output path.")
args = ap.parse_args()
# Global for _build_cfg() access
global _STORE_PRECISION, _DDF_SHIFTING
global _STORE_PRECISION, _DDF_SHIFTING, _STREAMING
_STORE_PRECISION = str(args.store_precision).upper()
_DDF_SHIFTING = bool(args.ddf_shifting)
_STREAMING = str(args.streaming)
if not os.path.isfile(_DEFAULT_LBM):
print(f"Missing base config: {_DEFAULT_LBM}", file=sys.stderr)
@@ -645,7 +650,7 @@ def main() -> int:
"inlet_profile": "uniform",
"y_wall_bc": "free_slip",
"outlet_mode": "neq_extrap",
"streaming": "double_buffer",
"streaming": _STREAMING,
"store_precision": "FP32",
"les_enabled": False,
},