Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 30 additions & 13 deletions OMPython/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -954,7 +954,7 @@ def xmlparse(self):
for sv in rootCQ.iter('ScalarVariable'):
scalar={}
scalar["name"] = sv.get('name')
scalar["changable"] = sv.get('isValueChangeable')
scalar["changeable"] = sv.get('isValueChangeable')
scalar["description"] = sv.get('description')
scalar["variability"] = sv.get('variability')
scalar["causality"] = sv.get('causality')
Expand Down Expand Up @@ -1318,7 +1318,7 @@ def strip_space(self,name):
elif(isinstance(name,list)):
return [x.replace(" ","") for x in name]

def setMethodHelper(self,args1,args2,args3,args4=None):
def setMethodHelper(self,args1,args2,args3,args4=None,verbose=None):
"""
Helper function for setParameter(),setContinuous(),setSimulationOptions(),setLinearizationOption(),setOptimizationOption()
args1 - string or list of string given by user
Expand All @@ -1330,23 +1330,32 @@ def setMethodHelper(self,args1,args2,args3,args4=None):
args1=self.strip_space(args1)
value=args1.split("=")
if value[0] in args2:
args2[value[0]]=value[1]
if(args4!=None):
args4[value[0]]=value[1]
if (args3 == "parameter" and self.isParameterChangeable(value[0], value[1], verbose)):
args2[value[0]]=value[1]
if(args4!=None):
args4[value[0]]=value[1]
elif (args3 != "parameter"):
args2[value[0]]=value[1]
if(args4!=None):
args4[value[0]]=value[1]
else:
print(value[0], "!is not a", args3 , "variable")
print("\"" + value[0] + "\"" + " is not a" + args3 + " variable")
return
elif(isinstance(args1,list)):
args1=self.strip_space(args1)
for var in args1:
value=var.split("=")
if value[0] in args2:
args2[value[0]]=value[1]
if(args4!=None):
args4[value[0]]=value[1]
if (args3 == "parameter" and self.isParameterChangeable(value[0], value[1], verbose)):
args2[value[0]]=value[1]
if(args4!=None):
args4[value[0]]=value[1]
elif (args3 != "parameter"):
args2[value[0]]=value[1]
if(args4!=None):
args4[value[0]]=value[1]
else:
print(value[0], "!is not a", args3 ,"variable")
return
print("\"" + value[0] + "\"" + " is not a "+ args3 + " variable")

def setContinuous(self, cvals): # 13
"""
Expand All @@ -1358,15 +1367,23 @@ def setContinuous(self, cvals): # 13
"""
return self.setMethodHelper(cvals,self.continuouslist,"continuous",self.overridevariables)

def setParameters(self, pvals): # 14
def setParameters(self, pvals, verbose=True): # 14
"""
This method is used to set parameter values. It can be called:
with a sequence of parameter name and assigning corresponding value as arguments as show in the example below:
usage
>>> setParameters("Name=value")
>>> setParameters(["Name1=value1","Name2=value2"])
"""
return self.setMethodHelper(pvals,self.paramlist,"parameter",self.overridevariables)
return self.setMethodHelper(pvals,self.paramlist,"parameter",self.overridevariables, verbose)

def isParameterChangeable(self, name, value, verbose):
q = self.getQuantities(name)
if (q[0]["changeable"] == "false"):
if verbose:
print("| info | setParameters() failed : It is not possible to set the following signal " + "\"" + name + "\"" + ", It seems to be structural, final, protected or evaluated or has a non-constant binding, use sendExpression(setParameterValue("+ self.modelName + ", " + name + ", " + value + "), parsed=false)" + " and rebuild the model using buildModel() API")
return False
return True

def setSimulationOptions(self, simOptions): # 16
"""
Expand Down