Changeset 18994
- Timestamp:
- 01/07/15 08:48:32 (10 years ago)
- Location:
- issm/trunk-jpl/src/m
- Files:
-
- 5 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/inversion.m
r18993 r18994 136 136 md = checkfield(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps 1],'>=',0); 137 137 md = checkfield(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps 1]); 138 md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values', [101:105 201 501:507 601:604]);138 md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',supportedcostfunctions()); 139 139 md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0); 140 140 md = checkfield(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps num_controls]); … … 227 227 %process cost functions 228 228 num_cost_functions=size(obj.cost_functions,2); 229 data=obj.cost_functions; 230 pos=find(obj.cost_functions==101); data(pos)=SurfaceAbsVelMisfitEnum(); 231 pos=find(obj.cost_functions==102); data(pos)=SurfaceRelVelMisfitEnum(); 232 pos=find(obj.cost_functions==103); data(pos)=SurfaceLogVelMisfitEnum(); 233 pos=find(obj.cost_functions==104); data(pos)=SurfaceLogVxVyMisfitEnum(); 234 pos=find(obj.cost_functions==105); data(pos)=SurfaceAverageVelMisfitEnum(); 235 pos=find(obj.cost_functions==201); data(pos)=ThicknessAbsMisfitEnum(); 236 pos=find(obj.cost_functions==501); data(pos)=DragCoefficientAbsGradientEnum(); 237 pos=find(obj.cost_functions==502); data(pos)=RheologyBbarAbsGradientEnum(); 238 pos=find(obj.cost_functions==503); data(pos)=ThicknessAbsGradientEnum(); 239 pos=find(obj.cost_functions==504); data(pos)=ThicknessAlongGradientEnum(); 240 pos=find(obj.cost_functions==505); data(pos)=ThicknessAcrossGradientEnum(); 241 pos=find(obj.cost_functions==506); data(pos)=BalancethicknessMisfitEnum(); 242 pos=find(obj.cost_functions==507); data(pos)=RheologyBAbsGradientEnum(); 243 pos=find(obj.cost_functions==601); data(pos)=SurfaceAbsMisfitEnum(); 229 data=marshallcostfunctions(obj.cost_functions); 244 230 WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3); 245 231 WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer'); -
issm/trunk-jpl/src/m/classes/inversion.py
r18771 r18994 1 1 import numpy 2 import copy3 2 from fielddisplay import fielddisplay 4 3 from EnumDefinitions import * … … 6 5 from checkfield import checkfield 7 6 from WriteData import WriteData 7 from supportedcontrols import supportedcontrols 8 from supportedcostfunctions import supportedcostfunctions 9 from marshallcostfunctions import marshallcostfunctions 8 10 9 11 class inversion(object): … … 119 121 md = checkfield(md,'fieldname','inversion.iscontrol','values',[0,1]) 120 122 md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0,1]) 121 md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values', ['BalancethicknessThickeningRate','FrictionCoefficient','MaterialsRheologyBbar','DamageDbar','Vx','Vy'])123 md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols()) 122 124 md = checkfield(md,'fieldname','inversion.nsteps','numel',[1],'>=',0) 123 125 md = checkfield(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps],'>=',0) 124 126 md = checkfield(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps]) 125 md = checkfield(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values', [101,102,103,104,105,201,501,502,503,504,505])127 md = checkfield(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',supportedcostfunctions()) 126 128 md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0) 127 129 md = checkfield(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps,num_controls]) … … 173 175 #process cost functions 174 176 num_cost_functions=numpy.size(self.cost_functions) 175 data=copy.deepcopy(self.cost_functions) 176 pos=[i for i,x in enumerate(self.cost_functions) if x==101]; 177 for i in pos: data[i]=SurfaceAbsVelMisfitEnum() 178 pos=[i for i,x in enumerate(self.cost_functions) if x==102]; 179 for i in pos: data[i]=SurfaceRelVelMisfitEnum() 180 pos=[i for i,x in enumerate(self.cost_functions) if x==103]; 181 for i in pos: data[i]=SurfaceLogVelMisfitEnum() 182 pos=[i for i,x in enumerate(self.cost_functions) if x==104]; 183 for i in pos: data[i]=SurfaceLogVxVyMisfitEnum() 184 pos=[i for i,x in enumerate(self.cost_functions) if x==105]; 185 for i in pos: data[i]=SurfaceAverageVelMisfitEnum() 186 pos=[i for i,x in enumerate(self.cost_functions) if x==201]; 187 for i in pos: data[i]=ThicknessAbsMisfitEnum() 188 pos=[i for i,x in enumerate(self.cost_functions) if x==501]; 189 for i in pos: data[i]=DragCoefficientAbsGradientEnum() 190 pos=[i for i,x in enumerate(self.cost_functions) if x==502]; 191 for i in pos: data[i]=RheologyBbarAbsGradientEnum() 192 pos=[i for i,x in enumerate(self.cost_functions) if x==503]; 193 for i in pos: data[i]=ThicknessAbsGradientEnum() 194 pos=[i for i,x in enumerate(self.cost_functions) if x==504]; 195 for i in pos: data[i]=ThicknessAlongGradientEnum() 196 pos=[i for i,x in enumerate(self.cost_functions) if x==505]; 197 for i in pos: data[i]=ThicknessAcrossGradientEnum() 177 data=marshallcostfunctions(self.cost_functions) 198 178 WriteData(fid,'data',numpy.array(data).reshape(1,-1),'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3) 199 179 WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer') -
issm/trunk-jpl/src/m/classes/inversionvalidation.m
r18824 r18994 57 57 md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]); 58 58 md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]); 59 md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',... 60 {'BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'DamageDbar' 'Vx' 'Vy' 'Thickness',... 61 'BalancethicknessOmega' 'BalancethicknessApparentMassbalance','MaterialsRheologyB'}); 59 md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols()); 62 60 md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1 num_controls],'>',0,'NaN',1); 63 md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values', [101:105 201 501:507 601:604]);61 md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',supportedcostfunctions()); 64 62 md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0); 65 63 md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices num_controls]); … … 137 135 %process cost functions 138 136 num_cost_functions=size(obj.cost_functions,2); 139 data=obj.cost_functions; 140 pos=find(obj.cost_functions==101); data(pos)=SurfaceAbsVelMisfitEnum(); 141 pos=find(obj.cost_functions==102); data(pos)=SurfaceRelVelMisfitEnum(); 142 pos=find(obj.cost_functions==103); data(pos)=SurfaceLogVelMisfitEnum(); 143 pos=find(obj.cost_functions==104); data(pos)=SurfaceLogVxVyMisfitEnum(); 144 pos=find(obj.cost_functions==105); data(pos)=SurfaceAverageVelMisfitEnum(); 145 pos=find(obj.cost_functions==201); data(pos)=ThicknessAbsMisfitEnum(); 146 pos=find(obj.cost_functions==501); data(pos)=DragCoefficientAbsGradientEnum(); 147 pos=find(obj.cost_functions==502); data(pos)=RheologyBbarAbsGradientEnum(); 148 pos=find(obj.cost_functions==503); data(pos)=ThicknessAbsGradientEnum(); 149 pos=find(obj.cost_functions==504); data(pos)=ThicknessAlongGradientEnum(); 150 pos=find(obj.cost_functions==505); data(pos)=ThicknessAcrossGradientEnum(); 151 pos=find(obj.cost_functions==506); data(pos)=BalancethicknessMisfitEnum(); 152 pos=find(obj.cost_functions==507); data(pos)=RheologyBAbsGradientEnum(); 153 pos=find(obj.cost_functions==601); data(pos)=SurfaceAbsMisfitEnum(); 137 data=marshallcostfunctions(obj.cost_functions); 154 138 WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3); 155 139 WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer'); -
issm/trunk-jpl/src/m/classes/m1qn3inversion.m
r18824 r18994 74 74 md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]); 75 75 md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]); 76 md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',... 77 {'BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'DamageDbar',... 78 'Vx' 'Vy' 'Thickness' 'BalancethicknessOmega' 'BalancethicknessApparentMassbalance','MaterialsRheologyB'}); 76 md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols()); 79 77 md = checkfield(md,'fieldname','inversion.control_scaling_factors','size',[1 num_controls],'>',0,'NaN',1); 80 78 md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0); … … 82 80 md = checkfield(md,'fieldname','inversion.dxmin','numel',1,'>',0); 83 81 md = checkfield(md,'fieldname','inversion.gttol','numel',1,'>',0); 84 md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values', [101:105 201 501:507 601:604]);82 md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',supportedcostfunctions()); 85 83 md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0); 86 84 md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices num_controls]); … … 167 165 %process cost functions 168 166 num_cost_functions=size(obj.cost_functions,2); 169 data=obj.cost_functions; 170 pos=find(obj.cost_functions==101); data(pos)=SurfaceAbsVelMisfitEnum(); 171 pos=find(obj.cost_functions==102); data(pos)=SurfaceRelVelMisfitEnum(); 172 pos=find(obj.cost_functions==103); data(pos)=SurfaceLogVelMisfitEnum(); 173 pos=find(obj.cost_functions==104); data(pos)=SurfaceLogVxVyMisfitEnum(); 174 pos=find(obj.cost_functions==105); data(pos)=SurfaceAverageVelMisfitEnum(); 175 pos=find(obj.cost_functions==201); data(pos)=ThicknessAbsMisfitEnum(); 176 pos=find(obj.cost_functions==501); data(pos)=DragCoefficientAbsGradientEnum(); 177 pos=find(obj.cost_functions==502); data(pos)=RheologyBbarAbsGradientEnum(); 178 pos=find(obj.cost_functions==503); data(pos)=ThicknessAbsGradientEnum(); 179 pos=find(obj.cost_functions==504); data(pos)=ThicknessAlongGradientEnum(); 180 pos=find(obj.cost_functions==505); data(pos)=ThicknessAcrossGradientEnum(); 181 pos=find(obj.cost_functions==506); data(pos)=BalancethicknessMisfitEnum(); 182 pos=find(obj.cost_functions==507); data(pos)=RheologyBAbsGradientEnum(); 183 pos=find(obj.cost_functions==601); data(pos)=SurfaceAbsMisfitEnum(); 167 data=marshallcostfunctions(obj.cost_functions); 184 168 WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3); 185 169 WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer'); -
issm/trunk-jpl/src/m/classes/m1qn3inversion.py
r17918 r18994 1 1 import numpy 2 import copy3 2 from fielddisplay import fielddisplay 4 3 from EnumDefinitions import * … … 6 5 from checkfield import checkfield 7 6 from WriteData import WriteData 7 from supportedcontrols import supportedcontrols 8 from supportedcostfunctions import supportedcostfunctions 9 from marshallcostfunctions import marshallcostfunctions 8 10 9 11 class m1qn3inversion(object): … … 119 121 md = checkfield(md,'fieldname','inversion.iscontrol','values',[0,1]) 120 122 md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0,1]) 121 md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values', ['BalancethicknessThickeningRate','FrictionCoefficient','MaterialsRheologyBbar','DamageDbar','Vx','Vy','Thickness'])123 md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols()) 122 124 md = checkfield(md,'fieldname','inversion.maxsteps','numel',[1],'>=',0) 123 125 md = checkfield(md,'fieldname','inversion.maxiter','numel',[1],'>=',0) 124 126 md = checkfield(md,'fieldname','inversion.dxmin','numel',[1],'>',0.) 125 127 md = checkfield(md,'fieldname','inversion.gttol','numel',[1],'>',0.) 126 md = checkfield(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values', [101,102,103,104,105,201,501,502,503,504,505])128 md = checkfield(md,'fieldname','inversion.cost_functions','size',[num_costfunc],'values',supportedcostfunctions()) 127 129 md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices,num_costfunc],'>=',0) 128 130 md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices,num_controls]) … … 166 168 #process cost functions 167 169 num_cost_functions=numpy.size(self.cost_functions) 168 data=copy.deepcopy(self.cost_functions) 169 pos=[i for i,x in enumerate(self.cost_functions) if x==101]; 170 for i in pos: data[i]=SurfaceAbsVelMisfitEnum() 171 pos=[i for i,x in enumerate(self.cost_functions) if x==102]; 172 for i in pos: data[i]=SurfaceRelVelMisfitEnum() 173 pos=[i for i,x in enumerate(self.cost_functions) if x==103]; 174 for i in pos: data[i]=SurfaceLogVelMisfitEnum() 175 pos=[i for i,x in enumerate(self.cost_functions) if x==104]; 176 for i in pos: data[i]=SurfaceLogVxVyMisfitEnum() 177 pos=[i for i,x in enumerate(self.cost_functions) if x==105]; 178 for i in pos: data[i]=SurfaceAverageVelMisfitEnum() 179 pos=[i for i,x in enumerate(self.cost_functions) if x==201]; 180 for i in pos: data[i]=ThicknessAbsMisfitEnum() 181 pos=[i for i,x in enumerate(self.cost_functions) if x==501]; 182 for i in pos: data[i]=DragCoefficientAbsGradientEnum() 183 pos=[i for i,x in enumerate(self.cost_functions) if x==502]; 184 for i in pos: data[i]=RheologyBbarAbsGradientEnum() 185 pos=[i for i,x in enumerate(self.cost_functions) if x==503]; 186 for i in pos: data[i]=ThicknessAbsGradientEnum() 187 pos=[i for i,x in enumerate(self.cost_functions) if x==504]; 188 for i in pos: data[i]=ThicknessAlongGradientEnum() 189 pos=[i for i,x in enumerate(self.cost_functions) if x==505]; 190 for i in pos: data[i]=ThicknessAcrossGradientEnum() 170 data=marshallcostfunctions(self.cost_functions) 191 171 WriteData(fid,'data',numpy.array(data).reshape(1,-1),'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3) 192 172 WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer') -
issm/trunk-jpl/src/m/classes/taoinversion.m
r18687 r18994 86 86 md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]); 87 87 md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]); 88 md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',... 89 {'BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'MaterialsRheologyZbar' 'Vx' 'Vy' 'Thickness'}); 88 md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols()); 90 89 md = checkfield(md,'fieldname','inversion.maxsteps','numel',1,'>=',0); 91 90 md = checkfield(md,'fieldname','inversion.maxiter','numel',1,'>=',0); … … 104 103 end 105 104 106 md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values', [101:105 201 501:506]);105 md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',supportedcostfunctions()); 107 106 md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0); 108 107 md = checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices num_controls]); … … 187 186 %process cost functions 188 187 num_cost_functions=size(obj.cost_functions,2); 189 data=obj.cost_functions; 190 pos=find(obj.cost_functions==101); data(pos)=SurfaceAbsVelMisfitEnum(); 191 pos=find(obj.cost_functions==102); data(pos)=SurfaceRelVelMisfitEnum(); 192 pos=find(obj.cost_functions==103); data(pos)=SurfaceLogVelMisfitEnum(); 193 pos=find(obj.cost_functions==104); data(pos)=SurfaceLogVxVyMisfitEnum(); 194 pos=find(obj.cost_functions==105); data(pos)=SurfaceAverageVelMisfitEnum(); 195 pos=find(obj.cost_functions==201); data(pos)=ThicknessAbsMisfitEnum(); 196 pos=find(obj.cost_functions==501); data(pos)=DragCoefficientAbsGradientEnum(); 197 pos=find(obj.cost_functions==502); data(pos)=RheologyBbarAbsGradientEnum(); 198 pos=find(obj.cost_functions==503); data(pos)=ThicknessAbsGradientEnum(); 199 pos=find(obj.cost_functions==504); data(pos)=ThicknessAlongGradientEnum(); 200 pos=find(obj.cost_functions==505); data(pos)=ThicknessAcrossGradientEnum(); 201 pos=find(obj.cost_functions==506); data(pos)=BalancethicknessMisfitEnum(); 202 pos=find(obj.cost_functions==507); data(pos)=Balancethickness2MisfitEnum(); 188 data=marshallcostfunctions(obj.cost_functions); 203 189 WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3); 204 190 WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
Note:
See TracChangeset
for help on using the changeset viewer.