File indexing completed on 2021-06-27 05:11:48 UTC
view on githubraw file Latest commit 4e4ad91a on 2021-06-26 16:30:07 UTC
f12f84b0ce Jean*0001 #include "SEAICE_OPTIONS.h"
0002
0003
0004
0005
0006 SUBROUTINE SEAICE_DIFFUSION(
0007 I tracerIdentity,
6d78fc5463 Gael*0008 I diffKh, fac,
f12f84b0ce Jean*0009 I iceFld, iceMask, xA, yA,
0010 U gFld,
0011 I bi, bj, myTime, myIter, myThid )
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 IMPLICIT NONE
0022
0023
0024 #include "SIZE.h"
0025 #include "EEPARAMS.h"
0026 #include "PARAMS.h"
0027 #include "GRID.h"
7303eab4f2 Patr*0028 #include "SEAICE_SIZE.h"
f12f84b0ce Jean*0029 #include "SEAICE_PARAMS.h"
0030
0031
0032
0033
0034
0035
0036
0037 _RL iceFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0038 _RL gFld (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0039 _RL iceMask(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
0040 _RS xA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0041 _RS yA (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
6d78fc5463 Gael*0042 _RL diffKh, fac
f12f84b0ce Jean*0043 INTEGER tracerIdentity
0044 INTEGER bi,bj
0045 _RL myTime
0046 INTEGER myIter
0047 INTEGER myThid
e0fa1cecbf Mart*0048 #ifdef ALLOW_GENERIC_ADVDIFF
37de51ebf5 Mart*0049 #ifdef ALLOW_DIAGNOSTICS
0050 CHARACTER*8 diagName
0051 CHARACTER*4 SEAICE_DIAG_SUFX, diagSufx
0052 EXTERNAL SEAICE_DIAG_SUFX
0053 #endif
f12f84b0ce Jean*0054
0055
0056
0057
0058
0059 INTEGER i, j, k
0060 _RL fZon (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0061 _RL fMer (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0062
6d78fc5463 Gael*0063 IF ( diffKh .GT. 0. _d 0 ) THEN
37de51ebf5 Mart*0064 #ifdef ALLOW_DIAGNOSTICS
0065
0066 IF ( useDiagnostics ) THEN
0067 diagSufx = SEAICE_DIAG_SUFX( tracerIdentity, myThid )
0068 ENDIF
0069 #endif
f12f84b0ce Jean*0070
0071 k = 1
4e4ad91a39 Jean*0072 DO j=1-OLy,sNy+OLy
0073 DO i=1-OLx,sNx+OLx
f12f84b0ce Jean*0074 fZon (i,j) = 0. _d 0
0075 fMer (i,j) = 0. _d 0
0076 ENDDO
0077 ENDDO
0078
6d78fc5463 Gael*0079 CALL GAD_DIFF_X(bi,bj,k,xA,diffKh,iceFld,fZon,myThid)
f12f84b0ce Jean*0080
6d78fc5463 Gael*0081 CALL GAD_DIFF_Y(bi,bj,k,yA,diffKh,iceFld,fMer,myThid)
f12f84b0ce Jean*0082
4e4ad91a39 Jean*0083 DO j=1-OLy,sNy+OLy-1
0084 DO i=1-OLx,sNx+OLx-1
f12f84b0ce Jean*0085 gFld(i,j)= gFld(i,j)
6d78fc5463 Gael*0086 & - fac*iceMask(i,j,bi,bj)*recip_rA(i,j,bi,bj)
f12f84b0ce Jean*0087 & *( (fZon(i+1,j)-fZon(i,j))
0088 & + (fMer(i,j+1)-fMer(i,j)) )
0089 ENDDO
0090 ENDDO
37de51ebf5 Mart*0091 #ifdef ALLOW_DIAGNOSTICS
0092
0093
6d78fc5463 Gael*0094 IF ( useDiagnostics .AND. diffKh.NE.0. ) THEN
37de51ebf5 Mart*0095 diagName = 'DFxE'//diagSufx
0096 CALL DIAGNOSTICS_FILL(fZon,diagName, k,1, 2,bi,bj, myThid)
0097 diagName = 'DFyE'//diagSufx
0098 CALL DIAGNOSTICS_FILL(fMer,diagName, k,1, 2,bi,bj, myThid)
0099 ENDIF
0100 #endif
f12f84b0ce Jean*0101
0102 ENDIF
e0fa1cecbf Mart*0103 #endif /* ALLOW_GENERIC_ADVDIFF */
f12f84b0ce Jean*0104
0105 RETURN
0106 END