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

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

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

revision 1.2 by stephd, Mon Oct 6 20:11:10 2003 UTC revision 1.17 by jmc, Wed Aug 22 00:40:56 2012 UTC
# Line 1  Line 1 
1  #include "CPP_OPTIONS.h"  C $Header$
2  #include "GCHEM_OPTIONS.h"  C $Name$
3    
4  #ifdef ALLOW_FE  #include "DIC_OPTIONS.h"
5  CStartOfInterFace  
6    CBOP
7    C     !ROUTINE: Fe_CHEM
8    C     !INTERFACE:
9        SUBROUTINE Fe_CHEM(        SUBROUTINE Fe_CHEM(
10       I           bi,bj,iMin,iMax,jMin,jMax,       I           bi,bj, iMin,iMax,jMin,jMax,
11       I           fe, freefe,       I           fe,
12         O           freefe,
13       I           myIter, myThid )       I           myIter, myThid )
14  C     /==========================================================\  
15  C     | SUBROUTINE Fe_chem                                       |  C     !DESCRIPTION: \bv
16  C     |                                                          |  C     *==========================================================*
17  C     | o Calculate L,FeL,Fe concentration                       |  C     | SUBROUTINE Fe_CHEM
18  C     |==========================================================|  C     | o Calculate L,FeL,Fe concentration
19    C     *==========================================================*
20    C     \ev
21    
22    C     !USES:
23        IMPLICIT NONE        IMPLICIT NONE
24    
25  C     == GLobal variables ==  C     == GLobal variables ==
26  #include "SIZE.h"  #include "SIZE.h"
 #include "DYNVARS.h"  
27  #include "EEPARAMS.h"  #include "EEPARAMS.h"
28  #include "PARAMS.h"  #include "PARAMS.h"
29  #include "GRID.h"  #include "GRID.h"
30  #include "DIC_BIOTIC.h"  #include "DIC_VARS.h"
 #include "PTRACERS.h"  
31    
32  C     == Routine arguments ==                  C     !INPUT/OUTPUT PARAMETERS:
33  C     bi, bj, iMin, iMax, jMin, jMax - Range of points for which calculation  C     == Routine arguments ==
34  C                                      results will be set.  C     bi, bj              :: current tile indices
35  C     myThid - Instance number for this innvocation of CALC_GT  C     iMin,iMax,jMin,jMax :: Range of points for which calculation is performed.
36        _RL  freefe(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)  C     myThid              :: my Thread Id number
37        _RL  fe(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr,nSx,nSy)        INTEGER bi,bj
38        INTEGER bi,bj,iMin,iMax,jMin,jMax        INTEGER iMin,iMax,jMin,jMax
39        INTEGER myIter,myThid        _RL     fe(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
40  CEndOfInterface        _RL freefe(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
41          INTEGER myIter, myThid
42    CEOP
43    
44    #ifdef ALLOW_FE
45        INTEGER I,J,K  C     !LOCAL VARIABLES:
46          INTEGER i,j,k
47        _RL  lig, FeL        _RL  lig, FeL
48          _RL  tmpfe
49    #ifdef AD_SAFE
50          _RL thx, thy, theps
51    #endif
52    
53  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
54  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc  C
55  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc  C  ADAPTED FROM PAYAL
56  CC  C
57  CC ADAPTED FROM PAYAL  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
58  CC  
59  CC        DO k=1,Nr
60  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc         DO j=1-OLy,sNy+OLy
61  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc          DO i=1-OLx,sNx+OLx
62  CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc            freefe(i,j,k) = 0. _d 0
63            ENDDO
64           ENDDO
65          ENDDO
66    
67  C ligand balance in surface layer  C ligand balance in surface layer
68  C in surface layer  C in surface layer
69    
70         DO j=jMin,jMax         DO k=1,Nr
71          DO i=iMin,iMax          DO j=jMin,jMax
72           DO k=1,nR           DO i=iMin,iMax
73            IF(hFacC(i,j,k,bi,bj) .gt. 0.0)THEN            IF ( maskC(i,j,k,bi,bj).GT.0. ) THEN
74    
75    #ifdef DIC_NO_NEG
76                  tmpfe =MAX( 0. _d 0 , fe(i,j,k) )
77    #else
78                  tmpfe = fe(i,j,k)
79    #endif
80    
81  C   Ligand,FeL,Fe calculation  C   Ligand,FeL,Fe calculation
82                              lig=(-ligand_stab*tmpfe +
83                lig=(-ligand_stab*fe (i,j,k,bi,bj)+       &              ligand_stab*ligand_tot-1. _d 0
84       &              ligand_stab*ligand_tot-1       &             +((ligand_stab*tmpfe
85       &             +((ligand_stab*fe (i,j,k,bi,bj)       &                -ligand_stab*ligand_tot+1. _d 0)**2
86       &                -ligand_stab*ligand_tot+1)**2+4       &               +4. _d 0*ligand_stab*ligand_tot)**0.5 _d 0
87       &                *ligand_stab*ligand_tot)**0.5)/(2*ligand_stab)       &            )/(2. _d 0*ligand_stab)
88    
89                FeL = ligand_tot-lig                FeL = ligand_tot-lig
90                freefe(i,j,k,bi,bj) = fe (i,j,k,bi,bj)-FeL                IF (tmpfe.NE.0. _d 0) THEN
91            END IF                    freefe(i,j,k) = tmpfe -FeL
92                  ELSE
93                    freefe(i,j,k) = 0. _d 0
94                  ENDIF
95    #ifdef MINFE
96    #ifdef AD_SAFE
97                  thx=freefe(i,j,k)
98                  thy=freefemax
99                  theps=1. _d -8
100                  freefe(i,j,k) =
101         &                 ( 1. _d 0 - tanh((thx-thy)/theps) ) * thx/2.+
102         &                 ( 1. _d 0 + tanh((thx-thy)/theps) ) * thy/2.
103    
104    #else
105                  freefe(i,j,k) = MIN(freefe(i,j,k),freefemax)
106    #endif
107                  fe(i,j,k) = FeL+freefe(i,j,k)
108    #endif
109              ENDIF
110           ENDDO           ENDDO
111          ENDDO          ENDDO
112         ENDDO             ENDDO
113  c  
114          RETURN  #endif /* ALLOW_FE */
115          END                              RETURN
116  #endif        END

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

  ViewVC Help
Powered by ViewVC 1.1.22