Difference between revisions of "Aerosol thermodynamical equilibrium"

From Geos-chem
Jump to: navigation, search
(RPMARES)
(04-Apr-2008)
Line 1: Line 1:
 
== RPMARES ==
 
== RPMARES ==
 +
 +
=== 11-Apr-2008 ===
 +
 +
In [[GEOS-Chem_versions_under_development#v8-01-01|GEOS-Chem v8-01-01]], we have added a fix into routine RPMARES (in rpmares_mod.f) to avoid a floating point error that can occur under some conditions. 
 +
 +
'''''Philippe Le Sager (plesager@seas.harvard.edu) wrote:'''''
 +
:In RPMARES, the hydrogen ion (HPLUS) obtained as the root of a cubic equation is so large (286 moles/kg) that it triggers a large binary activity coefficient (LGAMA0) and then a very small mean molal ionic activity (GAMA=10**TRM=2.44e-159) when input into ACTCOF. That all seems correct, but this is so close to zero (~2e-159) that an error occurs when re-injected into RPMARES to compute the coefficients of the cubic equation for H+ at the next step.
 +
 +
:We basically need to shunt the cubic equation for zero ionic activity coefficients to solve for H+, and then sulfate and nitrate.
 +
 +
'''''Rokjin Park (rjpark@snu.ac.kr) replied:'''''
 +
:I agree with Philippe that the case with extremely low NH3 cases we don’t need to solve the cubic equation.
 +
:RPMARES should simply return the original values to avoid the NaN error.
 +
 +
'''''Bob Yantosca (yantosca@seas.harvard.edu) replied:'''''
 +
:FYI, Philippe and I have put in a fix in routine RPMARES:
 +
 +
      CALL ACTCOF ( CAT, AN, GAMS, MOLNU, PHIBAR )
 +
 +
      GAMANA = GAMS( 1, 2 )
 +
      GAMAS1 = GAMS( 1, 1 )
 +
      GAMAS2 = GAMS( 1, 3 )
 +
      GAMAAN = GAMS( 2, 2 )
 +
 +
      !------------------------------------------------------------
 +
      ! Add robustness: now check if GAMANA or GAMAS1 is too small
 +
      ! for the division in RKNA and RK2SA. If they are, return w/
 +
      ! original values: basically replicate the procedure used
 +
      ! after the current DO-loop in case of no-convergence
 +
      ! (phs, bmy, rjp, 4/10/08)
 +
      !--------------------------------------------------------------
 +
      IF ( ( ABS( GAMANA ) < EPS ) .OR.
 +
    &      ( ABS( GAMAS1 ) < EPS ) ) THEN
 +
 +
          ! Reset to original values
 +
          ANH4  = TNH4 * MWNH4
 +
          GNH3  = FLOOR
 +
          GNO3  = GNO3_IN
 +
          ANO3  = ANO3_IN
 +
          ASO4  = TSO4 * MWSO4
 +
          AHSO4 = FLOOR
 +
 +
          ! Update water
 +
          CALL AWATER ( IRH, TSO4, TNH4, TNO3, AH2O )
 +
 +
          ! Exit this subroutine
 +
          RETURN
 +
      ENDIF
 +
 +
:so then if either of the GAMANA or GAMAS1 variables that get returned from ACTCOF is zero (or smaller than a minimum value) then we don't continue the iteration but then reset to original values and exit the subroutine.  This definitely fixed the problem.
 +
 +
--[[User:Bmy|Bmy]] 16:21, 11 April 2008 (EDT)
  
 
=== 04-Apr-2008 ===
 
=== 04-Apr-2008 ===

Revision as of 20:21, 11 April 2008

RPMARES

11-Apr-2008

In GEOS-Chem v8-01-01, we have added a fix into routine RPMARES (in rpmares_mod.f) to avoid a floating point error that can occur under some conditions.

Philippe Le Sager (plesager@seas.harvard.edu) wrote:

In RPMARES, the hydrogen ion (HPLUS) obtained as the root of a cubic equation is so large (286 moles/kg) that it triggers a large binary activity coefficient (LGAMA0) and then a very small mean molal ionic activity (GAMA=10**TRM=2.44e-159) when input into ACTCOF. That all seems correct, but this is so close to zero (~2e-159) that an error occurs when re-injected into RPMARES to compute the coefficients of the cubic equation for H+ at the next step.
We basically need to shunt the cubic equation for zero ionic activity coefficients to solve for H+, and then sulfate and nitrate.

Rokjin Park (rjpark@snu.ac.kr) replied:

I agree with Philippe that the case with extremely low NH3 cases we don’t need to solve the cubic equation.
RPMARES should simply return the original values to avoid the NaN error.

Bob Yantosca (yantosca@seas.harvard.edu) replied:

FYI, Philippe and I have put in a fix in routine RPMARES:
      CALL ACTCOF ( CAT, AN, GAMS, MOLNU, PHIBAR )

      GAMANA = GAMS( 1, 2 )
      GAMAS1 = GAMS( 1, 1 )
      GAMAS2 = GAMS( 1, 3 )
      GAMAAN = GAMS( 2, 2 )

      !------------------------------------------------------------
      ! Add robustness: now check if GAMANA or GAMAS1 is too small
      ! for the division in RKNA and RK2SA. If they are, return w/
      ! original values: basically replicate the procedure used
      ! after the current DO-loop in case of no-convergence
      ! (phs, bmy, rjp, 4/10/08)
      !--------------------------------------------------------------
      IF ( ( ABS( GAMANA ) < EPS ) .OR.
   &       ( ABS( GAMAS1 ) < EPS ) ) THEN

         ! Reset to original values
         ANH4  = TNH4 * MWNH4
         GNH3  = FLOOR
         GNO3  = GNO3_IN
         ANO3  = ANO3_IN
         ASO4  = TSO4 * MWSO4
         AHSO4 = FLOOR

         ! Update water
         CALL AWATER ( IRH, TSO4, TNH4, TNO3, AH2O )

         ! Exit this subroutine
         RETURN
      ENDIF
so then if either of the GAMANA or GAMAS1 variables that get returned from ACTCOF is zero (or smaller than a minimum value) then we don't continue the iteration but then reset to original values and exit the subroutine. This definitely fixed the problem.

--Bmy 16:21, 11 April 2008 (EDT)

04-Apr-2008

Due to the ISORROPIA bug at low RH discussed below, we will revert to the RPMARES aerosol thermodynamic equilibrium code in GEOS-Chem v8-01-01.

Daniel Jacob (djacob@fas.harvard.edu) wrote:

Thanks! The HNO3 simulation is doing much better but I still wonder if the high values in the free troposphere (where the RH is low) are caused by the ISORROPIA bug. We do need to replace ISORROPIA with RPMARES in the standard model until Havala gives us the corrected ISORROPIA version. Daniel

Bob Yantosca (yantosca@seas.harvard.edu) replied:

Hi all,
I will put RPMARES into the std code. I will do 2 1-yr benchmark simulations with the GEOS-5 v8-01-01 std code:
  • v8-01-01-geos5 w/ ISORROPIA (for clean comparison between v8-01-01 and previous models)
  • v8-01-01-geos5 w/ RPMARES (for clean comparison between RPMARES & ISORROPIA w/ the same version)
RPMARES will be used in all NRT-ARCTAS runs for model dates 4/1/08 and beyond.
Thanks and stay tuned,
Bob Y.

--Bmy 13:16, 4 April 2008 (EDT)

ISORROPIA

01-Apr-2008

The GEOS-5 met fields incorrectly reported the relative humidity (RH) field as fraction instead of percent. Therefore...

Bob Yantosca (yantosca@seas.harvard.edu) wrote:

... GEOS-Chem was expecting to read in RH in percent (0..100) but was actually reading in fraction (0..1). Then when we got to the places where RH was used in the code (e.g. ISORROPIA, drydep_mod.f, sulfate_mod.f), we were dividing that by 100 again. So then this would further reduce the maximum RH from order 1 to order 0.01.
One of the symptoms that we saw was that HNO3 (in many locations, though not all) was completely wiped out in the PBL.
Would you expect a reduction in HNO3 by ISORROPIA if it were given 100x too small RH? Do you know if ISORROPIA would give junk results in this case?

Havala Olson Taylor Pye (havala@caltech.edu) replied:

The current version of ISORROPIA in the code definitely has problems at low RH and this is one of my primary motivations for updating it. I found that under certain conditions, at low RH, ISORROPIA would convert all nitrate (HNO3 + NIT) to the aerosol phase which leads to significant overpredictions in NIT. In the attached plot, below an RH of about 0.30 (30%) all nitrate was converted to the aerosol phase (the total amounts of all the species and T are the same for each data point). So by multiplying the RH by 100 to correct it, you probably moved from a region where ISORROPIA makes no sense to a region where is actually gives good predictions. Hope this clears things up. I've been working on ISORROPIAII and it gives predictions very similar to RPMARES (as far as where nitrate concentrations are high and low) and very different from ISORROPIA currently in GEOS-Chem. Let me know if you want any more information.
Havala

--Bmy 13:15, 4 April 2008 (EDT)