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

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

  ViewVC Help
Powered by ViewVC 1.1.22