0001 function [indic ,info ,index,x,y,node_on_boundary,element_on_boundary]=mesh_creator_2d(domain,nel_initial);
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011 nods=length(domain.x);
0012
0013
0014 fid2=fopen(['D:/programmation/utils/mesh.rg2'],'wt');
0015 fprintf(fid2,'%i\n',nods);
0016
0017 for i=1:nods,
0018 A=[domain.x(i) domain.y(i) 2];
0019 fprintf(fid2,'%f %f %i\n',A);
0020 end
0021
0022
0023 newline(fid2);
0024 fprintf(fid2,'%i\n',0);
0025 newline(fid2);
0026
0027 fprintf(fid2,'%i\n',1);
0028 newline(fid2);
0029
0030 fprintf(fid2,'%i %i %i\n',[nods 1 0]);
0031 A='';
0032 for i=1:nods-1,
0033 A=[A '%i '];
0034 end
0035 A=[A '%i\n'];
0036
0037 B=1:1:nods;
0038
0039 C=zeros(1,nods);
0040 for i=1:nods,
0041 C(i)=20*i+2;
0042 end
0043
0044 fprintf(fid2,A,B);
0045 fprintf(fid2,A,C);
0046
0047 fclose(fid2);
0048
0049
0050 fid2=fopen(['D:/programmation/utils/mesh.cs2'],'wt');
0051 fprintf(fid2,'%i\n',nods);
0052 newline(fid2);
0053
0054 for i=1:nods-1,
0055 fprintf(fid2,'%i %i\n',[1 0]);
0056 fprintf(fid2,'%i %i\n',[i i+1]);
0057 newline(fid2);
0058 end
0059 fprintf(fid2,'%i %i\n',[1 0]);
0060 fprintf(fid2,'%i %i\n',[nods 1]);
0061 newline(fid2);
0062
0063 fclose(fid2);
0064
0065
0066
0067
0068
0069
0070
0071 fid=fopen(['D:/programmation/utils/mesh2d.in'],'wt');
0072 fprintf(fid,'%i %i %i %i %i %i %i\n',[202 1 1 0 0 0 1]);
0073 fprintf(fid,'%s',['D:/programmation/utils/mesh.rg2']);
0074 newline(fid);
0075 fprintf(fid,'%s',['D:/programmation/utils/mesh.cs2']);
0076 newline(fid);
0077 fprintf(fid,'%s',['D:/programmation/utils/mesh2d.exp']);
0078 fprintf(fid,'\n%12.12f %i %i',[1.0e-10 0 0]);
0079 fprintf(fid,'\n%i %i %f %f %f %f %f %f %f %i %i %i %i %f %i %i %f',[4 0 45.0 0.04 0.2 30.0 20.0 1 0.4 10 nel_initial +3 4 0.1 2 2 0.3]);
0080 fclose(fid);
0081
0082 dos(['D:/programmation/utils/zgp0203 D:/programmation/utils/mesh2d.in D:/programmation/utils/mesh2d.out']);
0083
0084
0085
0086
0087
0088
0089 fid=fopen('D:/programmation/utils/mesh2d.exp','r');
0090
0091 [A,bytecount]=fscanf(fid,'%f',[1]);
0092 nods=A(1);
0093 x=zeros(nods,1);
0094 y=zeros(nods,1);
0095 indic=zeros(nods,1);
0096
0097 for n=1:nods,
0098 [A,bytecount]=fscanf(fid,'%f %f %i',[1,3]);
0099 x(n)=A(1);
0100 y(n)=A(2);
0101 indic(n)=A(3);
0102 end
0103
0104 [A,bytecount]=fscanf(fid,'%i',[1]);
0105 n=A(1);
0106 for i=1:n,
0107 fscanf(fid,'%i %i %f',[1,3]);
0108 end
0109
0110 [A,bytecount]=fscanf(fid,'%i %i',[1,2]);
0111
0112 nel=A(2);
0113 index=zeros(nel,3);
0114
0115 for n=1:nel,
0116 [A,bytecount]=fscanf(fid,'%i %i %i ',[1,3]);
0117 index(n,1)=A(1);
0118 index(n,2)=A(2);
0119 index(n,3)=A(3);
0120 end
0121
0122 info=zeros(nel,3);
0123 for n=1:nel,
0124 [A,bytecount]=fscanf(fid,'%i %i %i %i',[1,4]);
0125 info(n,1)=A(2);
0126 info(n,2)=A(3);
0127 info(n,3)=A(4);
0128
0129 end
0130 fclose(fid);
0131
0132 pos=find(info(:,1)>20 | info(:,2)>20 | info(:,3)>20);
0133 element_on_boundary=zeros(nel,1);
0134 element_on_boundary(pos)=1;
0135
0136
0137 node_on_boundary=zeros(nods,1);
0138 pos=find(info~=5);
0139 node_on_boundary(index(pos))=1;
0140 break
0141 eval(['delete D:/programmation/utils/mesh2d.exp']);
0142
0143
0144
0145