ANSYS中使用EWRITE來輸出當(dāng)前選擇的單元到文件。他的參數(shù)為EWRITE, Fname, Ext, --, KAPPND, Format
其中前兩個(gè)分別是文件名和后綴,KAPPND表明是否清空單元文件來進(jìn)行輸出(用0和1 表示),F(xiàn)ormat則是說明輸出文件的位寬,其中SHORT是默認(rèn)選項(xiàng),表示用六位位寬輸出,而LONG是表示8為位寬輸出。
同樣的,ANSYS使用NWRITE來輸出當(dāng)前選擇的節(jié)點(diǎn)到文件。其輸入?yún)?shù)與EWRITE的輸入?yún)?shù)的含義相同,只不過沒有位寬的選項(xiàng)。但是節(jié)點(diǎn)的輸出文件的中第一列為節(jié)點(diǎn)號位寬是8位,而第二到第四列為節(jié)點(diǎn)坐標(biāo),各20為位寬,各列之間沒有空格。
在使用C語言讀入網(wǎng)格數(shù)據(jù)的時(shí)候,可以使用上述的文件來讀入.通常比較方便的做法是知道節(jié)點(diǎn)個(gè)數(shù),和單元個(gè)數(shù)然后在依次讀入C程序中。但是上述輸出的單元和節(jié)點(diǎn)的文件并沒有提供這個(gè)信息。
不過可已通過一下方式來產(chǎn)生這種文件:在APDL中先讀取單元數(shù)和節(jié)點(diǎn)數(shù),分別寫入對應(yīng)的單元和節(jié)點(diǎn)文件,然后以追加方式寫節(jié)點(diǎn)和單元文件。
下面是一個(gè)簡單的用C語言讀取二維的三角網(wǎng)格的例子(沒有寫入單元和節(jié)點(diǎn)的個(gè)數(shù),而是通過計(jì)算行數(shù)來得到的)
1 #include
2 #include
3 //ANSYS 's element output format
4
5 char NodeFormat[]="%*8c%20s%20s"; //節(jié)點(diǎn)的行格式
6 char ELongFormat[]="%8d%8d%8d%*40c%8d";//單元文件三角網(wǎng)格的長格式
7 char EShortFormat[]="%6d%6d%6d%*30c%6d";//單元文件三角網(wǎng)格的短格式
8
9
10
11
12 int main(int argc, const char *argv[])
13 {
14 FILE* fp;
15 char buffer[200];
16 char xx[21];
17 char yy[21];
18 int ch;
19 int mat,num;
20 int linenum=0;
21 int a[3]={0};
22 char NodeFile[]="nodelist1.n";//節(jié)點(diǎn)文件
23 char ElemFile[]="elemlist1.e";//單元文件
24
25 fp=fopen(NodeFile,"r");
26
27 //計(jì)算節(jié)點(diǎn)數(shù)目
28 while((ch=fgetc(fp))!=EOF)
29 {
30 if(ch==' ')linenum++;
31 }
32 rewind(fp);
33 printf("節(jié)點(diǎn)數(shù)是%d ",linenum);
34 //讀入節(jié)點(diǎn)的坐標(biāo)
35 while(fgets(buffer,200,fp)!=NULL)
36 {
37 xx[0]='