source:
issm/oecreview/Archive/20545-21336/ISSM-20642-20643.diff@
21337
Last change on this file since 21337 was 21337, checked in by , 8 years ago | |
---|---|
File size: 10.6 KB |
-
../trunk-jpl/src/m/classes/matbafl.m
1 %MATICE class definition 2 % 3 % Usage: 4 % matbafl=matbafl(); 5 6 classdef matbafl 7 properties (SetAccess=public) 8 rho_ice = 0.; 9 rho_water = 0.; 10 rho_freshwater = 0.; 11 mu_water = 0.; 12 heatcapacity = 0.; 13 latentheat = 0.; 14 thermalconductivity = 0.; 15 temperateiceconductivity = 0.; 16 meltingpoint = 0.; 17 beta = 0.; 18 mixed_layer_capacity = 0.; 19 thermal_exchange_velocity = 0.; 20 rheology_ko = NaN; 21 rheology_Ec = NaN; 22 rheology_Es = NaN; 23 rheology_law = ''; 24 25 %gia: 26 lithosphere_shear_modulus = 0.; 27 lithosphere_density = 0.; 28 mantle_shear_modulus = 0.; 29 mantle_density = 0.; 30 31 %slr 32 earth_density = 0; 33 34 end 35 methods 36 function self = extrude(self,md) % {{{ 37 self.rheology_ko=project3d(md,'vector',self.rheology_ko,'type','node'); 38 self.rheology_Ec=project3d(md,'vector',self.rheology_Ec,'type','node'); 39 self.rheology_Es=project3d(md,'vector',self.rheology_Es,'type','node'); 40 end % }}} 41 function self = matbafl(varargin) % {{{ 42 switch nargin 43 case 0 44 self=setdefaultparameters(self); 45 case 1 46 inputstruct=varargin{1}; 47 list1 = properties('matbafl'); 48 list2 = fieldnames(inputstruct); 49 for i=1:length(list1) 50 fieldname = list1{i}; 51 if ismember(fieldname,list2), 52 self.(fieldname) = inputstruct.(fieldname); 53 end 54 end 55 otherwise 56 error('constructor not supported'); 57 end 58 end % }}} 59 function self = setdefaultparameters(self) % {{{ 60 61 %ice density (kg/m^3) 62 self.rho_ice=917.; 63 64 %ocean water density (kg/m^3) 65 self.rho_water=1023.; 66 67 %fresh water density (kg/m^3) 68 self.rho_freshwater=1000.; 69 70 %water viscosity (N.s/m^2) 71 self.mu_water=0.001787; 72 73 %ice heat capacity cp (J/kg/K) 74 self.heatcapacity=2093.; 75 76 %ice latent heat of fusion L (J/kg) 77 self.latentheat=3.34*10^5; 78 79 %ice thermal conductivity (W/m/K) 80 self.thermalconductivity=2.4; 81 82 %wet ice thermal conductivity (W/m/K) 83 self.temperateiceconductivity=.24; 84 85 %the melting point of ice at 1 atmosphere of pressure in K 86 self.meltingpoint=273.15; 87 88 %rate of change of melting point with pressure (K/Pa) 89 self.beta=9.8*10^-8; 90 91 %mixed layer (ice-water interface) heat capacity (J/kg/K) 92 self.mixed_layer_capacity=3974.; 93 94 %thermal exchange velocity (ice-water interface) (m/s) 95 self.thermal_exchange_velocity=1.00*10^-4; 96 97 %Rheology law: what is the temperature dependence of B with T 98 %available: none, paterson and arrhenius 99 self.rheology_law='Paterson'; 100 101 % GIA: 102 self.lithosphere_shear_modulus = 6.7*10^10; % (Pa) 103 self.lithosphere_density = 3.32; % (g/cm^-3) 104 self.mantle_shear_modulus = 1.45*10^11; % (Pa) 105 self.mantle_density = 3.34; % (g/cm^-3) 106 107 %SLR 108 self.earth_density= 5512; % average density of the Earth, (kg/m^3) 109 110 end % }}} 111 function md = checkconsistency(self,md,solution,analyses) % {{{ 112 md = checkfield(md,'fieldname','materials.rho_ice','>',0); 113 md = checkfield(md,'fieldname','materials.rho_water','>',0); 114 md = checkfield(md,'fieldname','materials.rho_freshwater','>',0); 115 md = checkfield(md,'fieldname','materials.mu_water','>',0); 116 md = checkfield(md,'fieldname','materials.rheology_ko','>',0,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1); 117 md = checkfield(md,'fieldname','materials.rheology_Ec','>',0,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1); 118 md = checkfield(md,'fieldname','materials.rheology_Es','>',0,'size',[md.mesh.numberofvertices 1],'NaN',1,'Inf',1); 119 md = checkfield(md,'fieldname','materials.rheology_law','values',{'None' 'Cuffey' 'CuffeyTemperate' 'Paterson' 'Arrhenius' 'LliboutryDuval'}); 120 121 if ismember(GiaAnalysisEnum(),analyses), 122 md = checkfield(md,'fieldname','materials.lithosphere_shear_modulus','>',0,'numel',1); 123 md = checkfield(md,'fieldname','materials.lithosphere_density','>',0,'numel',1); 124 md = checkfield(md,'fieldname','materials.mantle_shear_modulus','>',0,'numel',1); 125 md = checkfield(md,'fieldname','materials.mantle_density','>',0,'numel',1); 126 end 127 if ismember(SealevelriseAnalysisEnum(),analyses), 128 md = checkfield(md,'fieldname','materials.earth_density','>',0,'numel',1); 129 end 130 131 end % }}} 132 function disp(self) % {{{ 133 disp(sprintf(' Materials:')); 134 135 fielddisplay(self,'rho_ice','ice density [kg/m^3]'); 136 fielddisplay(self,'rho_water','ocean water density [kg/m^3]'); 137 fielddisplay(self,'rho_freshwater','fresh water density [kg/m^3]'); 138 fielddisplay(self,'mu_water','water viscosity [N s/m^2]'); 139 fielddisplay(self,'heatcapacity','heat capacity [J/kg/K]'); 140 fielddisplay(self,'thermalconductivity',['ice thermal conductivity [W/m/K]']); 141 fielddisplay(self,'temperateiceconductivity','temperate ice thermal conductivity [W/m/K]'); 142 fielddisplay(self,'meltingpoint','melting point of ice at 1atm in K'); 143 fielddisplay(self,'latentheat','latent heat of fusion [J/kg]'); 144 fielddisplay(self,'beta','rate of change of melting point with pressure [K/Pa]'); 145 fielddisplay(self,'mixed_layer_capacity','mixed layer capacity [W/kg/K]'); 146 fielddisplay(self,'thermal_exchange_velocity','thermal exchange velocity [m/s]'); 147 fielddisplay(self,'rheology_ko','octahedral flow law parameter [s^-1 Pa^-2]'); 148 fielddisplay(self,'rheology_Ec','compressive enhancement factor'); 149 fielddisplay(self,'rheology_Es','shear enhancement factor'); 150 fielddisplay(self,'rheology_law',['law for the temperature dependance of the rheology: ''None'', ''Cuffey'', ''CuffeyTemperate'', ''Paterson'', ''Arrhenius'' or ''LliboutryDuval''']); 151 fielddisplay(self,'lithosphere_shear_modulus','Lithosphere shear modulus [Pa]'); 152 fielddisplay(self,'lithosphere_density','Lithosphere density [g/cm^-3]'); 153 fielddisplay(self,'mantle_shear_modulus','Mantle shear modulus [Pa]'); 154 fielddisplay(self,'mantle_density','Mantle density [g/cm^-3]'); 155 fielddisplay(self,'earth_density','Mantle density [kg/m^-3]'); 156 end % }}} 157 function marshall(self,md,fid) % {{{ 158 WriteData(fid,'enum',MaterialsEnum(),'data',MaticeEnum(),'format','Integer'); 159 WriteData(fid,'object',self,'class','materials','fieldname','rho_ice','format','Double'); 160 WriteData(fid,'object',self,'class','materials','fieldname','rho_water','enum',MaterialsRhoSeawaterEnum(),'format','Double'); 161 WriteData(fid,'object',self,'class','materials','fieldname','rho_freshwater','format','Double'); 162 WriteData(fid,'object',self,'class','materials','fieldname','mu_water','format','Double'); 163 WriteData(fid,'object',self,'class','materials','fieldname','heatcapacity','format','Double'); 164 WriteData(fid,'object',self,'class','materials','fieldname','latentheat','format','Double'); 165 WriteData(fid,'object',self,'class','materials','fieldname','thermalconductivity','format','Double'); 166 WriteData(fid,'object',self,'class','materials','fieldname','temperateiceconductivity','format','Double'); 167 WriteData(fid,'object',self,'class','materials','fieldname','meltingpoint','format','Double'); 168 WriteData(fid,'object',self,'class','materials','fieldname','beta','format','Double'); 169 WriteData(fid,'object',self,'class','materials','fieldname','mixed_layer_capacity','format','Double'); 170 WriteData(fid,'object',self,'class','materials','fieldname','thermal_exchange_velocity','format','Double'); 171 WriteData(fid,'object',self,'class','materials','fieldname','rheology_ko','format','DoubleMat','mattype',1); 172 WriteData(fid,'object',self,'class','materials','fieldname','rheology_Ec','format','DoubleMat','mattype',1); 173 WriteData(fid,'object',self,'class','materials','fieldname','rheology_Es','format','DoubleMat','mattype',1); 174 WriteData(fid,'data',StringToEnum(self.rheology_law),'enum',MaterialsRheologyLawEnum(),'format','Integer'); 175 176 WriteData(fid,'object',self,'class','materials','fieldname','lithosphere_shear_modulus','format','Double'); 177 WriteData(fid,'object',self,'class','materials','fieldname','lithosphere_density','format','Double','scale',10^3); 178 WriteData(fid,'object',self,'class','materials','fieldname','mantle_shear_modulus','format','Double'); 179 WriteData(fid,'object',self,'class','materials','fieldname','mantle_density','format','Double','scale',10^3); 180 WriteData(fid,'object',self,'class','materials','fieldname','earth_density','format','Double'); 181 end % }}} 182 function savemodeljs(self,fid,modelname) % {{{ 183 184 writejsdouble(fid,[modelname '.materials.rho_ice'],self.rho_ice); 185 writejsdouble(fid,[modelname '.materials.rho_water'],self.rho_water); 186 writejsdouble(fid,[modelname '.materials.rho_freshwater'],self.rho_freshwater); 187 writejsdouble(fid,[modelname '.materials.mu_water'],self.mu_water); 188 writejsdouble(fid,[modelname '.materials.heatcapacity'],self.heatcapacity); 189 writejsdouble(fid,[modelname '.materials.latentheat'],self.latentheat); 190 writejsdouble(fid,[modelname '.materials.thermalconductivity'],self.thermalconductivity); 191 writejsdouble(fid,[modelname '.materials.temperateiceconductivity'],self.temperateiceconductivity); 192 writejsdouble(fid,[modelname '.materials.meltingpoint'],self.meltingpoint); 193 writejsdouble(fid,[modelname '.materials.beta'],self.beta); 194 writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity); 195 writejsdouble(fid,[modelname '.materials.thermal_exchange_velocity'],self.thermal_exchange_velocity); 196 writejsdouble(fid,[modelname '.materials.mixed_layer_capacity'],self.mixed_layer_capacity); 197 writejs1Darray(fid,[modelname '.materials.rheology_ko'],self.rheology_ko); 198 writejs1Darray(fid,[modelname '.materials.rheology_Ec'],self.rheology_Ec); 199 writejs1Darray(fid,[modelname '.materials.rheology_Es'],self.rheology_Es); 200 writejsstring(fid,[modelname '.materials.rheology_law'],self.rheology_law); 201 writejsdouble(fid,[modelname '.materials.lithosphere_shear_modulus'],self.lithosphere_shear_modulus); 202 writejsdouble(fid,[modelname '.materials.lithosphere_density'],self.lithosphere_density); 203 writejsdouble(fid,[modelname '.materials.mantle_shear_modulus'],self.mantle_shear_modulus); 204 writejsdouble(fid,[modelname '.materials.mantle_density'],self.mantle_density); 205 writejsdouble(fid,[modelname '.materials.earth_density'],self.earth_density); 206 207 end % }}} 208 end 209 end
Note:
See TracBrowser
for help on using the repository browser.