/[MITgcm]/MITgcm/pkg/dic/dic_surfforcing.F
ViewVC logotype

Diff of /MITgcm/pkg/dic/dic_surfforcing.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.2 by stephd, Wed Jul 9 19:59:18 2003 UTC revision 1.3 by stephd, Mon Oct 6 20:11:10 2003 UTC
# Line 34  C     == Routine arguments == Line 34  C     == Routine arguments ==
34        INTEGER iMin,iMax,jMin,jMax, bi, bj        INTEGER iMin,iMax,jMin,jMax, bi, bj
35    
36  #ifdef ALLOW_PTRACERS  #ifdef ALLOW_PTRACERS
 #ifdef DIC_ABIOTIC  
37  C     == Local variables ==  C     == Local variables ==
38         INTEGER I,J, kLev, it         INTEGER I,J, kLev, it
39  C Number of iterations for pCO2 solvers...  C Number of iterations for pCO2 solvers...
       INTEGER inewtonmax  
       INTEGER ibrackmax  
       INTEGER donewt  
40  C Solubility relation coefficients  C Solubility relation coefficients
41        _RL SchmidtNoDIC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL SchmidtNoDIC(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
42        _RL pCO2sat(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL pCO2sat(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
# Line 80  cQQQQ check ptracer numbers Line 76  cQQQQ check ptracer numbers
76               surfphos(i,j)  = 5.1225e-4 * maskC(i,j,kLev,bi,bj)               surfphos(i,j)  = 5.1225e-4 * maskC(i,j,kLev,bi,bj)
77  #endif  #endif
78  C FOR NON-INTERACTIVE Si  C FOR NON-INTERACTIVE Si
79               surfsi(i,j)   = 7.6838e-3 * maskC(i,j,kLev,bi,bj)               surfsi(i,j)   = SILICA(i,j,bi,bj) * maskC(i,j,kLev,bi,bj)
80            ENDDO            ENDDO
81           ENDDO           ENDDO
82    
# Line 89  C FOR NON-INTERACTIVE Si Line 85  C FOR NON-INTERACTIVE Si
85       I                       bi,bj,iMin,iMax,jMin,jMax)       I                       bi,bj,iMin,iMax,jMin,jMax)
86  C====================================================================  C====================================================================
87    
 #define PH_APPROX  
 c set number of iterations for [H+] solvers  
 #ifdef PH_APPROX  
        inewtonmax = 1  
 #else  
        inewtonmax = 10  
 #endif  
        ibrackmax = 30  
 C determine pCO2 in surface ocean  
 C set guess of pH for first step here  
 C IF first step THEN use bracket-bisection for first step,  
 C and determine carbon coefficients for safety  
 C ELSE use newton-raphson with previous H+(x,y) as first guess  
   
        donewt=1  
   
 c for first few timesteps  
        IF(myIter .le. (nIter0+inewtonmax) )then  
           donewt=0  
           DO j=1-OLy,sNy+OLy  
            DO i=1-OLx,sNx+OLx  
                   pH(i,j,bi,bj) = 8.0  
            ENDDO  
           ENDDO  
 #ifdef PH_APPROX  
           print*,'QQ: pCO2 approximation method'  
 c first approxmation  
        DO j=1-OLy,sNy+OLy  
         DO i=1-OLx,sNx+OLx  
          do it=1,10  
           CALL CALC_PCO2_APPROX(  
      I        theta(i,j,kLev,bi,bj),salt(i,j,kLev,bi,bj),  
      I        PTR_CO2(i,j,kLev), surfphos(i,j),  
      I        surfsi(i,j),surfalk(i,j),  
      I        ak1(i,j,bi,bj),ak2(i,j,bi,bj),  
      I        ak1p(i,j,bi,bj),ak2p(i,j,bi,bj),ak3p(i,j,bi,bj),  
      I        aks(i,j,bi,bj),akb(i,j,bi,bj),akw(i,j,bi,bj),  
      I        aksi(i,j,bi,bj),akf(i,j,bi,bj),ff(i,j,bi,bj),  
      I        bt(i,j,bi,bj),st(i,j,bi,bj),ft(i,j,bi,bj),  
      U        pH(i,j,bi,bj),pCO2(i,j,bi,bj) )  
          enddo  
         ENDDO  
        ENDDO  
 #else  
           print*,'QQ: pCO2 full method'  
 #endif  
        ENDIF  
   
   
88  c pCO2 solver...  c pCO2 solver...
89    C$TAF LOOP = parallel
90         DO j=1-OLy,sNy+OLy         DO j=1-OLy,sNy+OLy
91    C$TAF LOOP = parallel
92          DO i=1-OLx,sNx+OLx          DO i=1-OLx,sNx+OLx
93    
94            IF(maskC(i,j,kLev,bi,bj) .NE. 0.)THEN            IF(maskC(i,j,kLev,bi,bj) .NE. 0.)THEN
 #ifdef PH_APPROX  
95              CALL CALC_PCO2_APPROX(              CALL CALC_PCO2_APPROX(
96       I        theta(i,j,kLev,bi,bj),salt(i,j,kLev,bi,bj),       I        theta(i,j,kLev,bi,bj),salt(i,j,kLev,bi,bj),
97       I        PTR_CO2(i,j,kLev), surfphos(i,j),       I        PTR_CO2(i,j,kLev), surfphos(i,j),
# Line 154  c pCO2 solver... Line 102  c pCO2 solver...
102       I        aksi(i,j,bi,bj),akf(i,j,bi,bj),ff(i,j,bi,bj),       I        aksi(i,j,bi,bj),akf(i,j,bi,bj),ff(i,j,bi,bj),
103       I        bt(i,j,bi,bj),st(i,j,bi,bj),ft(i,j,bi,bj),       I        bt(i,j,bi,bj),st(i,j,bi,bj),ft(i,j,bi,bj),
104       U        pH(i,j,bi,bj),pCO2(i,j,bi,bj) )       U        pH(i,j,bi,bj),pCO2(i,j,bi,bj) )
 #else  
             CALL CALC_PCO2(donewt,inewtonmax,ibrackmax,  
      I        theta(i,j,kLev,bi,bj),salt(i,j,kLev,bi,bj),  
      I        PTR_CO2(i,j,kLev), surfphos(i,j),  
      I        surfsi(i,j),surfalk(i,j),  
      I        ak1(i,j,bi,bj),ak2(i,j,bi,bj),  
      I        ak1p(i,j,bi,bj),ak2p(i,j,bi,bj),ak3p(i,j,bi,bj),  
      I        aks(i,j,bi,bj),akb(i,j,bi,bj),akw(i,j,bi,bj),  
      I        aksi(i,j,bi,bj),akf(i,j,bi,bj),ff(i,j,bi,bj),  
      I        bt(i,j,bi,bj),st(i,j,bi,bj),ft(i,j,bi,bj),  
      U        pH(i,j,bi,bj),pCO2(i,j,bi,bj) )  
 #endif  
105            ELSE            ELSE
106               pCO2(i,j,bi,bj)=0. _d 0               pCO2(i,j,bi,bj)=0. _d 0
107            END IF            END IF
# Line 244  C update tendency Line 180  C update tendency
180           ENDDO           ENDDO
181    
182  #endif  #endif
 #endif  
183          RETURN          RETURN
184          END          END

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

  ViewVC Help
Powered by ViewVC 1.1.22