Changeset 16295


Ignore:
Timestamp:
10/03/13 15:35:54 (11 years ago)
Author:
Mathieu Morlighem
Message:

CHG: preparing 2d horizontal mesh

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

Legend:

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

    r15987 r16295  
    9191                                md = checkfield(md,'flowequation.borderHO','size',[md.mesh.numberofvertices 1],'values',[0 1]);
    9292                                md = checkfield(md,'flowequation.borderFS','size',[md.mesh.numberofvertices 1],'values',[0 1]);
    93                                 if (md.mesh.dimension==2),
     93                                if strcmp(meshtype(md.mesh),'2Dhorizontal')
    9494                                        md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[1:2]);
    9595                                        md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[1:2]);
    96                                 else
     96                                elseif strcmp(meshtype(md.mesh),'3D'),
    9797                                        md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices 1],'values',[0:8]);
    9898                                        md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements 1],'values',[0:8]);
     99                                else
     100                                        error('Case not supported yet');
    99101                                end
    100102                                if ~(obj.isSIA || obj.isSSA || obj.isL1L2 || obj.isHO || obj.isFS),
  • issm/trunk-jpl/src/m/classes/flowequation.py

    r15987 r16295  
    7979                        md = checkfield(md,'flowequation.borderHO','size',[md.mesh.numberofvertices],'values',[0,1])
    8080                        md = checkfield(md,'flowequation.borderFS','size',[md.mesh.numberofvertices],'values',[0,1])
    81                         if md.mesh.dimension==2:
     81                        if strcmp(md.mesh.meshtype(),'2Dhorizontal'):
    8282                                md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',[1,2])
    8383                                md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements],'values',[1,2])
    84                         else:
     84                        elif strcmp(md.mesh.meshtype(),'3D'):
    8585                                md = checkfield(md,'flowequation.vertex_equation','size',[md.mesh.numberofvertices],'values',numpy.arange(0,8+1))
    8686                                md = checkfield(md,'flowequation.element_equation','size',[md.mesh.numberofelements],'values',numpy.arange(0,8+1))
     87                        else:
     88                                raise RuntimeError('mesh type not supported yet')
    8789                        if not (self.isSIA or self.isSSA or self.isL1L2 or self.isHO or self.isFS):
    8890                                md.checkmessage("no element types set for this model")
  • issm/trunk-jpl/src/m/classes/mesh2d.m

    r16287 r16295  
    1 %MESH class definition
     1%MESH2D class definition
    22%
    33%   Usage:
    4 %      mesh=mesh();
     4%      mesh2d=mesh2d();
    55
    6 classdef mesh
     6classdef mesh2d
    77        properties (SetAccess=public)
    88                x                           = NaN;
     
    3030        end
    3131        methods
    32                 function obj = mesh(varargin) % {{{
     32                function obj = mesh2d(varargin) % {{{
    3333                        switch nargin
    3434                                case 0
     
    5858                        md = checkfield(md,'mesh.numberofelements','>',0);
    5959                        md = checkfield(md,'mesh.numberofvertices','>',0);
    60                         md = checkfield(md,'mesh.vertexonbed','size',[md.mesh.numberofvertices 1],'values',[0 1]);
    6160                        md = checkfield(md,'mesh.average_vertex_connectivity','>=',9,'message','''mesh.average_vertex_connectivity'' should be at least 9 in 2d');
    6261
     
    9695                end % }}}
    9796                function marshall(obj,md,fid) % {{{
    98                         WriteData(fid,'object',obj,'fieldname','x','format','DoubleMat','mattype',1);
    99                         WriteData(fid,'object',obj,'fieldname','y','format','DoubleMat','mattype',1);
    100                         WriteData(fid,'object',obj,'fieldname','elements','format','DoubleMat','mattype',2);
    101                         WriteData(fid,'object',obj,'fieldname','numberofelements','format','Integer');
    102                         WriteData(fid,'object',obj,'fieldname','numberofvertices','format','Integer');
    103                         WriteData(fid,'object',obj,'fieldname','average_vertex_connectivity','format','Integer');
     97                        WriteData(fid,'enum',MeshTypeEnum(),'data',StringToEnum(['Mesh' meshtype(obj)]),'format','Integer');
     98                        WriteData(fid,'object',obj,'class','mesh','fieldname','x','format','DoubleMat','mattype',1);
     99                        WriteData(fid,'object',obj,'class','mesh','fieldname','y','format','DoubleMat','mattype',1);
     100                        WriteData(fid,'enum',MeshZEnum(),'data',zeros(obj.numberofvertices,1),'format','DoubleMat','mattype',1);
     101                        WriteData(fid,'object',obj,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2);
     102                        WriteData(fid,'object',obj,'class','mesh','fieldname','numberofelements','format','Integer');
     103                        WriteData(fid,'object',obj,'class','mesh','fieldname','numberofvertices','format','Integer');
     104                        WriteData(fid,'object',obj,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
     105                end % }}}
     106                function t = meshtype(obj) % {{{
     107                        t = '2Dhorizontal';
    104108                end % }}}
    105109        end
  • issm/trunk-jpl/src/m/classes/mesh2d.py

    r16287 r16295  
    55from MatlabFuncs import *
    66
    7 class mesh(object):
     7class mesh2d(object):
    88        """
    9         MESH class definition
     9        MESH2D class definition
    1010
    1111           Usage:
    12               mesh=mesh();
     12              mesh2d=mesh2d();
    1313        """
    1414
     
    9898                return md
    9999        # }}}
     100        def meshtype(self): # {{{
     101                return "2Dhorizontal"
     102        #}}}
    100103        def marshall(self,md,fid):    # {{{
    101                 WriteData(fid,'object',self,'fieldname','x','format','DoubleMat','mattype',1)
    102                 WriteData(fid,'object',self,'fieldname','y','format','DoubleMat','mattype',1)
    103                 WriteData(fid,'object',self,'fieldname','elements','format','DoubleMat','mattype',2)
    104                 WriteData(fid,'object',self,'fieldname','numberofelements','format','Integer')
    105                 WriteData(fid,'object',self,'fieldname','numberofvertices','format','Integer')
    106                 WriteData(fid,'object',self,'fieldname','average_vertex_connectivity','format','Integer')
     104                WriteData(fid,'enum',MeshTypeEnum(),'data',StringToEnum("Mesh"+self.meshtype())[0],'format','Integer');
     105                WriteData(fid,'object',self,'class','mesh','fieldname','x','format','DoubleMat','mattype',1)
     106                WriteData(fid,'object',self,'class','mesh','fieldname','y','format','DoubleMat','mattype',1)
     107                WriteData(fid,'enum',MeshZEnum(),'data',numpy.zeros(self.numberofvertices),'format','DoubleMat','mattype',1);
     108                WriteData(fid,'object',self,'class','mesh','fieldname','elements','format','DoubleMat','mattype',2)
     109                WriteData(fid,'object',self,'class','mesh','fieldname','numberofelements','format','Integer')
     110                WriteData(fid,'object',self,'class','mesh','fieldname','numberofvertices','format','Integer')
     111                WriteData(fid,'object',self,'class','mesh','fieldname','average_vertex_connectivity','format','Integer')
    107112        # }}}
  • issm/trunk-jpl/src/m/classes/stressbalance.m

    r15987 r16295  
    8181                        md = checkfield(md,'stressbalance.spcvx','forcing',1);
    8282                        md = checkfield(md,'stressbalance.spcvy','forcing',1);
    83                         if md.mesh.dimension==3, md = checkfield(md,'stressbalance.spcvz','forcing',1); end
     83                        if strcmp(meshtype(md.mesh),'3D'), md = checkfield(md,'stressbalance.spcvz','forcing',1); end
    8484                        md = checkfield(md,'stressbalance.restol','size',[1 1],'>',0,'NaN',1);
    8585                        md = checkfield(md,'stressbalance.reltol','size',[1 1]);
     
    111111                        end
    112112                        %CHECK THAT NO rotation specified for FS Grounded ice at base
    113                         if md.mesh.dimension==3 & md.flowequation.isFS,
     113                        if strcmp(meshtype(md.mesh),'3D') & md.flowequation.isFS,
    114114                                pos=find(md.mask.groundedice_levelset>0. & md.mesh.vertexonbed);
    115115                                if any(~isnan(md.stressbalance.referential(pos,:))),
  • issm/trunk-jpl/src/m/classes/stressbalance.py

    r15987 r16295  
    112112                md = checkfield(md,'stressbalance.spcvx','forcing',1)
    113113                md = checkfield(md,'stressbalance.spcvy','forcing',1)
    114                 if md.mesh.dimension==3:
     114                if strcmp(md.mesh.meshtype(),'3D'):
    115115                        md = checkfield(md,'stressbalance.spcvz','forcing',1)
    116116                md = checkfield(md,'stressbalance.restol','size',[1],'>',0)
     
    145145                                        md.checkmessage("Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal")
    146146                #CHECK THAT NO rotation specified for FS Grounded ice at base
    147 #               if md.mesh.dimension==3 & md.flowequation.isFS,
    148                 if md.mesh.dimension==3 and md.flowequation.isFS:
     147                if strcmp(md.mesh.meshtype(),'3D') and md.flowequation.isFS:
    149148                        pos=numpy.nonzero(numpy.logical_and(md.mask.groundedice_levelset,md.mesh.vertexonbed))
    150149                        if numpy.any(numpy.logical_not(numpy.isnan(md.stressbalance.referential[pos,:]))):
Note: See TracChangeset for help on using the changeset viewer.