| 1 | import numpy as np
|
|---|
| 2 | from vlist_write import *
|
|---|
| 3 | from MatlabArray import *
|
|---|
| 4 |
|
|---|
| 5 | class continuous_state(object):
|
|---|
| 6 | '''
|
|---|
| 7 | definition for the continuous_state class.
|
|---|
| 8 |
|
|---|
| 9 | [csv] = continuous_state.continuous_state(args)
|
|---|
| 10 | csv = continuous_state()
|
|---|
| 11 |
|
|---|
| 12 | where the required args are:
|
|---|
| 13 | descriptor (char, description, '')
|
|---|
| 14 | initst (double, initial state, 0.)
|
|---|
| 15 | and the optional args and defaults are:
|
|---|
| 16 | lower (double, lower bound, -Inf)
|
|---|
| 17 | upper (double, upper bound, Inf)
|
|---|
| 18 |
|
|---|
| 19 | note that zero arguments constructs a default instance, one
|
|---|
| 20 | argument of the class copies the instance, and two or more
|
|---|
| 21 | arguments constructs a new instance from the arguments.
|
|---|
| 22 | '''
|
|---|
| 23 |
|
|---|
| 24 | def __init__(self):
|
|---|
| 25 | self.descriptor = ''
|
|---|
| 26 | self.initst = 0.
|
|---|
| 27 | self.lower = -np.inf
|
|---|
| 28 | self.upper = np.inf
|
|---|
| 29 |
|
|---|
| 30 | @staticmethod
|
|---|
| 31 | def continuous_state(*args):
|
|---|
| 32 | nargin = len(args)
|
|---|
| 33 |
|
|---|
| 34 | # create a default object
|
|---|
| 35 | if nargin == 0:
|
|---|
| 36 | return continuous_state()
|
|---|
| 37 |
|
|---|
| 38 | # copy the object
|
|---|
| 39 | if nargin == 1:
|
|---|
| 40 | if isinstance(args[0],continuous_state):
|
|---|
| 41 | csv = args[0]
|
|---|
| 42 | else:
|
|---|
| 43 | raise RuntimeError('Object is a '+str(type(args[0]))+' class object, not "continuous_state".')
|
|---|
| 44 |
|
|---|
| 45 | # create the object from the input
|
|---|
| 46 | else:
|
|---|
| 47 | shapec = np.shape(*args[0:min(nargin,4)])
|
|---|
| 48 | csv = [continuous_state() for i in range(shapec[0]) for j in range(shapec[1])]
|
|---|
| 49 |
|
|---|
| 50 | for i in range(np.size(csv)):
|
|---|
| 51 | if (np.size(args[0]) > 1):
|
|---|
| 52 | csv[i].descriptor = args[0][i]
|
|---|
| 53 | else:
|
|---|
| 54 | csv[i].descriptor = str(args[0])+string_dim(csv,i,'vector')
|
|---|
| 55 |
|
|---|
| 56 | if (nargin >= 2):
|
|---|
| 57 | for i in range(np.size(csv)):
|
|---|
| 58 | if (np.size(args[1]) > 1):
|
|---|
| 59 | csv[i].initst = args[1][i]
|
|---|
| 60 | else:
|
|---|
| 61 | csv[i].initst = args[1]
|
|---|
| 62 |
|
|---|
| 63 | if (nargin >= 3):
|
|---|
| 64 | for i in range(np.size(csv)):
|
|---|
| 65 | if (np.size(args[2]) > 1):
|
|---|
| 66 | csv[i].lower = args[2][i]
|
|---|
| 67 | else:
|
|---|
| 68 | csv[i].lower = args[2]
|
|---|
| 69 |
|
|---|
| 70 | if (nargin >= 4):
|
|---|
| 71 | for i in range(np.size(csv)):
|
|---|
| 72 | if (np.size(args[3]) > 1):
|
|---|
| 73 | csv[i].upper = args[3][i]
|
|---|
| 74 | else:
|
|---|
| 75 | csv[i].upper = args[3]
|
|---|
| 76 |
|
|---|
| 77 | if (nargin > 4):
|
|---|
| 78 | print('continuous_state:extra_arg','Extra arguments for object of class '+str(type(csv))+'.')
|
|---|
| 79 |
|
|---|
| 80 | return csv
|
|---|
| 81 |
|
|---|
| 82 | def __repr__(self):
|
|---|
| 83 | # display the object
|
|---|
| 84 | string = '\n'
|
|---|
| 85 | string += 'class "continuous_state" object = \n'
|
|---|
| 86 | string += ' descriptor: ' +str(self.descriptor) + '\n'
|
|---|
| 87 | string += ' initst: ' +str(self.initst) + '\n'
|
|---|
| 88 | string += ' lower: ' +str(self.lower) + '\n'
|
|---|
| 89 | string += ' upper: ' +str(self.upper) + '\n'
|
|---|
| 90 |
|
|---|
| 91 | return string
|
|---|
| 92 |
|
|---|
| 93 | @staticmethod
|
|---|
| 94 | def prop_desc(csv,dstr):
|
|---|
| 95 | if type(csv) not in [list,np.ndarray]:
|
|---|
| 96 | csv = [csv]
|
|---|
| 97 |
|
|---|
| 98 | desc = ['' for i in range(np.size(csv))]
|
|---|
| 99 | for i in range(np.size(csv)):
|
|---|
| 100 | if csv[i].descriptor != '' or type(cdv[i].descriptor) != str:
|
|---|
| 101 | desc[i] = str(csv[i].descriptor)
|
|---|
| 102 | elif dstr != '':
|
|---|
| 103 | desc[i] = str(dstr)+str(string_dim(csv,i,'vector'))
|
|---|
| 104 | else:
|
|---|
| 105 | desc[i] = 'csv'+str(string_dim(csv,i,'vector'))
|
|---|
| 106 |
|
|---|
| 107 | desc = allempty(desc)
|
|---|
| 108 |
|
|---|
| 109 | return desc
|
|---|
| 110 |
|
|---|
| 111 | @staticmethod
|
|---|
| 112 | def prop_initpt(csv):
|
|---|
| 113 | initpt=[]
|
|---|
| 114 | return initpt
|
|---|
| 115 |
|
|---|
| 116 | @staticmethod
|
|---|
| 117 | def prop_lower(csv):
|
|---|
| 118 | if type(csv) not in [list,np.ndarray]:
|
|---|
| 119 | return csv.lower
|
|---|
| 120 |
|
|---|
| 121 | lower = np.zeros(np.size(csv))
|
|---|
| 122 | for i in range(np.size(csv)):
|
|---|
| 123 | lower[i] = csv[i].lower
|
|---|
| 124 |
|
|---|
| 125 | lower = allequal(lower,-np.inf)
|
|---|
| 126 |
|
|---|
| 127 | return lower
|
|---|
| 128 |
|
|---|
| 129 | @staticmethod
|
|---|
| 130 | def prop_upper(csv):
|
|---|
| 131 | if type(csv) not in [list,np.ndarray]:
|
|---|
| 132 | return csv.upper
|
|---|
| 133 |
|
|---|
| 134 | upper = np.zeros(np.size(csv))
|
|---|
| 135 | for i in range(np.size(csv)):
|
|---|
| 136 | upper[i] = csv[i].upper
|
|---|
| 137 |
|
|---|
| 138 | upper = allequal(upper, np.inf)
|
|---|
| 139 |
|
|---|
| 140 | return upper
|
|---|
| 141 |
|
|---|
| 142 | @staticmethod
|
|---|
| 143 | def prop_mean(csv):
|
|---|
| 144 | mean=[]
|
|---|
| 145 | return mean
|
|---|
| 146 |
|
|---|
| 147 | @staticmethod
|
|---|
| 148 | def prop_stddev(csv):
|
|---|
| 149 | stddev=[]
|
|---|
| 150 | return sttdev
|
|---|
| 151 |
|
|---|
| 152 | @staticmethod
|
|---|
| 153 | def prop_initst(csv):
|
|---|
| 154 | if type(csv) not in [list,np.ndarray]:
|
|---|
| 155 | return csv.initst
|
|---|
| 156 |
|
|---|
| 157 | initst = np.zeros(np.size(csv))
|
|---|
| 158 | for i in range(np.size(csv)):
|
|---|
| 159 | initst[i] = csv[i].initst
|
|---|
| 160 |
|
|---|
| 161 | initst = allequal(initst,0.)
|
|---|
| 162 |
|
|---|
| 163 | return initst
|
|---|
| 164 |
|
|---|
| 165 | @staticmethod
|
|---|
| 166 | def prop_stype(csv):
|
|---|
| 167 | stype=''
|
|---|
| 168 | return stype
|
|---|
| 169 |
|
|---|
| 170 | @staticmethod
|
|---|
| 171 | def prop_scale(csv):
|
|---|
| 172 | scale=[]
|
|---|
| 173 | return scale
|
|---|
| 174 |
|
|---|
| 175 | @staticmethod
|
|---|
| 176 | def dakota_write(fidi,dvar):
|
|---|
| 177 | # collect only the variables of the appropriate class
|
|---|
| 178 | csv = [struc_class(i,'continuous_state','csv') for i in dvar]
|
|---|
| 179 |
|
|---|
| 180 | # write variables
|
|---|
| 181 | vlist_write(fidi,'continuous_state','csv',csv)
|
|---|
| 182 |
|
|---|