File indexing completed on 2023-09-03 05:10:48 UTC
view on githubraw file Latest commit 74487008 on 2023-09-03 01:50:18 UTC
0c3d35c9cd Gael*0001 #include "SMOOTH_OPTIONS.h"
0002
9f5240b52a Jean*0003 SUBROUTINE SMOOTH_DIFF3D( fld_in, nbt_in, myThid )
0c3d35c9cd Gael*0004
0005
0006
0007
0008
0009
0010 IMPLICIT NONE
0011 #include "EEPARAMS.h"
0012 #include "SIZE.h"
0013 #include "PARAMS.h"
0014 #include "GRID.h"
0015 #include "SMOOTH.h"
0016
c487ea887f Gael*0017 _RL fld_in(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
9f5240b52a Jean*0018 INTEGER nbt_in
0019 INTEGER myThid
0020
0021 INTEGER i, j, k, bi, bj
0022 INTEGER myIter(nSx,nSy), iloop
0023 _RL gT_in (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
c487ea887f Gael*0024 _RL gTm1_in(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
9f5240b52a Jean*0025 _RL gt_AB (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0c3d35c9cd Gael*0026
9f5240b52a Jean*0027 DO bj=myByLo(myThid),myByHi(myThid)
0028 DO bi=myBxLo(myThid),myBxHi(myThid)
0c3d35c9cd Gael*0029 DO k=1,Nr
c487ea887f Gael*0030 DO j=1-OLy,sNy+OLy
0031 DO i=1-OLx,sNx+OLx
0c3d35c9cd Gael*0032 gT_in(i,j,k,bi,bj) = 0. _d 0
9f5240b52a Jean*0033 gTm1_in(i,j,k,bi,bj) = 0. _d 0
0c3d35c9cd Gael*0034 ENDDO
0035 ENDDO
0036 ENDDO
0037 ENDDO
0038 ENDDO
0039
9f5240b52a Jean*0040 CALL EXCH_XYZ_RL( fld_in, myThid )
0041 CALL EXCH_XYZ_RL( gt_in, myThid )
0042 CALL EXCH_XYZ_RL( gtm1_in, myThid )
0c3d35c9cd Gael*0043
9f5240b52a Jean*0044 DO iloop=1,nbt_in
0c3d35c9cd Gael*0045
9f5240b52a Jean*0046 DO bj=myByLo(myThid),myByHi(myThid)
0047 DO bi=myBxLo(myThid),myBxHi(myThid)
0048 DO k=1,Nr
0049 DO j=1,sNy
0050 DO i=1,sNx
0051 gT_in(i,j,k,bi,bj) = 0. _d 0
0052 ENDDO
0c3d35c9cd Gael*0053 ENDDO
0054 ENDDO
0055 ENDDO
0056 ENDDO
0057
9f5240b52a Jean*0058 CALL EXCH_XYZ_RL( gt_in, myThid )
0c3d35c9cd Gael*0059
0060
7448700841 Mart*0061 CALL SMOOTH_RHS( fld_in, gT_in, myThid )
0c3d35c9cd Gael*0062
9f5240b52a Jean*0063 DO bj=myByLo(myThid),myByHi(myThid)
0064 DO bi=myBxLo(myThid),myBxHi(myThid)
0c3d35c9cd Gael*0065
9f5240b52a Jean*0066 myIter(bi,bj) = iloop-1
0067 DO k=1,Nr
0068 CALL ADAMS_BASHFORTH2(
9d0e3cbad3 Jean*0069 I bi, bj, k, Nr,
0070 U gT_in(1-OLx,1-OLy,1,bi,bj),
0071 U gTm1_in(1-OLx,1-OLy,1,bi,bj), gt_AB,
0072 I 0, myIter(bi,bj), myThid )
9f5240b52a Jean*0073 ENDDO
0c3d35c9cd Gael*0074
9f5240b52a Jean*0075 DO k=1,Nr
0076 DO j=1-OLy,sNy+OLy
0077 DO i=1-OLx,sNx+OLx
0078 IF (maskC(i,j,k,bi,bj).NE.0.) THEN
0079 fld_in(i,j,k,bi,bj) = fld_in(i,j,k,bi,bj)
0080 & + smooth3DdelTime*gT_in(i,j,k,bi,bj)
0081 gT_in(i,j,k,bi,bj) = 0
0082 ENDIF
0083 ENDDO
0c3d35c9cd Gael*0084 ENDDO
0085 ENDDO
0086
9f5240b52a Jean*0087 IF ( smooth3DdoImpldiff ) THEN
0c3d35c9cd Gael*0088 CALL SMOOTH_IMPLDIFF(
0089 I bi, bj, 1, sNx, 1, sNy ,
0090 I smooth3DdelTime, smooth3D_kappaR(1-OLx,1-OLy,1,bi,bj),
0091 I recip_hFacC,
0092 U fld_in,
0093 I myThid )
9f5240b52a Jean*0094 ENDIF
0c3d35c9cd Gael*0095
9f5240b52a Jean*0096 ENDDO
0c3d35c9cd Gael*0097 ENDDO
0098
9f5240b52a Jean*0099 CALL EXCH_XYZ_RL ( fld_in , myThid )
0100 CALL EXCH_XYZ_RL ( gt_in , myThid )
0101 CALL EXCH_XYZ_RL ( gtm1_in , myThid )
0c3d35c9cd Gael*0102
9f5240b52a Jean*0103 ENDDO
0c3d35c9cd Gael*0104
9f5240b52a Jean*0105 RETURN
0c3d35c9cd Gael*0106 END