Back to home page

MITgcm

 
 

    


File indexing completed on 2024-01-06 06:09:33 UTC

view on githubraw file Latest commit aef96ed3 on 2024-01-05 19:00:20 UTC
a1bffd2f2d Jean*0001 #include "PACKAGES_CONFIG.h"
c53bb77cb3 Alis*0002 #include "CPP_OPTIONS.h"
                0003 
9366854e02 Chri*0004 CBOP
                0005 C     !ROUTINE: INI_PSURF
                0006 C     !INTERFACE:
c53bb77cb3 Alis*0007       SUBROUTINE INI_PSURF( myThid )
9366854e02 Chri*0008 
                0009 C     !DESCRIPTION: \bv
                0010 C     *==========================================================*
c53bb77cb3 Alis*0011 C     | SUBROUTINE INI_PSURF                                     |
71c6a09c16 Jean*0012 C     | o Set model initial free-surface height/pressure.        |
9366854e02 Chri*0013 C     *==========================================================*
c53bb77cb3 Alis*0014 C     | There are several options for setting the initial        |
71c6a09c16 Jean*0015 C     | surface displacement (r unit) field.                     |
c53bb77cb3 Alis*0016 C     |  1. Inline code                                          |
                0017 C     |  2. Two-dimensional data from a file.                    |
9366854e02 Chri*0018 C     *==========================================================*
                0019 C     \ev
c53bb77cb3 Alis*0020 
9366854e02 Chri*0021 C     !USES:
                0022       IMPLICIT NONE
c53bb77cb3 Alis*0023 C     === Global variables ===
                0024 #include "SIZE.h"
                0025 #include "EEPARAMS.h"
                0026 #include "PARAMS.h"
                0027 #include "GRID.h"
71c6a09c16 Jean*0028 #include "DYNVARS.h"
a1bffd2f2d Jean*0029 #include "SURFACE.h"
a5bd9cbb61 Ed H*0030 #ifdef ALLOW_CD_CODE
580e77d53c Jean*0031 # include "CD_CODE_VARS.h"
                0032 #endif
                0033 #ifdef ALLOW_SHELFICE
                0034 # include "SHELFICE.h"
a5bd9cbb61 Ed H*0035 #endif
c53bb77cb3 Alis*0036 
9366854e02 Chri*0037 C     !INPUT/OUTPUT PARAMETERS:
aef96ed361 Jean*0038 C     myThid :: my Thread Id number
c53bb77cb3 Alis*0039       INTEGER myThid
                0040 
9366854e02 Chri*0041 C     !LOCAL VARIABLES:
ff6b861998 Jean*0042 C     bi,bj  :: tiles indices
aef96ed361 Jean*0043 C     i, j   :: Loop counters
c53bb77cb3 Alis*0044       INTEGER bi, bj
aef96ed361 Jean*0045       INTEGER i, j
9366854e02 Chri*0046 CEOP
c53bb77cb3 Alis*0047 
71c6a09c16 Jean*0048 C--   Initialise surface position anomaly to zero
c53bb77cb3 Alis*0049       DO bj = myByLo(myThid), myByHi(myThid)
                0050        DO bi = myBxLo(myThid), myBxHi(myThid)
aef96ed361 Jean*0051         DO j=1-OLy,sNy+OLy
                0052          DO i=1-OLx,sNx+OLx
                0053           etaN(i,j,bi,bj) = 0. _d 0
c53bb77cb3 Alis*0054          ENDDO
                0055         ENDDO
                0056        ENDDO
                0057       ENDDO
                0058 C     Read an initial state
aef96ed361 Jean*0059       IF ( pSurfInitFile .NE. ' ' ) THEN
71c6a09c16 Jean*0060        CALL READ_FLD_XY_RL( pSurfInitFile, ' ', etaN, 0, myThid )
ff6b861998 Jean*0061 C      fill the overlap (+ BARRIER)
12c8b75709 Jean*0062        _EXCH_XY_RL(etaN, myThid)
c53bb77cb3 Alis*0063       ENDIF
71c6a09c16 Jean*0064 
138482fdf6 Ed H*0065 #ifdef ALLOW_CD_CODE
ff6b861998 Jean*0066 C--   By default, initialize etaNm1 with etaN :
71c6a09c16 Jean*0067       DO bj=myByLo(myThid),myByHi(myThid)
                0068        DO bi=myBxLo(myThid),myBxHi(myThid)
aef96ed361 Jean*0069         DO j=1-OLy,sNy+OLy
                0070          DO i=1-OLx,sNx+OLx
                0071           etaNm1(i,j,bi,bj) = etaN(i,j,bi,bj)
71c6a09c16 Jean*0072          ENDDO
                0073         ENDDO
                0074        ENDDO
                0075       ENDDO
                0076 #endif
c53bb77cb3 Alis*0077 
a1bffd2f2d Jean*0078 #ifdef EXACT_CONSERV
ff6b861998 Jean*0079 C--   By default, initialize etaH with etaN :
ad3a31a87b Jean*0080       DO bj=myByLo(myThid),myByHi(myThid)
                0081        DO bi=myBxLo(myThid),myBxHi(myThid)
580e77d53c Jean*0082         DO j=1-OLy,sNy+OLy
                0083          DO i=1-OLx,sNx+OLx
a1bffd2f2d Jean*0084           etaH(i,j,bi,bj) = etaN(i,j,bi,bj)
                0085           etaHnm1(i,j,bi,bj) = etaN(i,j,bi,bj)
                0086           dEtaHdt(i,j,bi,bj) = 0. _d 0
ad3a31a87b Jean*0087          ENDDO
                0088         ENDDO
                0089        ENDDO
                0090       ENDDO
a1bffd2f2d Jean*0091 #endif /* EXACT_CONSERV */
ad3a31a87b Jean*0092 
580e77d53c Jean*0093 #ifdef ALLOW_SHELFICE
                0094       IF ( useShelfIce .AND. usingZCoords ) THEN
                0095         DO bj=myByLo(myThid),myByHi(myThid)
                0096          DO bi=myBxLo(myThid),myBxHi(myThid)
                0097            DO j=1-OLy,sNy+OLy
                0098             DO i=1-OLx,sNx+OLx
                0099               phi0surf(i,j,bi,bj) = phi0surf(i,j,bi,bj)
                0100      &          + shelficeLoadAnomaly(i,j,bi,bj)*recip_rhoConst
                0101             ENDDO
                0102            ENDDO
                0103          ENDDO
                0104         ENDDO
                0105       ENDIF
                0106 #endif /* ALLOW_SHELFICE */
                0107 
c53bb77cb3 Alis*0108       RETURN
                0109       END