Ignore:
Timestamp:
05/23/17 00:21:35 (8 years ago)
Author:
sjohnsen
Message:

NEW: adding a friction effective pressure flag

File:
1 edited

Legend:

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

    r21049 r21739  
    66classdef frictionhydro
    77        properties (SetAccess=public)
    8                 Coupling           = 0;
     8                coupling           = 0;
    99                q                  = NaN;
    1010                C                  = NaN;
     
    2828                        %Early return
    2929                        if ~ismember('StressbalanceAnalysis',analyses) & ~ismember('ThermalAnalysis',analyses), return; end
    30                         md = checkfield(md,'fieldname','friction.Coupling','numel',[1],'values',[0 1]);
     30                        md = checkfield(md,'fieldname','friction.coupling','numel',[1],'values',[0 1 2]);
    3131                        md = checkfield(md,'fieldname','friction.q','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
    3232                        md = checkfield(md,'fieldname','friction.C','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
    3333                        md = checkfield(md,'fieldname','friction.As','NaN',1,'Inf',1,'size',[md.mesh.numberofelements 1]);
    34                         if self.Coupling==0,
    35                                 md = checkfield(md,'fieldname','friction.effective_pressure','NaN',1,'Inf',1,'timeseries',1);
     34                        switch self.coupling
     35                                case 0
     36                                case 1
     37                                        md = checkfield(md,'fieldname','friction.effective_pressure','NaN',1,'Inf',1,'timeseries',1);
     38                                case 2
     39                                        error('not implemented yet');
     40                                otherwise
     41                                        error('not supported yet');             
     42                        end
    3643            end
    3744                end % }}}
     
    4047                        self.C=project3d(md,'vector',self.C,'type','element');
    4148                        self.As=project3d(md,'vector',self.As,'type','element');
    42                         if self.Coupling==0,
    43                                 self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1);
     49                        switch self.coupling
     50                                case 0
     51                                case 1
     52                                        self.effective_pressure=project3d(md,'vector',self.effective_pressure,'type','node','layer',1);
     53                                case 2
     54                                        error('not implemented yet');
     55                                otherwise
     56                                        error('not supported yet');             
    4457                        end
    4558          end % }}}
    4659                function disp(self) % {{{
    4760                        disp(sprintf('Effective Pressure based friction law described in Gagliardini 2007'));
    48                         fielddisplay(self,'Coupling','Coupling flag, 1 for coupling and 0 for forcing');
     61                        fielddisplay(self,'coupling','Coupling flag: 0 for default, 1 for forcing(provide md.friction.effective_pressure)  and 2 for coupled(not implemented yet)');
    4962                        fielddisplay(self,'q','friction law exponent q>=1');
    5063                        fielddisplay(self,'C','friction law max value [SI]');
     
    5467                function marshall(self,prefix,md,fid) % {{{
    5568                        WriteData(fid,prefix,'name','md.friction.law','data',3,'format','Integer');
    56                         WriteData(fid,prefix,'class','friction','object',self,'fieldname','Coupling','format','Integer');
     69                        WriteData(fid,prefix,'class','friction','object',self,'fieldname','coupling','format','Integer');
    5770                        WriteData(fid,prefix,'class','friction','object',self,'fieldname','q','format','DoubleMat','mattype',2);
    5871                        WriteData(fid,prefix,'class','friction','object',self,'fieldname','C','format','DoubleMat','mattype',2);
    5972                        WriteData(fid,prefix,'class','friction','object',self,'fieldname','As','format','DoubleMat','mattype',2);
    60                         if self.Coupling==0,
    61                                 WriteData(fid,prefix,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
     73                        switch self.coupling
     74                                case 0
     75                                case 1
     76                                        WriteData(fid,prefix,'class','friction','object',self,'fieldname','effective_pressure','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
     77                                case 2
     78                                        error('not implemented yet');
     79                                otherwise
     80                                        error('not supported yet');             
    6281                        end
    6382          end % }}}
Note: See TracChangeset for help on using the changeset viewer.