1 # Copyright (C) 2010 Richard Lincoln
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 # Lesser General Public License for more details.
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA, USA
17 from CIM14
.Dynamics
.MetaBlockConnectable
import MetaBlockConnectable
19 class MetaBlockParameter(MetaBlockConnectable
):
20 """An identified parameter of a block. This is meta dynamics model and does not contain specific parameter values. When using a block one would need to supply specific parameter values. These are typically time constants, but are not restricted to this. Sometimes, for standard blocks, the block paramter may come directly from the attributes of an associated PowerSystemResource object, but such parameters may be specified to enable user defined models to alter the behavior of a standard block.
23 def __init__(self
, BlockParameter
=None, MemberOf_MetaBlock
=None, *args
, **kw_args
):
24 """Initialises a new 'MetaBlockParameter' instance.
26 @param BlockParameter:
27 @param MemberOf_MetaBlock: Paramters belong to a block.
29 self
._BlockParameter
= []
30 self
.BlockParameter
= [] if BlockParameter
is None else BlockParameter
32 self
._MemberOf
_MetaBlock
= None
33 self
.MemberOf_MetaBlock
= MemberOf_MetaBlock
35 super(MetaBlockParameter
, self
).__init
__(*args
, **kw_args
)
41 _refs
= ["BlockParameter", "MemberOf_MetaBlock"]
42 _many_refs
= ["BlockParameter"]
44 def getBlockParameter(self
):
46 return self
._BlockParameter
48 def setBlockParameter(self
, value
):
49 for x
in self
._BlockParameter
:
50 x
._MetaBlockParameter
= None
52 y
._MetaBlockParameter
= self
53 self
._BlockParameter
= value
55 BlockParameter
= property(getBlockParameter
, setBlockParameter
)
57 def addBlockParameter(self
, *BlockParameter
):
58 for obj
in BlockParameter
:
59 obj
._MetaBlockParameter
= self
60 self
._BlockParameter
.append(obj
)
62 def removeBlockParameter(self
, *BlockParameter
):
63 for obj
in BlockParameter
:
64 obj
._MetaBlockParameter
= None
65 self
._BlockParameter
.remove(obj
)
67 def getMemberOf_MetaBlock(self
):
68 """Paramters belong to a block.
70 return self
._MemberOf
_MetaBlock
72 def setMemberOf_MetaBlock(self
, value
):
73 if self
._MemberOf
_MetaBlock
is not None:
74 filtered
= [x
for x
in self
.MemberOf_MetaBlock
.MetaBlockParameter
if x
!= self
]
75 self
._MemberOf
_MetaBlock
._MetaBlockParameter
= filtered
77 self
._MemberOf
_MetaBlock
= value
78 if self
._MemberOf
_MetaBlock
is not None:
79 self
._MemberOf
_MetaBlock
._MetaBlockParameter
.append(self
)
81 MemberOf_MetaBlock
= property(getMemberOf_MetaBlock
, setMemberOf_MetaBlock
)