Changeset 18757
- Timestamp:
- 11/07/14 15:38:27 (10 years ago)
- Location:
- issm/trunk-jpl/src/m/classes
- Files:
-
- 3 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/m/classes/masstransport.m
r18738 r18757 7 7 properties (SetAccess=public) 8 8 spcthickness = NaN; 9 iscalvingrate = 0;10 calvingrate = NaN;11 levermann_calving_coeff= 0;12 9 isfreesurface = 0; 13 10 min_thickness = 0; … … 45 42 end 46 43 methods 47 function createxml(obj,fid) % {{{48 fprintf(fid, '<!-- masstransport -->\n');49 50 % Masstransport solution parameters51 fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="Masstransport solution parameters">','<section name="masstransport" />');52 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="spcthickness" type="',class(obj.spcthickness),'" default="',convert2str(obj.spcthickness),'">',' <section name="masstransport" />',' <help> thickness constraints (NaN means no constraint) [m] </help>',' </parameter>');53 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="iscalvingrate" type="',class(obj.iscalvingrate),'" default="',convert2str(obj.iscalvingrate),'">',' <section name="masstransport" />',' <help> do we use calving (loss of ice) </help>',' </parameter>');54 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="calvingrate" type="',class(obj.calvingrate),'" default="',convert2str(obj.calvingrate),'">',' <section name="masstransport" />',' <help> calving rate at given location [m/a] </help>',' </parameter>');55 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="levermann_calving_coeff" type="',class(obj.levermann_calving_coeff),'" default="',convert2str(obj.levermann_calving_coeff),'">',' <section name="masstransport" />',' <help> Proportionality coefficient in Levermann model </help>',' </parameter>');56 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="isfreesurface" type="',class(obj.isfreesurface),'" default="',convert2str(obj.isfreesurface),'">',' <section name="masstransport" />',' <help> do we use free surfaces (FS only) are mass conservation </help>',' </parameter>');57 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="min_thickness" type="',class(obj.min_thickness),'" default="',convert2str(obj.min_thickness),'">',' <section name="masstransport" />',' <help> minimum ice thickness allowed [m] </help>',' </parameter>');58 59 % hydrostatic_adjustment drop-down (incremental or absolute )60 fprintf(fid,'%s\n%s\n%s\n%s\n',' <parameter key ="hydrostatic_adjustment" type="alternative" optional ="false">',' <section name="masstransport" />',' <help> adjustment of ice shelves surface and bed elevations: ''Incremental'' or ''Absolute'' </help>');61 fprintf(fid,'%s\n',' <option value="Incremental" type="string" default="true"> </option>');62 fprintf(fid,'%s\n%s\n',' <option value="Absolute" type="string" default="false"> </option>','</parameter>');63 64 %stabilization drop-down (0, 1, 2, or 3)65 fprintf(fid,'%s\n%s\n%s\n%s\n',' <parameter key ="stabilization" type="alternative" optional="false">',' <section name="masstransport" />',' <help> 0: no, 1: artificial_diffusivity, 2: streamline upwinding, 3: discontinuous Galerkin </help>');66 fprintf(fid,'%s\n',' <option value="0" type="string" default="true"> </option>');67 fprintf(fid,'%s\n',' <option value="1" type="string" default="false"> </option>');68 fprintf(fid,'%s\n',' <option value="2" type="string" default="false"> </option>');69 fprintf(fid,'%s\n%s\n',' <option value="3" type="string" default="false"> </option>','</parameter>');70 71 fprintf(fid,'%s\n%s\n','</frame>');72 73 %Penalty options74 fprintf(fid,'%s\n%s\n%s\n','<frame key="2" label="Penalty options">','<section name="masstransport" />');75 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="vertex_pairing" type="',class(obj.vertex_pairing),'" default="',convert2str(obj.vertex_pairing),'">',' <section name="masstransport" />',' <help> offset used by penalties: penalty = Kmax*10^offset </help>',' </parameter>');76 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="penalty_factor" type="',class(obj.penalty_factor),'" default="',convert2str(obj.penalty_factor),'">',' <section name="masstransport" />',' <help> pairs of vertices that are penalized </help>',' </parameter>');77 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="requested_outputs" type="',class(obj.requested_outputs),'" default="',convert2str(obj.requested_outputs),'">',' <section name="masstransport" />',' <help> additional outputs requested </help>',' </parameter>');78 fprintf(fid,'%s\n%s\n','</frame>');79 80 end % }}}81 44 function obj = masstransport(varargin) % {{{ 82 45 switch nargin … … 104 67 function obj = setdefaultparameters(obj) % {{{ 105 68 106 %Proportionality coefficient in Levermann model107 obj.levermann_calving_coeff=8e21;108 109 69 %Type of stabilization to use 0:nothing 1:artificial_diffusivity 3:Discontinuous Galerkin 110 70 obj.stabilization=1; … … 128 88 129 89 md = checkfield(md,'fieldname','masstransport.spcthickness','forcing',1); 130 if(ismember(LevelsetAnalysisEnum(), analyses) & md.transient.islevelset)131 md = checkfield(md,'fieldname','masstransport.iscalvingrate','values',[0 1]);132 md = checkfield(md,'fieldname','masstransport.calvingrate','NaN',1,'size',[md.mesh.numberofvertices 1],'>=',0);133 md = checkfield(md,'fieldname','masstransport.levermann_calving_coeff','>',0);134 end135 136 90 md = checkfield(md,'fieldname','masstransport.isfreesurface','values',[0 1]); 137 91 md = checkfield(md,'fieldname','masstransport.hydrostatic_adjustment','values',{'Absolute' 'Incremental'}); … … 144 98 disp(sprintf(' Masstransport solution parameters:')); 145 99 fielddisplay(obj,'spcthickness','thickness constraints (NaN means no constraint) [m]'); 146 fielddisplay(obj,'iscalvingrate','do we use calving (loss of ice)');147 fielddisplay(obj,'calvingrate','calving rate at given location [m/a]');148 fielddisplay(obj,'levermann_calving_coeff','proportionality coefficient in Levermann model');149 100 fielddisplay(obj,'isfreesurface','do we use free surfaces (FS only) are mass conservation'); 150 101 fielddisplay(obj,'min_thickness','minimum ice thickness allowed [m]'); … … 163 114 164 115 WriteData(fid,'object',obj,'fieldname','spcthickness','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1); 165 WriteData(fid,'object',obj,'fieldname','calvingrate','format','DoubleMat','mattype',1,'forcinglength',md.mesh.numberofvertices+1,'scale',1./yts);166 WriteData(fid,'object',obj,'fieldname','iscalvingrate','format','Boolean');167 116 WriteData(fid,'object',obj,'fieldname','isfreesurface','format','Boolean'); 168 WriteData(fid,'object',obj,'fieldname','levermann_calving_coeff','format','Double');169 117 WriteData(fid,'object',obj,'fieldname','min_thickness','format','Double'); 170 118 WriteData(fid,'data',StringToEnum(obj.hydrostatic_adjustment),'format','Integer','enum',MasstransportHydrostaticAdjustmentEnum()); -
issm/trunk-jpl/src/m/classes/model.m
r18738 r18757 37 37 steadystate = 0; 38 38 transient = 0; 39 calving = 0; 39 40 gia = 0; 40 41 … … 796 797 end 797 798 md.masstransport.spcthickness=project3d(md,'vector',md.masstransport.spcthickness,'type','node'); 798 md.masstransport.calvingrate=project3d(md,'vector',md.masstransport.calvingrate,'type','node');799 799 md.balancethickness.spcthickness=project3d(md,'vector',md.balancethickness.spcthickness,'type','node'); 800 800 md.damage.spcdamage=project3d(md,'vector',md.damage.spcdamage,'type','node'); 801 801 md.stressbalance.referential=project3d(md,'vector',md.stressbalance.referential,'type','node'); 802 802 md.stressbalance.loadingforce=project3d(md,'vector',md.stressbalance.loadingforce,'type','node'); 803 804 % Calving variables 805 if isa(md.calving,'calving'),md.calving.calvingrate=project3d(md,'vector',md.calving.calvingrate,'type','node');end; 806 if isa(md.calving,'calvinglevermann'),md.calving.coeff=project3d(md,'vector',md.calving.coeff,'type','node');end; 803 807 804 808 % Hydrologydc variables … … 1160 1164 md.steadystate = steadystate(); 1161 1165 md.transient = transient(); 1166 md.calving = calving(); 1162 1167 md.gia = gia(); 1163 1168 md.seaice = seaice(); … … 1320 1325 disp(sprintf('%19s: %-22s -- %s','verbose' ,['[1x1 ' class(obj.verbose) ']'],'verbosity level in solve')); 1321 1326 disp(sprintf('%19s: %-22s -- %s','settings' ,['[1x1 ' class(obj.settings) ']'],'settings properties')); 1322 disp(sprintf('%19s: %-22s -- %s','toolkits' 1327 disp(sprintf('%19s: %-22s -- %s','toolkits' ,['[1x1 ' class(obj.toolkits) ']'],'PETSc options for each solution')); 1323 1328 disp(sprintf('%19s: %-22s -- %s','cluster' ,['[1x1 ' class(obj.cluster) ']'],'cluster parameters (number of cpus...)')); 1324 1329 disp(sprintf('%19s: %-22s -- %s','balancethickness',['[1x1 ' class(obj.balancethickness) ']'],'parameters for balancethickness solution')); 1325 disp(sprintf('%19s: %-22s -- %s','stressbalance' 1330 disp(sprintf('%19s: %-22s -- %s','stressbalance' ,['[1x1 ' class(obj.stressbalance) ']'],'parameters for stressbalance solution')); 1326 1331 disp(sprintf('%19s: %-22s -- %s','groundingline' ,['[1x1 ' class(obj.groundingline) ']'],'parameters for groundingline solution')); 1327 1332 disp(sprintf('%19s: %-22s -- %s','hydrology' ,['[1x1 ' class(obj.hydrology) ']'],'parameters for hydrology solution')); 1328 disp(sprintf('%19s: %-22s -- %s','masstransport' 1333 disp(sprintf('%19s: %-22s -- %s','masstransport' ,['[1x1 ' class(obj.masstransport) ']'],'parameters for masstransport solution')); 1329 1334 disp(sprintf('%19s: %-22s -- %s','thermal' ,['[1x1 ' class(obj.thermal) ']'],'parameters for thermal solution')); 1330 1335 disp(sprintf('%19s: %-22s -- %s','steadystate' ,['[1x1 ' class(obj.steadystate) ']'],'parameters for steadystate solution')); 1331 1336 disp(sprintf('%19s: %-22s -- %s','transient' ,['[1x1 ' class(obj.transient) ']'],'parameters for transient solution')); 1332 disp(sprintf('%19s: %-22s -- %s','gia' ,['[1x1 ' class(obj.gia) ']'],'parameters for gia solution')); 1337 disp(sprintf('%19s: %-22s -- %s','calving' ,['[1x1 ' class(obj.calving) ']'],'parameters for calving')); 1338 disp(sprintf('%19s: %-22s -- %s','gia' ,['[1x1 ' class(obj.gia) ']'],'parameters for gia solution')); 1333 1339 disp(sprintf('%19s: %-22s -- %s','autodiff' ,['[1x1 ' class(obj.autodiff) ']'],'automatic differentiation parameters')); 1334 1340 disp(sprintf('%19s: %-22s -- %s','flaim' ,['[1x1 ' class(obj.flaim) ']'],'flaim parameters')); -
issm/trunk-jpl/src/m/classes/model.py
r18605 r18757 15 15 from basalforcings import basalforcings 16 16 from matice import matice 17 from calving import calving 17 18 from damage import damage 18 19 from friction import friction … … 88 89 self.steadystate = steadystate() 89 90 self.transient = transient() 91 self.calving = calving() 90 92 self.gia = gia() 91 93 … … 129 131 'steadystate',\ 130 132 'transient',\ 133 'calving',\ 131 134 'gia',\ 132 135 'autodiff',\ … … 168 171 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("steadystate","[%s,%s]" % ("1x1",obj.steadystate.__class__.__name__),"parameters for steadystate solution")) 169 172 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("transient","[%s,%s]" % ("1x1",obj.transient.__class__.__name__),"parameters for transient solution")) 173 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("calving","[%s,%s]" % ("1x1",obj.calving.__class__.__name__),"parameters for calving")) 170 174 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("autodiff","[%s,%s]" % ("1x1",obj.autodiff.__class__.__name__),"automatic differentiation parameters")) 171 175 string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("flaim","[%s,%s]" % ("1x1",obj.flaim.__class__.__name__),"flaim parameters")) … … 658 662 md.stressbalance.referential=project3d(md,'vector',md.stressbalance.referential,'type','node') 659 663 md.stressbalance.loadingforce=project3d(md,'vector',md.stressbalance.loadingforce,'type','node') 660 md.masstransport.calvingrate=project3d(md,'vector',md.masstransport.calvingrate,'type','node') 664 665 # Calving variables 666 if hasattr(md.calving,'calving'): 667 md.calving.calvingrate=project3d(md,'vector',md.calving.calvingrate,'type','node') 668 if hasattr(md.calving,'calvinglevermann'): 669 md.calving.coeff=project3d(md,'vector',md.calving.coeff,'type','node') 661 670 662 671 # Hydrologydc variables -
issm/trunk-jpl/src/m/classes/transient.m
r17931 r18757 13 13 isdamageevolution = 0; 14 14 islevelset = 0; 15 iscalving = 0; 15 16 ishydrology = 0; 16 17 requested_outputs = {}; … … 29 30 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="isdamageevolution" type="',class(obj.isdamageevolution),'" default="',convert2str(obj.isdamageevolution),'">',' <section name="transient" />',' <help> indicates whether damage evolution is used in the transient </help>',' </parameter>'); 30 31 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="islevelset" type="',class(obj.islevelset),'" default="',convert2str(obj.islevelset),'">',' <section name="transient" />',' <help> LEVEL SET DESCRIPTION... </help>',' </parameter>'); 32 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="iscalving" type="',class(obj.iscalving),'" default="',convert2str(obj.iscalving),'">',' <section name="transient" />',' <help> indicates whether calving is used in the transient </help>',' </parameter>'); 31 33 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n',' <parameter key ="requested_outputs" type="',class(obj.requested_outputs),'" default="',convert2str(obj.requested_outputs),'">',' <section name="transient" />',' <help> list of additional outputs requested </help>',' </parameter>'); 32 34 fprintf(fid,'%s\n%s\n','</frame>'); … … 51 53 obj.isdamageevolution = 0; 52 54 obj.islevelset = 0; 55 obj.iscalving =0; 53 56 obj.ishydrology = 0; 54 57 … … 66 69 obj.isdamageevolution = 0; 67 70 obj.islevelset = 0; 71 obj.iscalving = 0; 68 72 obj.ishydrology = 0; 69 73 … … 90 94 md = checkfield(md,'fieldname','transient.isdamageevolution','numel',[1],'values',[0 1]); 91 95 md = checkfield(md,'fieldname','transient.islevelset','numel',[1],'values',[0 1]); 96 md = checkfield(md,'fieldname','transient.iscalving','numel',[1],'values',[0 1]); 92 97 md = checkfield(md,'fieldname','transient.ishydrology','numel',[1],'values',[0 1]); 93 98 md = checkfield(md,'fieldname','transient.requested_outputs','stringrow',1); … … 104 109 fielddisplay(obj,'isdamageevolution','indicates whether damage evolution is used in the transient'); 105 110 fielddisplay(obj,'islevelset','LEVEL SET DESCRIPTION...'); 111 fielddisplay(obj,'iscalving','indicates whether calving is used in the transient'); 106 112 fielddisplay(obj,'ishydrology','indicates whether an hydrology model is used'); 107 113 fielddisplay(obj,'requested_outputs','list of additional outputs requested'); … … 117 123 WriteData(fid,'object',obj,'fieldname','ishydrology','format','Boolean'); 118 124 WriteData(fid,'object',obj,'fieldname','islevelset','format','Boolean'); 125 WriteData(fid,'object',obj,'fieldname','iscalving','format','Boolean'); 119 126 120 127 %process requested outputs
Note:
See TracChangeset
for help on using the changeset viewer.