Back to home page

MITgcm

 
 

    


File indexing completed on 2022-01-06 06:12:26 UTC

view on githubraw file Latest commit 9f5240b5 on 2022-01-05 15:24:45 UTC
7b8b86ab99 Timo*0001 #include "CTRL_OPTIONS.h"
                0002 #ifdef ALLOW_EXF
                0003 # include "EXF_OPTIONS.h"
                0004 #endif
                0005 
                0006 C--   File ctrl_get_mask.F:
                0007 C--    Contents:
                0008 C--    o CTRL_GET_MASK3D
                0009 C--    o CTRL_GET_MASK2D
                0010 
                0011 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0012 
                0013 CBOP
                0014 C     !ROUTINE: CTRL_GET_MASK3D
                0015 C     !INTERFACE:
                0016       SUBROUTINE CTRL_GET_MASK3D(
                0017      I      xx_filename,
                0018      U      mask3D,
                0019      I      myThid )
                0020 
                0021 C     !DESCRIPTION: \bv
                0022 C     *=================================================================
                0023 C     | SUBROUTINE CTRL_GET_MASK3D
                0024 C     | o A simple routine to return the correct 3D mask for each ctrl
                0025 C     |   variable
                0026 C     | o Only important for a few cases: e.g.
                0027 C     |   - uvel/vvel need maskW/S rather than maskC
                0028 C     |   - in shelfice domain, need special 2D masks
                0029 C     *=================================================================
                0030 C     \ev
                0031 
                0032 C     !USES:
                0033       IMPLICIT NONE
                0034 
                0035 C     == global variables ==
                0036 #include "SIZE.h"
                0037 #include "EEPARAMS.h"
                0038 #include "PARAMS.h"
                0039 #include "GRID.h"
                0040 
                0041 C     !INPUT/OUTPUT PARAMETERS:
                0042       CHARACTER*(MAX_LEN_FNAM) xx_filename
                0043       _RS mask3D(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)
                0044       INTEGER myThid
                0045 
                0046 C     !LOCAL VARIABLES:
                0047 CEOP
                0048 
                0049 C --- Initial velocity
                0050 #if (defined (ALLOW_UVEL0_CONTROL) && defined (ALLOW_VVEL0_CONTROL))
                0051       IF (xx_filename(1:7).EQ.'xx_uvel') THEN
                0052         CALL CTRL_CPRSRS(maskW,Nr,mask3D,Nr,myThid)
                0053       ELSEIF (xx_filename(1:7).EQ.'xx_vvel') THEN
                0054         CALL CTRL_CPRSRS(maskS,Nr,mask3D,Nr,myThid)
                0055       ELSE
                0056 #else
                0057       IF (.TRUE.) THEN
                0058 #endif
                0059 C --- Set to maskC by default
                0060         CALL CTRL_CPRSRS(maskC, Nr, mask3D, Nr, myThid)
                0061       ENDIF
                0062 
                0063       RETURN
                0064       END
                0065 
                0066 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0067 
                0068 C     !ROUTINE: CTRL_GET_MASK2D
                0069 C     !INTERFACE:
                0070       SUBROUTINE CTRL_GET_MASK2D(
                0071      I      xx_filename,
                0072      U      mask2D,
                0073      I      myThid )
                0074 
                0075 C     !DESCRIPTION: \bv
                0076 C     *=================================================================
                0077 C     | SUBROUTINE CTRL_GET_MASK2D
                0078 C     | o A simple routine to return the correct 2D mask for each ctrl
                0079 C     |   variable.
                0080 C     | o 2D mask is in XY plane
                0081 C     | o Only important for a few cases: e.g.
                0082 C     |   - uvel/vvel need maskW/S rather than maskC
                0083 C     |   - in shelfice domain, need special 2D masks
                0084 C     *=================================================================
                0085 C     \ev
                0086 
                0087 C     !USES:
                0088       IMPLICIT NONE
                0089 
                0090 C     == global variables ==
                0091 #include "SIZE.h"
                0092 #include "EEPARAMS.h"
                0093 #include "PARAMS.h"
                0094 #include "GRID.h"
                0095 #ifdef ALLOW_SHELFICE
                0096 # include "SHELFICE.h"
                0097 #endif
                0098 #ifdef ALLOW_EXF
                0099 # include "EXF_PARAM.h"
                0100 #endif
                0101 
                0102 C     !INPUT/OUTPUT PARAMETERS:
                0103       CHARACTER*(MAX_LEN_FNAM) xx_filename
                0104       _RS mask2D(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0105       INTEGER myThid
                0106 
                0107 C     !LOCAL VARIABLES:
                0108       LOGICAL iAmDone
                0109 CEOP
                0110 
                0111       iAmDone = .FALSE.
                0112 
                0113 C --- Shelfice
                0114 #ifdef ALLOW_SHELFICE
                0115       IF ((xx_filename(1:11).EQ.'xx_shicoeff').OR.
                0116      &    (xx_filename(1:11).EQ.'xx_shicdrag').OR.
                0117      &    (xx_filename(1:11).EQ.'xx_shifwflx')) THEN
                0118         CALL CTRL_CPRSRS(maskSHI, Nr, mask2D, 1, myThid)
                0119         iAmDone = .TRUE.
                0120       ENDIF
                0121 #endif
                0122 
                0123 C --- Wind stress. Wind speed always uses maskC
                0124 #ifndef ALLOW_ROTATE_UV_CONTROLS
                0125 # ifdef ALLOW_EXF
                0126       IF (stressIsOnCgrid) THEN
                0127 # endif
                0128         IF (xx_filename(1:7).EQ.'xx_tauu') THEN
                0129           CALL CTRL_CPRSRS(maskW, Nr, mask2D, 1, myThid)
                0130           iAmDone = .TRUE.
                0131         ELSEIF (xx_filename(1:7).EQ.'xx_tauv') THEN
                0132           CALL CTRL_CPRSRS(maskS, Nr, mask2D, 1, myThid)
                0133           iAmDone = .TRUE.
                0134         ENDIF
                0135 # ifdef ALLOW_EXF
                0136       ENDIF
                0137 # endif
                0138 #endif
                0139 
                0140 C --- Set to maskC by default, if not set
                0141       IF (.NOT.iAmDone) CALL CTRL_CPRSRS(maskC, Nr, mask2D, 1, myThid)
                0142 
                0143       RETURN
                0144       END