Changeset 10969
- Timestamp:
- 11/29/11 16:03:56 (13 years ago)
- Location:
- issm/trunk-jpl/src/m
- Files:
-
- 1 added
- 1 deleted
- 30 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/autodiff.m
r9902 r10969 6 6 classdef autodiff 7 7 properties (SetAccess=public) 8 isautodiff = modelfield('default',false,'marshall',true,'format','Boolean');9 forward = modelfield('default',true,'marshall',true,'format','Boolean');10 reverse = modelfield('default',false,'marshall',true,'format','Boolean');8 isautodiff = false; 9 forward = true; 10 reverse = false; 11 11 end 12 12 methods … … 28 28 function obj = setdefaultparameters(obj) % {{{ 29 29 30 %first, use the defaults provided by the properties definition above.31 fieldnames=fields(obj);32 for i=1:length(fieldnames),33 fieldname=fieldnames{i};34 obj.(fieldname)=obj.(fieldname).default;35 end36 30 end % }}} 37 31 function checkconsistency(obj,md,solution,analyses) % {{{ … … 46 40 47 41 end % }}} 42 function marshall(obj,fid) % {{{ 43 WriteData(fid,'object',obj,'fieldname','isautodiff','format','Boolean'); 44 WriteData(fid,'object',obj,'fieldname','forward','format','Boolean'); 45 WriteData(fid,'object',obj,'fieldname','reverse','format','Boolean'); 46 end % }}} 48 47 end 49 48 end -
issm/trunk-jpl/src/m/classes/balancethickness.m
r10276 r10969 6 6 classdef balancethickness 7 7 properties (SetAccess=public) 8 spcthickness = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);9 thickening_rate = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);10 stabilization = modelfield('default',0,'marshall',true,'format','Integer');8 spcthickness = NaN; 9 thickening_rate = NaN; 10 stabilization = 0; 11 11 end 12 12 methods … … 27 27 end % }}} 28 28 function obj = setdefaultparameters(obj) % {{{ 29 30 %first, use the defaults provided by the properties definition above.31 fieldnames=fields(obj);32 for i=1:length(fieldnames),33 fieldname=fieldnames{i};34 obj.(fieldname)=obj.(fieldname).default;35 end36 29 37 30 %Type of stabilization used … … 55 48 56 49 end % }}} 50 function marshall(obj,fid) % {{{ 51 WriteData(fid,'object',obj,'fieldname','spcthickness','format','DoubleMat','mattype',1); 52 WriteData(fid,'object',obj,'fieldname','thickening_rate','format','DoubleMat','mattype',1); 53 WriteData(fid,'object',obj,'fieldname','stabilization','format','Integer'); 54 end % }}} 57 55 end 58 56 end -
issm/trunk-jpl/src/m/classes/basalforcings.m
r9860 r10969 6 6 classdef basalforcings 7 7 properties (SetAccess=public) 8 melting_rate = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);9 melting_rate_correction = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);10 geothermalflux = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);8 melting_rate = NaN; 9 melting_rate_correction = NaN; 10 geothermalflux = NaN; 11 11 end 12 12 methods … … 28 28 function obj = setdefaultparameters(obj) % {{{ 29 29 30 %first, use the defaults provided by the properties definition above.31 fieldnames=fields(obj);32 for i=1:length(fieldnames),33 fieldname=fieldnames{i};34 obj.(fieldname)=obj.(fieldname).default;35 end36 30 end % }}} 37 31 function checkconsistency(obj,md,solution,analyses) % {{{ … … 56 50 57 51 end % }}} 52 function marshall(obj,fid) % {{{ 53 WriteData(fid,'object',obj,'fieldname','melting_rate','format','DoubleMat','mattype',1); 54 WriteData(fid,'object',obj,'fieldname','melting_rate_correction','format','DoubleMat','mattype',1); 55 WriteData(fid,'object',obj,'fieldname','geothermalflux','format','DoubleMat','mattype',1); 56 end % }}} 58 57 end 59 58 end -
issm/trunk-jpl/src/m/classes/constants.m
r9860 r10969 6 6 classdef constants 7 7 properties (SetAccess=public) 8 g = modelfield('default',0,'marshall',true,'format','Double');9 yts = modelfield('default',0,'marshall',true,'format','Double');10 referencetemperature = modelfield('default',0,'marshall',true,'format','Double');8 g = 0; 9 yts = 0; 10 referencetemperature = 0; 11 11 end 12 12 methods … … 27 27 end % }}} 28 28 function obj = setdefaultparameters(obj) % {{{ 29 30 %first, use the defaults provided by the properties definition above.31 fieldnames=fields(obj);32 for i=1:length(fieldnames),33 fieldname=fieldnames{i};34 obj.(fieldname)=obj.(fieldname).default;35 end36 29 37 30 %acceleration due to gravity (m/s^2) … … 60 53 61 54 end % }}} 55 function marshall(obj,fid) % {{{ 56 WriteData(fid,'object',obj,'fieldname','g','format','Double'); 57 WriteData(fid,'object',obj,'fieldname','yts','format','Double'); 58 WriteData(fid,'object',obj,'fieldname','referencetemperature','format','Double'); 59 end % }}} 62 60 end 63 61 end -
issm/trunk-jpl/src/m/classes/diagnostic.m
r10555 r10969 6 6 classdef diagnostic 7 7 properties (SetAccess=public) 8 spcvx = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);9 spcvy = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);10 spcvz = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);11 restol = modelfield('default',0,'marshall',true,'format','Double');12 reltol = modelfield('default',0,'marshall',true,'format','Double');13 abstol = modelfield('default',0,'marshall',true,'format','Double');14 stokesreconditioning = modelfield('default',0,'marshall',true,'format','Double');15 viscosity_overshoot = modelfield('default',0,'marshall',true,'format','Double');16 icefront = modelfield('default',NaN,'marshall',true,'preprocess','marshallicefront','format','DoubleMat','mattype',3);17 maxiter = modelfield('default',0,'marshall',true,'format','Integer');18 shelf_dampening = modelfield('default',0,'marshall',true,'format','Integer');19 vertex_pairing = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);20 penalty_factor = modelfield('default',0,'marshall',true,'format','Double');21 rift_penalty_lock = modelfield('default',0,'marshall',true,'format','Integer');22 rift_penalty_threshold = modelfield('default',0,'marshall',true,'format','Integer');23 referential = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);24 requested_outputs = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);8 spcvx = NaN; 9 spcvy = NaN; 10 spcvz = NaN; 11 restol = 0; 12 reltol = 0; 13 abstol = 0; 14 stokesreconditioning = 0; 15 viscosity_overshoot = 0; 16 icefront = NaN; 17 maxiter = 0; 18 shelf_dampening = 0; 19 vertex_pairing = NaN; 20 penalty_factor = NaN; 21 rift_penalty_lock = NaN; 22 rift_penalty_threshold = 0; 23 referential = NaN; 24 requested_outputs = NaN; 25 25 end 26 26 methods … … 41 41 end % }}} 42 42 function obj = setdefaultparameters(obj) % {{{ 43 44 %first, use the defaults provided by the properties definition above.45 fieldnames=fields(obj);46 for i=1:length(fieldnames),47 fieldname=fieldnames{i};48 obj.(fieldname)=obj.(fieldname).default;49 end50 43 51 44 %maximum of non-linear iterations. … … 157 150 158 151 end % }}} 152 function marshall(obj,fid) % {{{ 153 WriteData(fid,'object',obj,'fieldname','spcvx','format','DoubleMat','mattype',1); 154 WriteData(fid,'object',obj,'fieldname','spcvy','format','DoubleMat','mattype',1); 155 WriteData(fid,'object',obj,'fieldname','spcvz','format','DoubleMat','mattype',1); 156 WriteData(fid,'object',obj,'fieldname','restol','format','Double'); 157 WriteData(fid,'object',obj,'fieldname','reltol','format','Double'); 158 WriteData(fid,'object',obj,'fieldname','abstol','format','Double'); 159 WriteData(fid,'object',obj,'fieldname','stokesreconditioning','format','Double'); 160 WriteData(fid,'object',obj,'fieldname','viscosity_overshoot','format','Double'); 161 WriteData(fid,'object',obj,'fieldname','maxiter','format','Integer'); 162 WriteData(fid,'object',obj,'fieldname','shelf_dampening','format','Integer'); 163 WriteData(fid,'object',obj,'fieldname','vertex_pairing','format','DoubleMat','mattype',3); 164 WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double'); 165 WriteData(fid,'object',obj,'fieldname','rift_penalty_lock','format','Integer'); 166 WriteData(fid,'object',obj,'fieldname','rift_penalty_threshold','format','Integer'); 167 WriteData(fid,'object',obj,'fieldname','referential','format','DoubleMat','mattype',1); 168 WriteData(fid,'object',obj,'fieldname','requested_outputs','format','DoubleMat','mattype',3); 169 170 %marshall ice front 171 data=obj.icefront; 172 pos=find(data(:,end)==0); data(pos,end)=AirEnum; 173 pos=find(data(:,end)==1); data(pos,end)=WaterEnum; 174 pos=find(data(:,end)==2); data(pos,end)=IceEnum; 175 WriteData(fid,'data',data,'enum',DiagnosticIcefrontEnum,'format','DoubleMat','mattype',3); 176 end % }}} 159 177 end 160 178 end -
issm/trunk-jpl/src/m/classes/flowequation.m
r10244 r10969 6 6 classdef flowequation 7 7 properties (SetAccess=public) 8 ismacayealpattyn = modelfield('default',0,'marshall',true,'format','Boolean');9 ishutter = modelfield('default',0,'marshall',true,'format','Boolean');10 isstokes = modelfield('default',0,'marshall',true,'format','Boolean');11 vertex_equation = modelfield('default',NaN,'marshall',true,'preprocess','marshallapproximations','format','DoubleMat','mattype',1);12 element_equation = modelfield('default',NaN,'marshall',true,'preprocess','marshallapproximations','format','DoubleMat','mattype',2);13 bordermacayeal = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);14 borderpattyn = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);15 borderstokes = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);8 ismacayealpattyn = 0; 9 ishutter = 0; 10 isstokes = 0; 11 vertex_equation = NaN; 12 element_equation = NaN; 13 bordermacayeal = NaN; 14 borderpattyn = NaN; 15 borderstokes = NaN; 16 16 end 17 17 methods … … 32 32 end % }}} 33 33 function obj = setdefaultparameters(obj) % {{{ 34 35 %first, use the defaults provided by the properties definition above.36 fieldnames=fields(obj);37 for i=1:length(fieldnames),38 fieldname=fieldnames{i};39 obj.(fieldname)=obj.(fieldname).default;40 end41 34 42 35 end % }}} … … 82 75 83 76 end % }}} 77 function marshall(obj,fid) % {{{ 78 WriteData(fid,'object',obj,'fieldname','ismacayealpattyn','format','Boolean'); 79 WriteData(fid,'object',obj,'fieldname','ishutter','format','Boolean'); 80 WriteData(fid,'object',obj,'fieldname','isstokes','format','Boolean'); 81 WriteData(fid,'object',obj,'fieldname','bordermacayeal','format','DoubleMat','mattype',1); 82 WriteData(fid,'object',obj,'fieldname','borderpattyn','format','DoubleMat','mattype',1); 83 WriteData(fid,'object',obj,'fieldname','borderstokes','format','DoubleMat','mattype',1); 84 %convert approximations to enums 85 data=obj.vertex_equation; 86 pos=find(data==0); data(pos,end)=NoneApproximationEnum; 87 pos=find(data==1); data(pos,end)=HutterApproximationEnum; 88 pos=find(data==2); data(pos,end)=MacAyealApproximationEnum; 89 pos=find(data==3); data(pos,end)=PattynApproximationEnum; 90 pos=find(data==4); data(pos,end)=StokesApproximationEnum; 91 pos=find(data==5); data(pos,end)=MacAyealPattynApproximationEnum; 92 pos=find(data==6); data(pos,end)=MacAyealStokesApproximationEnum; 93 pos=find(data==7); data(pos,end)=PattynStokesApproximationEnum; 94 WriteData(fid,'data',data,'enum',FlowequationVertexEquationEnum,'format','DoubleMat','mattype',1); 95 data=obj.element_equation; 96 pos=find(data==0); data(pos,end)=NoneApproximationEnum; 97 pos=find(data==1); data(pos,end)=HutterApproximationEnum; 98 pos=find(data==2); data(pos,end)=MacAyealApproximationEnum; 99 pos=find(data==3); data(pos,end)=PattynApproximationEnum; 100 pos=find(data==4); data(pos,end)=StokesApproximationEnum; 101 pos=find(data==5); data(pos,end)=MacAyealPattynApproximationEnum; 102 pos=find(data==6); data(pos,end)=MacAyealStokesApproximationEnum; 103 pos=find(data==7); data(pos,end)=PattynStokesApproximationEnum; 104 WriteData(fid,'data',data,'enum',FlowequationElementEquationEnum,'format','DoubleMat','mattype',2); 105 end % }}} 84 106 end 85 107 end -
issm/trunk-jpl/src/m/classes/friction.m
r9860 r10969 6 6 classdef friction 7 7 properties (SetAccess=public) 8 coefficient = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);9 p = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);10 q = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);8 coefficient = NaN; 9 p = NaN; 10 q = NaN; 11 11 end 12 12 methods … … 28 28 function obj = setdefaultparameters(obj) % {{{ 29 29 30 %first, use the defaults provided by the properties definition above.31 fieldnames=fields(obj);32 for i=1:length(fieldnames),33 fieldname=fieldnames{i};34 obj.(fieldname)=obj.(fieldname).default;35 end36 37 30 end % }}} 38 31 function checkconsistency(obj,md,solution,analyses) % {{{ … … 51 44 fielddisplay(obj,'q','q exponent'); 52 45 end % }}} 46 function marshall(obj,fid) % {{{ 47 WriteData(fid,'object',obj,'fieldname','coefficient','format','DoubleMat','mattype',1); 48 WriteData(fid,'object',obj,'fieldname','p','format','DoubleMat','mattype',2); 49 WriteData(fid,'object',obj,'fieldname','q','format','DoubleMat','mattype',2); 50 end % }}} 53 51 end 54 52 end -
issm/trunk-jpl/src/m/classes/geometry.m
r9860 r10969 6 6 classdef geometry 7 7 properties (SetAccess=public) 8 surface = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1,'enum',SurfaceEnum);9 thickness = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1,'enum',ThicknessEnum);10 bed = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1,'enum',BedEnum);11 bathymetry = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1,'enum',BathymetryEnum);12 hydrostatic_ratio = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);8 surface = NaN; 9 thickness = NaN; 10 bed = NaN; 11 bathymetry = NaN; 12 hydrostatic_ratio = NaN; 13 13 end 14 14 methods … … 29 29 end % }}} 30 30 function obj = setdefaultparameters(obj) % {{{ 31 32 %first, use the defaults provided by the properties definition above.33 fieldnames=fields(obj);34 for i=1:length(fieldnames),35 fieldname=fieldnames{i};36 obj.(fieldname)=obj.(fieldname).default;37 end38 31 39 32 end % }}} … … 57 50 58 51 end % }}} 52 function marshall(obj,fid) % {{{ 53 WriteData(fid,'data',obj.surface,'format','DoubleMat','mattype',1,'enum',SurfaceEnum); 54 WriteData(fid,'data',obj.thickness,'format','DoubleMat','mattype',1,'enum',ThicknessEnum); 55 WriteData(fid,'data',obj.bed,'format','DoubleMat','mattype',1,'enum',BedEnum); 56 WriteData(fid,'data',obj.bathymetry,'format','DoubleMat','mattype',1,'enum',BathymetryEnum); 57 WriteData(fid,'object',obj,'fieldname','hydrostatic_ratio','format','DoubleMat','mattype',1); 58 end % }}} 59 59 end 60 60 end -
issm/trunk-jpl/src/m/classes/groundingline.m
r10446 r10969 6 6 classdef groundingline 7 7 properties (SetAccess=public) 8 migration = modelfield('default','','marshall',true,'preprocess','StringToEnum','format','Integer');9 melting_rate = modelfield('default',NaN,'marshall',true,'format','Double');8 migration = ''; 9 melting_rate = NaN; 10 10 end 11 11 methods … … 26 26 end % }}} 27 27 function obj = setdefaultparameters(obj) % {{{ 28 29 %first, use the defaults provided by the properties definition above.30 fieldnames=fields(obj);31 for i=1:length(fieldnames),32 fieldname=fieldnames{i};33 obj.(fieldname)=obj.(fieldname).default;34 end35 28 36 29 %Type of migration … … 68 61 69 62 end % }}} 63 function marshall(obj,fid) % {{{ 64 WriteData(fid,'data',StringToEnum(obj.migration),'enum',GroundinglineMigrationEnum,'format','Integer'); 65 WriteData(fid,'object',obj,'fieldname','melting_rate','format','Double'); 66 end % }}} 70 67 end 71 68 end -
issm/trunk-jpl/src/m/classes/hydrology.m
r10565 r10969 6 6 classdef hydrology 7 7 properties (SetAccess=public) 8 spcwatercolumn = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);9 n = modelfield('default',0,'marshall',true,'format','Double');10 CR = modelfield('default',0,'marshall',true,'format','Double');11 p = modelfield('default',0,'marshall',true,'format','Double');12 q = modelfield('default',0,'marshall',true,'format','Double');13 kn = modelfield('default',0,'marshall',true,'format','Double');14 stabilization = modelfield('default',0,'marshall',true,'format','Double');8 spcwatercolumn = NaN; 9 n = 0; 10 CR = 0; 11 p = 0; 12 q = 0; 13 kn = 0; 14 stabilization = 0; 15 15 end 16 16 methods … … 31 31 end % }}} 32 32 function obj = setdefaultparameters(obj) % {{{ 33 34 %first, use the defaults provided by the properties definition above.35 fieldnames=fields(obj);36 for i=1:length(fieldnames),37 fieldname=fieldnames{i};38 obj.(fieldname)=obj.(fieldname).default;39 end40 33 41 34 %Parameters from Johnson's 2002 thesis, section 3.5.4 … … 69 62 70 63 end % }}} 64 function marshall(obj,fid) % {{{ 65 WriteData(fid,'object',obj,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1); 66 WriteData(fid,'object',obj,'fieldname','n','format','Double'); 67 WriteData(fid,'object',obj,'fieldname','CR','format','Double'); 68 WriteData(fid,'object',obj,'fieldname','p','format','Double'); 69 WriteData(fid,'object',obj,'fieldname','q','format','Double'); 70 WriteData(fid,'object',obj,'fieldname','kn','format','Double'); 71 WriteData(fid,'object',obj,'fieldname','stabilization','format','Double'); 72 end % }}} 71 73 end 72 74 end -
issm/trunk-jpl/src/m/classes/initialization.m
r9862 r10969 6 6 classdef initialization 7 7 properties (SetAccess=public) 8 vx = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1,'enum',VxEnum);9 vy = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1,'enum',VyEnum);10 vz = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1,'enum',VzEnum);11 vel = modelfield('default',NaN,'marshall',false);12 pressure = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1,'enum',PressureEnum);13 temperature = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1,'enum',TemperatureEnum);14 watercolumn = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum);15 waterfraction = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum);8 vx = NaN; 9 vy = NaN; 10 vz = NaN; 11 vel = NaN; 12 pressure = NaN; 13 temperature = NaN; 14 watercolumn = NaN; 15 waterfraction = NaN; 16 16 end 17 17 methods … … 32 32 end % }}} 33 33 function obj = setdefaultparameters(obj) % {{{ 34 35 %first, use the defaults provided by the properties definition above.36 fieldnames=fields(obj);37 for i=1:length(fieldnames),38 fieldname=fieldnames{i};39 obj.(fieldname)=obj.(fieldname).default;40 end41 34 42 35 end % }}} … … 83 76 84 77 end % }}} 78 function marshall(obj,fid) % {{{ 79 WriteData(fid,'data',obj.vx,'format','DoubleMat','mattype',1,'enum',VxEnum); 80 WriteData(fid,'data',obj.vy,'format','DoubleMat','mattype',1,'enum',VyEnum); 81 WriteData(fid,'data',obj.vz,'format','DoubleMat','mattype',1,'enum',VzEnum); 82 WriteData(fid,'data',obj.pressure,'format','DoubleMat','mattype',1,'enum',PressureEnum); 83 WriteData(fid,'data',obj.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum); 84 WriteData(fid,'data',obj.watercolumn,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum); 85 WriteData(fid,'data',obj.waterfraction,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum); 86 end % }}} 85 87 end 86 88 end -
issm/trunk-jpl/src/m/classes/inversion.m
r10198 r10969 18 18 step_threshold = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3); 19 19 gradient_only = modelfield('default',0,'marshall',true,'format','Boolean'); 20 num_control_parameters = modelfield('default',0,'marshall',true,'format','Integer');21 num_cost_functions = modelfield('default',0,'marshall',true,'format','Integer');22 20 vx_obs = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1); 23 21 vy_obs = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1); … … 126 124 fielddisplay(obj,'max_parameters','absolute maximum acceptable value of the inversed parameter on each vertex'); 127 125 fielddisplay(obj,'gradient_only','stop control method solution at gradient'); 128 %fielddisplay(obj,'num_control_parameters','number of control_parameters');129 %fielddisplay(obj,'num_cost_functions','number of cost_functions');130 126 fielddisplay(obj,'vx_obs','observed velocity x component [m/a]'); 131 127 fielddisplay(obj,'vy_obs','observed velocity y component [m/a]'); … … 143 139 disp(' 503: ThicknessAbsGradient'); 144 140 end % }}} 141 function marshall(obj,fid) % {{{ 142 143 WriteData(fid,'object',obj,'fieldname','iscontrol','format','Boolean'); 144 if ~obj.iscontrol, return; end 145 WriteData(fid,'object',obj,'fieldname','nsteps','format','Integer'); 146 WriteData(fid,'object',obj,'fieldname','maxiter_per_step','format','DoubleMat','mattype',3); 147 WriteData(fid,'object',obj,'fieldname','cost_functions_coefficients','format','DoubleMat','mattype',1); 148 WriteData(fid,'object',obj,'fieldname','gradient_scaling','format','DoubleMat','mattype',3); 149 WriteData(fid,'object',obj,'fieldname','cost_function_threshold','format','Double'); 150 WriteData(fid,'object',obj,'fieldname','min_parameters','format','DoubleMat','mattype',3); 151 WriteData(fid,'object',obj,'fieldname','max_parameters','format','DoubleMat','mattype',3); 152 WriteData(fid,'object',obj,'fieldname','step_threshold','format','DoubleMat','mattype',3); 153 WriteData(fid,'object',obj,'fieldname','gradient_only','format','Boolean'); 154 WriteData(fid,'object',obj,'fieldname','vx_obs','format','DoubleMat','mattype',1); 155 WriteData(fid,'object',obj,'fieldname','vy_obs','format','DoubleMat','mattype',1); 156 WriteData(fid,'object',obj,'fieldname','vz_obs','format','DoubleMat','mattype',1); 157 WriteData(fid,'object',obj,'fieldname','thickness_obs','format','DoubleMat','mattype',1); 158 159 %process control parameters 160 num_control_parameters=numel(obj.control_parameters); 161 data=zeros(1,num_control_parameters); 162 for i=1:num_control_parameters, 163 data(i)=StringToEnum(obj.control_parameters{i}); 164 end 165 WriteData(fid,'data',data,'enum',InversionControlParametersEnum,'format','DoubleMat','mattype',3); 166 WriteData(fid,'data',num_control_parameters,'enum',InversionNumControlParametersEnum,'format','Integer'); 167 168 %process cost functions 169 num_cost_functions=size(obj.cost_functions,2); 170 data=obj.cost_functions; 171 pos=find(data==101); data(pos)=SurfaceAbsVelMisfitEnum; 172 pos=find(data==102); data(pos)=SurfaceRelVelMisfitEnum; 173 pos=find(data==103); data(pos)=SurfaceLogVelMisfitEnum; 174 pos=find(data==104); data(pos)=SurfaceLogVxVyMisfitEnum; 175 pos=find(data==105); data(pos)=SurfaceAverageVelMisfitEnum; 176 pos=find(data==201); data(pos)=ThicknessAbsMisfitEnum; 177 pos=find(data==501); data(pos)=DragCoefficientAbsGradientEnum; 178 pos=find(data==502); data(pos)=RheologyBbarAbsGradientEnum; 179 pos=find(data==503); data(pos)=ThicknessAbsGradientEnum; 180 WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum,'format','DoubleMat','mattype',3); 181 WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum,'format','Integer'); 182 end % }}} 145 183 end 146 184 end -
issm/trunk-jpl/src/m/classes/mask.m
r9862 r10969 6 6 classdef mask 7 7 properties (SetAccess=public) 8 elementonfloatingice = modelfield('default',NaN,'marshall',true,'format','BooleanMat','mattype',2);9 elementongroundedice = modelfield('default',NaN,'marshall',true,'format','BooleanMat','mattype',2);10 elementonwater = modelfield('default',NaN,'marshall',true,'format','BooleanMat','mattype',2);11 vertexonfloatingice = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);12 vertexongroundedice = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);13 vertexonwater = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);8 elementonfloatingice = NaN; 9 elementongroundedice = NaN; 10 elementonwater = NaN; 11 vertexonfloatingice = NaN; 12 vertexongroundedice = NaN; 13 vertexonwater = NaN; 14 14 end 15 15 methods … … 31 31 function obj = setdefaultparameters(obj) % {{{ 32 32 33 %first, use the defaults provided by the properties definition above.34 fieldnames=fields(obj);35 for i=1:length(fieldnames),36 fieldname=fieldnames{i};37 obj.(fieldname)=obj.(fieldname).default;38 end39 40 33 end % }}} 41 34 function checkconsistency(obj,md,solution,analyses) % {{{ … … 49 42 end % }}} 50 43 function disp(obj) % {{{ 51 52 44 fielddisplay(obj,'elementonfloatingice','element on floating ice flags list'); 53 45 fielddisplay(obj,'vertexonfloatingice','vertex on floating ice flags list'); … … 57 49 fielddisplay(obj,'vertexonwater','vertex on water flags list'); 58 50 end % }}} 51 function marshall(obj,fid) % {{{ 52 WriteData(fid,'object',obj,'fieldname','elementonfloatingice','format','BooleanMat','mattype',2); 53 WriteData(fid,'object',obj,'fieldname','elementongroundedice','format','BooleanMat','mattype',2); 54 WriteData(fid,'object',obj,'fieldname','elementonwater','format','BooleanMat','mattype',2); 55 WriteData(fid,'object',obj,'fieldname','vertexonfloatingice','format','DoubleMat','mattype',1); 56 WriteData(fid,'object',obj,'fieldname','vertexongroundedice','format','DoubleMat','mattype',1); 57 WriteData(fid,'object',obj,'fieldname','vertexonwater','format','DoubleMat','mattype',1); 58 end % }}} 59 59 end 60 60 end -
issm/trunk-jpl/src/m/classes/materials.m
r10565 r10969 6 6 classdef materials 7 7 properties (SetAccess=public) 8 rho_ice = modelfield('default',0,'marshall',true,'format','Double');9 rho_water = modelfield('default',0,'marshall',true,'format','Double');10 mu_water = modelfield('default',0,'marshall',true,'format','Double');11 heatcapacity = modelfield('default',0,'marshall',true,'format','Double');12 latentheat = modelfield('default',0,'marshall',true,'format','Double');13 thermalconductivity = modelfield('default',0,'marshall',true,'format','Double');14 meltingpoint = modelfield('default',0,'marshall',true,'format','Double');15 beta = modelfield('default',0,'marshall',true,'format','Double');16 mixed_layer_capacity = modelfield('default',0,'marshall',true,'format','Double');17 thermal_exchange_velocity = modelfield('default',0,'marshall',true,'format','Double');18 rheology_B = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);19 rheology_n = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);20 rheology_law = modelfield('default','','marshall',true,'preprocess','StringToEnum','format','Integer');8 rho_ice = 0; 9 rho_water = 0; 10 mu_water = 0; 11 heatcapacity = 0; 12 latentheat = 0; 13 thermalconductivity = 0; 14 meltingpoint = 0; 15 beta = 0; 16 mixed_layer_capacity = 0; 17 thermal_exchange_velocity = 0; 18 rheology_B = NaN; 19 rheology_n = NaN; 20 rheology_law = ''; 21 21 end 22 22 methods … … 37 37 end % }}} 38 38 function obj = setdefaultparameters(obj) % {{{ 39 40 %first, use the defaults provided by the properties definition above.41 fieldnames=fields(obj);42 for i=1:length(fieldnames),43 fieldname=fieldnames{i};44 obj.(fieldname)=obj.(fieldname).default;45 end46 39 47 40 %ice density (kg/m^3) … … 104 97 fielddisplay(obj,'rheology_law','law for the temperature dependance of the rheology: ''None'', ''Paterson'' or ''Arrhenius'''); 105 98 end % }}} 99 function marshall(obj,fid) % {{{ 100 WriteData(fid,'object',obj,'fieldname','rho_ice','format','Double'); 101 WriteData(fid,'object',obj,'fieldname','rho_water','format','Double'); 102 WriteData(fid,'object',obj,'fieldname','mu_water','format','Double'); 103 WriteData(fid,'object',obj,'fieldname','heatcapacity','format','Double'); 104 WriteData(fid,'object',obj,'fieldname','latentheat','format','Double'); 105 WriteData(fid,'object',obj,'fieldname','thermalconductivity','format','Double'); 106 WriteData(fid,'object',obj,'fieldname','meltingpoint','format','Double'); 107 WriteData(fid,'object',obj,'fieldname','beta','format','Double'); 108 WriteData(fid,'object',obj,'fieldname','mixed_layer_capacity','format','Double'); 109 WriteData(fid,'object',obj,'fieldname','thermal_exchange_velocity','format','Double'); 110 WriteData(fid,'object',obj,'fieldname','rheology_B','format','DoubleMat','mattype',1); 111 WriteData(fid,'object',obj,'fieldname','rheology_n','format','DoubleMat','mattype',2); 112 WriteData(fid,'data',StringToEnum(obj.rheology_law),'enum',MaterialsRheologyLawEnum,'format','Integer'); 113 end % }}} 106 114 end 107 115 end -
issm/trunk-jpl/src/m/classes/mesh.m
r9860 r10969 6 6 classdef mesh 7 7 properties (SetAccess=public) 8 x = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);9 y = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);10 z = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);11 elements = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);12 dimension = modelfield('default',0,'marshall',true,'format','Integer');13 numberoflayers = modelfield('default',0,'marshall',true,'format','Integer');14 numberofelements = modelfield('default',0,'marshall',true,'format','Integer');15 numberofvertices = modelfield('default',0,'marshall',true,'format','Integer');16 numberofedges = modelfield('default',0,'marshall',true,'format','Integer');8 x = NaN; 9 y = NaN; 10 z = NaN 11 elements = NaN 12 dimension = 0; 13 numberoflayers = 0; 14 numberofelements = 0; 15 numberofvertices = 0; 16 numberofedges = 0; 17 17 18 lat = modelfield('default',NaN,'marshall',false);19 long = modelfield('default',NaN,'marshall',false);20 hemisphere = modelfield('default',NaN,'marshall',false);21 22 elementonbed = modelfield('default',NaN,'marshall',true,'format','BooleanMat','mattype',2);23 elementonsurface = modelfield('default',NaN,'marshall',true,'format','BooleanMat','mattype',2);24 vertexonbed = modelfield('default',NaN,'marshall',true,'format','BooleanMat','mattype',1);25 vertexonsurface = modelfield('default',NaN,'marshall',true,'format','BooleanMat','mattype',1);26 lowerelements = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);27 lowervertex = modelfield('default',NaN,'marshall',false);28 upperelements = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);29 uppervertex = modelfield('default',NaN,'marshall',false);30 vertexonboundary = modelfield('default',NaN,'marshall',false);31 32 edges = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);33 segments = modelfield('default',NaN,'marshall',false);34 segmentmarkers = modelfield('default',NaN,'marshall',false);35 vertexconnectivity = modelfield('default',NaN,'marshall',false);36 elementconnectivity = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);37 average_vertex_connectivity = modelfield('default',0,'marshall',true,'format','Integer');38 39 x2d = modelfield('default',NaN,'marshall',false);40 y2d = modelfield('default',NaN,'marshall',false);41 elements2d = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);42 numberofvertices2d = modelfield('default',0,'marshall',true,'format','Integer');43 numberofelements2d = modelfield('default',0,'marshall',true,'format','Integer');44 45 extractedvertices = modelfield('default',NaN,'marshall',false);46 extractedelements = modelfield('default',NaN,'marshall',false);18 lat = NaN 19 long = NaN 20 hemisphere = NaN 21 22 elementonbed = NaN 23 elementonsurface = NaN 24 vertexonbed = NaN 25 vertexonsurface = NaN 26 lowerelements = NaN 27 lowervertex = NaN 28 upperelements = NaN 29 uppervertex = NaN 30 vertexonboundary = NaN 31 32 edges = NaN 33 segments = NaN 34 segmentmarkers = NaN 35 vertexconnectivity = NaN 36 elementconnectivity = NaN 37 average_vertex_connectivity = 0; 38 39 x2d = NaN 40 y2d = NaN 41 elements2d = NaN 42 numberofvertices2d = 0; 43 numberofelements2d = 0; 44 45 extractedvertices = NaN 46 extractedelements = NaN 47 47 end 48 48 methods … … 63 63 end % }}} 64 64 function obj = setdefaultparameters(obj) % {{{ 65 66 %first, use the defaults provided by the properties definition above.67 fieldnames=fields(obj);68 for i=1:length(fieldnames),69 fieldname=fieldnames{i};70 obj.(fieldname)=obj.(fieldname).default;71 end72 65 73 66 %the connectivity is the avergaded number of nodes linked to a … … 183 176 fielddisplay(obj,'hemisphere','Indicate hemisphere ''n'' or ''s'' '); 184 177 end % }}} 178 function marshall(obj,fid) % {{{ 179 WriteData(fid,'object',obj,'fieldname','x','format','DoubleMat','mattype',1); 180 WriteData(fid,'object',obj,'fieldname','y','format','DoubleMat','mattype',1); 181 WriteData(fid,'object',obj,'fieldname','z','format','DoubleMat','mattype',1); 182 WriteData(fid,'object',obj,'fieldname','elements','format','DoubleMat','mattype',2); 183 WriteData(fid,'object',obj,'fieldname','dimension','format','Integer'); 184 WriteData(fid,'object',obj,'fieldname','numberoflayers','format','Integer'); 185 WriteData(fid,'object',obj,'fieldname','numberofelements','format','Integer'); 186 WriteData(fid,'object',obj,'fieldname','numberofvertices','format','Integer'); 187 WriteData(fid,'object',obj,'fieldname','numberofedges','format','Integer'); 188 WriteData(fid,'object',obj,'fieldname','elementonbed','format','BooleanMat','mattype',2); 189 WriteData(fid,'object',obj,'fieldname','elementonsurface','format','BooleanMat','mattype',2); 190 WriteData(fid,'object',obj,'fieldname','vertexonbed','format','BooleanMat','mattype',1); 191 WriteData(fid,'object',obj,'fieldname','vertexonsurface','format','BooleanMat','mattype',1); 192 WriteData(fid,'object',obj,'fieldname','lowerelements','format','DoubleMat','mattype',2); 193 WriteData(fid,'object',obj,'fieldname','upperelements','format','DoubleMat','mattype',2); 194 WriteData(fid,'object',obj,'fieldname','edges','format','DoubleMat','mattype',3); 195 WriteData(fid,'object',obj,'fieldname','elementconnectivity','format','DoubleMat','mattype',3); 196 WriteData(fid,'object',obj,'fieldname','average_vertex_connectivity','format','Integer'); 197 WriteData(fid,'object',obj,'fieldname','elements2d','format','DoubleMat','mattype',3); 198 WriteData(fid,'object',obj,'fieldname','numberofvertices2d','format','Integer'); 199 WriteData(fid,'object',obj,'fieldname','numberofelements2d','format','Integer'); 200 end % }}} 185 201 end 186 202 end -
issm/trunk-jpl/src/m/classes/miscellaneous.m
r9862 r10969 6 6 classdef miscellaneous 7 7 properties (SetAccess=public) 8 notes = modelfield('default','','marshall',false);9 name = modelfield('default','','marshall',true,'format','String');10 dummy = modelfield('default',NaN,'marshall',false);8 notes = ''; 9 name = ''; 10 dummy = struct(); 11 11 end 12 12 methods … … 33 33 function obj = setdefaultparameters(obj) % {{{ 34 34 35 %first, use the defaults provided by the properties definition above.36 fieldnames=fields(obj);37 for i=1:length(fieldnames),38 fieldname=fieldnames{i};39 obj.(fieldname)=obj.(fieldname).default;40 end41 35 end % }}} 42 36 function disp(obj) % {{{ … … 48 42 49 43 end % }}} 44 function marshall(obj,fid) % {{{ 45 WriteData(fid,'object',obj,'fieldname','name','format','String'); 46 end % }}} 50 47 end 51 48 end -
issm/trunk-jpl/src/m/classes/model/model.m
r10452 r10969 8 8 % {{{1 9 9 %Careful here: no other class should be used as default value this is a bug of matlab 10 mesh = modelfield('default',0,'marshall',true);11 mask = modelfield('default',0,'marshall',true);12 13 geometry = modelfield('default',0,'marshall',true);14 constants = modelfield('default',0,'marshall',true);15 surfaceforcings = modelfield('default',0,'marshall',true);16 basalforcings = modelfield('default',0,'marshall',true);17 materials = modelfield('default',0,'marshall',true);18 friction = modelfield('default',0,'marshall',true);19 flowequation = modelfield('default',0,'marshall',true);20 timestepping = modelfield('default',0,'marshall',true);21 initialization = modelfield('default',0,'marshall',true);22 rifts = modelfield('default',0,'marshall',true);23 24 debug = modelfield('default',0,'marshall',false);25 verbose = modelfield('default',0,'marshall',true,'preprocess','marshallverbose','format','Integer');26 settings = modelfield('default',0,'marshall',true);27 solver = modelfield('default',0,'marshall',false);28 cluster = modelfield('default',0,'marshall',false);29 30 balancethickness = modelfield('default',0,'marshall',true);31 diagnostic = modelfield('default',0,'marshall',true);32 groundingline = modelfield('default',0,'marshall',true);33 hydrology = modelfield('default',0,'marshall',true);34 prognostic = modelfield('default',0,'marshall',true);35 thermal = modelfield('default',0,'marshall',true);36 steadystate = modelfield('default',0,'marshall',true);37 transient = modelfield('default',0,'marshall',true);38 39 autodiff = modelfield('default',0,'marshall',true);40 flaim = modelfield('default',0,'marshall',false);41 inversion = modelfield('default',0,'marshall',true);42 qmu = modelfield('default',0,'marshall',true);43 44 results = modelfield('default',0,'marshall',false);45 radaroverlay = modelfield('default',0,'marshall',false);46 miscellaneous = modelfield('default',0,'marshall',true);47 private = modelfield('default',0,'marshall',false);10 mesh = 0; 11 mask = 0; 12 13 geometry = 0; 14 constants = 0; 15 surfaceforcings = 0; 16 basalforcings = 0; 17 materials = 0; 18 friction = 0; 19 flowequation = 0; 20 timestepping = 0; 21 initialization = 0; 22 rifts = 0; 23 24 debug = 0; 25 verbose = 0; 26 settings = 0; 27 solver = 0; 28 cluster = 0; 29 30 balancethickness = 0; 31 diagnostic = 0; 32 groundingline = 0; 33 hydrology = 0; 34 prognostic = 0; 35 thermal = 0; 36 steadystate = 0; 37 transient = 0; 38 39 autodiff = 0; 40 flaim = 0; 41 inversion = 0; 42 qmu = 0; 43 44 results = 0; 45 radaroverlay = 0; 46 miscellaneous = 0; 47 private = 0; 48 48 49 49 %}}} … … 388 388 function md = setdefaultparameters(md) % {{{1 389 389 390 %first, use the defaults provided by the properties definition above.391 fieldnames=fields(md);392 for i=1:length(fieldnames),393 fieldname=fieldnames{i};394 md.(fieldname)=md.(fieldname).default;395 end396 397 390 %initialize subclasses 398 md.cluster = none; 399 md.solver = solver; 391 md.mesh = mesh(); 392 md.mask = mask(); 393 md.constants = constants(); 394 md.geometry = geometry(); 395 md.initialization = initialization(); 396 md.surfaceforcings = surfaceforcings(); 397 md.basalforcings = basalforcings(); 398 md.friction = friction(); 399 md.rifts = rifts(); 400 md.timestepping = timestepping(); 401 md.groundingline = groundingline(); 402 md.materials = materials(); 403 md.flowequation = flowequation(); 404 md.debug = debug(); 405 md.verbose = verbose('solution',true,'qmu',true,'control',true); 406 md.settings = settings(); 407 md.solver = solver(); 400 408 md.solver = addoptions(md.solver,DiagnosticVertAnalysisEnum,mumpsoptions); 409 md.cluster = none(); 410 md.balancethickness = balancethickness(); 411 md.diagnostic = diagnostic(); 412 md.hydrology = hydrology(); 413 md.prognostic = prognostic(); 414 md.thermal = thermal(); 415 md.steadystate = steadystate(); 416 md.transient = transient(); 417 md.autodiff = autodiff(); 418 md.flaim = flaim(); 419 md.inversion = inversion(); 420 md.qmu = qmu(); 421 md.radaroverlay = radaroverlay(); 401 422 md.results = struct(); 402 md.debug = debug; 403 md.constants = constants; 404 md.flaim = flaim; 405 md.surfaceforcings = surfaceforcings; 406 md.basalforcings = basalforcings; 407 md.friction = friction; 408 md.private = private; 409 md.rifts = rifts; 410 md.hydrology = hydrology; 411 md.settings = settings; 412 md.radaroverlay = radaroverlay; 413 md.thermal = thermal; 414 md.miscellaneous = miscellaneous; 415 md.timestepping = timestepping; 416 md.groundingline = groundingline; 417 md.prognostic = prognostic; 418 md.materials = materials; 419 md.mask = mask; 420 md.qmu = qmu; 421 md.balancethickness = balancethickness; 422 md.flowequation = flowequation; 423 md.steadystate = steadystate; 424 md.inversion = inversion; 425 md.transient = transient; 426 md.diagnostic = diagnostic; 427 md.initialization = initialization; 428 md.geometry = geometry; 429 md.verbose = verbose('solution',true,'qmu',true,'control',true); 430 md.autodiff = autodiff; 431 md.mesh = mesh; 423 md.miscellaneous = miscellaneous(); 424 md.private = private(); 432 425 end 433 426 %}}} -
issm/trunk-jpl/src/m/classes/private.m
r9853 r10969 6 6 classdef private 7 7 properties (SetAccess=public) 8 runtimename = modelfield('default','','marshall',false);9 bamg = modelfield('default',0,'marshall',false);10 solution = modelfield('default','','marshall',false);8 runtimename = ''; 9 bamg = struct(); 10 solution = ''; 11 11 end 12 12 methods … … 28 28 function obj = setdefaultparameters(obj) % {{{ 29 29 30 %first, use the defaults provided by the properties definition above.31 fieldnames=fields(obj);32 for i=1:length(fieldnames),33 fieldname=fieldnames{i};34 obj.(fieldname)=obj.(fieldname).default;35 end36 37 30 end % }}} 38 31 function checkconsistency(obj,md,solution,analyses) % {{{ -
issm/trunk-jpl/src/m/classes/prognostic.m
r9862 r10969 6 6 classdef prognostic 7 7 properties (SetAccess=public) 8 spcthickness = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);9 hydrostatic_adjustment = modelfield('default',0,'marshall',true,'preprocess','StringToEnum','format','Integer');10 stabilization = modelfield('default',0,'marshall',true,'format','Integer');11 vertex_pairing = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);12 penalty_factor = modelfield('default',0,'marshall',true,'format','Double');8 spcthickness = NaN; 9 hydrostatic_adjustment = 0; 10 stabilization = 0; 11 vertex_pairing = NaN; 12 penalty_factor = 0; 13 13 end 14 14 methods … … 29 29 end % }}} 30 30 function obj = setdefaultparameters(obj) % {{{ 31 32 %first, use the defaults provided by the properties definition above.33 fieldnames=fields(obj);34 for i=1:length(fieldnames),35 fieldname=fieldnames{i};36 obj.(fieldname)=obj.(fieldname).default;37 end38 31 39 32 %Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin … … 67 60 68 61 end % }}} 62 function marshall(obj,fid) % {{{ 63 WriteData(fid,'object',obj,'fieldname','spcthickness','format','DoubleMat','mattype',1); 64 WriteData(fid,'data',StringToEnum(obj.hydrostatic_adjustment),'format','Integer','enum',PrognosticHydrostaticAdjustmentEnum); 65 WriteData(fid,'object',obj,'fieldname','stabilization','format','Integer'); 66 WriteData(fid,'object',obj,'fieldname','vertex_pairing','format','DoubleMat','mattype',3); 67 WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double'); 68 end % }}} 69 69 end 70 70 end -
issm/trunk-jpl/src/m/classes/qmu.m
r10703 r10969 6 6 classdef qmu 7 7 properties (SetAccess=public) 8 isdakota = modelfield('default',0,'marshall',true,'format','Boolean');9 variables = modelfield('default',struct(),'marshall',false);10 responses = modelfield('default',struct(),'marshall',false);11 method = modelfield('default',struct(),'marshall',false);12 params = modelfield('default',struct(),'marshall',false);13 results = modelfield('default',struct(),'marshall',false);14 partition = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);15 numberofpartitions = modelfield('default',0,'marshall',true,'format','Integer');16 numberofresponses = modelfield('default',0,'marshall',true,'format','Integer');17 variabledescriptors = modelfield('default',{},'marshall',true,'format','StringArray');18 responsedescriptors = modelfield('default',{},'marshall',true,'format','StringArray');19 mass_flux_profile_directory = modelfield('default',NaN,'marshall',false);20 mass_flux_profiles = modelfield('default',NaN,'marshall',false);21 mass_flux_segments = modelfield('default',{},'marshall',true,'format','MatArray');22 adjacency = modelfield('default',NaN,'marshall',false);23 vertex_weight = modelfield('default',NaN,'marshall',false);8 isdakota = 0; 9 variables = struct(); 10 responses = struct(); 11 method = struct(); 12 params = struct(); 13 results = struct(); 14 partition = NaN; 15 numberofpartitions = 0; 16 numberofresponses = 0; 17 variabledescriptors = {}; 18 responsedescriptors = {}; 19 mass_flux_profile_directory = NaN; 20 mass_flux_profiles = NaN; 21 mass_flux_segments = {}; 22 adjacency = NaN; 23 vertex_weight = NaN; 24 24 end 25 25 methods … … 40 40 end % }}} 41 41 function obj = setdefaultparameters(obj) % {{{ 42 43 %first, use the defaults provided by the properties definition above. 44 fieldnames=fields(obj); 45 for i=1:length(fieldnames), 46 fieldname=fieldnames{i}; 47 obj.(fieldname)=obj.(fieldname).default; 48 end 42 49 43 end % }}} 50 44 function checkconsistency(obj,md,solution,analyses) % {{{ … … 165 159 166 160 end % }}} 161 function marshall(obj,fid) % {{{ 162 WriteData(fid,'object',obj,'fieldname','isdakota','format','Boolean'); 163 if ~obj.isdakota, return; end 164 WriteData(fid,'object',obj,'fieldname','partition','format','DoubleMat','mattype',2); 165 WriteData(fid,'object',obj,'fieldname','numberofpartitions','format','Integer'); 166 WriteData(fid,'object',obj,'fieldname','numberofresponses','format','Integer'); 167 WriteData(fid,'object',obj,'fieldname','variabledescriptors','format','StringArray'); 168 WriteData(fid,'object',obj,'fieldname','responsedescriptors','format','StringArray'); 169 WriteData(fid,'object',obj,'fieldname','mass_flux_segments','format','MatArray'); 170 end % }}} 167 171 end 168 172 end -
issm/trunk-jpl/src/m/classes/rifts.m
r9862 r10969 6 6 classdef rifts 7 7 properties (SetAccess=public) 8 riftstruct = modelfield('default',NaN,'marshall',true,'preprocess','marshallrifts','format','DoubleMat','mattype',3); 9 riftproperties = modelfield('default',NaN,'marshall',false); 10 numrifts = modelfield('default',0,'marshall',true,'format','Integer'); 8 riftstruct = NaN; 9 riftproperties = NaN; 11 10 end 12 11 methods … … 28 27 function obj = setdefaultparameters(obj) % {{{ 29 28 30 %first, use the defaults provided by the properties definition above.31 fieldnames=fields(obj);32 for i=1:length(fieldnames),33 fieldname=fieldnames{i};34 obj.(fieldname)=obj.(fieldname).default;35 end36 29 end % }}} 37 30 function checkconsistency(obj,md,solution,analyses) % {{{ 38 if obj.numrifts, 31 if isempty(obj.riftstruct) | isnans(obj.riftstruct), 32 numrifts=0; 33 else 34 numrifts=numel(obj.riftstruct); 35 end 36 if numrifts, 39 37 if ~(md.mesh.dimension==2), 40 38 checkmessage(['model not consistent: models with rifts are only supported in 2d for now!']); … … 50 48 else 51 49 if ~isnans(obj.riftstruct), 52 checkmessage(['riftstruct shoud be NaN since obj.numrifts is 0!']);50 checkmessage(['riftstruct shoud be NaN since numrifts is 0!']); 53 51 end 54 52 end … … 62 60 63 61 end % }}} 62 function marshall(obj,fid) % {{{ 63 64 %Process rift info 65 if isempty(obj.riftstruct) | isnans(obj.riftstruct), 66 numrifts=0; 67 else 68 numrifts=numel(obj.riftstruct); 69 end 70 numpairs=0; 71 for i=1:numrifts, 72 numpairs=numpairs+size(obj.riftstruct(i).penaltypairs,1); 73 end 74 75 % 2 for nodes + 2 for elements+ 2 for normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state. 76 data=zeros(numpairs,12); 77 count=1; 78 for i=1:numrifts, 79 numpairsforthisrift=size(obj.riftstruct(i).penaltypairs,1); 80 data(count:count+numpairsforthisrift-1,1:7)=obj.riftstruct(i).penaltypairs; 81 data(count:count+numpairsforthisrift-1,8)=obj.riftstruct(i).fill; 82 data(count:count+numpairsforthisrift-1,9)=obj.riftstruct(i).friction; 83 data(count:count+numpairsforthisrift-1,10)=obj.riftstruct(i).fraction; 84 data(count:count+numpairsforthisrift-1,11)=obj.riftstruct(i).fractionincrement; 85 data(count:count+numpairsforthisrift-1,12)=obj.riftstruct(i).state; 86 count=count+numpairsforthisrift; 87 end 88 89 WriteData(fid,'data',numrifts,'enum',RiftsNumriftsEnum,'format','Integer'); 90 WriteData(fid,'data',data,'enum',RiftsRiftstructEnum,'format','DoubleMat','mattype',3); 91 end % }}} 64 92 end 65 93 end -
issm/trunk-jpl/src/m/classes/settings.m
r9862 r10969 6 6 classdef settings 7 7 properties (SetAccess=public) 8 io_gather = modelfield('default',0,'marshall',true,'format','Boolean');9 lowmem = modelfield('default',0,'marshall',true,'format','Boolean');10 results_on_vertices = modelfield('default',0,'marshall',true,'format','Boolean');11 output_frequency = modelfield('default',0,'marshall',true,'format','Integer');12 waitonlock = modelfield('default',0,'marshall',true,'format','Boolean');8 io_gather = 0; 9 lowmem = 0; 10 results_on_vertices = 0; 11 output_frequency = 0; 12 waitonlock = 0; 13 13 end 14 14 methods … … 29 29 end % }}} 30 30 function obj = setdefaultparameters(obj) % {{{ 31 32 %first, use the defaults provided by the properties definition above.33 fieldnames=fields(obj);34 for i=1:length(fieldnames),35 fieldname=fieldnames{i};36 obj.(fieldname)=obj.(fieldname).default;37 end38 31 39 32 %are we short in memory ? (0 faster but requires more memory) … … 71 64 72 65 end % }}} 66 function marshall(obj,fid) % {{{ 67 WriteData(fid,'object',obj,'fieldname','io_gather','format','Boolean'); 68 WriteData(fid,'object',obj,'fieldname','lowmem','format','Boolean'); 69 WriteData(fid,'object',obj,'fieldname','results_on_vertices','format','Boolean'); 70 WriteData(fid,'object',obj,'fieldname','output_frequency','format','Integer'); 71 WriteData(fid,'object',obj,'fieldname','waitonlock','format','Boolean'); 72 end % }}} 73 73 end 74 74 end -
issm/trunk-jpl/src/m/classes/steadystate.m
r9853 r10969 6 6 classdef steadystate 7 7 properties (SetAccess=public) 8 reltol = modelfield('default',0,'marshall',true,'format','Double');9 maxiter = modelfield('default',0,'marshall',true,'format','Integer');10 requested_outputs = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);8 reltol = 0; 9 maxiter = 0; 10 requested_outputs = NaN; 11 11 end 12 12 methods … … 27 27 end % }}} 28 28 function obj = setdefaultparameters(obj) % {{{ 29 30 %first, use the defaults provided by the properties definition above.31 fieldnames=fields(obj);32 for i=1:length(fieldnames),33 fieldname=fieldnames{i};34 obj.(fieldname)=obj.(fieldname).default;35 end36 37 29 %maximum of steady state iterations 38 30 obj.maxiter=100; … … 62 54 63 55 end % }}} 56 function marshall(obj,fid) % {{{ 57 WriteData(fid,'object',obj,'fieldname','reltol','format','Double'); 58 WriteData(fid,'object',obj,'fieldname','maxiter','format','Integer'); 59 WriteData(fid,'object',obj,'fieldname','requested_outputs','format','DoubleMat','mattype',3); 60 end % }}} 64 61 end 65 62 end -
issm/trunk-jpl/src/m/classes/surfaceforcings.m
r9862 r10969 6 6 classdef surfaceforcings 7 7 properties (SetAccess=public) 8 accumulation_rate = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);9 ablation_rate = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);10 mass_balance = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);8 accumulation_rate = NaN; 9 ablation_rate = NaN; 10 mass_balance = NaN; 11 11 end 12 12 methods … … 28 28 function obj = setdefaultparameters(obj) % {{{ 29 29 30 %first, use the defaults provided by the properties definition above.31 fieldnames=fields(obj);32 for i=1:length(fieldnames),33 fieldname=fieldnames{i};34 obj.(fieldname)=obj.(fieldname).default;35 end36 30 end % }}} 37 31 function checkconsistency(obj,md,solution,analyses) % {{{ … … 52 46 53 47 end % }}} 48 function marshall(obj,fid) % {{{ 49 WriteData(fid,'object',obj,'fieldname','accumulation_rate','format','DoubleMat','mattype',1); 50 WriteData(fid,'object',obj,'fieldname','ablation_rate','format','DoubleMat','mattype',1); 51 WriteData(fid,'object',obj,'fieldname','mass_balance','format','DoubleMat','mattype',1); 52 end % }}} 54 53 end 55 54 end -
issm/trunk-jpl/src/m/classes/thermal.m
r9862 r10969 6 6 classdef thermal 7 7 properties (SetAccess=public) 8 spctemperature = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1);9 penalty_threshold = modelfield('default',0,'marshall',true,'format','Integer');10 stabilization = modelfield('default',0,'marshall',true,'format','Integer');11 maxiter = modelfield('default',0,'marshall',true,'format','Integer');12 penalty_lock = modelfield('default',0,'marshall',true,'format','Integer');13 penalty_factor = modelfield('default',0,'marshall',true,'format','Double');8 spctemperature = NaN; 9 penalty_threshold = 0; 10 stabilization = 0; 11 maxiter = 0; 12 penalty_lock = 0; 13 penalty_factor = 0; 14 14 end 15 15 methods … … 30 30 end % }}} 31 31 function obj = setdefaultparameters(obj) % {{{ 32 33 %first, use the defaults provided by the properties definition above.34 fieldnames=fields(obj);35 for i=1:length(fieldnames),36 fieldname=fieldnames{i};37 obj.(fieldname)=obj.(fieldname).default;38 end39 32 40 33 %Number of unstable constraints acceptable … … 68 61 69 62 end % }}} 63 function marshall(obj,fid) % {{{ 64 WriteData(fid,'object',obj,'fieldname','spctemperature','format','DoubleMat','mattype',1); 65 WriteData(fid,'object',obj,'fieldname','penalty_threshold','format','Integer'); 66 WriteData(fid,'object',obj,'fieldname','stabilization','format','Integer'); 67 WriteData(fid,'object',obj,'fieldname','maxiter','format','Integer'); 68 WriteData(fid,'object',obj,'fieldname','penalty_lock','format','Integer'); 69 WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double'); 70 end % }}} 70 71 end 71 72 end -
issm/trunk-jpl/src/m/classes/timestepping.m
r9862 r10969 6 6 classdef timestepping 7 7 properties (SetAccess=public) 8 time_step = modelfield('default',0,'marshall',true,'format','Double');9 final_time = modelfield('default',0,'marshall',true,'format','Double');10 time_adapt = modelfield('default',0,'marshall',true,'format','Boolean');11 cfl_coefficient = modelfield('default',0,'marshall',true,'format','Double');8 time_step = 0; 9 final_time = 0; 10 time_adapt = 0; 11 cfl_coefficient = 0; 12 12 end 13 13 methods … … 28 28 end % }}} 29 29 function obj = setdefaultparameters(obj) % {{{ 30 31 %first, use the defaults provided by the properties definition above.32 fieldnames=fields(obj);33 for i=1:length(fieldnames),34 fieldname=fieldnames{i};35 obj.(fieldname)=obj.(fieldname).default;36 end37 30 38 31 %time between 2 time steps … … 60 53 61 54 end % }}} 55 function marshall(obj,fid) % {{{ 56 WriteData(fid,'object',obj,'fieldname','time_step','format','Double'); 57 WriteData(fid,'object',obj,'fieldname','final_time','format','Double'); 58 WriteData(fid,'object',obj,'fieldname','time_adapt','format','Boolean'); 59 WriteData(fid,'object',obj,'fieldname','cfl_coefficient','format','Double'); 60 end % }}} 62 61 end 63 62 end -
issm/trunk-jpl/src/m/classes/transient.m
r10882 r10969 6 6 classdef transient 7 7 properties (SetAccess=public) 8 isprognostic = modelfield('default',0,'marshall',true,'format','Boolean');9 isdiagnostic = modelfield('default',0,'marshall',true,'format','Boolean');10 isthermal = modelfield('default',0,'marshall',true,'format','Boolean');11 isgroundingline = modelfield('default',0,'marshall',true,'format','Boolean');12 requested_outputs = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);8 isprognostic = 0; 9 isdiagnostic = 0; 10 isthermal = 0; 11 isgroundingline = 0; 12 requested_outputs = NaN; 13 13 end 14 14 methods … … 29 29 end % }}} 30 30 function obj = setdefaultparameters(obj) % {{{ 31 32 %first, use the defaults provided by the properties definition above.33 fieldnames=fields(obj);34 for i=1:length(fieldnames),35 fieldname=fieldnames{i};36 obj.(fieldname)=obj.(fieldname).default;37 end38 31 39 32 %full analysis: Diagnostic, Prognostic and Thermal but no groundingline migration for now … … 65 58 66 59 end % }}} 60 function marshall(obj,fid) % {{{ 61 WriteData(fid,'object',obj,'fieldname','isprognostic','format','Boolean'); 62 WriteData(fid,'object',obj,'fieldname','isdiagnostic','format','Boolean'); 63 WriteData(fid,'object',obj,'fieldname','isthermal','format','Boolean'); 64 WriteData(fid,'object',obj,'fieldname','isgroundingline','format','Boolean'); 65 WriteData(fid,'object',obj,'fieldname','requested_outputs','format','DoubleMat','mattype',3); 66 end % }}} 67 67 end 68 68 end -
issm/trunk-jpl/src/m/classes/verbose.m
r9853 r10969 23 23 % {{{1 24 24 %BEGINFIELDS 25 mprocessor =false;26 module =false;27 solution =false;28 solver =false;29 convergence =false;30 control =false;31 qmu =false;25 mprocessor = false; 26 module = false; 27 solution = false; 28 solver = false; 29 convergence = false; 30 control = false; 31 qmu = false; 32 32 %ENDFIELDS 33 33 % }}} … … 117 117 end 118 118 %}}} 119 function marshall(obj,fid) % {{{ 120 WriteData(fid,'data',VerboseToBinary(obj),'enum',VerboseEnum,'format','Integer'); 121 end % }}} 119 122 end 120 123 end -
issm/trunk-jpl/src/m/model/marshall.m
r9725 r10969 1 1 function marshall(md) 2 %MARSHALL - output JPL-packagecompatible binary file from @model md, for certain solution type.2 %MARSHALL - output compatible binary file from @model md, for certain solution type. 3 3 % 4 % The routine creates a JPL-packagecompatible binary file from @model md4 % The routine creates a compatible binary file from @model md 5 5 % This binary file will be used for parallel runs in JPL-package 6 6 % … … 16 16 end 17 17 18 %automatically marshall model md, using template information available from an empty model class. 19 template=model.template(); 20 MarshallObject(fid,template,md,''); 18 %Go through al model field check that it is a class and call checkconsistency 19 fields=properties(md); 20 for i=1:length(fields), 21 field=fields{i}; 22 23 %Some properties do not need to be marshalled 24 if ismember(field,{'results' 'debug' 'radaroverlay' 'solver' 'cluster' 'flaim' 'private'}), 25 continue; 26 end 27 28 %Check that current field is an object 29 if ~isobject(md.(field)) 30 checkmessage(['field ''' char(field) ''' is not an object']); 31 end 32 33 %Marshall current object 34 %disp(['marshalling ' field '...']); 35 md.(field).marshall(fid); 36 end 21 37 22 38 %close file … … 25 41 error(['marshall error message: could not close file ' [md.miscellaneous.name '.bin']]); 26 42 end 27 28 function MarshallObject(fid,template,object,prefix) % {{{29 fields=fieldnames(template);30 for i=1:length(fields),31 fieldname=fields{i};32 if ~isa(template.(fieldname),'modelfield'),33 %Recursive call34 MarshallObject(fid,template.(fieldname),object.(fieldname),[prefix fieldname])35 elseif template.(fieldname).marshall,36 if ~isempty(template.(fieldname).preprocess),37 eval(['fieldvalue=' template.(fieldname).preprocess '(object.(fieldname));']);38 else39 fieldvalue=object.(fieldname);40 end41 42 %Capitalize for enums43 fieldnamecap=fieldname;44 fieldnamecap(1)=upper(fieldname(1));45 prefixcap=prefix;46 if ~isempty(prefix), prefixcap(1)=upper(prefix(1)); end47 48 %Write Data49 WriteData(fid,[prefixcap fieldnamecap],fieldvalue,template.(fieldname));50 end51 end52 % }}}53 function WriteData(fid,fieldname,fieldvalue,fieldprop) % {{{54 %WRITEDATA - write model field in binary file55 %56 % Usage:57 % WriteData(fid,fieldname,fieldvalue,fieldprop)58 %59 60 %first recover data, enum of the data and type of data61 data=fieldvalue;62 if fieldprop.enum==NoneEnum,63 enum=BuildEnum(fieldname);64 else65 %Field enum overloaded66 enum=fieldprop.enum;67 end68 data_type=fieldprop.format;69 70 if issparse(data),71 data=full(data);72 end73 74 %Ok! write the enum (name) to identify this record uniquely75 fwrite(fid,enum,'int');76 77 %Now, write the data itself.78 if strcmpi(data_type,'Boolean'),% {{{79 if(numel(data)~=1), error(['field ' field ' cannot be marshalled as it has more than one element!']); end80 81 %first write length of record82 fwrite(fid,4+4,'int'); %1 bool (disguised as an int)+code83 84 %write data code:85 fwrite(fid,TypeToCode(data_type),'int');86 87 %now write integer88 fwrite(fid,data,'int'); %send an int, not easy to send a bool89 % }}}90 elseif strcmpi(data_type,'Integer'), % {{{91 if(numel(data)~=1), error(['field ' field ' cannot be marshalled as it has more than one element!']); end92 93 %first write length of record94 fwrite(fid,4+4,'int'); %1 integer + code95 96 %write data code:97 fwrite(fid,TypeToCode(data_type),'int');98 99 %now write integer100 fwrite(fid,data,'int');101 % }}}102 elseif strcmpi(data_type,'Double'), % {{{103 if(numel(data)~=1), error(['field ' field ' cannot be marshalled as it has more than one element!']); end104 105 %first write length of record106 fwrite(fid,8+4,'int'); %1 double+code107 108 %write data code:109 fwrite(fid,TypeToCode(data_type),'int');110 111 %now write double112 fwrite(fid,data,'double');113 % }}}114 elseif strcmpi(data_type,'String'), % {{{115 %first write length of record116 fwrite(fid,length(data)+4+4,'int'); %string + string size + code117 118 %write data code:119 fwrite(fid,TypeToCode(data_type),'int');120 121 %now write string122 fwrite(fid,length(data),'int');123 fwrite(fid,data,'char');124 % }}}125 elseif strcmpi(data_type,'BooleanMat'), % {{{126 127 %matrix type:128 mattype=fieldprop.mattype;129 130 %Get size131 s=size(data);132 %if matrix = NaN, then do not write anything133 if (s(1)==1 & s(2)==1 & isnan(data)),134 s(1)=0; s(2)=0;135 end136 137 %first write length of record138 fwrite(fid,4+4+8*s(1)*s(2)+4+4,'int'); %2 integers (32 bits) + the double matrix + code + matrix type139 140 %write data code and matrix type:141 fwrite(fid,TypeToCode(data_type),'int');142 fwrite(fid,mattype,'int');143 144 %now write matrix145 fwrite(fid,s(1),'int');146 fwrite(fid,s(2),'int');147 if s(1)*s(2),148 fwrite(fid,data','double'); %get to the "c" convention, hence the transpose149 end150 % }}}151 elseif strcmpi(data_type,'IntMat'), % {{{152 153 %matrix type:154 mattype=fieldtype{2};155 156 %Get size157 s=size(data);158 %if matrix = NaN, then do not write anything159 if (s(1)==1 & s(2)==1 & isnan(data)),160 s(1)=0; s(2)=0;161 end162 163 %first write length of record164 fwrite(fid,4+4+8*s(1)*s(2)+4+4,'int'); %2 integers (32 bits) + the double matrix + code + matrix type165 166 %write data code and matrix type:167 fwrite(fid,TypeToCode(data_type),'int');168 fwrite(fid,mattype,'int');169 170 %now write matrix171 fwrite(fid,s(1),'int');172 fwrite(fid,s(2),'int');173 if s(1)*s(2),174 fwrite(fid,data','double'); %get to the "c" convention, hence the transpose175 end176 % }}}177 elseif strcmpi(data_type,'DoubleMat'), % {{{178 179 %matrix type:180 mattype=fieldprop.mattype;181 182 %Get size183 s=size(data);184 %if matrix = NaN, then do not write anything185 if (s(1)==1 & s(2)==1 & isnan(data)),186 s(1)=0; s(2)=0;187 end188 189 %first write length of record190 fwrite(fid,4+4+8*s(1)*s(2)+4+4,'int'); %2 integers (32 bits) + the double matrix + code + matrix type191 192 %write data code and matrix type:193 fwrite(fid,TypeToCode(data_type),'int');194 fwrite(fid,mattype,'int');195 196 %now write matrix197 fwrite(fid,s(1),'int');198 fwrite(fid,s(2),'int');199 if s(1)*s(2),200 fwrite(fid,data','double'); %get to the "c" convention, hence the transpose201 end202 % }}}203 elseif strcmpi(data_type,'MatArray'), % {{{204 205 numrecords=numel(data);206 207 %first get length of record208 recordlength=4+4; %number of records + code209 for i=1:numrecords,210 matrix=data{i};211 s=size(matrix);212 recordlength=recordlength+4*2+... %row and col of matrix213 s(1)*s(2)*8; %matrix of doubles214 end215 216 %write length of record217 fwrite(fid,recordlength,'int');218 219 %write data code:220 fwrite(fid,TypeToCode(data_type),'int');221 222 %write data, first number of records223 fwrite(fid,numrecords,'int');224 225 %write each matrix:226 for i=1:numrecords,227 matrix=data{i};228 s=size(matrix);229 fwrite(fid,s(1),'int');230 fwrite(fid,s(2),'int');231 fwrite(fid,matrix','double');232 end233 % }}}234 elseif strcmpi(data_type,'StringArray'), % {{{235 236 %first get length of string array:237 num=numel(data);238 %now get length of record:239 recordlength=4+4; %for length of array + code240 for i=1:num,241 string=data{i};242 recordlength=recordlength+4+length(string); %for each string243 end244 245 %write length of record246 fwrite(fid,recordlength,'int');247 248 %write data code:249 fwrite(fid,TypeToCode(data_type),'int');250 251 %now write length of string array252 fwrite(fid,num,'int');253 254 %now write the strings255 for i=1:num,256 string=data{i};257 fwrite(fid,length(string),'int');258 fwrite(fid,string,'char');259 end260 % }}}261 else262 error(['WriteData error message: data type: ' num2str(data_type) ' not supported yet! (' EnumToString(enum) ')']);263 end264 % }}}265 function enum=BuildEnum(string) % {{{266 %BUILDENUM - build enum out of string267 %268 % Usage:269 % enum=BuildEnum(string)270 271 if findstr(string,'_'),272 indices=findstr(string,'_');273 for i=1:length(indices),274 string(indices(i)+1)=upper(string(indices(i)+1));275 end276 string(indices)=[];277 end278 279 %take first letter of string and make it uppercase:280 string(1)=upper(string(1));281 282 %Get Enum283 enum=eval([string 'Enum']);284 % }}}285 function code=TypeToCode(data_type) % {{{1286 %This routine takes the data_type string, and hardcodes it into an integer, which287 %is passed along the record, in order to identify the nature of the dataset being288 %sent.289 if strcmpi(data_type,'Boolean'),290 code=1;291 elseif strcmpi(data_type,'Integer'),292 code=2;293 elseif strcmpi(data_type,'Double'),294 code=3;295 elseif strcmpi(data_type,'String'),296 code=4;297 elseif strcmpi(data_type,'BooleanMat'),298 code=5;299 elseif strcmpi(data_type,'IntMat'),300 code=6;301 elseif strcmpi(data_type,'DoubleMat'),302 code=7;303 elseif strcmpi(data_type,'MatArray'),304 code=8;305 elseif strcmpi(data_type,'StringArray'),306 code=9;307 else308 error('TypeToCode error message: data type not supported yet!');309 end% }}}310 311 %FIXME Some processing, should be moved to the corresponding classes in the future312 function out=marshallverbose(in)313 out = VerboseToBinary(in);314 function out=marshallicefront(in)315 out=in;316 pos=find(in(:,end)==0); out(pos,end)=AirEnum;317 pos=find(in(:,end)==1); out(pos,end)=WaterEnum;318 pos=find(in(:,end)==2); out(pos,end)=IceEnum;319 320 function out=marshallrifts(in)321 if isempty(in) | isnans(in),322 numrifts=0;323 else324 numrifts=numel(in);325 end326 numpairs=0;327 for i=1:numrifts,328 numpairs=numpairs+size(in(i).penaltypairs,1);329 end330 331 out=zeros(numpairs,12); % 2 for nodes + 2 for elements+ 2 for normals + 1 for length + 1 for fill + 1 for friction + 1 for fraction + 1 for fractionincrement + 1 for state.332 333 count=1;334 for i=1:numrifts,335 numpairsforthisrift=size(in(i).penaltypairs,1);336 out(count:count+numpairsforthisrift-1,1:7)=in(i).penaltypairs;337 out(count:count+numpairsforthisrift-1,8)=in(i).fill;338 out(count:count+numpairsforthisrift-1,9)=in(i).friction;339 out(count:count+numpairsforthisrift-1,10)=in(i).fraction;340 out(count:count+numpairsforthisrift-1,11)=in(i).fractionincrement;341 out(count:count+numpairsforthisrift-1,12)=in(i).state;342 count=count+numpairsforthisrift;343 end344 function out=marshallapproximations(in),345 out=in;346 pos=find(in==0); out(pos,end)=NoneApproximationEnum;347 pos=find(in==1); out(pos,end)=HutterApproximationEnum;348 pos=find(in==2); out(pos,end)=MacAyealApproximationEnum;349 pos=find(in==3); out(pos,end)=PattynApproximationEnum;350 pos=find(in==4); out(pos,end)=StokesApproximationEnum;351 pos=find(in==5); out(pos,end)=MacAyealPattynApproximationEnum;352 pos=find(in==6); out(pos,end)=MacAyealStokesApproximationEnum;353 pos=find(in==7); out(pos,end)=PattynStokesApproximationEnum;354 355 function out=marshallcontroltype(in)356 out=zeros(1,numel(in));357 for i=1:numel(in),358 out(i)=StringToEnum(in{i});359 end360 function out=marshallcmresponses(in),361 out=in;362 pos=find(in==101); out(pos)=SurfaceAbsVelMisfitEnum;363 pos=find(in==102); out(pos)=SurfaceRelVelMisfitEnum;364 pos=find(in==103); out(pos)=SurfaceLogVelMisfitEnum;365 pos=find(in==104); out(pos)=SurfaceLogVxVyMisfitEnum;366 pos=find(in==105); out(pos)=SurfaceAverageVelMisfitEnum;367 pos=find(in==201); out(pos)=ThicknessAbsMisfitEnum;368 pos=find(in==501); out(pos)=DragCoefficientAbsGradientEnum;369 pos=find(in==502); out(pos)=RheologyBbarAbsGradientEnum;370 pos=find(in==503); out(pos)=ThicknessAbsGradientEnum; -
issm/trunk-jpl/src/m/model/solve.m
r10286 r10969 52 52 end 53 53 54 %preprocesses model before solving55 md=presolve(md);56 57 54 %Save model as is (in case of a crash) 58 55 assignin('base',inputname(1),md);
Note:
See TracChangeset
for help on using the changeset viewer.