Configuration Guide

LWWConfig groups simulation parameters into focused sections while preserving flat keyword compatibility for existing scripts.

Presets

from lww_transport import LWWConfig

cfg = LWWConfig.standard_rtd()
cfg = LWWConfig.quick_test(nx=32, n=32)
cfg = LWWConfig.room_temperature_rtd()
cfg = LWWConfig.coarse_grid_rtd(nx=48, n=48)
cfg = LWWConfig.fine_grid_rtd(nx=128, n=96)

Grouped Parameters

from lww_transport import (
    ComputeParams,
    DiscretizationParams,
    GeometryParams,
    LWWConfig,
    MaterialParams,
    OperatingConditions,
    SolverParams,
)

cfg = LWWConfig(
    discretization=DiscretizationParams(nx=86, n=72),
    material=MaterialParams(temp=77.0, chemp=0.0863814),
    geometry=GeometryParams(box=550.0, well=50.0, pot=0.3),
    operating=OperatingConditions(bias=0.0, temperature=77.0),
    solver=SolverParams(exchange=True, convergence_eps=1e-10),
    compute=ComputeParams(kernel_backend="auto", verbose=False),
)

Compatibility Form

Flat keyword arguments remain supported:

cfg = LWWConfig(nx=86, n=72, exchange=True, kernel_backend="cpp")

The grouped fields and flat properties reference the same values:

assert cfg.nx == cfg.discretization.nx
assert cfg.exchange == cfg.solver.exchange

Common Adjustments

cfg = LWWConfig.standard_rtd()
cfg.with_grid(64, 64)
cfg.with_bias(0.08)
cfg.with_temperature(300.0)
cfg.with_exchange(False)
cfg.with_verbose(True)

After direct edits to nested geometry or discretization fields, call cfg.__post_init__() to refresh cached grids:

cfg.geometry.well = 75.0
cfg.geometry.pot = 0.45
cfg.__post_init__()

Summary Output

from lww_transport import format_config_summary, save_config_summary

print(format_config_summary(cfg))
save_config_summary(cfg, "output")