⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pois.f90

📁 FDS为火灾动力学模拟软件源代码,该软件为开源项目,代码语言主要为FORTRAN,可在WINDOWS和LINUX下编译运行,详细说明可参考http://fire.nist.gov/fds/官方网址
💻 F90
📖 第 1 页 / 共 5 页
字号:
  DO  I=1,L    XT(I,K,MS2+1) = 2._EB*X(I,MS2+1,K)  END DOEND DO404 CONTINUERETURNEND SUBROUTINE VCOST1SUBROUTINE VCOSTA(M,LDIMX,MM1,PL,X,XT)! +--------------------------------------------------------------------+! |                                                                    |! |                       COPYRIGHT (C) 1989 BY                        |! |                          ROLAND A. SWEET                           |! |                        ALL RIGHTS RESERVED                         |! |                                                                    |! +--------------------------------------------------------------------+!     PACKAGE VFFTPAK, VERSION 1, JUNE 1989INTEGER                       :: MINTEGER                       :: LDIMXINTEGER                   :: MM1REAL(EB)   X(LDIMX,M), PL(LDIMX),XT(LDIMX,M)DO  I=1,LDIMX  X(I,1) = XT(I,1)  X(I,2) = PL(I)END DODO  J=4,M,2  DO  I=1,LDIMX    X(I,J) = X(I,J-2)-XT(I,J-1)    X(I,J-1) = XT(I,J-2)  END DOEND DOIF (MOD(M,2) == 0) GO TO 409DO  I=1,LDIMX  X(I,M) = XT(I,MM1)END DO409 CONTINUERETURNEND SUBROUTINE VCOSTASUBROUTINE VCOSTI(N,C,WSAVE)! +--------------------------------------------------------------------+! |                                                                    |! |                       COPYRIGHT (C) 1989 BY                        |! |                          ROLAND A. SWEET                           |! |                        ALL RIGHTS RESERVED                         |! |                                                                    |! +--------------------------------------------------------------------+!     PACKAGE VFFTPAK, VERSION 1, JUNE 1989!     *******   NOTE   ******!     SPECIAL DOCUMENTATION FOR USE OF INTERNAL PARAMETER TPOSE.  IF!     TPOSE = .TRUE., THEN ALL PREPROCESSING ROUTINES TRANSPOSE SECOND!                     AND THIRD INDICES IN PREPARATION FOR TRANSFORM OF!                     ORIGINAL SECOND INDEX.  IF!     TPOSE = .FALSE., THEN ALL PREPROCESSING ROUTINES PREPARE ONLY FOR!                      TRANSFORM OF THIRD INDEX.  TO USE IN THIS CASE,!                      CALL ROUTINE WITH M AND N INTERCHANGED.INTEGER                       :: NREAL(EB)    C(N), WSAVE(N+15)!                               INITIALIZE NOCOPY AND TPOSE TO DEFAULT!                               VALUESNOCOPY = .FALSE.TPOSE = .TRUE.PI = FSH19S()IF (N <= 3) RETURNNP1 = N+1NS2 = N/2DT = PI/(N-1)DO  K=2,NS2  KC = NP1-K  C(K) = 2._EB*SIN((K-1)*DT)  C(KC) = 2._EB*COS((K-1)*DT)END DOCALL VRFFTI (N-1,WSAVE)RETURNEND SUBROUTINE VCOSTISUBROUTINE VRFFTF (M,N,R,MDIMR,RT,WSAVE)! +--------------------------------------------------------------------+! |                                                                    |! |                       COPYRIGHT (C) 1989 BY                        |! |                          ROLAND A. SWEET                           |! |                        ALL RIGHTS RESERVED                         |! |                                                                    |! +--------------------------------------------------------------------+!     PACKAGE VFFTPAK, VERSION 1, JUNE 1989INTEGER                   :: MINTEGER                   :: NINTEGER                   :: MDIMRREAL(EB)   RT(M,N)REAL(EB)   WSAVE(N+15)REAL(EB)         R(MDIMR,N)IF (N == 1) RETURNCALL VRFTF1 (M,N,R,MDIMR,RT,WSAVE(1),WSAVE(N+1))RETURNEND SUBROUTINE VRFFTFSUBROUTINE VRFFTI (N,WSAVE)! +--------------------------------------------------------------------+! |                                                                    |! |                       COPYRIGHT (C) 1989 BY                        |! |                          ROLAND A. SWEET                           |! |                        ALL RIGHTS RESERVED                         |! |                                                                    |! +--------------------------------------------------------------------+!     PACKAGE VFFTPAK, VERSION 1, JUNE 1989INTEGER                   :: NREAL(EB)         WSAVE(N+15)!                               INITIALIZE NOCOPY AND TPOSE TO DEFAULT!                               VALUESNOCOPY = .FALSE.TPOSE = .TRUE.IF (N <= 1) RETURNCALL VRFTI1 (N,WSAVE(1),WSAVE(N+1))RETURNEND SUBROUTINE VRFFTISUBROUTINE VRFTF1 (M,N,C,MDIMC,CH,WA,FAC)! +--------------------------------------------------------------------+! |                                                                    |! |                       COPYRIGHT (C) 1989 BY                        |! |                          ROLAND A. SWEET                           |! |                        ALL RIGHTS RESERVED                         |! |                                                                    |! +--------------------------------------------------------------------+!     PACKAGE VFFTPAK, VERSION 1, JUNE 1989INTEGER                       :: MINTEGER                       :: NINTEGER                   :: MDIMCREAL(EB)    CH(M,N)REAL(EB)   WA(N)REAL(EB)  FAC(15)REAL(EB)         C(MDIMC,N)NF = FAC(2)NA = 1L2 = NIW = NDO  K1=1,NF  KH = NF-K1  IP = FAC(KH+3)  L1 = L2/IP  IDO = N/L2  IDL1 = IDO*L1  IW = IW-(IP-1)*IDO  NA = 1-NA  IF (IP /= 4) GO TO 102  IX2 = IW+IDO  IX3 = IX2+IDO  IF (NA /= 0) GO TO 101  CALL VRADF4 (M,IDO,L1,C,MDIMC,CH,M,WA(IW),WA(IX2),WA(IX3))  GO TO 110  101    CALL VRADF4 (M,IDO,L1,CH,M,C,MDIMC,WA(IW),WA(IX2),WA(IX3))  GO TO 110  102    IF (IP /= 2) GO TO 104  IF (NA /= 0) GO TO 103  CALL VRADF2 (M,IDO,L1,C,MDIMC,CH,M,WA(IW))  GO TO 110  103    CALL VRADF2 (M,IDO,L1,CH,M,C,MDIMC,WA(IW))  GO TO 110  104    IF (IP /= 3) GO TO 106  IX2 = IW+IDO  IF (NA /= 0) GO TO 105  CALL VRADF3 (M,IDO,L1,C,MDIMC,CH,M,WA(IW),WA(IX2))  GO TO 110  105    CALL VRADF3 (M,IDO,L1,CH,M,C,MDIMC,WA(IW),WA(IX2))  GO TO 110  106    IF (IP /= 5) GO TO 108  IX2 = IW+IDO  IX3 = IX2+IDO  IX4 = IX3+IDO  IF (NA /= 0) GO TO 107  CALL VRADF5(M,IDO,L1,C,MDIMC,CH,M,WA(IW),WA(IX2),WA(IX3),WA(IX4))  GO TO 110  107 CALL VRADF5 (M,IDO,L1,CH,M,C,MDIMC,WA(IW),WA(IX2),WA(IX3),WA(IX4))  GO TO 110  108    IF (IDO == 1) NA = 1-NA  IF (NA /= 0) GO TO 109  CALL VRADFG (M,IDO,IP,L1,IDL1,C,C,C,MDIMC,CH,CH,M,WA(IW))  NA = 1  GO TO 110  109    CALL VRADFG (M,IDO,IP,L1,IDL1,CH,CH,CH,M,C,C,MDIMC,WA(IW))  NA = 0  110    L2 = L1END DOOUTARY=.TRUE.IF (NOCOPY) THEN  SCALE=SCALE*SQRT(1.0_EB/REAL(N,EB))  IF (NA==0) THEN    OUTARY=.FALSE.  END IFELSE  SCALE=SQRT(1.0_EB/REAL(N,EB))  IF (NA == 1) GO TO 113  DO  J=1,N    DO  I=1,M      C(I,J) = SCALE*CH(I,J)    END DO  END DO  RETURN  113    DO  J=1,N    DO  I=1,M      C(I,J)=SCALE*C(I,J)    END DO  END DOEND IFRETURNEND SUBROUTINE VRFTF1SUBROUTINE VRFTI1 (N,WA,FAC)! +--------------------------------------------------------------------+! |                                                                    |! |                       COPYRIGHT (C) 1989 BY                        |! |                          ROLAND A. SWEET                           |! |                        ALL RIGHTS RESERVED                         |! |                                                                    |! +--------------------------------------------------------------------+!     PACKAGE VFFTPAK, VERSION 1, JUNE 1989INTEGER                       :: NREAL(EB)   FAC(15)REAL(EB)         WA(N)      , NTRYH(4)DATA NTRYH(1),NTRYH(2),NTRYH(3),NTRYH(4)/4,2,3,5/NL = NNF = 0J = 0101 J = J+1IF (J-4<0) GO TO 102IF (J-4==0) GO TO 102IF (J-4>0) GO TO 103102 NTRY = NTRYH(J)GO TO 104103 NTRY = NTRY+2104 NQ = NL/NTRYNR = NL-NTRY*NQIF (NR<0) GO TO 101IF (NR==0) GO TO 105IF (NR>0) GO TO 101105 NF = NF+1FAC(NF+2) = NTRYNL = NQIF (NTRY /= 2) GO TO 107IF (NF == 1) GO TO 107DO  I=2,NF  IB = NF-I+2  FAC(IB+2) = FAC(IB+1)END DOFAC(3) = 2107 IF (NL /= 1) GO TO 104FAC(1) = NFAC(2) = NFTPI = 2._EB*FSH19S()ARGH = TPI/REAL(N,EB)IS = 0NFM1 = NF-1L1 = 1IF (NFM1 == 0) RETURNDO  K1=1,NFM1  IP = FAC(K1+2)  LD = 0  L2 = L1*IP  IDO = N/L2  IPM = IP-1  DO  J=1,IPM    LD = LD+L1    I = IS    ARGLD = REAL(LD,EB)*ARGH    FI = 0._EB     DO  II=3,IDO,2      I = I+2      FI = FI+1._EB       ARG = FI*ARGLD      WA(I-1) = COS(ARG)      WA(I) = SIN(ARG)    END DO    IS = IS+IDO  END DO  L1 = L2END DORETURNEND SUBROUTINE VRFTI1SUBROUTINE VSCOSB(F,L,M,N,LDIMF,FT,C1,C2,WORK)! +--------------------------------------------------------------------+! |                                                                    |! |                       COPYRIGHT (C) 1989 BY                        |! |                          ROLAND A. SWEET                           |! |                        ALL RIGHTS RESERVED                         |! |                                                                    |! +--------------------------------------------------------------------+!     PACKAGE VFFTPAK, VERSION 1, JUNE 1989INTEGER                   :: LINTEGER                       :: MINTEGER                       :: NINTEGER                       :: LDIMFREAL(EB)   FT(LDIMF*N,M)REAL(EB)  C1(M)REAL(EB)    C2(M)REAL(EB)   WORK(M+15)REAL(EB)   F(LDIMF*N,M)!     TPOSE = .TRUE. IF TRANSFORMING SECOND INDEX (SO TRANSPOSE)!           = .FALSE. IF TRANSFORMING THIRD INDEX!     PREPROCESSINGIF (TPOSE) THEN  CALL VSCSB1(L,M,N,LDIMF,F,FT,C1,C2)ELSE  DO  I=1,LDIMF*N    FT(I,1)=.5_EB*F(I,1)  END DODO  J=2,M  DO  I=1,LDIMF*N    FT(I,J) =(C1(J)*F(I,J)+C2(J)*F(I,M-J+2))  END DOEND DOEND IF!     REAL(EB),PERIODIC ANALYSISCALL VRFFTF(LDIMF*N,M,FT,LDIMF*N,F,WORK)!     POSTPROCESSINGSCALE=SQRT(2.0_EB)*SCALEIF (OUTARY) THEN  CALL VSCSBA(M,N*LDIMF,FT,F)ELSE  CALL VSCSBA(M,N*LDIMF,F,FT)END IFRETURNEND SUBROUTINE VSCOSBSUBROUTINE VSCOSF(F,L,M,N,LDIMF,FT,C1,C2,WORK)! +--------------------------------------------------------------------+! |                                                                    |! |                       COPYRIGHT (C) 1989 BY                        |! |                          ROLAND A. SWEET                           |! |                        ALL RIGHTS RESERVED                         |! |                                                                    |! +--------------------------------------------------------------------+!     PACKAGE VFFTPAK, VERSION 1, JUNE 1989INTEGER                   :: LINTEGER                       :: MINTEGER                       :: NINTEGER                       :: LDIMFREAL(EB)    FT(LDIMF*N,M)REAL(EB)  C1(M)REAL(EB)   C2(M)REAL(EB)   WORK(M+15)REAL(EB)   F(LDIMF*N,M)!     TPOSE = .TRUE. IF TRANSFORMING SECOND INDEX (SO TRANSPOSE)!           = .FALSE. IF TRANSFORMING THIRD INDEX!     PREPROCESSINGSCALE=SQRT(2.0_EB)*SCALEIF (TPOSE) THEN  CALL VSCSF1(L,M,N,LDIMF,F,FT)ELSE  DO  I=1,LDIMF*N    FT(I,1)=F(I,1)  END DOCONTINUEIF (MOD(M,2)==0) THEN  DO  I=1,LDIMF*N    FT(I,M)=F(I,M)  END DOEND IFDO  J=2,M-1,2  DO  I=1,LDIMF*N    FT(I,J)   =  0.5_EB*(F(I,J)+F(I,J+1))    FT(I,J+1) = -0.5_EB*(F(I,J)-F(I,J+1))  END DOEND DOEND IF!     REAL(EB),PERIODIC SYNTHESISCALL VRFFTB(LDIMF*N,M,FT,LDIMF*N,F,WORK)!     POSTPROCESSINGIF (OUTARY) THEN  CALL VSCSFA(M,N*LDIMF,F,FT,C1,C2)ELSE  CALL VSCSFA(M,N*LDIMF,FT,F,C1,C2)END IFRETURNEND SUBROUTINE VSCOSFSUBROUTINE VSCOSI(N,C1,C2,WSAVE)! +--------------------------------------------------------------------+! |                                                                    |! |                       COPYRIGHT (C) 1989 BY                        |! |                          ROLAND A. SWEET                           |! |                        ALL RIGHTS RESERVED                         |! |                                                                    |! +--------------------------------------------------------------------+!     PACKAGE VFFTPAK, VERSION 1, JUNE 1989!      ENTRY VSSINI(N,C1,C2,WSAVE)INTEGER                       :: NREAL(EB)    WSAVE(N+15)REAL(EB)   C1(N),C2(N)PI=FSH19S()DX=PI/(2*N)!     GENERATE A(I)+-B(I)DO  I=1,N  C=COS((I-1)*DX)  S=SIN((I-1)*DX)  C1(I)=.5_EB*(S+C)  C2(I)=.5_EB*(S-C)END DO!     INITIALIZE VRFFTPK ROUTINECALL VRFFTI(N,WSAVE)RETURNEND SUBROUTINE VSCOSISUBROUTINE VSCOSQ(F,L,M,N,LDIMF,FT,C1,C2,C3,C4,WORK)! +--------------------------------------------------------------------+! |                                                                    |! |                       COPYRIGHT (C) 1989 BY                        |! |                          ROLAND A. SWEET                           |! |                        ALL RIGHTS RESERVED                         |! |                                                                    |! +--------------------------------------------------------------------+!     PACKAGE VFFTPAK, VERSION 1, JUNE 1989INTEGER                   :: LINTEGER                       :: MINTEGER                       :: NINTEGER                       :: LDIMFREAL(EB)  FT(LDIMF*N,M)REAL(EB)  C1(M)REAL(EB)  C2(M)REAL(EB)  C3(M)REAL(EB)  C4(M)REAL(EB)  WORK(M+15)REAL(EB)   F(LDIMF*N,M)!     TPOSE = .TRUE. IF TRANSFORMING SECOND INDEX (SO TRANSPOSE)!           = .FALSE. IF TRANSFORMING THIRD INDEX!     PREPROCESSINGIF (TPOSE) THEN   CALL VSCSQ1(L,M,N,LDIMF,F,FT,C1,C2)ELSE   DO  I=1,LDIMF*N      FT(I,1)=F(I,1)   END DO   IF (MOD(M,2)==0) THEN      DO  I=1,LDIMF*N         FT(I,M)=-F(I,M)      END DO

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -