Git Product home page Git Product logo

Comments (13)

MichaelSchulzMETNO avatar MichaelSchulzMETNO commented on August 11, 2024

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?

from cam.

oyvindseland avatar oyvindseland commented on August 11, 2024

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

from cam.

MichaelSchulzMETNO avatar MichaelSchulzMETNO commented on August 11, 2024

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

from cam.

oyvindseland avatar oyvindseland commented on August 11, 2024

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.

from cam.

mvertens avatar mvertens commented on August 11, 2024

@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.

from cam.

MichaelSchulzMETNO avatar MichaelSchulzMETNO commented on August 11, 2024

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

from cam.

mvertens avatar mvertens commented on August 11, 2024

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
                !-------------------------------------------------------------------------

from cam.

oyvindseland avatar oyvindseland commented on August 11, 2024

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.

from cam.

mvertens avatar mvertens commented on August 11, 2024

@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

from cam.

oyvindseland avatar oyvindseland commented on August 11, 2024

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

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

from cam.

oyvindseland avatar oyvindseland commented on August 11, 2024

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

from cam.

oyvindseland avatar oyvindseland commented on August 11, 2024

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

from cam.

oyvindseland avatar oyvindseland commented on August 11, 2024

Closing issue

from cam.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.