Changeset 21681


Ignore:
Timestamp:
04/18/17 13:54:10 (8 years ago)
Author:
caronlam
Message:

Updated class file with all input variables

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/classes/giacaron.m

    r21594 r21681  
    55classdef giacaron
    66        properties (SetAccess=public)
    7                 numlayers   = NaN;
     7       
     8        %Physical constants
     9        gravitational_constant= NaN;
     10        surface_radius = NaN;
     11        core_mantle_boudary_radius= NaN;
     12        inner_core_boudary_radius= NaN;
     13        stress_norm= NaN;
     14        gravity_norm= NaN;
     15        radius_norm= NaN;
     16       
     17        %Numerical parameters
     18        allow_layer_deletion=NaN;
     19        verbose_mode=NaN;
     20       
     21        %GIA problem setup
     22        forcing_type=NaN;
     23        isincompressible=NaN;
     24        benchmark_mode=NaN;
     25        calculate_sea_level=NaN;
     26        calculate_rotational_feedback=NaN;
     27        subtract_present_day=NaN;
     28        ntime=NaN;
     29        nphi=NaN;
     30   
     31        %Earth model
     32        numlayers   = NaN;
    833                radius      = NaN;
    934                lame_mu     = NaN;
     
    1540                transient_viscosity    = NaN;
    1641                transient_mu           = NaN;
     42       
     43        %Inversion
     44%         dataset_type_dentifier= NaN
     45%         ndata_std= NaN;
     46%         ndata_minimum_val = NaN;
     47%         ndata_maximum_val = NaN;
     48%         ndata_total=NaN;
     49%         n_forward_models=NaN;
     50%         ice_coefficients_solving = NaN;
     51%         ninverse_parameters=NaN;
     52       
     53        %Ice history
     54        ice_model_identifier=NaN;
     55        ice_model_ntime=NaN;
     56        nice_sheets=NaN;
     57       
    1758        end
    1859        methods
     
    2768                                        if strcmpi(body,'earth'),
    2869                                                self.numlayers=getfieldvalue(options,'numlayers',5);
     70                        self.calculate_sea_level=true;
    2971                                                %[self.radius,self.lame_mu, self.lame_lambda, self.issolid, self.density, ...
    3072                                                %self.viscosity, self.isburger, self.transient_viscosity, self.transient_mu]=...
     
    3880                end % }}}
    3981                function self = setdefaultparameters(self) % {{{
     82             %Physical constants
     83            gravitational_constant= 6.67259e-11;
     84            stress_norm= 1e12;
     85            gravity_norm= 10;
     86            radius_norm= 1.0;
     87
     88            %Numerical parameters
     89            allow_layer_deletion=true;
     90            verbose_mode=false;
     91
     92            %GIA problem setup
     93            forcing_type=11;
     94            isincompressible=false;
     95            benchmark_mode=false;
     96            calculate_sea_level=false;
     97            calculate_rotational_feedback=true;
     98            subtract_present_day=true;
     99
     100            %Earth model
     101            isburger    = false(self.numlayers,1);
     102           
     103            %Ice history
     104            nice_sheets=1;
     105
    40106                end % }}}
    41107                function md = checkconsistency(self,md,solution,analyses) % {{{
    42108
    43109                        if ~ismember('GiaAnalysis',analyses), return; end
     110            % Physical constants                       
     111            md = checkfield(md,'fieldname','gia.gravitational_constant','NaN',1,'Inf',1,'numel',1,'>',0);
     112            md = checkfield(md,'fieldname','gia.surface_radius','NaN',1,'Inf',1,'numel',1,'>',0);
     113                        md = checkfield(md,'fieldname','gia.core_mantle_boundary_radius','Inf',1,'numel',1,'>',0);
     114                        md = checkfield(md,'fieldname','gia.inner_core_boundary_radius','Inf',1,'numel',1,'>',0);
     115                        md = checkfield(md,'fieldname','gia.radius_norm','NaN',1,'Inf',1,'numel',1,'>',0);
     116                        md = checkfield(md,'fieldname','gia.stress_norm','NaN',1,'Inf',1,'numel',1,'>',0);
     117                        md = checkfield(md,'fieldname','gia.gravity_norm','NaN',1,'Inf',1,'numel',1,'>',0);
     118
     119            %Numerical parameters
     120                        md = checkfield(md,'fieldname','gia.allow_layer_deletion','values',[0 1]);
     121                        md = checkfield(md,'fieldname','gia.verbose_mode','values',[0 1]);
     122
     123            %GIA problem setup
     124            md = checkfield(md,'fieldname','gia.forcing_type','NaN',1,'Inf',1,'numel',1,'>',0, '<=', 12);
     125            md = checkfield(md,'fieldname','gia.isincompressible','values',[0 1]);
     126                        md = checkfield(md,'fieldname','gia.benchmark_mode','values',[0 1]);
     127                        md = checkfield(md,'fieldname','gia.calculate_sea_level','values',[0 1]);
     128                        md = checkfield(md,'fieldname','gia.calculate_rotational_feedback','values',[0 1]);
     129                        md = checkfield(md,'fieldname','gia.subtract_present_day','values',[0 1]);
     130                        md = checkfield(md,'fieldname','gia.ntime','NaN',1,'Inf',1,'numel',1,'>',0);
     131                        md = checkfield(md,'fieldname','gia.ntheta','NaN',1,'Inf',1,'numel',1,'>',0);
     132                        md = checkfield(md,'fieldname','gia.nphi','numel',1,'values', self.ntheta*2);
     133       
     134            %Ice history
     135            md = checkfield(md,'fieldname','gia.ice_model_identifier', 'stringrow', 1, 'size', [1 3]);
     136            md = checkfield(md,'fieldname','gia.ice_model_ntime', 'NaN', 1, 'Inf', 1, 'numel', 1);
     137            md = checkfield(md,'fieldname','gia.nice_sheets', 'NaN', 1, 'Inf', 1, '>', 0, 'numel', 1);
     138           
     139            %Earth parameters
    44140                        md = checkfield(md,'fieldname','gia.numlayers','NaN',1,'Inf',1,'>',0,'numel',1);
    45141                        md = checkfield(md,'fieldname','gia.radius','NaN',1,'Inf',1,'size',[md.gia.numlayers 1],'>',0);
     
    55151                function disp(self) % {{{
    56152                        disp(sprintf('   giacaron parameters:'));
     153           
     154            % Physical constants                       
     155            fielddisplay(self,'gravitational_constant', 'Newton''s Gravitational constant, should be equal to approximately 6.67e-11 [m^3.kg^-1.s^-2]');
     156            fielddisplay(self,'surface_radius','NaN', 'Planet outer surface radius [m]');
     157                        fielddisplay(self,'core_mantle_boundary_radius', 'Planet core mantle boundary radius (optional) [m]');
     158                        fielddisplay(self,'inner_core_boundary_radius','Planet inner core boundary radius (optional) [m]');
     159                        fielddisplay(self,'radius_norm', 'length normalization constant [m] (default 1.0)');
     160                        fielddisplay(self,'stress_norm', 'stress normalization constant [Pa] (default 1e12)');
     161                        fielddisplay(self,'gravity_norm', 'gravity normalization constant [m.s^-2] (default 10)');
     162
     163            %Numerical parameters
     164                        fielddisplay(self,'allow_layer_deletion', 'boolean allowing the migration of the starting integration radius while increasing the spherical harmonic degree  (default true)');
     165                        fielddisplay(self,'verbose_mode', 'boolean allowing the program to write more details on terminal (default false)')
     166
     167            %GIA problem setup
     168            fielddisplay(self,'forcing_type','integer indicating the nature and depth of the forcing for the Love number calculation: 1: ICB -- Volumic Potential,  2:  ICB -- Pressure,        3:  ICB -- Loading,    4:  ICB -- Tangential traction,  5:  CMB -- Volumic Potential,  6:  CMB -- Pressure      7:  CMB -- Loading,  8:  CMB -- Tangential traction,    9: SURF -- Volumic Potential, 10: SURF -- Pressure, 11: SURF -- Loading,  12: SURF -- Tangential traction (default 11)');
     169            fielddisplay(self,'isincompressible', 'boolean approximating the mantle rheology to an incompressible body, sets Lame_lambda to 5e14 Pa (default false)');
     170                        fielddisplay(self,'benchmark_mode', 'boolean to enter benchmark mode, writes a lot of outputs from the midst of the calculation (default false)');
     171                        fielddisplay(self,'calculate_sea_level', 'boolean allowing the sea level equation solving (default false)');
     172                        fielddisplay(self,'calculate_rotational_feedback', 'boolean allowing the calculation of rotational feedback (default true)');
     173                        fielddisplay(self,'subtract_present_day', 'boolean, subtracts the present day signal so the calculation is expressed as the difference with the present-day topography, geoid and sea level (default true)');
     174                        fielddisplay(self,'ntime', 'number of time steps')
     175                        fielddisplay(self,'ntheta', 'size of grid in latitude')
     176                        fielddisplay(self,'nphi', 'size of grid in longitude (should always be ntheta*2)');
     177       
     178            %Ice history
     179            fielddisplay(self,'ice_model_identifier', 'string identifier for the ice model (3 characters)')
     180            fielddisplay(self,'ice_model_ntime', 'number of time steps in the original ice model, is used to interpolate the model on the desired time')
     181            fielddisplay(self,'nice_sheets', 'number of ice regions to be scaled independently')
     182           
     183            %Earth parameters
    57184                        fielddisplay(self,'numlayers','number of layers (default 5)');
    58185                        fielddisplay(self,'radius','array describing the radius for each interface (numlayers+1) [m]');
     
    71198                        WriteData(fid,prefix,'object',self,'fieldname','lithosphere_thickness','format','DoubleMat','mattype',1,'scale',10^3); %from km to m
    72199                        WriteData(fid,prefix,'object',self,'fieldname','cross_section_shape','format','Integer');
     200           
     201             %Physical constants
     202                        WriteData(fid,prefix,'object',self,'fieldname','gravitational_constant','format','Double');
     203                        WriteData(fid,prefix,'object',self,'fieldname','surface_radius ','format','Double');
     204                        WriteData(fid,prefix,'object',self,'fieldname','core_mantle_boudary_radius','format','Double');
     205                        WriteData(fid,prefix,'object',self,'fieldname','inner_core_boudary_radius','format','Double');
     206                        WriteData(fid,prefix,'object',self,'fieldname','stress_norm','format','Double');
     207                        WriteData(fid,prefix,'object',self,'fieldname','gravity_norm','format','Double');
     208                        WriteData(fid,prefix,'object',self,'fieldname','radius_norm','format','Double');
     209       
     210        %Numerical parameters
     211                        WriteData(fid,prefix,'object',self,'fieldname','allow_layer_deletion','format','Boolean');
     212                        WriteData(fid,prefix,'object',self,'fieldname','verbose_mode','format','Boolean');
     213       
     214        %GIA problem setup
     215                        WriteData(fid,prefix,'object',self,'fieldname','forcing_type','format','Integer');
     216                        WriteData(fid,prefix,'object',self,'fieldname','isincompressible','format','Boolean');
     217                        WriteData(fid,prefix,'object',self,'fieldname','benchmark_mode','format','Boolean');
     218                        WriteData(fid,prefix,'object',self,'fieldname','calculate_sea_level','format','Boolean');
     219                        WriteData(fid,prefix,'object',self,'fieldname','calculate_rotational_feedback','format','Boolean');
     220                        WriteData(fid,prefix,'object',self,'fieldname','subtract_present_day','format','Boolean');
     221                        WriteData(fid,prefix,'object',self,'fieldname','ntime','format','Integer');
     222                        WriteData(fid,prefix,'object',self,'fieldname','ntheta','format','Integer');
     223                        WriteData(fid,prefix,'object',self,'fieldname','nphi','format','Integer');
     224   
     225        %Earth model
     226                        WriteData(fid,prefix,'object',self,'fieldname','numlayers','format','Double');
     227                        WriteData(fid,prefix,'object',self,'fieldname','radius','format','DoubleMat','mattype',1);
     228                        WriteData(fid,prefix,'object',self,'fieldname','lame_mu','format','DoubleMat','mattype',1);
     229                        WriteData(fid,prefix,'object',self,'fieldname','lame_lambda ','format','DoubleMat','mattype',1);
     230                        WriteData(fid,prefix,'object',self,'fieldname','issolid','format','BooleanMat','mattype',1);
     231                        WriteData(fid,prefix,'object',self,'fieldname','density','format','DoubleMat','mattype',1);
     232                        WriteData(fid,prefix,'object',self,'fieldname','viscosity','format','DoubleMat','mattype',1);
     233                        WriteData(fid,prefix,'object',self,'fieldname','isburger','format','BooleanMat','mattype',1);
     234                        WriteData(fid,prefix,'object',self,'fieldname','transient_viscosity','format','DoubleMat','mattype',1);
     235                        WriteData(fid,prefix,'object',self,'fieldname','transient_mu','format','DoubleMat','mattype',1);
     236       
     237        %Inversion
     238%         dataset_type_dentifier= NaN
     239                        WriteData(fid,prefix,'object',self,'fieldname','ndata_std','format','Integer');
     240                        WriteData(fid,prefix,'object',self,'fieldname','ndata_minimum_val ','format','Integer');
     241                        WriteData(fid,prefix,'object',self,'fieldname','ndata_maximum_val ','format','Integer');
     242                        WriteData(fid,prefix,'object',self,'fieldname','ndata_total','format','Integer');
     243                        WriteData(fid,prefix,'object',self,'fieldname','n_forward_models','format','Integer');
     244                        WriteData(fid,prefix,'object',self,'fieldname','ice_coefficients_solving ','format','String');
     245                        WriteData(fid,prefix,'object',self,'fieldname','ninverse_parameters','format','Integer');
     246       
     247        %Ice history
     248                        WriteData(fid,prefix,'object',self,'fieldname','ice_model_identifier','format','String');
     249                        WriteData(fid,prefix,'object',self,'fieldname','ice_model_ntime','format','Integer');
     250                        WriteData(fid,prefix,'object',self,'fieldname','nice_sheets','format','Integer');
    73251                end % }}}
    74252                function savemodeljs(self,fid,modelname) % {{{
    75253               
     254%Physical constants
     255                        writejsdouble(fid,[modelname '.gia.gravitational_constant'],self.gravitational_constant);
     256                        writejsdouble(fid,[modelname '.gia.surface_radius'],self.surface_radius);
     257                        writejsdouble(fid,[modelname '.gia.core_mantle_boudary_radius'],self.core_mantle_boudary_radius);
     258                        writejsdouble(fid,[modelname '.gia.inner_core_boudary_radius'],self.inner_core_boudary_radius);
     259                        writejsdouble(fid,[modelname '.gia.stress_norm'],self.stress_norm);
     260                        writejsdouble(fid,[modelname '.gia.gravity_norm'],self.gravity_norm);
     261                        writejsdouble(fid,[modelname '.gia.radius_norm'],self.radius_norm);
     262       
     263        %Numerical parameters
     264                        writejsdouble(fid,[modelname '.gia.allow_layer_deletion'],self.allow_layer_deletion);
     265                        writejsdouble(fid,[modelname '.gia.verbose_mode'],self.verbose_mode);
     266       
     267        %GIA problem setup
     268                        writejsdouble(fid,[modelname '.gia.forcing_type'],self.forcing_type);
     269                        writejsdouble(fid,[modelname '.gia.isincompressible'],self.isincompressible);
     270                        writejsdouble(fid,[modelname '.gia.benchmark_mode'],self.benchmark_mode);
     271                        writejsdouble(fid,[modelname '.gia.calculate_sea_level'],self.calculate_sea_level);
     272                        writejsdouble(fid,[modelname '.gia.calculate_rotational_feedback'],self.calculate_rotational_feedback);
     273                        writejsdouble(fid,[modelname '.gia.subtract_present_day'],self.subtract_present_day);
     274                        writejsdouble(fid,[modelname '.gia.ntime'],self.ntime);
     275                        writejsdouble(fid,[modelname '.gia.ntheta'],self.ntheta);
     276                        writejsdouble(fid,[modelname '.gia.nphi'],self.nphi);
     277   
     278        %Earth model
     279                        writejsdouble(fid,[modelname '.gia.numlayers'],self.numlayers);
     280                        writejsdouble(fid,[modelname '.gia.radius'],self.radius);
     281                        writejsdouble(fid,[modelname '.gia.lame_mu'],self.lame_mu);
     282                        writejsdouble(fid,[modelname '.gia.lame_lambda'],self.lame_lambda);
     283                        writejsdouble(fid,[modelname '.gia.issolid'],self.issolid);
     284                        writejsdouble(fid,[modelname '.gia.density'],self.density);
     285                        writejsdouble(fid,[modelname '.gia.viscosity'],self.viscosity);
     286                        writejsdouble(fid,[modelname '.gia.isburger'],self.isburger);
     287                        writejsdouble(fid,[modelname '.gia.transient_viscosity'],self.transient_viscosity);
     288                        writejsdouble(fid,[modelname '.gia.transient_mu'],self.transient_mu);
     289       
     290        %Inversion
     291%         dataset_type_dentifier= NaN
     292%                       writejsdouble(fid,[modelname '.gia.ndata_std'],self.ndata_std);
     293%                       writejsdouble(fid,[modelname '.gia.ndata_minimum_val'],self.ndata_minimum_val);
     294%                       writejsdouble(fid,[modelname '.gia.ndata_maximum_val'],self.ndata_maximum_val);
     295%                       writejsdouble(fid,[modelname '.gia.ndata_total'],self.ndata_total);
     296%                       writejsdouble(fid,[modelname '.gia.n_forward_models'],self.n_forward_models);
     297%                       writejsdouble(fid,[modelname '.gia.ice_coefficients_solving'],self.ice_coefficients_solving);
     298%                       writejsdouble(fid,[modelname '.gia.ninverse_parameters'],self.ninverse_parameters);
     299       
     300        %Ice history
     301                        writejsdouble(fid,[modelname '.gia.ice_model_identifier'],self.ice_model_identifier);
     302                        writejsdouble(fid,[modelname '.gia.ice_model_ntime'],self.ice_model_ntime);
     303                        writejsdouble(fid,[modelname '.gia.nice_sheets'],self.nice_sheets);
    76304                        writejsdouble(fid,[modelname '.gia.mantle_viscosity'],self.mantle_viscosity);
    77305                        writejsdouble(fid,[modelname '.gia.lithosphere_thickness'],self.lithosphere_thickness);
    78306                        writejsdouble(fid,[modelname '.gia.cross_section_shape'],self.cross_section_shape);
    79 
     307                       
    80308                end % }}}
    81309        end
Note: See TracChangeset for help on using the changeset viewer.