Changeset 13049


Ignore:
Timestamp:
08/15/12 17:14:39 (13 years ago)
Author:
Mathieu Morlighem
Message:

NEW: added support l1l2 equations (still under development)

Location:
issm/trunk-jpl/src/m/classes
Files:
2 edited

Legend:

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

    r13040 r13049  
    88                ismacayealpattyn     = 0;
    99                ishutter             = 0;
     10                isl1l2               = 0;
    1011                isstokes             = 0;
    1112                vertex_equation      = NaN;
     
    3334                                md = checkfield(md,'flowequation.ismacayealpattyn','numel',[1],'values',[0 1]);
    3435                                md = checkfield(md,'flowequation.ishutter','numel',[1],'values',[0 1]);
     36                                md = checkfield(md,'flowequation.isl1l2','numel',[1],'values',[0 1]);
    3537                                md = checkfield(md,'flowequation.isstokes','numel',[1],'values',[0 1]);
    3638                                md = checkfield(md,'flowequation.bordermacayeal','size',[md.mesh.numberofvertices 1],'values',[0 1]);
     
    4143                                        md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[1:2]);
    4244                                else
    43                                         md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[0:7]);
    44                                         md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[0:7]);
     45                                        md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[0:8]);
     46                                        md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[0:8]);
    4547                                end
    46                                 if ~(md.flowequation.ismacayealpattyn || md.flowequation.ishutter || md.flowequation.isstokes),
     48                                if ~(obj.ismacayealpattyn || obj.ishutter || obj.isstokes || obj.isl1l2),
    4749                                        md = checkmessage(md,['no element types set for this model. At least one of ismacayealpattyn, ishutter or isstokes need to be =1']);
    4850                                end
    4951                        end
    5052                        if ismember(DiagnosticHutterAnalysisEnum(),analyses),
    51                                 if any(md.flowequation.element_equation==1),
    52                                         if(md.flowequation.element_equation & md.mask.elementonfloatingice),
     53                                if any(obj.element_equation==1),
     54                                        if(obj.element_equation & md.mask.elementonfloatingice),
    5355                                                disp(sprintf('\n !!! Warning: Hutter''s model is not consistent on ice shelves !!!\n'));
    5456                                        end
     
    6264                        fielddisplay(obj,'ismacayealpattyn','is the macayeal or pattyn approximation used ?');
    6365                        fielddisplay(obj,'ishutter','is the shallow ice approximation used ?');
     66                        fielddisplay(obj,'isl1l2','is the l1l2 approximation used ?');
    6467                        fielddisplay(obj,'isstokes','are the Full-Stokes equations used ?');
    6568                        fielddisplay(obj,'vertex_equation','flow equation for each vertex');
     
    7376                        WriteData(fid,'object',obj,'fieldname','ismacayealpattyn','format','Boolean');
    7477                        WriteData(fid,'object',obj,'fieldname','ishutter','format','Boolean');
     78                        WriteData(fid,'object',obj,'fieldname','isl1l2','format','Boolean');
    7579                        WriteData(fid,'object',obj,'fieldname','isstokes','format','Boolean');
    7680                        WriteData(fid,'object',obj,'fieldname','bordermacayeal','format','DoubleMat','mattype',1);
     
    8791                        pos=find(data==6); data(pos,end)=MacAyealStokesApproximationEnum();
    8892                        pos=find(data==7); data(pos,end)=PattynStokesApproximationEnum();
     93                        pos=find(data==8); data(pos,end)=L1L2ApproximationEnum();
    8994                        WriteData(fid,'data',data,'enum',FlowequationVertexEquationEnum(),'format','DoubleMat','mattype',1);
    9095                        data=obj.element_equation;
     
    97102                        pos=find(data==6); data(pos,end)=MacAyealStokesApproximationEnum();
    98103                        pos=find(data==7); data(pos,end)=PattynStokesApproximationEnum();
     104                        pos=find(data==8); data(pos,end)=L1L2ApproximationEnum();
    99105                        WriteData(fid,'data',data,'enum',FlowequationElementEquationEnum(),'format','DoubleMat','mattype',2);
    100106                end % }}}
  • issm/trunk-jpl/src/m/classes/flowequation.py

    r13040 r13049  
    2020                self.ismacayealpattyn     = 0;
    2121                self.ishutter             = 0;
     22                self.isl1l2             = 0;
    2223                self.isstokes             = 0;
    2324                self.vertex_equation      = float('NaN')
     
    3738                string="%s\n\n%s"%(string,fielddisplay(self,'ismacayealpattyn','is the macayeal or pattyn approximation used ?'))
    3839                string="%s\n%s"%(string,fielddisplay(self,'ishutter','is the shallow ice approximation used ?'))
     40                string="%s\n%s"%(string,fielddisplay(self,'isl1l2','are l1l2 equations used ?'))
    3941                string="%s\n%s"%(string,fielddisplay(self,'isstokes','are the Full-Stokes equations used ?'))
    4042                string="%s\n%s"%(string,fielddisplay(self,'vertex_equation','flow equation for each vertex'))
     
    5658                        md = checkfield(md,'flowequation.ismacayealpattyn','numel',[1],'values',[0,1])
    5759                        md = checkfield(md,'flowequation.ishutter','numel',[1],'values',[0,1])
     60                        md = checkfield(md,'flowequation.isl1l2','numel',[1],'values',[0,1])
    5861                        md = checkfield(md,'flowequation.isstokes','numel',[1],'values',[0,1])
    5962                        md = checkfield(md,'flowequation.bordermacayeal','size',[md.mesh.numberofvertices],'values',[0,1])
     
    6669                                md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',range(0,7+1))
    6770                                md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements],'values',range(0,7+1))
    68                         if not (md.flowequation.ismacayealpattyn or md.flowequation.ishutter or md.flowequation.isstokes):
     71                        if not (self.ismacayealpattyn or self.ishutter or self.isstokes or self.isl1l2):
    6972                                md.checkmessage("no element types set for this model. At least one of ismacayealpattyn, ishutter or isstokes need to be =1")
    7073
    7174                if DiagnosticHutterAnalysisEnum() in analyses:
    72                         if any(md.flowequation.element_equation==1):
    73                                 if numpy.any(numpy.logical_and(md.flowequation.element_equation,md.mask.elementonfloatingice)):
     75                        if any(self.element_equation==1):
     76                                if numpy.any(numpy.logical_and(self.element_equation,md.mask.elementonfloatingice)):
    7477                                        print "\n !!! Warning: Hutter's model is not consistent on ice shelves !!!\n"
    7578
     
    8083                WriteData(fid,'object',self,'fieldname','ismacayealpattyn','format','Boolean')
    8184                WriteData(fid,'object',self,'fieldname','ishutter','format','Boolean')
     85                WriteData(fid,'object',self,'fieldname','isl1l2','format','Boolean')
    8286                WriteData(fid,'object',self,'fieldname','isstokes','format','Boolean')
    8387                WriteData(fid,'object',self,'fieldname','bordermacayeal','format','DoubleMat','mattype',1)
     
    9498                data[[i for i,item in enumerate(data) if item==6]]=MacAyealStokesApproximationEnum()
    9599                data[[i for i,item in enumerate(data) if item==7]]=PattynStokesApproximationEnum()
     100                data[[i for i,item in enumerate(data) if item==8]]=L1L2ApproximationEnum()
    96101                WriteData(fid,'data',data,'enum',FlowequationVertexEquationEnum(),'format','DoubleMat','mattype',1)
    97102                data=self.element_equation
     
    104109                data[[i for i,item in enumerate(data) if item==6]]=MacAyealStokesApproximationEnum()
    105110                data[[i for i,item in enumerate(data) if item==7]]=PattynStokesApproximationEnum()
     111                data[[i for i,item in enumerate(data) if item==8]]=L1L2ApproximationEnum()
    106112                WriteData(fid,'data',data,'enum',FlowequationElementEquationEnum(),'format','DoubleMat','mattype',2)
    107113        # }}}
Note: See TracChangeset for help on using the changeset viewer.