def __init__(self, ode, parent_regime): self.parent_regime = parent_regime parent_component = parent_regime.parent_component name_map = parent_component.name_map self.dependent_variable = ode.dependent_variable rhs = MathUtil.get_rhs_substituted(ode, name_map) self.CODE = name_map[ode.dependent_variable] + " += (" + rhs + ")*h;"
def __init__(self, assignment, parent_trans): self.parent_trans = parent_trans self.assginment = assignment parent_component = parent_trans.parent_component name_map = parent_component.name_map rhs = MathUtil.get_rhs_substituted(assignment, name_map) self.CODE = name_map[assignment.lhs] + " = " + rhs + ";"
def __init__(self, ode, parent_regime): self.parent_regime = parent_regime parent_component = parent_regime.parent_component name_map = parent_component.name_map self.dependent_variable = ode.dependent_variable rhs = MathUtil.get_rhs_substituted( ode, name_map ) self.CODE = name_map[ode.dependent_variable] + " += (" + rhs + ")*h;"
def __init__(self, assignment, parent_trans): self.parent_trans = parent_trans self.assginment = assignment parent_component = parent_trans.parent_component name_map = parent_component.name_map rhs = MathUtil.get_rhs_substituted( assignment, name_map ) self.CODE = name_map[assignment.lhs]+" = "+rhs+";"
def test_get_rhs_substituted(self): # Signature: name(cls, expr_obj, namemap) # No Docstring # from nineml.abstraction_layer.component.util import MathUtil e = StrToExpr.alias("a := b*c + d/(e*sin(f+g/e)) + b1 + e_ / exp(12*g)") rhs_sub = MathUtil.get_rhs_substituted(e, {"b": "B", "e": "E"}) self.assertEqual(rhs_sub, "B*c + d/(E*sin(f+g/E)) + b1 + e_ / exp(12*g)")
def __init__(self, condition, parent_trans): self.parent_trans = parent_trans self.condition = condition parent_component = parent_trans.parent_component name_map = parent_component.name_map # code to evaluate the condition condition_expr = MathUtil.get_rhs_substituted( condition, name_map ) self.CODE = "transPendingTmp[%d] = (%s)" % (parent_trans.index, condition_expr) # where the state of the evaluated condition may be stored self.PENDING = "transPendingTmp[%d]" % parent_trans.index # conditions, unlike eventports, can happen only once self.PENDING_FINALIZE = "break;"
def __init__(self, condition, parent_trans): self.parent_trans = parent_trans self.condition = condition parent_component = parent_trans.parent_component name_map = parent_component.name_map # code to evaluate the condition condition_expr = MathUtil.get_rhs_substituted(condition, name_map) self.CODE = "transPendingTmp[%d] = (%s)" % (parent_trans.index, condition_expr) # where the state of the evaluated condition may be stored self.PENDING = "transPendingTmp[%d]" % parent_trans.index # conditions, unlike eventports, can happen only once self.PENDING_FINALIZE = "break;"