def make_unitless(settings): sb = settings.simulation_box from units import get_unit defined = set() for s in settings.get_numeric(tuple(getattr(sb,'s'+c) for c in coords)): unit = get_unit(s,cache = settings.get_cache()) if unit is None or unit in defined: continue value = (unit/s).evaluate(cache=settings.get_cache()) if unit.function == pc.fraction: unit = unit.args[0] value = 1/value if unit.is_function: continue if unit is None or unit in defined or unit.is_function: continue defined.add(unit) unit_name = str(unit) if not settings.unitless.has_name(unit_name): settings.unitless.create_key(unit_name,unit) setattr(settings.unitless,unit_name,value)
def __init__(self, C=None, **kwd): if C is not None: expr = ''' dvm/dt=__membrane_Im/C : volt __membrane_Im=0*unit : unit ''' Equations.__init__(self, expr, C=C, unit=get_unit(C * volt / second), **kwd) else: Equations.__init__(self)