Ignore:
Timestamp:
Apr 24, 2020, 6:55:59 PM (5 years ago)
Author:
mvals
Message:

Mars GCM:
dyn3dpar: Implementation in the parallel version of the dynamics of the dynamical transport of the isotopes using the same scheme as the one
implemented by Camille Risi in the Earth GCM (see LMDZ6/libf/dyn3dmem, and Risi et al. 2009: genealogy of the tracers+transport of the isotopic
ratio). This is added to prepare the future implementation of the HDO cycle in the GCM. These changes had been already added in the sequential part.
dyn3d: corrections to prevent from dividing by zero in the case of the use of the isotopes scheme.
traceur.def.isotopes: example of how to write the traceur.def if you want to use the new dynamics with the genealogy of the isotopes: air is the
father of all, H2O is the father of HDO.
MV

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.COMMON/libf/dyn3d/vlsplt.F

    r1508 r2296  
    456456          DO ij=iip2,ip1jm
    457457           ! On a besoin de q et masse seulement entre iip2 et ip1jm
    458            masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
    459            Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
     458           !masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
     459           !Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
     460           !MVals: veiller a ce qu'on n'ait pas de denominateur nul
     461           masseq(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),1e-16)
     462           if (q(ij,l,iq).gt.1e-16) then
     463             Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
     464           else
     465             Ratio(ij,l,iq2)=0.
     466           endif
    460467          enddo   
    461468         enddo
     
    473480      DO l=1,llm
    474481         DO ij=iip2+1,ip1jm
    475             new_m=masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l)
     482            !MVals: veiller a ce qu'on n'ait pas de denominateur nul
     483            new_m=max(masse(ij,l,iq)+u_m(ij-1,l)-u_m(ij,l),1e-16)
    476484            q(ij,l,iq)=(q(ij,l,iq)*masse(ij,l,iq)+
    477485     &      u_mq(ij-1,l)-u_mq(ij,l))
     
    777785           ! attention, chaque fils doit avoir son masseq, sinon, le 1er
    778786           ! fils ecrase le masseq de ses freres.
    779            masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
    780            Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)     
     787           !masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
     788           !Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
     789           !MVals: veiller a ce qu'on n'ait pas de denominateur nul
     790           masseq(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),1e-16)
     791           if (q(ij,l,iq).gt.1e-16) then
     792             Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
     793           else
     794             Ratio(ij,l,iq2)=0.
     795           endif
    781796          enddo   
    782797         enddo
     
    9971012         DO l=1,llm
    9981013          DO ij=1,ip1jmp1
    999            masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
    1000            Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)       
     1014           !masseq(ij,l,iq2)=masse(ij,l,iq)*q(ij,l,iq)
     1015           !Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
     1016           !MVals: veiller a ce qu'on n'ait pas de denominateur nul
     1017           masseq(ij,l,iq2)=max(masse(ij,l,iq)*q(ij,l,iq),1e-16)
     1018           if (q(ij,l,iq).gt.1e-16) then
     1019             Ratio(ij,l,iq2)=q(ij,l,iq2)/q(ij,l,iq)
     1020           else
     1021             Ratio(ij,l,iq2)=0.
     1022           endif     
    10011023          enddo   
    10021024         enddo
Note: See TracChangeset for help on using the changeset viewer.