GEOS-Chem Adjoint v33

From Geos-chem
Revision as of 21:52, 6 January 2012 by Daven (Talk | contribs) (Bug fixes in adjoint model)

Jump to: navigation, search

What's new in this version

Updates to forward model

Bug fixes in forward model

Trap for negative CRUTES in rpmares_mod.f (adj33_001)

Despite the setting of negative roots to zero, sometimes the code still ends up with negative CRUTES. Trap for it here to prevent mysterious crashing later.

--Daven 14:58, 6 January 2012 (EST)

Updated lightning parameterization and fix for cloud-top-height algorithm (v9-01-01)

Updates to a6_read_mod.f and lightning_nox_mod.f. Details in Lee's description:

--Daven 15:18, 6 January 2012 (EST)

Fix for GEIA emissions scaling factor over Botswana (v9-01-02h)

Updates to scale_anthro_mod.f. See GEOS-Chem_v9-01-02#Fix_for_GEIA_emissions_scaling_factor_over_Botswana

--Daven 16:16, 6 January 2012 (EST)

TINY parameter in convection_mod.f (v8-03-02)

Update to convection_mod.f GEOS-Chem_v8-03-02#TINY_parameter_in_convection_mod.f

--Daven 16:16, 6 January 2012 (EST)

Updates to adjoint model

Bug fixes in adjoint model

Mover error checking for O3 assimilation (adj33_002)

Nicolas Bousserez wrote:

the code crashes in "input_adj_mod.f" when doing the checking of observation settings (see line 2027 in my code). It is apparently due to "IDCSPEC_ADJ", which is not allocated/defined yet at the time the program executes those lines. I'm skipping these checks for now then. Note: The code crashes also when using "TES_O3_OBS" instead of "SCIA_DAL_NO2_OBS", so it is not related to what I implemented apparently.

The following block of code has been moved from input_adj_mod.f to subroutine INIT_CSPEC_ADJ in adj_arrays_mod.f, as it can only be called after the CSPEC variables have been initialized.

#elif defined ( TES_O3_OBS ) 
     ! Since the O3 obs operators will pass adjoints back 
     ! to CSPEC via CSPEC_AFTER_CHEM_ADJ, we need to make sure that 
     ! these species are listed as observed species
     FOUND = .FALSE.
     DO N = 1, NOBS_CSPEC

        IF ( TRIM( NAMEGAS( IDCSPEC_ADJ(N) ) ) == 'O3' ) THEN
           FOUND = .TRUE.

     IF ( .not. FOUND ) THEN

        CALL ERROR_STOP( ' Need to list O3 as observed species',
    &                    ' input_adj_mod ' )

--Daven 16:38, 6 January 2012 (EST)

Retire CSPEC_NO2_ADJ (adj33_003)

Nicolas Bousserez wrote:

In "chemdr_adj.F" I removed this part:
#if defined( SCIA_KNMI_NO2_OBS ) || defined( SCIA_DAL_NO2_OBS )
! Apply forcing from satellite observations
CSPEC_NO2_ADJ(:) = 0d0
because it seems like I'm already updating the adjoint of NO2 in "sciadal_no2_obs_mod.f" through CSPEC_AFTER_CHEM_ADJ. I would like to be sure that it is correct though.

Daven Henze wrote:

Yes, that is correct. I didn't want to take it out incase you had built your obs operator using CSPEC_NO2_ADJ. But since you used the more generic CSPEC_AFTER_CHEM_ADJ, then we can delete this section entirely and use the section higher up in this file ( IF (LCSPEC_OBS) ...) to apply the forcing from your obs operator to CSPEC_ADJ.

Now use CSPEC_AFTER_CHEM_ADJ instead of CSPEC_NO2_ADJ in chemdr_adj.f.

Previous issues now resolved in v33

Previous issues now resolved in v32

CO2 emissions update to allow for both monthly and years emissions

Update to co2_mod.f (dkh, 03/07/11)

Updates to lidort_mod.f

  • Reinstate NCOUNT in CALC_RF_FORCE so that aod files are made at the right time. (dkh, 03/27/11)
  • now check to make sure that MAXTHREADS matches JJPAR in lidort_mod.f (dkh, 03/27/11)

Update to Mie table

Update mie_mod.f to use finite difference values for adjoints. (dkh, 03/27/11)

Remove bug in SET_SF

Remove erroneous debugging code in subroutine SET_SF in inverse_mod.f. (dkh, 03/27/11)

Outstanding issues not yet resolved in v33