Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:44:32 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
f141670dc2 Jean*0001 #include "THSICE_OPTIONS.h"
                0002 #ifdef ALLOW_SALT_PLUME
                0003 # include "SALT_PLUME_OPTIONS.h"
                0004 #endif
                0005 
                0006 CBOP
                0007 C     !ROUTINE: THSICE_SALT_PLUME
                0008 C     !INTERFACE:
                0009       SUBROUTINE THSICE_SALT_PLUME(
281cce82f4 Jean*0010      I                  sOce,
                0011      I                  frzSeaWat,
f141670dc2 Jean*0012      I                  iMin,iMax, jMin,jMax, bi, bj,
281cce82f4 Jean*0013      I                  myTime, myIter, myThid )
f141670dc2 Jean*0014 
                0015 C     !DESCRIPTION: \bv
                0016 C     *==========================================================*
                0017 C     | SUBROUTINE THSICE_SALT_PLUME
                0018 C     | o Interface Routine to pkg/salt_plume:
                0019 C     |   Fill in saltPlumeFlux array (see SALT_PLUME.h)
                0020 C     *==========================================================*
                0021 C     \ev
                0022 C     !USES:
                0023       IMPLICIT NONE
                0024 
                0025 C     === Global variables ===
                0026 #include "EEPARAMS.h"
                0027 #include "SIZE.h"
                0028 #include "PARAMS.h"
                0029 #include "THSICE_PARAMS.h"
                0030 #ifdef ALLOW_SALT_PLUME
                0031 # include "SALT_PLUME.h"
                0032 #endif
ae89a28819 Jean*0033 #ifdef ALLOW_ATM_COMPON_INTERF
                0034 # include "CPL_PARAMS.h"
                0035 # include "ATMCPL.h"
                0036 #endif
f141670dc2 Jean*0037 
                0038 C     !INPUT/OUTPUT PARAMETERS:
281cce82f4 Jean*0039 C     sOce       :: surface level oceanic salinity [g/kg]
                0040 C     frzSeaWat  :: seawater freezing rate (expressed as mass flux) [kg/m^2/s]
                0041 C     iMin,iMax  :: computation domain: 1rst index range
                0042 C     jMin,jMax  :: computation domain: 2nd  index range
                0043 C     bi,bj      :: tile indices
                0044 C     myTime     :: current Time of simulation [s]
                0045 C     myIter     :: current Iteration number in simulation
                0046 C     myThid     :: my Thread Id number
                0047       _RL     sOce     (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0048       _RL     frzSeaWat(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
f141670dc2 Jean*0049       INTEGER iMin, iMax
                0050       INTEGER jMin, jMax
                0051       INTEGER bi,bj
                0052       _RL     myTime
                0053       INTEGER myIter
                0054       INTEGER myThid
                0055 CEOP
                0056 
ae89a28819 Jean*0057 #if defined(ALLOW_SALT_PLUME) || defined(ALLOW_ATM_COMPON_INTERF)
f141670dc2 Jean*0058 C     !LOCAL VARIABLES:
ae89a28819 Jean*0059       LOGICAL fillCplVar
f141670dc2 Jean*0060       INTEGER i,j
ae89a28819 Jean*0061       _RL locVar(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0062 #ifdef ALLOW_ATM_COMPON_INTERF
                0063       _RL cplTimeFraction
                0064 #endif
                0065 
                0066       fillCplVar = .FALSE.
                0067 #ifdef ALLOW_ATM_COMPON_INTERF
                0068       IF ( useCoupler ) fillCplVar = atm_cplExch_SaltPl
                0069 #endif
f141670dc2 Jean*0070 
ae89a28819 Jean*0071       IF ( useSALT_PLUME .OR. fillCplVar ) THEN
f141670dc2 Jean*0072 C-    Initialisation:
ae89a28819 Jean*0073         DO j=1-OLy,sNy+OLy
                0074          DO i=1-OLx,sNx+OLx
                0075            locVar(i,j) = 0. _d 0
                0076          ENDDO
f141670dc2 Jean*0077         ENDDO
281cce82f4 Jean*0078 C-    salt rejected when seawater freeze (frw2oc < 0, frzSeaWat > 0):
ae89a28819 Jean*0079         DO j = jMin, jMax
                0080          DO i = iMin, iMax
                0081            locVar(i,j) = frzSeaWat(i,j)*( sOce(i,j) - saltIce )
                0082          ENDDO
f141670dc2 Jean*0083         ENDDO
ae89a28819 Jean*0084       ENDIF
f141670dc2 Jean*0085 
ae89a28819 Jean*0086 #ifdef ALLOW_SALT_PLUME
                0087       IF ( useSALT_PLUME ) THEN
                0088 C-    Take a fraction of it to store in saltPlumeFlux ; used for
                0089 C     vertical redistribution in water column (see pkg in Salt-Plume)
                0090         DO j=1-OLy,sNy+OLy
                0091          DO i=1-OLx,sNx+OLx
                0092            saltPlumeFlux(i,j,bi,bj) = locVar(i,j)*SPsalFRAC
                0093          ENDDO
                0094         ENDDO
                0095       ENDIF
f141670dc2 Jean*0096 #endif /* ALLOW_SALT_PLUME */
                0097 
ae89a28819 Jean*0098 #ifdef ALLOW_ATM_COMPON_INTERF
                0099       IF ( fillCplVar ) THEN
                0100 C-    Cumulate salt-flux for export to Coupler interface
                0101 C Note: SPsalFRAC will be applied when Ocean Compon is applying
                0102 C       CPL-imported field to saltPlumeFlux in S/R SALT_PLUME_DO_EXCH
                0103         cplTimeFraction = 1. _d 0 / DFLOAT(cplSendFrq_iter)
                0104         saltPlmFlxTime(bi,bj) = saltPlmFlxTime(bi,bj) + cplTimeFraction
                0105         DO j=1,sNy
                0106          DO i=1,sNx
                0107            saltPlmFlx_cpl(i,j,bi,bj) = saltPlmFlx_cpl(i,j,bi,bj)
                0108      &                               + locVar(i,j)*cplTimeFraction
                0109          ENDDO
                0110         ENDDO
                0111       ENDIF
                0112 #endif
                0113 
                0114 #endif /* ALLOW_SALT_PLUME or ALLOW_ATM_COMPON_INTERF */
                0115 
f141670dc2 Jean*0116       RETURN
                0117       END