Module openrtdynamics2.lang.diagram_core.irpar
Expand source code
from typing import Dict, List
class irparElement:
def __init__(self, id : int, typ : int, ipar : List[int], rpar : List[float]):
self.id = id
self.typ = typ
self.ipar = ipar
self.rpar = rpar
class irparElement_rpar(irparElement):
def __init__(self, id : int, rpar : List[float] ):
irparElement.__init__(self, id, 1, [len(rpar)], rpar )
class irparElement_ipar(irparElement):
def __init__(self, id : int, ipar : List[int] ):
irparElement.__init__(self, id, 4, [len(ipar)] + ipar, [] )
class irparElement_container(irparElement):
def __init__(self, id : int, ipar : List[int], rpar : List[float] ):
irparElement.__init__(self, id, 10, ipar, rpar )
class irparSet:
def __init__(self):
self.Elements = []
def AddElemet(self, element : irparElement):
# TODO: check if one id appears twice
self.Elements.append( element )
def combine_irparam(self):
# encode
rpar_ptr = []
ipar_ptr = []
rparges = []
iparges = []
for i in range(0,len( self.Elements )):
ipar_ptr.append( len(iparges) )
iparges += self.Elements[i].ipar
rpar_ptr.append( len(rparges) )
rparges += self.Elements[i].rpar
# build header
header_entries = len( self.Elements )
version = 1
header = [version, header_entries]
for i in range(0,len( self.Elements )):
# pip_len = length(parlist(i).ipar(:));
pip_len = len( self.Elements[i].ipar )
prp_len = len( self.Elements[i].rpar)
header += [ self.Elements[i].id, self.Elements[i].typ, ipar_ptr[i], rpar_ptr[i], pip_len, prp_len ]
#header = [header; parlist(i).id; parlist(i).typ; ipar_ptr(i); rpar_ptr(i); pip_len; prp_len];
# summ up
ipar = header + iparges
rpar = rparges
return ipar, rpar
class irparEncoder:
def __init__(self):
pass
# irpar = irparSet()
# irpar.AddElemet( irparElement( 10, 11, [1,2,3], [0.1,0.2,0.3] ) )
# irpar.AddElemet( irparElement( 20, 21, [100,200,30], [0.22,0.33] ) )
# irpar.AddElemet( irparElement_ipar( 30, [9,8,7,6] ) )
# irpar.AddElemet( irparElement_rpar( 31, [9.9,8.8,7.7,6.6] ) )
# ipar, rpar = irpar.combine_irparam()
# print(ipar)
# print(rpar)
Classes
class irparElement (id: int, typ: int, ipar: List[int], rpar: List[float])
-
Expand source code
class irparElement: def __init__(self, id : int, typ : int, ipar : List[int], rpar : List[float]): self.id = id self.typ = typ self.ipar = ipar self.rpar = rpar
Subclasses
class irparElement_container (id: int, ipar: List[int], rpar: List[float])
-
Expand source code
class irparElement_container(irparElement): def __init__(self, id : int, ipar : List[int], rpar : List[float] ): irparElement.__init__(self, id, 10, ipar, rpar )
Ancestors
class irparElement_ipar (id: int, ipar: List[int])
-
Expand source code
class irparElement_ipar(irparElement): def __init__(self, id : int, ipar : List[int] ): irparElement.__init__(self, id, 4, [len(ipar)] + ipar, [] )
Ancestors
class irparElement_rpar (id: int, rpar: List[float])
-
Expand source code
class irparElement_rpar(irparElement): def __init__(self, id : int, rpar : List[float] ): irparElement.__init__(self, id, 1, [len(rpar)], rpar )
Ancestors
class irparEncoder
-
Expand source code
class irparEncoder: def __init__(self): pass
class irparSet
-
Expand source code
class irparSet: def __init__(self): self.Elements = [] def AddElemet(self, element : irparElement): # TODO: check if one id appears twice self.Elements.append( element ) def combine_irparam(self): # encode rpar_ptr = [] ipar_ptr = [] rparges = [] iparges = [] for i in range(0,len( self.Elements )): ipar_ptr.append( len(iparges) ) iparges += self.Elements[i].ipar rpar_ptr.append( len(rparges) ) rparges += self.Elements[i].rpar # build header header_entries = len( self.Elements ) version = 1 header = [version, header_entries] for i in range(0,len( self.Elements )): # pip_len = length(parlist(i).ipar(:)); pip_len = len( self.Elements[i].ipar ) prp_len = len( self.Elements[i].rpar) header += [ self.Elements[i].id, self.Elements[i].typ, ipar_ptr[i], rpar_ptr[i], pip_len, prp_len ] #header = [header; parlist(i).id; parlist(i).typ; ipar_ptr(i); rpar_ptr(i); pip_len; prp_len]; # summ up ipar = header + iparges rpar = rparges return ipar, rpar
Methods
def AddElemet(self, element: irparElement)
-
Expand source code
def AddElemet(self, element : irparElement): # TODO: check if one id appears twice self.Elements.append( element )
def combine_irparam(self)
-
Expand source code
def combine_irparam(self): # encode rpar_ptr = [] ipar_ptr = [] rparges = [] iparges = [] for i in range(0,len( self.Elements )): ipar_ptr.append( len(iparges) ) iparges += self.Elements[i].ipar rpar_ptr.append( len(rparges) ) rparges += self.Elements[i].rpar # build header header_entries = len( self.Elements ) version = 1 header = [version, header_entries] for i in range(0,len( self.Elements )): # pip_len = length(parlist(i).ipar(:)); pip_len = len( self.Elements[i].ipar ) prp_len = len( self.Elements[i].rpar) header += [ self.Elements[i].id, self.Elements[i].typ, ipar_ptr[i], rpar_ptr[i], pip_len, prp_len ] #header = [header; parlist(i).id; parlist(i).typ; ipar_ptr(i); rpar_ptr(i); pip_len; prp_len]; # summ up ipar = header + iparges rpar = rparges return ipar, rpar