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
  • ../trunk-jpl/src/m/classes/matbafl.m

     
     1%MATICE class definition
     2%
     3%   Usage:
     4%      matbafl=matbafl();
     5
     6classdef 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
     209end
Note: See TracBrowser for help on using the repository browser.