ANSYS輸出的單元和節點檔案的C語言讀入

來源:互聯網
上載者:User

 

ANSYS中使用EWRITE來輸出當前選擇的單元到檔案。他的參數為

EWRITE, Fname, Ext, --, KAPPND, Format

其中前兩個分別是檔案名稱和尾碼,KAPPND表明是否清空單元檔案來進行輸出(用0和1 表示),Format則是說明輸出文
件的位寬,其中SHORT是預設選項,表示用六位位寬輸出,而LONG是表示8為位寬輸出。
同樣的,ANSYS使用NWRITE來輸出當前選擇的節點到檔案。其輸入參數與EWRITE的輸入參數的含義相同,只不過沒有位寬
的選項。但是節點的輸出檔案的中第一列為節點號位寬是8位,而第二到第四列為節點座標,各20為位寬,各列之間沒
有空格。

在使用C語言讀入網格資料的時候,可以使用上述的檔案來讀入.通常比較方便的做法是知道節點個數,和單元個數然後
在依次讀入C程式中。但是上述輸出的單元和節點的檔案並沒有提供這個資訊。
不過可已通過一下方式來產生這種檔案:在APDL中先讀取單元數和節點數,分別寫入對應的單元和節點檔案,然後以追

加方式寫節點和單元檔案。

下面是一個簡單的用C語言讀取二維的三角網格的例子(沒有寫入單元和節點的個數,而是通過計算行數來得到的)

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 //ANSYS 's element output format
 4 
 5 char NodeFormat[]="%*8c%20s%20s";     //節點的行格式
 6 char ELongFormat[]="%8d%8d%8d%*40c%8d";//單元檔案三角網格的長格式
 7 char EShortFormat[]="%6d%6d%6d%*30c%6d";//單元檔案三角網格的短格式
 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";//節點檔案
23     char ElemFile[]="elemlist1.e";//單元檔案
24 
25     fp=fopen(NodeFile,"r");
26 
27 //計算節點數目
28     while((ch=fgetc(fp))!=EOF)
29     {
30         if(ch=='\n')linenum++;
31     }
32     rewind(fp);
33     printf("節點數是%d\n",linenum);
34 //讀入節點的座標
35     while(fgets(buffer,200,fp)!=NULL)
36     {
37         xx[0]='\0';
38         yy[0]='\0';
39         sscanf(buffer,NodeFormat,xx,yy);
40         printf("%f,%f\n",atof(xx),atof(yy));
41     }
42     fclose(fp);
43 
44     fp=fopen(ElemFile,"r");
45     int linenum=0;//計算單元的數目

46     while((ch=fgetc(fp))!=EOF)
47     {
48         if(ch=='\n')linenum++;
49     }
50     rewind(fp);
51     printf("單元數是%d\n",linenum);
52 //讀入單元
53     while(fgets(buffer,200,fp)!=NULL)
54     {
55         sscanf(buffer,EshortFormat,&a[0],&a[1],&a[2],&mat);
56         printf("%8d %8d %8d  %8d\n",a[0],a[1],a[2],mat);
57     }
58     fclose(fp);
59 
60 
61     return 0;
62 }
63 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.