File indexing completed on 2021-03-12 06:10:59 UTC
view on githubraw file Latest commit fed64613 on 2021-02-21 02:33:06 UTC
6b924d96b1 Jean*0001 #include "CPP_OPTIONS.h"
0002
0003
0004
0005
0006 SUBROUTINE ADAMS_BASHFORTH3(
94e3f14b29 Jean*0007 I bi, bj, kArg, kSize,
6b924d96b1 Jean*0008 U gTracer, gTrNm,
38e8b1b15b Jean*0009 O AB_gTr,
43065bee0a Jean*0010 I startAB, myIter, myThid )
6b924d96b1 Jean*0011
0012
43065bee0a Jean*0013
0014
0015
0016
0017
0018
6b924d96b1 Jean*0019
0020
43065bee0a Jean*0021
0022
6b924d96b1 Jean*0023
0024
0025
0026
0027
43065bee0a Jean*0028
0029
0030
0031
0032
0033
6b924d96b1 Jean*0034
0035
0036
0037
38e8b1b15b Jean*0038
6b924d96b1 Jean*0039
0040
0041 IMPLICIT NONE
0042
0043 #include "SIZE.h"
0044 #include "EEPARAMS.h"
0045 #include "PARAMS.h"
0046
0047
0048
43065bee0a Jean*0049
0050
0051
fed646132e Jean*0052
38e8b1b15b Jean*0053
23a7f3050f Jean*0054
0055
0056
0057
38e8b1b15b Jean*0058
117ee419f5 Jean*0059
6b924d96b1 Jean*0060
38e8b1b15b Jean*0061
94e3f14b29 Jean*0062 INTEGER bi, bj, kArg, kSize
23a7f3050f Jean*0063 _RL gTracer(1-OLx:sNx+OLx,1-OLy:sNy+OLy,kSize)
fed646132e Jean*0064 _RL gTrNm (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy,2)
38e8b1b15b Jean*0065 _RL AB_gTr (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
117ee419f5 Jean*0066 INTEGER startAB
6b924d96b1 Jean*0067 INTEGER myIter, myThid
0068
0069 #ifdef ALLOW_ADAMSBASHFORTH_3
0070
0071
fed646132e Jean*0072
0073
6b924d96b1 Jean*0074
0075
fed646132e Jean*0076 INTEGER i,j, k, kl, m1,m2
6b924d96b1 Jean*0077 _RL ab0, ab1, ab2
0078
0079
972c0130ec Jean*0080 m1 = 1 + MOD(myIter+1,2)
0081 m2 = 1 + MOD( myIter ,2)
6b924d96b1 Jean*0082
0083
117ee419f5 Jean*0084 IF ( myIter.EQ.nIter0 .AND. startAB.EQ.0 ) THEN
38e8b1b15b Jean*0085 ab0 = 0. _d 0
6b924d96b1 Jean*0086 ab1 = 0. _d 0
0087 ab2 = 0. _d 0
117ee419f5 Jean*0088 ELSEIF ( (myIter.EQ.nIter0 .AND. startAB.EQ.1)
0089 & .OR. (myIter.EQ.1+nIter0 .AND. startAB.EQ.0) ) THEN
38e8b1b15b Jean*0090 ab0 = alph_AB
6b924d96b1 Jean*0091 ab1 = -alph_AB
0092 ab2 = 0. _d 0
0093 ELSE
38e8b1b15b Jean*0094 ab0 = alph_AB + beta_AB
6b924d96b1 Jean*0095 ab1 = -alph_AB - 2.*beta_AB
0096 ab2 = beta_AB
0097 ENDIF
0098
0099
0100
43065bee0a Jean*0101 IF ( kArg.EQ.0 ) THEN
0102
94e3f14b29 Jean*0103 DO k=1,kSize
0104 DO j=1-OLy,sNy+OLy
0105 DO i=1-OLx,sNx+OLx
23a7f3050f Jean*0106 AB_gTr(i,j) = ab0*gTracer(i,j,k)
38e8b1b15b Jean*0107 & + ab1*gTrNm(i,j,k,bi,bj,m1)
0108 & + ab2*gTrNm(i,j,k,bi,bj,m2)
23a7f3050f Jean*0109 gTrNm(i,j,k,bi,bj,m2) = gTracer(i,j,k) + AB_gTr(i,j)
43065bee0a Jean*0110 ENDDO
0111 ENDDO
0112 ENDDO
0113 ELSE
0114
fed646132e Jean*0115 kl = kArg
0116 k = MIN( kArg, kSize )
94e3f14b29 Jean*0117 DO j=1-OLy,sNy+OLy
0118 DO i=1-OLx,sNx+OLx
23a7f3050f Jean*0119 AB_gTr(i,j) = ab0*gTracer(i,j,k)
fed646132e Jean*0120 & + ab1*gTrNm(i,j,kl,bi,bj,m1)
0121 & + ab2*gTrNm(i,j,kl,bi,bj,m2)
0122 gTrNm(i,j,kl,bi,bj,m2) = gTracer(i,j,k)
23a7f3050f Jean*0123 gTracer(i,j,k) = gTracer(i,j,k) + AB_gTr(i,j)
43065bee0a Jean*0124 ENDDO
0125 ENDDO
0126
0127 ENDIF
6b924d96b1 Jean*0128
0129 #endif /* ALLOW_ADAMSBASHFORTH_3 */
0130
0131 RETURN
0132 END