383026016 发表于 2011-6-7 20:07:38

aspen中编译fortran子程序

aspen中编译fortran子程序时,如果里面再有子程序怎么办?
比如
SUBROUTINE USRKNT (N,NCOMP,NR,NRL,NRV,T,TLIQ,TVAP,P,PHFRAC,F,X, Y,IDX,NBOPST,KDIAG,STOIC,IHLBAS,HLDLIQ,TIMLIQ,IHVBAS,HLDVAP,TIMVAP,NINT,INT,NREAL,REAL,RATES,RATEL,RATEV,NINTB,INTB,NREALB,REALB,NIWORK,IWORK,NWORK,WORK)

      IMPLICIT NONE

!DECLARE VARIABLES USED IN DIMENSIONING

      INTEGER NCOMP, NR,    NRV,   NINT,NINTB, NREALB,NIWORK,NWORK, USER_IUMISS
   realUSER_RUMISS

#include "ppexec_user.cmn"
      EQUIVALENCE (RMISS, USER_RUMISS)
      EQUIVALENCE (IMISS, USER_IUMISS)


   !DECLARE ARGUMENTS

      INTEGER NRL(3),IDX(NCOMP),NBOPST(6), INT(NINT),INTB(NINTB),&
            IWORK(NIWORK),N,KDIAG, IHLBAS, IHVBAS,NREAL
      
   REAL*8 PHFRAC(3),X(NCOMP,3),Y(NCOMP),&
             STOIC(NCOMP,NR),RATES(NCOMP),&
             RATEL(1),RATEV(NRV),&
             REALB(NREALB),WORK(NWORK),T,TLIQ,&
             TVAP,P,F,HLDLIQ,TIMLIQ
      REAL*8 HLDVAP,TIMVAP

   !DECLARE LOCAL VARIABLES

      INTEGER IMISS
      REAL*8 REAL(NREAL),RMISS

   !BEGIN EXECUTABLE CODE

      INTEGER I
       REAL*8 C,G,E,R,Dp,K,RATE
       K=f(...)
       RETURN
      END
!其中f(...)为一函数或者为子程序
谢谢了~~~

lidaxue1987 发表于 2011-6-7 21:02:17

好像fortran 子程序之间是可以互相调用的吧,你可以试试吧子程序写在一个文件里面啊

383026016 发表于 2011-6-7 21:10:28

lidaxue1987 发表于 2011-6-7 21:02 static/image/common/back.gif
好像fortran 子程序之间是可以互相调用的吧,你可以试试吧子程序写在一个文件里面啊

SUBROUTINE USRKNT (N,NCOMP,NR,NRL,NRV,T,TLIQ,TVAP,P,PHFRAC,F,X, Y,IDX,NBOPST,KDIAG,STOIC,IHLBAS,HLDLIQ,TIMLIQ,IHVBAS,HLDVAP,TIMVAP,NINT,INT,NREAL,REAL,RATES,RATEL,RATEV,NINTB,INTB,NREALB,REALB,NIWORK,IWORK,NWORK,WORK)

      IMPLICIT NONE

!DECLARE VARIABLES USED IN DIMENSIONING

      INTEGER NCOMP, NR,    NRV,   NINT,NINTB, NREALB,NIWORK,NWORK, USER_IUMISS
   realUSER_RUMISS

#include "ppexec_user.cmn"
      EQUIVALENCE (RMISS, USER_RUMISS)
      EQUIVALENCE (IMISS, USER_IUMISS)


   !DECLARE ARGUMENTS

      INTEGER NRL(3),IDX(NCOMP),NBOPST(6), INT(NINT),INTB(NINTB),&
            IWORK(NIWORK),N,KDIAG, IHLBAS, IHVBAS,NREAL
      
   REAL*8 PHFRAC(3),X(NCOMP,3),Y(NCOMP),&
             STOIC(NCOMP,NR),RATES(NCOMP),&
             RATEL(1),RATEV(NRV),&
             REALB(NREALB),WORK(NWORK),T,TLIQ,&
             TVAP,P,F,HLDLIQ,TIMLIQ
      REAL*8 HLDVAP,TIMVAP

   !DECLARE LOCAL VARIABLES

      INTEGER IMISS
      REAL*8 REAL(NREAL),RMISS

   !BEGIN EXECUTABLE CODE

      INTEGER I
       REAL*8 C,G,E,R,Dp,K,RATE
       CALL F(...)
       RETURN
      END

      SUBROUTINE F(...)
      ............
      END
我这样做的然后生成.dll好像不对吧?

chenhaijunsjy 发表于 2011-6-8 08:49:24

看不懂,还是等待高手

xiangjian 发表于 2013-1-3 00:41:09

我眼中你们都是高手阿{:1106_366:}
页: [1]
查看完整版本: aspen中编译fortran子程序