有用过Fortran IMSLF90的吗?
有个问题不知道怎么解决了。里面的函数都有其固定的参数。要使用的时候必须把相应的实参数传给他,对吧? 比如我用它的非线性二次规划子程序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就无法计算了。
我不知道该如何解决这个问题。希望各位能帮帮我。谢谢了。
Re:有用过Fortran IMSLF90的吗?
在FCN里面再调用你所需要的函数即可。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
Re:有用过Fortran IMSLF90的吗?
FORTRAN语句一般可以包括19个续行,即一个语句可包括20行,基本上是够用的~我觉得如果不是需要同时传出传入的参数,一般都可以采取一些措施把它省略~Re:有用过Fortran IMSLF90的吗?
ALL IMSL function can be generally used. In your case, you should put your variables into array X. Something likeSUBROUTINE 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
Re:有用过Fortran IMSLF90的吗?
谢谢各位大侠的帮助。我这就试试看。非常感谢。
页:
[1]