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

[3. Fortran] 有用过Fortran IMSLF90的吗?

[复制链接]
发表于 2005-9-13 11:18:31 | 显示全部楼层 |阅读模式 来自 山东济南
有个问题不知道怎么解决了。里面的函数都有其固定的参数。要使用的时候必须把相应的实参数传给他,对吧? 比如我用它的非线性二次规划子程序NCONG
需要
call NCONG (FCN, GRAD, M, ME, N, XGUESS, IBTYPE, XLB, XUB,IPRINT, MAXITN, X, FVALUE)
其中FCN用来求目标函数和约束函数值,也是个子程序:
SUBROUTINE FCN (M, ME, N, X, ACTIVE, F, G)
我的约束函数是结构分析的结果,用它这几个参数根本不够、我试着修改
FCN,但NCONG就无法计算了。
我不知道该如何解决这个问题。希望各位能帮帮我。谢谢了。
发表于 2005-9-13 22:41:51 | 显示全部楼层 来自 美国

Re:有用过Fortran IMSLF90的吗?

Simdroid开发平台
在FCN里面再调用你所需要的函数即可。
 楼主| 发表于 2005-9-14 07:54:03 | 显示全部楼层 来自 山东济南

Re:有用过Fortran IMSLF90的吗?

FCN里面怎么调用啊,调用时需要传递相应的参数啊,而子程序本身才这几个参数。
SUBROUTINE FCN (M, ME, N, X, ACTIVE, F, G)
INTEGER M, ME, N
REAL*8 X(*), F, G(*),epsx,sig,d1,d2,d3,sig_mises
LOGICAL ACTIVE(*)
.
.
.
.
call stress2d(epsx,sig,d1,d2,d3,sig_mises) !比如说要调用这个,可的把相应的参数传过来才行啊。那样的话就的下面这样吧?
SUBROUTINE FCN (M, ME, N, X, ACTIVE, F, G,epsx,sig,d1,d2,d3,sig_mises)
END SUBROUTINE
发表于 2005-9-14 10:31:53 | 显示全部楼层 来自 江苏南京

Re:有用过Fortran IMSLF90的吗?

FORTRAN语句一般可以包括19个续行,即一个语句可包括20行,基本上是够用的~我觉得如果不是需要同时传出传入的参数,一般都可以采取一些措施把它省略~
发表于 2005-9-14 10:36:55 | 显示全部楼层 来自 日本

Re:有用过Fortran IMSLF90的吗?

ALL IMSL function can be generally used. In your case, you should put your variables into array X. Something like

SUBROUTINE FCN (M, ME, N, X, ACTIVE, F, G)
INTEGER M, ME, N
REAL*8 X(, F, G(:),epsx,sig,d1,d2,d3,sig_mises
.
.
expsx=X(N-1)
sig(1:6)=X(1:6)
sig_mises=X(N)
d1=X(?)
d2=X(?)
d3=x(?)
call stress2d(epsx,sig,d1,d2,d3,sig_mises)

END SUBROUTINE

评分

1

查看全部评分

 楼主| 发表于 2005-9-17 08:03:11 | 显示全部楼层 来自 山东济南

Re:有用过Fortran IMSLF90的吗?

谢谢各位大侠的帮助。我这就试试看。非常感谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

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

GMT+8, 2024-11-1 21:34 , Processed in 0.040423 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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