0001 function md2=mesh2(md,domainname,varargin)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019 if (nargin==3),
0020 resolution=varargin{1};
0021 riftname='';
0022 end
0023 if (nargin==4),
0024 riftname=varargin{1};
0025 resolution=varargin{2};
0026 end
0027
0028
0029 if subsref(md,struct('type','.','subs','counter'))>=1,
0030 choice=input('This model already has a mesh. Are you sure you want to go ahead? (y/n)','s');
0031 if ~strcmp(choice,'y')
0032 error('no meshing done ... exiting');
0033 end
0034 end
0035
0036 area=resolution^2;
0037
0038 md2=model;
0039
0040
0041 if strcmp(riftname,''),
0042 [elements,x,y,segments,segmentmarkers]=TriMesh(domainname,area,'yes');
0043 else
0044 [elements,x,y,segments,segmentmarkers]=TriMesh(domainname,riftname,area,'yes');
0045 end
0046
0047 md2=subsasgn(md2,struct('type','.','subs','elements'),elements);
0048 md2=subsasgn(md2,struct('type','.','subs','segmentmarkers'),segmentmarkers);
0049 md2=subsasgn(md2,struct('type','.','subs','segments'),segments);
0050 md2=subsasgn(md2,struct('type','.','subs','y'),y);
0051 md2=subsasgn(md2,struct('type','.','subs','x'),x);
0052
0053
0054 md2=subsasgn(md2,struct('type','.','subs','numberofelements'),length(elements));
0055 md2=subsasgn(md2,struct('type','.','subs','numberofgrids'),length(x));
0056 md2=subsasgn(md2,struct('type','.','subs','z'),zeros(length(x),1));
0057 gridonboundary=zeros(length(x),1); gridonboundary(segments(:,1:2))=1;
0058 md2=subsasgn(md2,struct('type','.','subs','gridonboundary'),gridonboundary);
0059 md2=subsasgn(md2,struct('type','.','subs','elements_type'),3*ones(md2.numberofelements,1));
0060
0061
0062 md2=subsasgn(md2,struct('type','.','subs','domainoutline'),readfile(domainname));
0063 if strcmp(riftname,''),
0064 md2=subsasgn(md2,struct('type','.','subs','riftoutline'),'');
0065 else
0066 md2=subsasgn(md2,struct('type','.','subs','riftoutline'),readfile(riftname));
0067 end
0068
0069
0070 md2=subsasgn(md2,struct('type','.','subs','type'),'2d');
0071
0072
0073 md2=subsasgn(md2,struct('type','.','subs','counter'),1);