Changeset 16335


Ignore:
Timestamp:
10/08/13 11:00:18 (11 years ago)
Author:
Mathieu Morlighem
Message:

CHG: improving mesh2dvertical capabilities

Location:
issm/trunk-jpl/src/m
Files:
3 edited

Legend:

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

    r16332 r16335  
    2626                function md = checkconsistency(obj,md,solution,analyses) % {{{
    2727
    28                         if strcmp(meshtype(md.mesh),'2Dvertical'),
    29                                 return;
    30                         end
    31 
    3228                        if (solution==TransientSolutionEnum() & md.transient.isgia) | (solution==GiaSolutionEnum()),
    3329                                md = checkfield(md,'geometry.thickness','forcing',1,'NaN',1,'>=',0);
     
    5551                end % }}}
    5652                function marshall(obj,md,fid) % {{{
    57                         if strcmp(meshtype(md.mesh),'2Dvertical'),
    58                                 return;
    59                         end
    6053                        WriteData(fid,'data',obj.surface,'format','DoubleMat','mattype',1,'enum',SurfaceEnum());
    6154                        WriteData(fid,'data',obj.thickness,'format','DoubleMat','mattype',1,'enum',ThicknessEnum(),'forcinglength',md.mesh.numberofvertices+1);
  • issm/trunk-jpl/src/m/classes/mesh2dvertical.m

    r16333 r16335  
    1818
    1919                vertexonboundary            = NaN
     20                vertexonbed                 = NaN
    2021
    2122                edges                       = NaN
     
    2526                elementconnectivity         = NaN
    2627                average_vertex_connectivity = 0;
    27 
    28                 extractedvertices           = NaN
    29                 extractedelements           = NaN
    3028        end
    3129        methods
     
    5856                        md = checkfield(md,'mesh.numberofelements','>',0);
    5957                        md = checkfield(md,'mesh.numberofvertices','>',0);
     58                        md = checkfield(md,'mesh.vertexonbed','size',[md.mesh.numberofvertices 1],'values',[0 1]);
    6059                        md = checkfield(md,'mesh.average_vertex_connectivity','>=',9,'message','''mesh.average_vertex_connectivity'' should be at least 9 in 2d');
    6160
     
    6665                end % }}}
    6766                function disp(obj) % {{{
    68                         disp(sprintf('   2d Mesh:'));
     67                        disp(sprintf('   2d vertical Mesh:'));
    6968
    7069                        disp(sprintf('\n      Elements and vertices:'));
     
    7978                        disp(sprintf('\n      Properties:'));
    8079                        fielddisplay(obj,'vertexonboundary','vertices on the boundary of the domain flag list');
     80                        fielddisplay(obj,'vertexonbed','vertices on the bed of the domain flag list');
    8181                        fielddisplay(obj,'segments','edges on domain boundary (vertex1 vertex2 element)');
    8282                        fielddisplay(obj,'segmentmarkers','number associated to each segment');
     
    102102                        WriteData(fid,'object',obj,'class','mesh','fieldname','numberofelements','format','Integer');
    103103                        WriteData(fid,'object',obj,'class','mesh','fieldname','numberofvertices','format','Integer');
     104                        WriteData(fid,'object',obj,'class','mesh','fieldname','vertexonbed','format','BooleanMat','mattype',1);
    104105                        WriteData(fid,'object',obj,'class','mesh','fieldname','average_vertex_connectivity','format','Integer');
    105106                end % }}}
    106107                function t = meshtype(obj) % {{{
    107108                        t = '2Dvertical';
     109                end % }}}
     110                function flags = vertexflags(self,value) % {{{
     111                        flags = zeros(self.numberofvertices,1);
     112                        pos   = self.segments(find(self.segmentmarkers==value),1:2);
     113                        flags(pos) = 1;
    108114                end % }}}
    109115                function [data datatype] = processdata(self,md,data,options) % {{{
     
    129135                        if datasize(2)>1,
    130136                                datatype=3;
    131 
    132                                 %check number of columns, add zeros if necessary,
    133                                 if (md.mesh.dimension==3)
    134                                         if datasize(2)==2,
    135                                                 data=[data, zeros(datasize(1),1)];
    136                                         elseif datasize(2)~=3,
    137                                                 error('plotmodel error message: data provided should have 2 or 3 columns for quiver plot, and 1 for regular plot');
    138                                         end
    139                                         %elseif ((md.mesh.dimension==2) & datasize(2)~=2),
    140                                         %       error('plotmodel error message: data provided should have 2 columns for quiver plot, and 1 for regular plot');
    141                                 end
    142137                        end
    143138
  • issm/trunk-jpl/src/m/mesh/bamg.m

    r16332 r16335  
    102102                count=count+nods;
    103103        end
     104        if getfieldvalue(options,'vertical',0),
     105                if numel(getfieldvalue(options,'Markers',[]))~=size(bamg_geometry.Edges,1),
     106                        error(['for 2d vertical mesh, ''Markers'' option is required, and should be of size ' num2str(size(bamg_geometry.Edges,1))]);
     107                end
     108        end
    104109        if numel(getfieldvalue(options,'Markers',[]))==size(bamg_geometry.Edges,1),
    105110                bamg_geometry.Edges(:,3)=getfieldvalue(options,'Markers');
Note: See TracChangeset for help on using the changeset viewer.