.Net ( c# ) 与 Fortran 混合编程实例(二):杆系结构有限元法——平面桁架解答(2)...
第二节 桁架结构基本信息录入与保存
此节之后会结合一个算例。结构如图,EA = 300000 kN
杆件编号、节点编号、坐标系:
2.1 文本信息
bars.txt
1,1,3,300000
2,2,3,300000
3,4,3,300000
4,2,4,300000
nodes.txt
1,0,3,1,1,0,0
2,0,0,1,1,0,0
3,4,3,0,0,0,-20
4,4,0,0,0,30,0
2.2 静态类 ClassBasicInfo 存放基本结构数据
新建类库,命名为 Business,添加对 PlaceUsingTxt.dll 的引用,新建类,命名为 ClassBasicInfo,贴入以下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Business
{public static class ClassBasicInfo{public static int[,] BarsNodes;//杆件节点编号public static Single[] LinearStiffness;//杆件刚度public static Single[,] Coordinate;//节点坐标public static bool[,] Restraint;//节点约束public static Single[,] Loads;//节点荷载public static Single[,] TatalStiffnessMatrix;//总刚度矩阵public static Single[] TatalDisplacement;//总位移列阵public static Single[] TatalLoads;//总荷载列阵public static bool[] TatalRestraint;//总边界条件}
}
2.3 对静态类赋值
新建类,命名为 ClassGetBasicInfo,贴入以下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;using PlaceUsingTxt;namespace Business
{public class ClassGetBasicInfo{public int NumBars;//杆件数public int NumNodes;//节点数public void InitBars(string StrBars){//初始化杆件信息ClassReadTxt crt = new ClassReadTxt(StrBars);string[,] tempstr = crt.OutStr2D();crt.close();//取得杆件数NumBars = tempstr.GetLength(0);ClassBasicInfo.BarsNodes = new int[NumBars, 2];ClassBasicInfo.LinearStiffness = new Single[NumBars];for (int i = 0; i < NumBars; i++){ClassBasicInfo.BarsNodes[i, 0] = Convert.ToInt32(tempstr[i, 1]);//杆件起点编号ClassBasicInfo.BarsNodes[i, 1] = Convert.ToInt32(tempstr[i, 2]);//杆件终点编号ClassBasicInfo.LinearStiffness[i] = Convert.ToSingle(tempstr[i, 3]);//杆件刚度}}public void InitNodes(string StrNodes){//初始化节点信息ClassReadTxt crt2 = new ClassReadTxt(StrNodes);string[,] temps = crt2.OutStr2D();crt2.close();//取得节点数NumNodes = temps.GetLength(0);ClassBasicInfo.Coordinate = new Single[NumNodes, 2];ClassBasicInfo.Restraint = new bool[NumNodes, 2];ClassBasicInfo.Loads = new Single[NumNodes, 2];for (int i = 0; i < NumNodes; i++){ClassBasicInfo.Coordinate[i, 0] = Convert.ToSingle(temps[i, 1]);//节点x坐标ClassBasicInfo.Coordinate[i, 1] = Convert.ToSingle(temps[i, 2]);//节点y坐标ClassBasicInfo.Restraint[i, 0] = Convert.ToBoolean(Convert.ToInt32(temps[i, 3]));//节点x方向约束ClassBasicInfo.Restraint[i, 1] = Convert.ToBoolean(Convert.ToInt32(temps[i, 4]));//节点y方向约束ClassBasicInfo.Loads[i, 0] = Convert.ToSingle(temps[i, 5]);//节点x方向荷载ClassBasicInfo.Loads[i, 1] = Convert.ToSingle(temps[i, 6]);//节点y方向荷载}}//初始化有限元法基本方程矩阵public void InitMatrix(){ClassBasicInfo.TatalStiffnessMatrix = new Single[NumNodes * 2,NumNodes * 2];//总刚度矩阵ClassBasicInfo.TatalDisplacement = new Single[NumNodes * 2];//总位移列阵ClassBasicInfo.TatalLoads = new Single[NumNodes * 2];//总荷载列阵ClassBasicInfo.TatalRestraint = new bool[NumNodes * 2];//总边界条件}//接口public void Initialize(string StrBars,string StrNodes){this.InitBars(StrBars);this.InitNodes(StrNodes);this.InitMatrix();}}
}
至此,完成基本信息的存放,以静态数组的方式储存,方便全局范围的访问。
其中,PlaceUsingTxt.dll 的源码参见:http://blog.csdn.net/silyvin/article/details/6758196
转载于:https://www.cnblogs.com/silyvin/archive/2011/10/08/9106923.html
.Net ( c# ) 与 Fortran 混合编程实例(二):杆系结构有限元法——平面桁架解答(2)...相关推荐
- .Net ( c# ) 与 Fortran 混合编程实例(二):杆系结构有限元法——平面桁架解答(3)
第三节 构造有限元法基本方程 3.1 形成未引入边界的总刚度矩阵.总荷载列阵.总边界列阵 新建类,命名为 ClassCalculation,贴入以下代码: using System; using ...
- QML和C++混合编程--(二)
文章目录 QML和C++混合编程--(二)之QML连接C++方法和信号 简介: 一.修改app.qml 文件 二.修改c++中的类 QML和C++混合编程–(二)之QML连接C++方法和信号 简介: ...
- MFC编程实例二:进度条的使用
MFC编程实例二:进度条的使用 (以下蓝色字体为手动添加的代码) (1) 创建一个基于对话框的应用程序. (2) 在对话框界面添加一个文本框.一个进度条控件(Progress控件)和一个按钮. ...
- python和C语言混合编程实例
转载自:http://www.jb51.net/article/50633.htm 这篇文章主要介绍了python和C语言混合编程实例,文中开发了一个tcp端口ping程序来介绍混合编程,需要的朋友可 ...
- 平面/空间杆系结构有限元编程计算(MATLAB)
GitHub链接:MATLAB源码 博主QQ:915339719,有问题可以随时交流 程序简介 本程序可以对绝大多数的平面/空间杆系结构进行静力学计算.自振频率计算,以及平面杆系结构的稳定性计算,具有 ...
- python fortran混合编程_python fortran c 混合编程
背景 因为编程需要使用python和fortran(或者c,c++)混合编程,所以进行了一些资料查询和实验.首先尝试了f2py,但是这个项目已经很久没有更新,为了以后兼容性考虑(后期可能会使用到c++ ...
- ESP8266-Arduino编程实例-二维码(QR Code)生成与TFT LCD显示
二维码(QR Code)生成与TFT LCD显示 QR 码(快速响应码的缩写)是一种矩阵条码(或二维条码,由日本汽车公司 Denso Wave 于 1994 年发明.条形码是一种机器可读的光学标签,可 ...
- MPI和OpenMP混合编程实例
MPI和OpenMP混合编程 计算pi值 大体思路就是先将计算区域划分成100000 份,然后将计算分成进程数nproc(nproc)份,每一份有nbin个计算. 步长为step = 1.0 / NB ...
- windows机制下的游戏编程实例二
通过调用DirectX SDK库实现游戏空间的三维化,也就是我们通常玩的网游,鼠标拖着主角到处跑去完成任务(个人觉得这种游戏超无聊).下面先给出效果图: 还是先给出其文件目录吧,从总体把握实例,也是很 ...
最新文章
- insert 语句的选择列表包含的项多于插入列表中的项_如何定义和使用Python列表(Lists)
- NLP重大突破?一文读懂XLNet“屠榜”背后的原理
- 15_多子图-Subplot、Subplot: 使用多个figures和 axes、替代解决方案:
- java操作elasticsearch实现前缀查询、wildcard、fuzzy模糊查询、ids查询
- Datatables参数详解
- 计算机网络(9)-----TCP可靠传输的实现
- Python还能走多远?
- 整理Java基础知识--数组2
- 推荐一个强大的串口监控软件(免费)
- linux 3t 硬盘无法识别,希捷(3T)硬盘故障处理备忘
- 小刘的刷题日记——day1 【CSES】Weird Algorithm
- 准确测量模型预测误差
- IDEA debug或启动报错:maven-resources-production:XXX:java.lang.NegativeArraySizeException
- PAT 乙级 1020 月饼
- [网易2017实习生编程题] 魔力手环
- LBS的球面距离计算及Geohash方案探讨(LBS之一)
- 如何在matlab中表示e,Matlab中表达e的操作方法介绍
- SEO优化,外链重要还是友情链接重要?
- iOS越狱插件: Icon Tool 可定位文件目录和备份资料等功能
- 同态加密Paillier