NorESMhub / CAM

Community Atmosphere Model including CAM6-Nor branches
1 stars 20 forks source link

Aerosol loss is larger than aerosol source terms #143

Closed oyvindseland closed 1 month ago

oyvindseland commented 2 months ago

What happened?

Output from a one month test simulation gave a much higher loss of the coarse mode sea-salt than emission flux. Based on the high concentrations of aerosols in the development version I expect that it is true also for the other tracers. The reason I suspect a problem with the source terms and not the sink term is that total amount of the tracers is much higher than in NorESM2.0 A comparison with NorESM2.0 below.

NorESM2.5

NF2000oslo_alpha_ne30pg3_ne30pg3_mtn14.cam.h0.0001-01.nc

SFSS_A3 = 2.371297e-10 ! Source term of coarse mode sea-salt SS_A3DDF = 1.323147e-10 ! Total dry deposition interstitial coarse mode sea-salt SS_A3_OCWDDF = 1.119267e-11 ; ! Total dry deposition of coarse mode sea-salt in stratiform cloud drops SS_A3SFWET = -1.214858e-10 ; ! Total wet deposition of interstitial coarse mode sea-salt SS_A3_OCWSFWET = -1.990657e-10 ; ! Total wet deposition of coarse mode sea-salt in stratiform cloud drops

Balance: SFSS_A3 - (SS_A3DDF+SS_A3_OCWDDF) + (SS_A3SFWET+SS_A3_OCWSFWET)

Balance: - 2.3e-10

cb_SS_A3 = 3.807074e-05 ; ! Column burden of interstitial coarse mode sea-salt cb_SS_A3_OCW = 2.935541e-06 ; ! Column burden of coarse mode sea-salt in stratiform cloud drops

NorESM2.0.rel06

NF1850norbc_aer2014_rel206_f19_f19_tn14.cam.h0.0001-01.nc

SFSS_A3 = 1.643476e-10 ; SS_A3DDF = 6.388461e-11 SS_A3_OCWDDF = 4.9274e-12 ; SS_A3SFWET = -3.659722e-11 ; SS_A3_OCWSFWET = -5.466723e-11 ;

Balance: 4.3e-12

cb_SS_A3 = 1.122047e-05 ; cb_SS_A3_OCW = 1.054294e-06 ;

What are the steps to reproduce the bug?

Case used /cluster/projects/nn2345k/oyvinds/NorESM2.5dev/noresm2_5_alpha02_v0/cases/NF2000oslo_alpha_ne30pg3_ne30pg3_mtn14 but any oslo_aero compset from the version will do. history_aerosol=.true. must be added to the namelist to get the budget terms

What CAM-Nor tag were you using?

cam6_2_003-3204-g94be31f

What machine were you running CAM (or NorESM) on?

Betzy

What compiler were you using?

Intel

Path to a case directory, if applicable

/cluster/projects/nn2345k/oyvinds/NorESM2.5dev/noresm2_5_alpha02_v0/cases/NF2000oslo_alpha_ne30pg3_ne30pg3_mtn14

Will you be addressing this bug yourself?

Yes, but I will need some help

Extra info

Will work on it myself for now, but if anyone know about any changes in structures from CAM6 to CAM7-alpha that should be examined please add information. E.g change of sign in tendency calculations or special treatment of surface fluxes in the much lower surface layer of the model

MichaelSchulzMETNO commented 2 months ago

Hi - could the initial conditions bring in too much sea salt, which results in high initial removal flux, until its in equlibrium? How is the balance in month 2 and 3?

oyvindseland commented 2 months ago

It is a cold start so it start with zero aerosols.

I can start a run for a longer period this afternoon, but I doubt that it will make a difference.

Øyvind

MichaelSchulzMETNO commented 2 months ago

Well if both start with zero aerosols, that is of course comparable.

oyvindseland commented 2 months ago

I think I found the problem with the added mass. I have not nailed down the problem 100% but the reason is likely that the the tendency from emissions are added together both in oslo_aero_depos_dry and clubb_emissions_cam.

Why is it in oslo_aero_depos_dry?

The reason was that pre-clubb and to some extent also in CAM6 the vertical diffusion dry deposition and emissions was treated independently. For sea-salt and mineral dust this sometimes resulted in a saw-tooth function of the concentration near the surface since the dry deposition of mineral dust may be a large fraction of the emssions. In NorESM this was treated by merging the dry deposition and emissions fluxes into one combined tendency.

In CAM7 the even thinner surface layer was likely making this problem even more visible, but here the emissions are now integrated into CLUBB. It seems that the tendency is not set to zero after the NorESM emissions tendency and then the tendency was added over again in CLUBB. Given that the tendency in CAM7 is now merged into CLUBB the oslo-aero merge may not longer be needed.

After setting the sea-salt tendency in oslo_aero_depos_dry to zero for coarse mode sea-salt the budget is in balance. The tendency for dry deposition must still be included in oslo_aero_depos_dry.

mvertens commented 2 months ago

@oyvindseland - this is fantastic news! Thanks so much for tracking this down. Once you verify this as 100% - we should integrate this back into the development branch and also create a new noresm2_5_alpha02 tag with updated components that we can use for a new coupled simulation.

MichaelSchulzMETNO commented 2 months ago

That sounds like a very good path ! thanks @oyvindseland . Was this an issue also in CAM6, NorESM2.x??

mvertens commented 2 months ago

Can the fix for this could be to just remove the following in oslo_aero_depos.F90? (I've removed a lot of comments from the code below).

               !-------------------------------------------------------------------------
                ! FIX- START
                ! CAN all of this be removed???

                !Solve implicitly for eqn for emission and dry dep in lowest layer
                deltaH(:ncol) = pdel(:ncol,pver)/rho(:ncol,pver)/gravit     ![m] height of layer
                lossRate(:ncol) = vlc_dry(:ncol,pver,jvlc)/deltaH(:ncol)    ![1/s] loss rate out of layer

        !special treatment of BC_AX because BC_AX is not treated with
                !boundary mixing in activation (is by definition not activated!)               
                if(mm .eq. l_bc_ax) then
                   totalProd(:ncol) = interfaceTendToLowestLayer(:ncol)
                else
                   totalProd(:ncol) = cflx(:ncol,mm)*gravit/pdel(:ncol,pver) + interfaceTendToLowestLayer(:ncol)
                end if
                where(lossRate(:ncol)*dt .gt. 1.e-2_r8)
                   MMRNew(:ncol) = q(:ncol,pver,mm)*exp(-lossRate(:ncol)*dt)   &
                        + totalProd(:ncol)/lossRate(:ncol)*(1.0_r8 - exp(-lossRate(:ncol)*dt))
                elsewhere
                   MMRNew(:ncol) = q(:ncol,pver,mm) &
                        + totalProd(:ncol)*dt - q(:ncol,pver,mm)*lossRate(:ncol)*dt
                end where

                !Overwrite tendency in lowest layer to include emissions
                ptend%q(:ncol,pver,mm) = (MMRNew(:ncol)-q(:ncol,pver,mm))/dt

                !They are then not included in vertical diffusion!!
                massLostDD(:ncol) = q(:ncol,pver,mm) - MMRNew(:ncol) + totalProd(:ncol)*dt
                sflx(:ncol) = massLostDD(:ncol)*pdel(:ncol,pver) / gravit / dt
                ! FIX END
                !-------------------------------------------------------------------------
oyvindseland commented 2 months ago

Yes that part should be removed but it is possible MMRnew is still needed but only with the loss term included. Or better: The loss term should be included in the same manner as the mam4 dry deposition.

mvertens commented 2 months ago

@oyvindseland - can you please clarify what you mean by "MMRnew is still needed but only with the loss term included". Its not clear to me how the loss term is included in the mam4 dry deposition. Below are some very brief summary notes. Where is the loss term in mam4 computed?

--------------------
mam4 noresm2.5
--------------------

aero_model_drydep in chemistry/modal_aero/aero_model.F90

  calls dust_sediment_tend (in chemistry/aerosol/dust_sediment_mod.F90)
    ! calculate the tendencies and sfc fluxes

  if ((lphase == 1) .and. (lspec <= nspec_amode(m))) then
     call dust_sediment_tend( ncol, dt, state%pint(:,:), state%pmid, state%pdel, state%t , &
         state%q(:,:,mm),  pvmzaer,  ptend%q(:,:,mm), sflx  )
  else if ((lphase == 1) .and. (lspec == nspec_amode(m)+1)) then  ! aerosol water
     call dust_sediment_tend(ncol, dt, state%pint(:,:), state%pmid, state%pdel, state%t , &
         qaerwat(:,:,mm),  pvmzaer,  dqdt_tmp(:,:), sflx  )
  else  ! lphase == 2
     call dust_sediment_tend(ncol, dt, state%pint(:,:), state%pmid, state%pdel, state%t , &
         fldcw(:,:),  pvmzaer,  dqdt_tmp(:,:), sflx  )

  dust_sediment_mod.F90: dust_sediment_tend()

  subroutine dust_sediment_tend (ncol,   dtime,  pint,     pmid,    pdel,  t,   &
         dustmr ,pvdust, dusttend, sfdust )

--------------------
oslo_aero noresm2.5
--------------------

  aero_model.F90:aero_model_drydep() calls oslo_aero_depos.F90:oslo_aero_depos_dry()

  oslo_aero_depos.F90:oslo_aero_depos_dry()

  if ((lphase == 1) .and. (lspec <= nspec_amode(m))) then
    call oslo_aero_dust_sediment_tend(ncol, dt, pint(:,:), pmid, pdel, t , &
         q(:,:,mm),  pvmzaer,  ptend%q(:,:,mm), sflx, dusttend_to_ll_out=interfaceTendToLowestLayer)
  else  ! lphase == 2
     call oslo_aero_dust_sediment_tend(ncol, dt, pint(:,:), pmid, pdel, t, &
         fldcw(:,:), pvmzaer, dqdt_tmp(:,:), sflx)
  endif
oyvindseland commented 2 months ago

As long as subroutine dust_sediment_tend (ncol, dtime, pint, pmid, pdel, t, & dustmr ,pvdust, dusttend, sfdust )

dusttend is intent(out ) (or in/out)

oyvindseland commented 2 months ago

I checked dust_sediment_tend and real(r8), intent(out) :: dusttend(pcols,pver) ! dust tend

so, yes just deleting the lines you wrote above should work.

Øyvind

oyvindseland commented 2 months ago

I ran the simulation for 1 month. The model should be run for longer to make any final conclusions about the changes, but the problem of mass balance has disappeared. New numbers below. I also checked the mass balance for coarse mode mineral dust.

The sea-salt emissions has gone up quite substantially ~ close to 50% . Some of it is due to higher resolution (10-20%) The overall increase in column burden can be explained by a combination of increased emissions and reduced dry deposition (NorESM2 has too high dry deposition due to a bug)

Mineral dust increase a lot ~Factor of 7-8. Most of this can be explained by higher emissions (Factor of 3) and error in dry deposition (1.5), so it is likely a feature of the model not due to any bug.

One minor issue. The DMS flux is not written out together with the other fluxes. The DMS concentration is comparable to NorESM2 so I guess it is just a matter of finding the flux somewhere.

SFSS_A3 = 2.475805e-10 ;

SS_A3DDF = 6.012387e-11 SS_A3_OCWDDF = 6.382038e-12 ;

SS_A3SFWET = -6.336213e-11 ; SS_A3_OCWSFWET = -1.124183e-10 ; ;

Balance: SFSS_A3 - (SS_A3DDF+SS_A3_OCWDDF) + (SS_A3SFWET+SS_A3_OCWSFWET) Balance: 5.3e-12

cb_SS_A3 = 1.949281e-05 ;

cb_SS_A3_OCW = 1.49497e-06

oyvindseland commented 1 month ago

Closing issue