public void inheritFrom(Dynamics src) { for (DerivedVariable dv : src.derivedVariables) { derivedVariables.add(dv.makeCopy()); } for (ConditionalDerivedVariable dv : src.conditionalDerivedVariables) { conditionalDerivedVariables.add(dv.makeCopy()); } for (StateVariable sv : src.stateVariables) { stateVariables.add(sv.makeCopy()); } for (TimeDerivative td : src.timeDerivatives) { timeDerivatives.add(td.makeCopy()); } for (KineticScheme ks : src.kineticSchemes) { kineticSchemes.add(ks.makeCopy()); } for (OnStart os : src.onStarts) { onStarts.add(os.makeCopy()); } for (OnEvent oe : src.onEvents) { onEvents.add(oe.makeCopy()); } for (OnCondition oc : src.onConditions) { onConditions.add(oc.makeCopy()); } for (Regime r : src.regimes) { regimes.add(r.makeCopy()); } }
public void addOnStart(OnStart os) { onStarts.add(os); }
public void addOnEvent(OnEvent oe) { onEvents.add(oe); }
public void addOnCondition(OnCondition oc) { onConditions.add(oc); }
public void addRegime(Regime regime) { regimes.add(regime); }
public void addTimeDerivative(TimeDerivative td) { timeDerivatives.add(td); }
public void addConditionalDerivedVariable(ConditionalDerivedVariable dv) { conditionalDerivedVariables.add(dv); }
public void addStateVariable(StateVariable sv) { stateVariables.add(sv); }
public void addDerivedVariable(DerivedVariable dv) { derivedVariables.add(dv); }
private void realResolve(Lems lems, Parser parser) throws ContentError, ParseError { if (lems.looseResolving()) { // then we expose anything with a name that matches the name of an exposure HashSet<String> expHS = new HashSet<String>(); for (Exposure exp : getComponentType().getExposures()) { expHS.add(exp.getName()); } for (StateVariable sv : stateVariables) { if (sv.exposure == null && expHS.contains(sv.name)) { sv.exposure = sv.name; E.shortWarning( "Implicitly exposing a state variable because its name matches an exposure: " + sv); } } for (DerivedVariable dv : derivedVariables) { if (dv.exposure == null && expHS.contains(dv.name)) { dv.exposure = dv.name; E.shortWarning( "Implicitly exposing a derived variable because its name matches an exposure: " + dv); } } for (ConditionalDerivedVariable dv : conditionalDerivedVariables) { if (dv.exposure == null && expHS.contains(dv.name)) { dv.exposure = dv.name; E.shortWarning( "Implicitly exposing a derived variable because its name matches an exposure: " + dv); } } } HashMap<String, Integer> exposedHM = new HashMap<String, Integer>(); for (Requirement req : getComponentType().getRequirements()) { p_requiredVars.add(new RequiredVar(req.getName(), req.getDimension())); } for (Exposure exp : getComponentType().getExposures()) { p_exposedVars.add(new ExposedVar(exp.getName(), exp.getDimension())); exposedHM.put(exp.getName(), 0); } checkMakeValHM(); addToMap(lems.getGlobals(), valHM); addToMap(lems.getConstantValueds(), valHM); for (DerivedVariable dvar : derivedVariables) { dvar.resolve(lems, lems.getDimensions(), r_type, valHM, parser); if (dvar.hasExposure()) { countExposure(dvar.getExposure(), exposedHM); } } for (ConditionalDerivedVariable dvar : conditionalDerivedVariables) { dvar.resolve(lems, lems.getDimensions(), r_type, valHM, parser); if (dvar.hasExposure()) { countExposure(dvar.getExposure(), exposedHM); } } for (StateVariable sv : stateVariables) { sv.resolve(r_type, lems.getDimensions()); if (sv.hasExposure()) { countExposure(sv.getExposure(), exposedHM); } } for (StateScalarField scf : stateScalarFields) { scf.resolve(r_type, lems.getDimensions()); } for (DerivedScalarField dcf : derivedScalarFields) { dcf.resolve(r_type, lems.getDimensions()); } for (DerivedPunctateField dpf : derivedPunctateFields) { dpf.resolve(r_type, lems.getDimensions()); } for (TimeDerivative sd : timeDerivatives) { sd.resolve(stateVariables, valHM, parser); } for (OnStart os : onStarts) { os.resolve(this, stateVariables, valHM, parser); } for (OnEvent oe : onEvents) { oe.resolve(this, stateVariables, valHM, parser); } for (OnCondition oc : onConditions) { oc.resolve(this, stateVariables, valHM, parser); } for (Regime reg : regimes) { reg.setBehavior(this); reg.resolve(stateVariables, lems, parser, exposedHM); } for (KineticScheme ks : kineticSchemes) { ks.resolve(r_type); } for (String enm : exposedHM.keySet()) { if (exposedHM.get(enm) == 0) { E.oneLineWarning( "No internal variable is linked to the exposure: " + enm + " for ComponentType " + getComponentType().getName()); } } }