Ignore:
Timestamp:
Apr 26, 2019, 11:18:52 AM (6 years ago)
Author:
emillour
Message:

Common dynamics:
Some work to enforce total tracer mass conservation in the dynamics.
Still to be further studied and validated.
For now these changes are triggered by setting a "force_conserv_tracer"
flag to ".true." in run.def (default is ".false." to not change anything
with respect to previous versions).
When force_conserv_tracer=.true. then:

  1. Rescale tracer mass in caladvtrac after tracer advection computations
  2. Recompute q ratios once atmospheric mass has been updated in integrd

These steps technically ensure total tracer mass conservation but it
might be the tracer advection scheme and/or time-stepping updating
sequence of fields that should be rethought or fixed.
EM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.COMMON/libf/dyn3dpar/integrd_p.F

    r1959 r2126  
    77      USE parallel_lmdz, ONLY: ij_begin, ij_end, pole_nord, pole_sud,
    88     &                         omp_chunk
    9       USE control_mod, only : planet_type
     9      USE control_mod, only : planet_type,force_conserv_tracer
    1010      USE comvert_mod, ONLY: ap,bp
    1111      USE comconst_mod, ONLY: pi
     
    6565      REAL vscr( ip1jm ),uscr( ip1jmp1 ),hscr( ip1jmp1 ),pscr(ip1jmp1)
    6666      REAL massescr( ip1jmp1,llm )
     67      REAL :: massratio(ip1jmp1,llm)
    6768!      REAL finvmasse(ip1jmp1,llm)
    6869      REAL,SAVE :: p(ip1jmp1,llmp1)
     
    361362      endif ! of if (planet_type.eq."earth")
    362363
     364
     365      if (force_conserv_tracer) then
     366        ! Ehouarn: try to keep total amont of tracers fixed
     367        ! by acounting for mass change in each cell
     368        massratio(ijb:ije,1:llm)=massescr(ijb:ije,1:llm)
     369     &                             /masse(ijb:ije,1:llm)
     370        do iq=1,nq
     371        q(ijb:ije,1:llm,iq)=q(ijb:ije,1:llm,iq)
     372     &                        *massratio(ijb:ije,1:llm)
     373        enddo
     374      endif ! of if (force_conserv_tracer)
    363375c
    364376c
Note: See TracChangeset for help on using the changeset viewer.