Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:38:19 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
8ac664a04c Step*0001 #include "GCHEM_OPTIONS.h"
                0002 
6cebf9fc9a Jean*0003 CBOP
                0004 C     !ROUTINE: CFC12_SURFFORCING
                0005 C     !INTERFACE:
                0006       SUBROUTINE CFC12_SURFFORCING(
                0007      I                          pTr_CFC12, AtmosCFC12,
                0008      O                          fluxCFC12,
                0009      I                          bi, bj, iMin, iMax, jMin, jMax,
                0010      I                          myTime, myIter, myThid )
                0011 
                0012 C     !DESCRIPTION:
                0013 C     *==========================================================*
                0014 C     | SUBROUTINE CFC12_SURFFORCING
                0015 C     | o Calculate the CFC12 air-sea fluxes
                0016 C     *==========================================================*
                0017 
                0018 C     !USES:
8ac664a04c Step*0019       IMPLICIT NONE
                0020 
                0021 C     == GLobal variables ==
                0022 #include "SIZE.h"
                0023 #include "EEPARAMS.h"
                0024 #include "PARAMS.h"
                0025 #include "GRID.h"
3247fa4f0b Jean*0026 #include "DYNVARS.h"
8ac664a04c Step*0027 #include "CFC.h"
                0028 
6cebf9fc9a Jean*0029 C     !INPUT/OUTPUT PARAMETERS:
                0030 C     pTr_CFC12  :: ocean CFC12 concentration
                0031 C     AtmosCFC12 :: atmospheric CFC12 field
                0032 C     fluxCFC12  :: air-sea CFC12 fluxes
                0033 C     bi, bj     :: current tile indices
                0034 C     iMin,iMax  :: computation domain, 1rst index bounds
                0035 C     jMin,jMax  :: computation domain, 2nd  index bounds
                0036 C     myTime     :: current time in simulation
                0037 C     myIter     :: current iteration number
                0038 C     myThid     :: my Thread Id number
                0039       _RL  pTr_CFC12 (1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
                0040       _RL  AtmosCFC12(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0041       _RL  fluxCFC12 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0042       INTEGER bi, bj
                0043       INTEGER iMin, iMax, jMin, jMax
8ac664a04c Step*0044       _RL myTime
6cebf9fc9a Jean*0045       INTEGER myIter, myThid
                0046 CEOP
8ac664a04c Step*0047 
                0048 #ifdef ALLOW_PTRACERS
                0049 #ifdef ALLOW_CFC
                0050 
6cebf9fc9a Jean*0051 C     !LOCAL VARIABLES:
                0052 C i, j, k - Loop counters
                0053       INTEGER i,j,k
8ac664a04c Step*0054 C Solubility relation coefficients
                0055       _RL SchmidtNocfc12(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0056       _RL SolCFC12(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
3247fa4f0b Jean*0057 c     _RL cfc12sat(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
8ac664a04c Step*0058       _RL Kwexch(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0059       _RL Csat(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
                0060       _RL ttemp, ttemp2
                0061 
6cebf9fc9a Jean*0062       k=1
8ac664a04c Step*0063 
                0064 C calculate SCHMIDT NO. for O2
                0065         DO j=jMin,jMax
6cebf9fc9a Jean*0066          DO i=iMin,iMax
                0067            IF ( maskC(i,j,k,bi,bj).NE.zeroRS ) THEN
8ac664a04c Step*0068 C calculate SCHMIDT NO. for CFC12
6cebf9fc9a Jean*0069              SchmidtNocfc12(i,j) =
                0070      &            sca_12_1
8ac664a04c Step*0071      &          + sca_12_2 * theta(i,j,k,bi,bj)
6cebf9fc9a Jean*0072      &          + sca_12_3 * theta(i,j,k,bi,bj)*theta(i,j,k,bi,bj)
                0073      &          + sca_12_4 * theta(i,j,k,bi,bj)*theta(i,j,k,bi,bj)
8ac664a04c Step*0074      &                *theta(i,j,k,bi,bj)
                0075 c calculate solubility for CFC12
6cebf9fc9a Jean*0076              ttemp=( theta(i,j,k,bi,bj) + 273.16 _d 0)* 0.01 _d 0
                0077              ttemp2=( B3_12 * ttemp + B2_12 )*ttemp + B1_12
                0078              SolCFC12(i,j) =
                0079      &           EXP ( A1_12
8ac664a04c Step*0080      &           +  A2_12 / ttemp
                0081      &           +  A3_12 * log( ttemp )
                0082      &           +  A4_12 * ttemp * ttemp
                0083      &           +  Salt(i,j,k,bi,bj)* ttemp2 )
                0084 c     conversion from mol/(l * atm) to mol/(m^3 * atm)
6cebf9fc9a Jean*0085              SolCFC12(i,j) = 1000. _d 0 * SolCFC12(i,j)
8ac664a04c Step*0086 c     conversion from mol/(m^3 * atm) to mol/(m3 * pptv)
6cebf9fc9a Jean*0087              SolCFC12(i,j) = 1. _d -12 * SolCFC12(i,j)
8ac664a04c Step*0088 C Determine surface flux (Fcfc12)
6cebf9fc9a Jean*0089              Csat(i,j) = SolCFC12(i,j)*AtmosP(i,j,bi,bj)
                0090      &                     *AtmosCFC12(i,j)
                0091              Kwexch(i,j) = (1. _d 0 - fIce(i,j,bi,bj))
                0092      &                   * pisVel(i,j,bi,bj)
                0093      &                   / SQRT(SchmidtNoCFC12(i,j)/660. _d 0)
                0094              fluxCFC12(i,j) =
                0095      &           Kwexch(i,j)*(Csat(i,j) - pTr_CFC12(i,j,1))
8ac664a04c Step*0096 
6cebf9fc9a Jean*0097            ELSE
                0098              fluxCFC12(i,j) = 0. _d 0
                0099            ENDIF
8ac664a04c Step*0100 
                0101          ENDDO
6cebf9fc9a Jean*0102         ENDDO
8ac664a04c Step*0103 
6cebf9fc9a Jean*0104 #endif /* ALLOW_CFC */
                0105 #endif /* ALLOW_PTRACERS */
8ac664a04c Step*0106 
6cebf9fc9a Jean*0107       RETURN
                0108       END