19 lines
722 B
Python
19 lines
722 B
Python
"""SI absolute error floors shared by both native code generators.
|
|
|
|
Mass must not inherit the energy floor: 1e-8 kg overwhelmed relative error
|
|
control in small pipe volumes. These conservative defaults were validated on
|
|
the pipe and chamber regressions; model-scale/user tolerance settings remain
|
|
a separate protocol change.
|
|
"""
|
|
|
|
|
|
def state_absolute_tolerance(key: str) -> str:
|
|
field = key.rsplit('.', 1)[-1]
|
|
if field in ('m', 'm1', 'm2'):
|
|
return '1e-14' # kg
|
|
if field in ('v', 'x'):
|
|
return '1e-12' # m/s or m
|
|
if field == '_volume_displacement':
|
|
return '1e-14' # m3, prescribed external volume change
|
|
return '1e-8' # J (or the internal constant state of an algebraic model)
|