Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:37:21 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
cdcb187d4c Jean*0001 #include "AIM_OPTIONS.h"
                0002 #ifdef ALLOW_THSICE
                0003 #include "THSICE_OPTIONS.h"
                0004 #endif
                0005 
                0006 CBOP
                0007 C     !ROUTINE: AIM_SICE2AIM
                0008 C     !INTERFACE:
                0009       SUBROUTINE AIM_SICE2AIM(
9c764e2eeb Jean*0010      I               land_frc,
6a69f6f181 Jean*0011      U               aimTsoce, aimSIfrc,
9c764e2eeb Jean*0012      O               aimTsice, aimAlb,
6a69f6f181 Jean*0013      I               myTime, myIter, bi, bj, myThid )
cdcb187d4c Jean*0014 
                0015 C     !DESCRIPTION: \bv
                0016 C     *================================================================*
                0017 C     | S/R AIM_SICE2AIM
                0018 C     | provide surface Boundary Conditions over sea-ice
                0019 C     | (from thsice pkg) to atmospheric physics package AIM
                0020 C     *================================================================*
                0021 C     *================================================================*
                0022 C     \ev
                0023 
                0024 C     !USES:
                0025       IMPLICIT NONE
                0026 
                0027 C     == Global variables ===
                0028 C-- size for MITgcm & Physics package :
                0029 #include "AIM_SIZE.h"
                0030 
                0031 C-- MITgcm
                0032 #include "EEPARAMS.h"
                0033 #include "PARAMS.h"
                0034 
                0035 C-- Physics package
                0036 #include "AIM_PARAMS.h"
                0037 #include "com_forcon.h"
                0038 
                0039 #ifdef ALLOW_THSICE
                0040 C-- Sea-Ice package
                0041 #include "THSICE_SIZE.h"
                0042 #include "THSICE_PARAMS.h"
                0043 #include "THSICE_VARS.h"
65d8b97200 Jean*0044       INTEGER siLo, siHi, sjLo, sjHi
                0045       PARAMETER ( siLo = 1-OLx , siHi = sNx+OLx )
                0046       PARAMETER ( sjLo = 1-OLy , sjHi = sNy+OLy )
22e821eefb Jean*0047 #endif /* ALLOW_THSICE */
431b7a8056 Jean*0048 
cdcb187d4c Jean*0049 C     !INPUT/OUTPUT PARAMETERS:
                0050 C     == Routine arguments ==
                0051 C     land_frc :: land fraction [0-1]
                0052 C     aimTsoce :: sea surface temp [K], used in AIM
                0053 C     aimSIfrc :: sea-ice fraction [0-1]
                0054 C     aimTsice :: sea-ice (or snow) surface temp (K), used in AIM
                0055 C     aimAlb   :: sea-ice albedo [0-1], used in AIM
                0056 C     myTime   :: Current time of simulation ( s )
                0057 C     myIter   :: Current iteration number in simulation
6a69f6f181 Jean*0058 C     bi,bj    :: Tile index
cdcb187d4c Jean*0059 C     myThid   :: Number of this instance of the routine
                0060       _RS  land_frc(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
                0061       _RL  aimTsoce(sNx,sNy)
                0062       _RL  aimSIfrc(sNx,sNy)
                0063       _RL  aimTsice(sNx,sNy)
                0064       _RL  aimAlb(sNx,sNy)
                0065       INTEGER myIter, bi, bj, myThid
                0066       _RL myTime
                0067 CEOP
                0068 
                0069 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0070 
                0071 #ifdef ALLOW_AIM
                0072 #ifdef ALLOW_THSICE
                0073 
                0074 C     == Local variables ==
                0075 C     i,j          :: Loop counters
                0076       INTEGER i,j
                0077 
                0078       IF ( .TRUE. ) THEN
                0079 C-    Use thsice-pkg output instead of prescribed Temp & ice fraction
                0080         DO j=1,sNy
                0081          DO i=1,sNx
                0082            aimTsice(i,j) = Tsrf(i,j,bi,bj)+celsius2K
                0083            aimSIfrc(i,j) = iceMask(i,j,bi,bj)
                0084          ENDDO
                0085         ENDDO
                0086       ELSE
                0087 C-    Fill in thsice-pkg Temp. using AIM surf. fields
                0088         DO j=1,sNy
                0089          DO i=1,sNx
                0090            Tsrf (i,j,bi,bj) = aimTsice(i,j)-celsius2K
                0091            Tice1(i,j,bi,bj) = Tsrf (i,j,bi,bj)
                0092            Tice2(i,j,bi,bj) = Tsrf (i,j,bi,bj)
                0093            iceMask(i,j,bi,bj) = aimSIfrc(i,j)
                0094          ENDDO
                0095         ENDDO
                0096       ENDIF
                0097 
                0098       IF ( .TRUE. ) THEN
6a69f6f181 Jean*0099 C-     Compute albedo over sea-ice
65d8b97200 Jean*0100         CALL THSICE_ALBEDO(
                0101      I          bi, bj, siLo, siHi, sjLo, sjHi,
                0102      I          1, sNx, 1, sNy,
                0103      I          iceMask(siLo,sjLo,bi,bj), iceHeight(siLo,sjLo,bi,bj),
                0104      I          snowHeight(siLo,sjLo,bi,bj), Tsrf(siLo,sjLo,bi,bj),
                0105      I          snowAge(siLo,sjLo,bi,bj),
8d7aa9e635 Jean*0106      O          siceAlb(siLo,sjLo,bi,bj), icAlbNIR(siLo,sjLo,bi,bj),
65d8b97200 Jean*0107      I          myTime, myIter, myThid )
cdcb187d4c Jean*0108         DO j=1,sNy
                0109          DO i=1,sNx
65d8b97200 Jean*0110           aimAlb(i,j) = siceAlb(i,j,bi,bj)
cdcb187d4c Jean*0111          ENDDO
                0112         ENDDO
                0113       ELSE
                0114 C-    Surface Albedo : (from F.M. FORDATE S/R)
                0115         DO j=1,sNy
                0116          DO i=1,sNx
                0117            aimAlb(i,j) = ALBICE
                0118          ENDDO
                0119         ENDDO
                0120       ENDIF
                0121 
9c764e2eeb Jean*0122 C-- fill in ocean mixed layer variables
                0123 C   notes: this replace reading initial conditions from files.
                0124 C          needs to be done before call to phy_driver (since freezing
cdcb187d4c Jean*0125 C          temp. is fct of salinity) ; but would be better somewhere else.
6a69f6f181 Jean*0126       IF ( tauRelax_MxL .EQ. -1. _d 0
cdcb187d4c Jean*0127      &     .OR. ( stepFwd_oceMxL  .AND. StartIceModel.NE.0
                0128      &                            .AND. myIter.EQ.nIter0   )
22e821eefb Jean*0129      &     .OR. ( myIter.EQ.0 .AND. myTime.EQ.baseTime
                0130      &                        .AND. .NOT.useCoupler )
cdcb187d4c Jean*0131      &   ) THEN
                0132         DO j=1,sNy
                0133          DO i=1,sNx
                0134           IF ( land_frc(i,j,bi,bj) .LT. 1. _d 0 ) THEN
                0135            tOceMxL(i,j,bi,bj) = aimTsoce(i,j)-celsius2K
                0136            sOceMxL(i,j,bi,bj) = sMxL_default
                0137           ENDIF
                0138          ENDDO
                0139         ENDDO
6a69f6f181 Jean*0140         IF ( myIter.EQ.nIter0 ) THEN
                0141 C-- Over-write the initial T,S_MxL files with the correct fields
                0142           CALL WRITE_LOCAL_RL( 'ice_tOceMxL', 'I10', 1,
22e821eefb Jean*0143      &                         tOceMxL(1-OLx,1-OLy,bi,bj),
6a69f6f181 Jean*0144      &                         bi, bj, 1, myIter, myThid )
                0145           CALL WRITE_LOCAL_RL( 'ice_sOceMxL', 'I10', 1,
22e821eefb Jean*0146      &                         sOceMxL(1-OLx,1-OLy,bi,bj),
6a69f6f181 Jean*0147      &                         bi, bj, 1, myIter, myThid )
                0148         ENDIF
9c764e2eeb Jean*0149       ELSE
                0150 C-- Use ocean mixed layer Temp as Atmos. SST (instead of prescribed Temp)
                0151         DO j=1,sNy
                0152          DO i=1,sNx
                0153           IF ( land_frc(i,j,bi,bj) .LT. 1. _d 0 ) THEN
                0154            aimTsoce(i,j) = tOceMxL(i,j,bi,bj)+celsius2K
                0155           ENDIF
                0156          ENDDO
                0157         ENDDO
cdcb187d4c Jean*0158       ENDIF
                0159 
                0160 #endif /* ALLOW_THSICE */
                0161 #endif /* ALLOW_AIM */
                0162 
                0163       RETURN
                0164       END