Changeset 16307 for issm/trunk-jpl/src/m/classes/inversion.py
- Timestamp:
- 10/07/13 10:54:18 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/inversion.py
r16249 r16307 93 93 94 94 #several responses can be used: 95 self.cost_functions=101 *numpy.ones((self.nsteps,1))95 self.cost_functions=101 96 96 97 97 #step_threshold is used to speed up control method. When … … 114 114 115 115 num_controls=numpy.size(md.inversion.control_parameters) 116 num_costfunc=numpy.size(md.inversion.cost_functions ,axis=1)116 num_costfunc=numpy.size(md.inversion.cost_functions) 117 117 118 118 md = checkfield(md,'inversion.iscontrol','values',[0,1]) … … 123 123 md = checkfield(md,'inversion.maxiter_per_step','size',[md.inversion.nsteps],'>=',0) 124 124 md = checkfield(md,'inversion.step_threshold','size',[md.inversion.nsteps]) 125 md = checkfield(md,'inversion.cost_functions','size',[ md.inversion.nsteps,num_costfunc],'values',[101,102,103,104,105,201,501,502,503,504,505])125 md = checkfield(md,'inversion.cost_functions','size',[num_costfunc],'values',[101,102,103,104,105,201,501,502,503,504,505]) 126 126 md = checkfield(md,'inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0) 127 127 md = checkfield(md,'inversion.gradient_scaling','size',[md.inversion.nsteps,num_controls]) … … 171 171 172 172 #process cost functions 173 num_cost_functions=numpy.size(self.cost_functions ,axis=1)173 num_cost_functions=numpy.size(self.cost_functions) 174 174 data=copy.deepcopy(self.cost_functions) 175 data [numpy.nonzero(data==101)]=SurfaceAbsVelMisfitEnum()176 data [numpy.nonzero(data==102)]=SurfaceRelVelMisfitEnum()177 data [numpy.nonzero(data==103)]=SurfaceLogVelMisfitEnum()178 data [numpy.nonzero(data==104)]=SurfaceLogVxVyMisfitEnum()179 data [numpy.nonzero(data==105)]=SurfaceAverageVelMisfitEnum()180 data [numpy.nonzero(data==201)]=ThicknessAbsMisfitEnum()181 data [numpy.nonzero(data==501)]=DragCoefficientAbsGradientEnum()182 data [numpy.nonzero(data==502)]=RheologyBbarAbsGradientEnum()183 data [numpy.nonzero(data==503)]=ThicknessAbsGradientEnum()184 data [numpy.nonzero(data==504)]=ThicknessAlongGradientEnum()185 data [numpy.nonzero(data==505)]=ThicknessAcrossGradientEnum()186 WriteData(fid,'data', data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3)175 data=[SurfaceAbsVelMisfitEnum() if x==101 else x for x in data] 176 data=[SurfaceRelVelMisfitEnum() if x==102 else x for x in data] 177 data=[SurfaceLogVelMisfitEnum() if x==103 else x for x in data] 178 data=[SurfaceLogVxVyMisfitEnum() if x==104 else x for x in data] 179 data=[SurfaceAverageVelMisfitEnum() if x==105 else x for x in data] 180 data=[ThicknessAbsMisfitEnum() if x==201 else x for x in data] 181 data=[DragCoefficientAbsGradientEnum() if x==501 else x for x in data] 182 data=[RheologyBbarAbsGradientEnum() if x==502 else x for x in data] 183 data=[ThicknessAbsGradientEnum() if x==503 else x for x in data] 184 data=[ThicknessAlongGradientEnum() if x==504 else x for x in data] 185 data=[ThicknessAcrossGradientEnum() if x==505 else x for x in data] 186 WriteData(fid,'data',numpy.array(data).reshape(1,-1),'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3) 187 187 WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer') 188 188 # }}}
Note:
See TracChangeset
for help on using the changeset viewer.