Back to home page

MITgcm

 
 

    


File indexing completed on 2020-02-28 06:11:24 UTC

view on githubraw file Latest commit 7155c3b3 on 2019-12-26 19:44:01 UTC
9952f046d7 dngo*0001 #include "SHELFICE_OPTIONS.h"
                0002 
                0003 CBOP
                0004 C     !ROUTINE: SHELFICE_REMESHING
                0005 C     !INTERFACE:
                0006       SUBROUTINE SHELFICE_REMESHING(
                0007      I                    myTime, myIter, myThid )
                0008 C     !DESCRIPTION: \bv
                0009 C     *==========================================================*
                0010 C     | SUBROUTINE SHELFICE_REMESHING
                0011 C     | o When myTime is a multiple of SHELFICEremeshFrequency
                0012 C     |   checks if etaN under shelfice triggers a remesh
                0013 C     *==========================================================*
                0014 C     \ev
                0015 
                0016 C     !CALLING SEQUENCE:
                0017 C     SHELFICE_REMESHING
                0018 C       |
                0019 C       |-- SHELFICE_REMESH_C_MASK
7155c3b3df Jean*0020 C       |-- SHELFICE_REMESH_UV_MASK
9952f046d7 dngo*0021 C       |
7155c3b3df Jean*0022 C       |-- CALC_SURF_DR
                0023 C       |-- UPDATE_SURF_DR
                0024 C       |-- CALC_SURF_DR
9952f046d7 dngo*0025 C       |
7155c3b3df Jean*0026 C       |-- SHELFICE_REMESH_STATE
9952f046d7 dngo*0027 C       |
                0028 C       |-- SHELFICE_REMESH_CALC_W
                0029 
                0030 C     !USES:
                0031       IMPLICIT NONE
                0032 C     === Global variables ===
                0033 #include "SIZE.h"
                0034 #include "EEPARAMS.h"
                0035 #include "PARAMS.h"
7155c3b3df Jean*0036 #include "SURFACE.h"
9952f046d7 dngo*0037 #include "DYNVARS.h"
                0038 #include "SHELFICE.h"
                0039 
                0040 C     !INPUT/OUTPUT PARAMETERS:
                0041 C     myTime    :: Current time in simulation
                0042 C     myIter    :: Current iteration number
                0043 C     myThid    :: my Thread Id number
                0044       _RL myTime
                0045       INTEGER myIter
                0046       INTEGER myThid
                0047 
                0048 #ifdef ALLOW_SHELFICE_REMESHING
                0049 C     !FUNCTIONS:
                0050       LOGICAL  DIFFERENT_MULTIPLE
                0051       EXTERNAL DIFFERENT_MULTIPLE
                0052 
                0053 C     !LOCAL VARIABLES:
7155c3b3df Jean*0054 C     k1SurfC   :: surface level index (at cell center) before remeshing
                0055 C     k1SurfW   :: surface level index (at cell W.Edge) before remeshing
                0056 C     k1SurfS   :: surface level index (at cell S.Edge) before remeshing
                0057 C     mergeFacC :: merging weight for tracers (cell center)
                0058 C     mergeFacW :: merging weight for U component velocity
                0059 C     mergeFacS :: merging weight for V component velocity
                0060       INTEGER k1SurfC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0061       INTEGER k1SurfW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0062       INTEGER k1SurfS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0063       _RL mergeFacC(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2,nSx,nSy)
                0064       _RL mergeFacW(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2,nSx,nSy)
                0065       _RL mergeFacS(1-OLx:sNx+OLx,1-OLy:sNy+OLy,2,nSx,nSy)
9952f046d7 dngo*0066 CEOP
                0067 
                0068       IF ( SHELFICEremeshFrequency.GT.zeroRL
                0069      &                        .AND. myTime.GT.baseTime ) THEN
                0070        IF (  DIFFERENT_MULTIPLE( SHELFICEremeshFrequency,
                0071      &                           myTime, deltaTClock ) ) THEN
7155c3b3df Jean*0072          CALL SHELFICE_REMESH_C_MASK(
                0073      O                 k1SurfC, mergeFacC,
                0074      I                 myTime, myIter, myThid )
                0075          CALL SHELFICE_REMESH_UV_MASK(
                0076      O                 k1SurfW, k1SurfS, mergeFacW, mergeFacS,
                0077      I                 myTime, myIter, myThid )
                0078 
                0079          CALL CALC_SURF_DR( etaHnm1, myTime, myIter, myThid )
                0080          CALL UPDATE_SURF_DR(.TRUE., myTime, myIter, myThid )
                0081          CALL CALC_SURF_DR( etaH, myTime, myIter, myThid )
                0082 
                0083          CALL SHELFICE_REMESH_STATE(
                0084      I                 k1SurfC, k1SurfW, k1SurfS, mergeFacC,
                0085      U                 mergeFacW, mergeFacS,
                0086      I                 myTime, myIter, myThid )
                0087          CALL SHELFICE_REMESH_CALC_W(
                0088      I                 uVel, vVel,
                0089      O                 wVel,
                0090      I                 myIter, myThid )
9952f046d7 dngo*0091        ENDIF
                0092       ENDIF
                0093 #endif /* ALLOW_SHELFICE_REMESHING */
                0094 
                0095       RETURN
                0096       END