--- MITgcm/pkg/dic/fe_chem.F 2007/10/26 21:08:13 1.10 +++ MITgcm/pkg/dic/fe_chem.F 2008/04/18 19:32:12 1.14 @@ -1,8 +1,7 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/dic/fe_chem.F,v 1.10 2007/10/26 21:08:13 dfer Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/pkg/dic/fe_chem.F,v 1.14 2008/04/18 19:32:12 stephd Exp $ C $Name: $ #include "DIC_OPTIONS.h" -#include "GCHEM_OPTIONS.h" CStartOfInterFace SUBROUTINE Fe_CHEM( @@ -22,7 +21,7 @@ #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" -#include "DIC_BIOTIC.h" +#include "DIC_VARS.h" C == Routine arguments == C bi, bj, iMin, iMax, jMin, jMax - Range of points for which calculation @@ -41,6 +40,7 @@ INTEGER I,J,K _RL lig, FeL + _RL tmpfe CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc @@ -61,17 +61,26 @@ DO k=1,Nr IF (hFacC(i,j,k,bi,bj) .GT. 0. _d 0) THEN -C Ligand,FeL,Fe calculation +#ifdef DIC_NO_NEG + tmpfe=max(0. _d 0 , fe (i,j,k,bi,bj)) +#else + tmpfe=fe (i,j,k,bi,bj) +#endif - lig=(-ligand_stab*fe (i,j,k,bi,bj)+ +C Ligand,FeL,Fe calculation + lig=(-ligand_stab*tmpfe + & ligand_stab*ligand_tot-1. _d 0 - & +((ligand_stab*fe (i,j,k,bi,bj) + & +((ligand_stab*tmpfe & -ligand_stab*ligand_tot+1. _d 0)**2 & +4. _d 0*ligand_stab*ligand_tot)**0.5 _d 0 & )/(2. _d 0*ligand_stab) FeL = ligand_tot-lig - freefe(i,j,k,bi,bj) = fe (i,j,k,bi,bj)-FeL + if (tmpfe.eq.0. _d 0) then + freefe(i,j,k,bi,bj) = tmpfe -FeL + else + freefe(i,j,k,bi,bj) = 0. _d 0 + endif #ifdef MINFE #ifdef AD_SAFE thx=freefe(i,j,k,bi,bj)