mesh_creator_2d

PURPOSE ^

MESH_CREATOR_2D - ???

SYNOPSIS ^

function [indic ,info ,index,x,y,node_on_boundary,element_on_boundary]=mesh_creator_2d(domain,nel_initial);

DESCRIPTION ^

MESH_CREATOR_2D - ???

   This program creates a mesh from a contour,
   INPUT domain nel_initial
   OUTPUT index x y node_on_boundary element_on_boundary

   Usage:
      [indic ,info ,index,x,y,node_on_boundary,element_on_boundary]=mesh_creator_2d(domain,nel_initial);

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function [indic ,info ,index,x,y,node_on_boundary,element_on_boundary]=mesh_creator_2d(domain,nel_initial);
0002 %MESH_CREATOR_2D - ???
0003 %
0004 %   This program creates a mesh from a contour,
0005 %   INPUT domain nel_initial
0006 %   OUTPUT index x y node_on_boundary element_on_boundary
0007 %
0008 %   Usage:
0009 %      [indic ,info ,index,x,y,node_on_boundary,element_on_boundary]=mesh_creator_2d(domain,nel_initial);
0010 
0011 nods=length(domain.x);
0012 
0013 %%%%%%%%%%%%%create the region file
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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%create curves files
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 %eval(['delete D:/programmation/utils/mesh.rg2']);
0084 %eval(['delete D:/programmation/utils/mesh.cs2']);
0085 %eval(['delete D:/programmation/utils/mesh2d.in']);
0086 %eval(['delete D:/programmation/utils/mesh2d.out']);
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

Generated on Sun 29-Mar-2009 20:22:55 by m2html © 2003