找回密码
 注册
Simdroid-非首页
查看: 2021|回复: 44

[H. 有限元编程] 用matlab还是用fortran做有限元编程

[复制链接]
发表于 2010-8-6 07:44:55 | 显示全部楼层 |阅读模式 来自 澳大利亚
请问大家,用matlab或fortran做有限元编程各有什么优缺点?只听说matlab做矩阵运算功能强,但如果循环次数多matlab效率低。那么对于有限元编程哪个更好?
发表于 2010-8-6 08:03:04 | 显示全部楼层 来自 浙江杭州
Simdroid开发平台
如果纯粹是搞原理并验证的那种学校科研或者企业研究所预研性质的有限元编程,显然用matlab是比较合适的,容易上手,开发速度快。
如果是商业应用的话,建议C++、Fortran混合编程。
如果lz所在研究组或者单位以前有大量可以用的代码积累,那就另当别论

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-8-6 08:21:24 | 显示全部楼层 来自 美国
fortran
回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-6 09:18:31 | 显示全部楼层 来自 澳大利亚
如果纯粹是搞原理并验证的那种学校科研或者企业研究所预研性质的有限元编程,显然用matlab是比较合适的,容易上手,开发速度快。
如果是商业应用的话,建议C++、Fortran混合编程。
如果lz所在研究组或者单位以前有 ...
pasuka 发表于 2010-8-6 08:03

我现在是属于预研性质的编程,matlab的确容易上手。将来用于实际项目时打算转成fortran. 请问pasuka, 为什么用c++,Fortran混合编程?我没用过c++, 如果从头学,大概需要多长时间能上手?
回复 不支持

使用道具 举报

发表于 2010-8-6 09:36:54 | 显示全部楼层 来自 美国
do not try matlab, the dubugging time may kill you.
回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-6 10:57:30 | 显示全部楼层 来自 澳大利亚
do not try matlab, the dubugging time may kill you.
caoer 发表于 2010-8-6 09:36

请问版主,这是为什么呢?Fortran更容易debug吗?
回复 不支持

使用道具 举报

发表于 2010-8-6 15:19:13 | 显示全部楼层 来自 黑龙江哈尔滨
"do not try matlab, the dubugging time may kill you."这句话很实在

另外之前公开的代码fortran的比较多,可以充分利用。开源的一些代码也可以考虑,要是没有很大的原理上的创新的话,建议在开源代码基础上做二次开发,要不单枪匹马估计几年时间也只够应付一些debug,不要在低层次的重复劳动上花费太多时间。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-8-10 19:59:50 | 显示全部楼层 来自 贵州贵阳
MATLAB对于很多实际问题是不能直接做的,需要自己编写程序解决
回复 不支持

使用道具 举报

发表于 2010-8-14 01:39:28 | 显示全部楼层 来自 美国
强烈建议用fortran, 理由:
1 matlab确实对矩阵的操作很在行,但是fortran对矩阵的操作也不弱,很多像矩阵的相乘,向量和向量的点乘都有matmul, dot_product可以直接调用;而像矩阵的求逆也有很多现成的代码;现在高效的线性方程组求解器(superLU,petsc,taucs...)都是fortran或者是C的接口
2 Fortran 的速度和Matlab根本不是一个数量级上的。在数值计算方面,fortran是速度最快的编译语言了。
3 matlab 写的代码必须要matlab环境才能运行,而Fortran代码没这个要求。
4 Fortran 代码按地址传递参数,节约内存(因为fortran就是在那个一K内存一K金的年代发明的)。解上百万自由度的题目的时候你就知道这个意义了。
所以,除非你只是想编个程序交个作业什么的,否则还是用fortran

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-8-14 20:04:38 | 显示全部楼层 来自 湖北襄阳
众多老师和力学师兄一致推荐fortran
回复 不支持

使用道具 举报

发表于 2010-8-14 22:55:50 | 显示全部楼层 来自 浙江杭州
用matlab吧 个人觉得人机操作性很好 但是fortran比较切合实际
回复 不支持

使用道具 举报

发表于 2010-8-17 08:39:55 | 显示全部楼层 来自 辽宁大连
2# pasuka
这个比较中肯
回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-17 09:48:12 | 显示全部楼层 来自 澳大利亚
强烈建议用fortran, 理由:
1 matlab确实对矩阵的操作很在行,但是fortran对矩阵的操作也不弱,很多像矩阵的相乘,向量和向量的点乘都有matmul, dot_product可以直接调用;而像矩阵的求逆也有很多现成的代码;现在高 ...
xsxcn 发表于 2010-8-14 01:39

谢谢xsxcn,解释的非常清楚,决定将来编写正式代码用Fortran了。
回复 不支持

使用道具 举报

发表于 2010-8-17 19:45:11 | 显示全部楼层 来自 上海长宁区
其实这两种程序各有自己的优点,如果不明确有限元编程的目的是很难取舍的。由于前面大家已经发表了许多宝贵意见,所以这里只举例说明:
    有一个做有限元法研究的数学老师从国外研究回来后,喜欢采用MATLAB进行编程。据他讲是研究计算收敛问题。我个人理解由于研究算法问题,因此如果采用MATLAB则可以方便借鉴其软件中各种工具包以及一些算法,以减少自己编程工作量。
    我曾见过一个在法国的导师给中国的研究生寄来的是MATLAB有限元程序。学生用于方法研究很好用,但是进行实际运算则由于速度太慢,几乎无法使用。
    有一个力学系老师教有限元软件编程,结果领导要求使用FORTRAN编程,可能考虑到现在很多著名的有限元软件都是使用Fortran编程的,此外,采用该软件编程便于很多人分工,只需要定义输入和输出变量就行,因此便于统一管理。
回复 不支持

使用道具 举报

发表于 2010-8-17 20:02:37 | 显示全部楼层 来自 广东深圳
是属于二次开发吗?APDL不行吗?
回复 不支持

使用道具 举报

发表于 2010-8-17 22:14:09 | 显示全部楼层 来自 上海浦东新区
其实这两种程序各有自己的优点,如果不明确有限元编程的目的是很难取舍的。由于前面大家已经发表了许多宝贵意见,所以这里只举例说明:
    有一个做有限元法研究的数学老师从国外研究回来后,喜欢采用MATLAB进行编 ...
liuchanghong 发表于 2010-8-17 19:45

matlab编程如果采用稀疏矩阵存储,运算速度不会比Fortran慢很多,至多差1-2个数量级,且针对程序的热点可以优化代码或者通过与C、Fortran混合编程来进一步提高运算速度的
回复 不支持

使用道具 举报

 楼主| 发表于 2010-8-19 07:00:38 | 显示全部楼层 来自 澳大利亚
是属于二次开发吗?APDL不行吗?
yeye8301 发表于 2010-8-17 20:02

我是用一种新的算法来模拟裂纹扩展,APDL无法实现。我不确定Ansys UPFs可不可以,不知道计算过程中能不能修改单元的连接性,比如说,原来单元节点是1,2,3,4,我要改成1,2,5,6,哪位知道UPFs能否实现?
回复 不支持

使用道具 举报

发表于 2010-8-23 20:09:03 | 显示全部楼层 来自 辽宁沈阳
我用的FORTRAN,相信群众没有错的
回复 不支持

使用道具 举报

发表于 2010-9-2 17:01:25 | 显示全部楼层 来自 江苏南京
从实用性 客户角度出发的话 用C++和Fortran 混合编程 比较好~
回复 不支持

使用道具 举报

发表于 2010-9-12 19:17:38 | 显示全部楼层 来自 陕西西安
Fortran对矩阵操作很方便的,推荐
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-25 15:25 , Processed in 0.048762 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表