Files

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)