source: issm/oecreview/Archive/20545-21336/ISSM-20642-20643.diff@ 21337

Last change on this file since 21337 was 21337, checked in by Mathieu Morlighem, 8 years ago

CHG: added Archive/20545-21336

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