研发埠

标题: 提取ansys单元刚度矩阵 [打印本页]

作者: 勤杂工    时间: 2014-4-3 15:10
标题: 提取ansys单元刚度矩阵
因研究需要,试图从ansys中提取刚度矩阵。参照王新敏老师编写的《ANSYS工程结构数值分析》,在命令流中加入/debug语句即可以将所有单元的刚度矩阵输出到自定义输出文件elemstiff.txt之中。    /solu    /output,elemstiff,txt    /debug,-1,,,1     solve    /output然而elemstiff.txt里面并非只是单元刚度矩阵的数值,还有很多文字信息。如下图所示,只有红色框内是第1个单元的刚度矩阵,以下为其它单元的刚度阵。这种情况与很久以前我尝试进行SAP90结果文件后处理类似,那时是用C实现的,现在改用C#。显然,C#的string使得读取字符串、识别和删除子字符串、字符串与数字转换等操作相比于C/C++变得容易多了。选择C#也使得非专业的程序写手只能苟安于Windows平台的Visual Studio了。      //单元刚度矩阵提取     public void ReadStiffness()     {         string filename = workpath + "elemstiff.txt";         StreamReader rd = new StreamReader(filename);         while (!rd.EndOfStream)         {            string tmp = rd.ReadLine();            int s = tmp.IndexOf("STIFFNESS MATRIX FOR ELEMENT"; // 寻找含子字符串的一行文字            double[,] k = new double[6, 6];            int enumber = 0;            if (s == 6) // 子字符串的起始位置为6,这当然是观察到单元刚度矩阵部分的特征            {             string ss = tmp.Remove(0, 34); //去掉文件部分,34是子字符串结束的位置,识别后即可去掉,仅留下单元号。             enumber = int.Parse(ss); //单元号转为整数             for (int i = 0; i < 6; i++) //读接下来的6行矩阵数值             {                 tmp = rd.ReadLine();                 tmp = tmp.Remove(0, 4); //去除前4位子串                 for (int j = 0; j < 6; j++) // 逐一提取当前行矩阵元素数值                 {                    int pos = tmp.IndexOf('E'); //从字符串中寻找字符'E',这是每个矩阵元素的特征                    string substring = tmp.Substring(0, pos + 4);   //提取当前字符串中第1个数值                    k[i, j] = double.Parse(substring);                    tmp = tmp.Remove(0, pos + 4); //去掉当前字符串中第1个数值                 }              }             //单元刚度矩阵赋值             foreach (Stage istage in stages)             {                 foreach (Element iele in istage.element)                 {                    if (iele.nNumber == enumber)                    {                     iele.GetStiffness(k, 6, 6);    //将刚度矩阵传递给单元对象。当然,这里只是简陋地假定刚度阵是6×6的,其实是可以在读取时就确定刚度阵的维数的。限于时间,没有理会这个问题。                     goto EXIT;                    }                 }             }            EXIT:             continue;            }         }         rd.Close();         return;     }
20140403151002826.jpg
登录/注册后可看大图

作者: 纯彩春丘    时间: 2014-4-25 09:30
谢谢分享~
作者: 鲁志立    时间: 2014-5-5 22:33
非常好1




欢迎光临 研发埠 (http://bbs.yanfabu.com/) Powered by Discuz! X3.2