[2953] | 1 | function md=BamgCallFromMetric(md,metric,gradation),
|
---|
| 2 | %BAMGCALL - call bam
|
---|
| 3 | %
|
---|
| 4 | % call Bamg and the output mesh is plugged onto the model
|
---|
| 5 | % -gradation = maximum edge length gradation between 2 elements
|
---|
| 6 | %
|
---|
| 7 | % Usage:
|
---|
| 8 | % md=BamgCallFromMetric(md,metric,gradation);
|
---|
| 9 | %
|
---|
| 10 | % Example:
|
---|
| 11 | % md=BamgCall(md,metric,1500,10^8,1.3,0.9);
|
---|
| 12 |
|
---|
| 13 | %2d geometric parameter (do not change)
|
---|
| 14 | scale=2/9;
|
---|
| 15 |
|
---|
| 16 | %write files
|
---|
| 17 | t1=clock; fprintf('%s',' writing initial mesh files...');
|
---|
| 18 | fid=fopen('carre0.met','w');
|
---|
| 19 | fprintf(fid,'%i %i\n',md.numberofgrids,3);
|
---|
| 20 | fprintf(fid,'%i %i %i\n',metric');
|
---|
| 21 | fclose(fid);
|
---|
| 22 |
|
---|
| 23 | fid=fopen('carre0.mesh','w');
|
---|
| 24 |
|
---|
| 25 | %initialiation
|
---|
| 26 | fprintf(fid,'%s %i\n','MeshVersionFormatted',0);
|
---|
| 27 |
|
---|
| 28 | %dimension
|
---|
| 29 | fprintf(fid,'\n%s\n%i\n','Dimension',2);
|
---|
| 30 |
|
---|
| 31 | %Vertices
|
---|
| 32 | fprintf(fid,'\n%s\n%i\n\n','Vertices',md.numberofgrids);
|
---|
| 33 | fprintf(fid,'%8g %8g %i\n',[md.x md.y ones(md.numberofgrids,1)]');
|
---|
| 34 |
|
---|
| 35 | %Triangles
|
---|
| 36 | fprintf(fid,'\n\n%s\n%i\n\n','Triangles',md.numberofelements);
|
---|
| 37 | fprintf(fid,'%i %i %i %i\n',[md.elements ones(md.numberofelements,1)]');
|
---|
| 38 | numberofelements1=md.numberofelements;
|
---|
| 39 |
|
---|
| 40 | %close
|
---|
| 41 | fclose(fid);
|
---|
| 42 | t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
|
---|
| 43 |
|
---|
| 44 | %call bamg
|
---|
| 45 | fprintf('%s\n',' call Bamg...');
|
---|
| 46 | system(['bamg -ratio ' num2str(gradation) ' -splitpbedge -nbv 1000000 -M carre0.met -b carre0.mesh -o carre1.mesh']);
|
---|
| 47 |
|
---|
| 48 | %plug new mesh
|
---|
| 49 | t1=clock; fprintf('\n%s',' reading final mesh files...');
|
---|
| 50 | A=meshread('carre1.mesh');
|
---|
| 51 | md.x=A.x;
|
---|
| 52 | md.y=A.y;
|
---|
| 53 | md.z=zeros(A.nods,1);
|
---|
| 54 | md.elements=A.index;
|
---|
| 55 | md.numberofgrids=A.nods;
|
---|
| 56 | md.numberofelements=A.nels;
|
---|
| 57 | numberofelements2=md.numberofelements;
|
---|
| 58 | t2=clock;fprintf('%s\n\n',[' done (' num2str(etime(t2,t1)) ' seconds)']);
|
---|
| 59 |
|
---|
| 60 | %display number of elements
|
---|
| 61 | fprintf('\n%s %i',' inital number of elements:',numberofelements1);
|
---|
| 62 | fprintf('\n%s %i\n\n',' new number of elements:',numberofelements2);
|
---|
| 63 |
|
---|
| 64 | %clean up:
|
---|
| 65 | system('rm carre0.mesh carre0.met carre1.mesh carre1.mesh.gmsh');
|
---|