1212
1313__all__ = ['issiso' , 'timebase' , 'common_timebase' , 'timebaseEqual' ,
1414 'isdtime' , 'isctime' ]
15+
1516# Define module default parameter values
1617_namedio_defaults = {
1718 'namedio.state_name_delim' : '_' ,
2021 'namedio.linearized_system_name_prefix' : '' ,
2122 'namedio.linearized_system_name_suffix' : '$linearized' ,
2223 'namedio.sampled_system_name_prefix' : '' ,
23- 'namedio.sampled_system_name_suffix' : '$sampled'
24+ 'namedio.sampled_system_name_suffix' : '$sampled' ,
25+ 'namedio.converted_system_name_prefix' : '' ,
26+ 'namedio.converted_system_name_suffix' : '$converted' ,
2427}
2528
2629
@@ -49,11 +52,15 @@ def __init__(
4952 _idCounter = 0 # Counter for creating generic system name
5053
5154 # Return system name
52- def _name_or_default (self , name = None ):
55+ def _name_or_default (self , name = None , prefix_suffix_name = None ):
5356 if name is None :
5457 name = "sys[{}]" .format (NamedIOSystem ._idCounter )
5558 NamedIOSystem ._idCounter += 1
56- return name
59+ prefix = "" if prefix_suffix_name is None else config .defaults [
60+ 'namedio.' + prefix_suffix_name + '_system_name_prefix' ]
61+ suffix = "" if prefix_suffix_name is None else config .defaults [
62+ 'namedio.' + prefix_suffix_name + '_system_name_suffix' ]
63+ return prefix + name + suffix
5764
5865 # Check if system name is generic
5966 def _generic_name_check (self ):
@@ -99,16 +106,26 @@ def __str__(self):
99106 def _find_signal (self , name , sigdict ):
100107 return sigdict .get (name , None )
101108
102- def _copy_names (self , sys ):
109+ def _copy_names (self , sys , prefix = "" , suffix = "" , prefix_suffix_name = None ):
103110 """copy the signal and system name of sys. Name is given as a keyword
104111 in case a specific name (e.g. append 'linearized') is desired. """
105- self .name = sys .name
112+ # Figure out the system name and assign it
113+ if prefix == "" and prefix_suffix_name is not None :
114+ prefix = config .defaults [
115+ 'namedio.' + prefix_suffix_name + '_system_name_prefix' ]
116+ if suffix == "" and prefix_suffix_name is not None :
117+ suffix = config .defaults [
118+ 'namedio.' + prefix_suffix_name + '_system_name_suffix' ]
119+ self .name = prefix + sys .name + suffix
120+
121+ # Name the inputs, outputs, and states
106122 self .ninputs , self .input_index = \
107123 sys .ninputs , sys .input_index .copy ()
108124 self .noutputs , self .output_index = \
109125 sys .noutputs , sys .output_index .copy ()
110- self .nstates , self .state_index = \
111- sys .nstates , sys .state_index .copy ()
126+ if sys .nstates : # only copy for state space systems
127+ self .nstates , self .state_index = \
128+ sys .nstates , sys .state_index .copy ()
112129
113130 def copy (self , name = None , use_prefix_suffix = True ):
114131 """Make a copy of an input/output system
@@ -128,10 +145,8 @@ def copy(self, name=None, use_prefix_suffix=True):
128145 # Update the system name
129146 if name is None and use_prefix_suffix :
130147 # Get the default prefix and suffix to use
131- dup_prefix = config .defaults ['namedio.duplicate_system_name_prefix' ]
132- dup_suffix = config .defaults ['namedio.duplicate_system_name_suffix' ]
133148 newsys .name = self ._name_or_default (
134- dup_prefix + self .name + dup_suffix )
149+ self .name , prefix_suffix_name = 'duplicate' )
135150 else :
136151 newsys .name = self ._name_or_default (name )
137152
0 commit comments