程序补充:
SUBROUTINE
FN(N,X,Y,Z)
IMPLICIT
REAL(A-H,O-Z)
PARAMETER
(a=180,L=210,G=120)
DIMENSION
R(N,N),X(N),Y(N),Z(N)
CALL
DISTANCE(N,X,Y,Z,R)
FX=0
DO
I=1,N
DO
J=1,N
DO
K=1,N
F1=EXP(G/(R(I,J)-a)+G/(R(I,K)-a))
F2=((R(I,J)2+R(I,K)2-R(J,K)2)/(2R(I,J)R(I,K))+1/3)2
FX=FX+LF1F2
ENDDO
ENDDO
ENDDO
RETURN
END
SUBROUTINE
FT(N,X,Y,Z)
IMPLICIT
REAL(A-H,O-Z)
PARAMETER
(c=7049556277,d=06022245584,P=4,Q=0,a=180)
DIMENSION
R(N,N),X(N),Y(N),Z(N)
CALL
DISTANCE(N,X,Y,Z,R)
FY=0
DO
I=1,N
DO
J=1,N
IF(R(I,J)LTa)
THEN
FY=FY+c((d(-P))-R(I,J)(-Q))EXP(1/(R(I,J)-a))
ELSE
FY=0
ENDIF
ENDDO
ENDDO
RETURN
END
SUBROUTINE
ENERGY(N,X,Y,Z)
IMPLICIT
REAL(A-H,O-Z)
DIMENSION
X(N),Y(N),Z(N)
CALL
FN(N,X,Y,Z)
CALL
FT(N,X,Y,Z)
E=FX+FY
RETURN
END
DO
I=1,N
DO
J=1,N
DO
K=1,N
F1=EXP(G/(R(I,J)-a)+G/(R(I,K)-a))
F2=((R(I,J)2+R(I,K)2-R(J,K)2)/(2R(I,J)R(I,K))+1/3)2
FX=FX+LF1F2
ENDDO
ENDDO
ENDDO
RETURN
END
第一种方法:
1 建立工作目录/ ]"
2 将ABAQUS安装目录\64-pr11\site下的aba_param_dpinc 或 aba_param_spinc拷贝到工作目录,并改名为aba_paraminc;
3 将编译的fortran程序拷贝到工作目录;
4 将obj文件拷贝到工作目录;
5 建立好输入文件inp;
6 运行abaqus job=inp_name user=fortran name即可。
第二种方法:
在Job模块里,创建工作,在Edit Job对话框中选择General选项卡,在User subroutine file中点击Select按钮,从d出对话框中选择你要调用的子程序文件(后缀为for或f)。
不知道楼主对编译过程了解多少?
你的程序可能是源代码,Fortran的以前没有写过,熟悉的是C/C++的源代码,运行之前,要通过编译链接成可以执行的2进制代码文件,然后才可以运行。你的这个也差不多。
首先找到你的Linux主机的合适的编译器,比如g77,f77或者直接用gcc的子集。
有Makefile就很好了。你也可以看一下有么有configure文件。估计你的源代码比较多,所以自动编译比较好。关于可以用的编译器,你可以参考这个说明:>
CALL SUBROUTINE CCC(X,Z,NX,T)
改为
CALL CCC(X,Z,NX,T)
另外,
IF(X(KX)LEZ) GO TO 24
这一行,没有24可以跳转,检查一下应该跳转到哪儿
以上就是关于FORTRAN 程序问题,子程序无法调用 导致无法运算结果。急!!!全部的内容,包括:FORTRAN 程序问题,子程序无法调用 导致无法运算结果。急!!!、abaqus怎么用fortran怎么编写子程序、如何在linux下运行Fortran主程序,其中主程序还调用了子程序。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)