Back to home page

MITgcm

 
 

    


File indexing completed on 2021-12-14 06:10:29 UTC

view on githubraw file Latest commit 73a44896 on 2021-10-25 03:57:51 UTC
3fd4b811ee Jean*0001 #include "ATM_CPL_OPTIONS.h"
5a2fc21c93 Jean*0002 
                0003 CBOP
                0004 C     !ROUTINE: ATM_APPLY_IMPORT
                0005 C     !INTERFACE:
10dcab6431 Jean*0006       SUBROUTINE ATM_APPLY_IMPORT(
5a2fc21c93 Jean*0007      I               land_frc,
10dcab6431 Jean*0008      U               atmSST, atmSIfrc,
5a2fc21c93 Jean*0009      I               myTime, myIter, bi, bj, myThid )
                0010 
                0011 C     !DESCRIPTION: \bv
                0012 C     *================================================================*
                0013 C     | S/R ATM_APPLY_IMPORT
10dcab6431 Jean*0014 C     | o Apply imported coupling data to ATM surface BC over ocean
5a2fc21c93 Jean*0015 C     *================================================================*
                0016 C     | Note: when using sea-ice, fill in Mixed layer fields instead
10dcab6431 Jean*0017 C     |      to be used later as SST by Atmos. + Sea-Ice
5a2fc21c93 Jean*0018 C     *================================================================*
                0019 C     \ev
                0020 
                0021 C     !USES:
                0022       IMPLICIT NONE
                0023 
                0024 C     == Global variables ===
                0025 #include "SIZE.h"
                0026 #include "EEPARAMS.h"
                0027 #include "PARAMS.h"
                0028 #include "CPL_PARAMS.h"
                0029 
                0030 #ifdef ALLOW_THSICE
                0031 # include "THSICE_VARS.h"
                0032 #endif
                0033 
                0034 C-- Coupled to the Ocean :
                0035 #include "ATMCPL.h"
                0036 
                0037 C     !INPUT/OUTPUT PARAMETERS:
                0038 C     == Routine arguments ==
                0039 C     land_frc :: land fraction [0-1]
10dcab6431 Jean*0040 C     atmSST   :: sea surface temp [K], used in ATM component
                0041 C     atmSIfrc :: sea-ice fraction [0-1], used in ATM component
5a2fc21c93 Jean*0042 C     myTime   :: Current time of simulation ( s )
                0043 C     myIter   :: Current iteration number in simulation
                0044 C     bi,bj    :: Tile index
                0045 C     myThid   :: Number of this instance of the routine
                0046       _RS  land_frc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
10dcab6431 Jean*0047       _RL  atmSST  (sNx,sNy)
                0048       _RL  atmSIfrc(sNx,sNy)
5a2fc21c93 Jean*0049       _RL myTime
                0050       INTEGER myIter, bi, bj, myThid
                0051 CEOP
                0052 
                0053 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0054 
                0055 #ifdef COMPONENT_MODULE
                0056 C     == Local variables ==
                0057 C     i,j    :: Loop counters
                0058       INTEGER i,j
                0059 
                0060 #ifdef ALLOW_THSICE
353165edec Jean*0061       IF ( useImportThSIce .AND. useThSIce ) THEN
                0062        IF ( MOD(myIter,cplSendFrq_iter).EQ.0 ) THEN
                0063 C--   Put thSIce imported fields from the ocean component in thSIce common block
                0064         DO j=1,sNy
                0065          DO i=1,sNx
                0066            iceMask   (i,j,bi,bj) = sIceFrac_cpl (i,j,bi,bj)
                0067            iceHeight (i,j,bi,bj) = sIceThick_cpl(i,j,bi,bj)
                0068            snowHeight(i,j,bi,bj) = sIceSnowH_cpl(i,j,bi,bj)
                0069            Qice1     (i,j,bi,bj) = sIceQ1_cpl   (i,j,bi,bj)
                0070            Qice2     (i,j,bi,bj) = sIceQ2_cpl   (i,j,bi,bj)
                0071          ENDDO
                0072         ENDDO
                0073        ENDIF
                0074 C--   end if useImportThSIce & useThSIce
                0075       ENDIF
                0076 #endif /* ALLOW_THSICE */
                0077 
                0078 #ifdef ALLOW_THSICE
5a2fc21c93 Jean*0079       IF ( useThSIce ) THEN
                0080 C--   Put fields from the ocean component in Mixed-layer arrays:
                0081 
                0082 C-    fill in hOceMxL with Mixed-layer Depth from the ocean component
10dcab6431 Jean*0083        IF ( useImportMxlD ) THEN
5a2fc21c93 Jean*0084         DO j=1,sNy
                0085          DO i=1,sNx
                0086           IF ( land_frc(i,j,bi,bj) .LT. 1. ) THEN
                0087             hOceMxL(i,j,bi,bj) = ocMxlD(i,j,bi,bj)
                0088           ENDIF
                0089          ENDDO
                0090         ENDDO
                0091        ENDIF
                0092 
                0093 C-    fill in tOceMxL with Sea-Surface Temp. from the ocean component
10dcab6431 Jean*0094        IF ( useImportSST ) THEN
5a2fc21c93 Jean*0095         DO j=1,sNy
                0096          DO i=1,sNx
                0097           IF ( land_frc(i,j,bi,bj) .LT. 1. ) THEN
                0098             tOceMxL(i,j,bi,bj) = SSTocn(i,j,bi,bj)
                0099           ENDIF
                0100          ENDDO
                0101         ENDDO
                0102        ENDIF
                0103 
                0104 C-    fill in sOceMxL with Sea-Surf Salinity from the ocean component
10dcab6431 Jean*0105        IF ( useImportSSS ) THEN
5a2fc21c93 Jean*0106         DO j=1,sNy
                0107          DO i=1,sNx
                0108           IF ( land_frc(i,j,bi,bj) .LT. 1. ) THEN
                0109             sOceMxL(i,j,bi,bj) = SSSocn(i,j,bi,bj)
                0110           ENDIF
                0111          ENDDO
                0112         ENDDO
                0113        ENDIF
                0114 
                0115 C-    fill in v2ocMxL with surf. velocity^2  from the ocean component
10dcab6431 Jean*0116        IF ( useImportVsq ) THEN
5a2fc21c93 Jean*0117         DO j=1,sNy
                0118          DO i=1,sNx
                0119           IF ( land_frc(i,j,bi,bj) .LT. 1. ) THEN
                0120             v2ocMxL(i,j,bi,bj) = vSqocn(i,j,bi,bj)
                0121           ENDIF
                0122          ENDDO
                0123         ENDDO
                0124        ENDIF
                0125 
10dcab6431 Jean*0126       ELSEIF ( useAtm_Phys ) THEN
353165edec Jean*0127 #else /* ALLOW_THSICE */
10dcab6431 Jean*0128       IF ( useAtm_Phys ) THEN
5a2fc21c93 Jean*0129 #endif /* ALLOW_THSICE */
10dcab6431 Jean*0130 C--   supply imported fields to Atm_Phys pkg:
                0131 
                0132        IF ( useImportSST ) THEN
                0133         DO j=1,sNy
                0134          DO i=1,sNx
73a448969e Jean*0135           IF ( ocMxlD(i,j,bi,bj) .GT. 0. ) THEN
10dcab6431 Jean*0136             atmSST(i,j) = SSTocn(i,j,bi,bj)+celsius2K
73a448969e Jean*0137           ENDIF
10dcab6431 Jean*0138          ENDDO
                0139         ENDDO
                0140        ENDIF
                0141 
                0142       ELSE
                0143 C--   supply imported fields to AIM (Phys) pkg:
5a2fc21c93 Jean*0144 
                0145        IF ( useImportSST ) THEN
                0146         DO j=1,sNy
                0147          DO i=1,sNx
                0148           IF ( land_frc(i,j,bi,bj) .LT. 1. ) THEN
                0149 
                0150 C--   take SST from the ocean compon where Sea-Ice fraction is zero
10dcab6431 Jean*0151            IF ( atmSIfrc(i,j).EQ.0. ) THEN
                0152             atmSST(i,j) = SSTocn(i,j,bi,bj)+celsius2K
5a2fc21c93 Jean*0153            ELSEIF ( SSTocn(i,j,bi,bj).GE. -1. _d 0)  THEN
                0154 C--   take SST from the ocean compon if clearly warmer than freezing
                0155 C       then reset sea-ice fraction
10dcab6431 Jean*0156             atmSST(i,j) = SSTocn(i,j,bi,bj)+celsius2K
                0157             atmSIfrc(i,j) = 0.
5a2fc21c93 Jean*0158            ENDIF
                0159 
                0160           ENDIF
                0161          ENDDO
                0162         ENDDO
                0163        ENDIF
                0164 
                0165 C-- if useThSIce / else / endif
                0166       ENDIF
                0167 
                0168 #endif /* COMPONENT_MODULE */
                0169 
                0170       RETURN
                0171       END