Ignore:
Timestamp:
Dec 15, 2021, 11:18:49 PM (4 years ago)
Author:
dcugnet
Message:

First commit for new tracers.

  • parser routines readTracFiles, strings_mod and tracer_types added in misc using revision 4 of https://svn.lmd.jussieu.fr/tracers-parser
  • tested in sequential and parallel mode using ioipsl.
  • for now, only two fields of "tracers(:)" derived type vector are used: "name" and "longName".
Location:
LMDZ6/trunk/libf/phylmd/Dust
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/Dust/phytracr_spl_mod.F90

    r3977 r4046  
    14161416       !print *,nbtr
    14171417       do it=1,nbtr
    1418         print *, it, tname(it+nqo)
    1419         if (tname(it+nqo) == 'PREC' ) then
    1420             id_prec=it
    1421         endif
    1422         if (tname(it+nqo) == 'FINE' ) then
    1423             id_fine=it
    1424         endif
    1425         if (tname(it+nqo) == 'COSS' ) then
    1426             id_coss=it
    1427         endif
    1428         if (tname(it+nqo) == 'CODU' ) then
    1429             id_codu=it
    1430         endif
    1431         if (tname(it+nqo) == 'SCDU' ) then
    1432             id_scdu=it
    1433         endif
     1418        print *, it, tracers(it+nqo)%name
     1419        SELECT CASE(tracers(it+nqo)%name)
     1420          CASE('PREC'); id_prec=it
     1421          CASE('FINE'); id_fine=it
     1422          CASE('COSS'); id_coss=it
     1423          CASE('CODU'); id_codu=it
     1424          CASE('SCDU'); id_scdu=it
     1425        END SELECT
    14341426       enddo
    14351427       ! check consistency with dust emission scheme:
  • LMDZ6/trunk/libf/phylmd/Dust/splaeropt_5wv_rrtm.F90

    r2753 r4046  
    113113
    114114  DO itr=1,nbtr    !--loop over tracers 
    115 
    116     IF (tname(itr+nqo)=='PREC') THEN       !--fine mode accumulation mode
    117       CYCLE
    118     ELSE IF (tname(itr+nqo)=='FINE') THEN  !--fine mode accumulation mode
    119       soluble=.TRUE.
    120       spsol=1
    121       aerindex=1
    122     ELSE IF (tname(itr+nqo)=='COSS') THEN  !--coarse mode sea salt
    123       soluble=.TRUE.
    124       spsol=2
    125       aerindex=2
    126     ELSE IF (tname(itr+nqo)=='CODU') THEN  !--coarse mode dust
    127       soluble=.FALSE.
    128       spinsol=1
    129       aerindex=3
    130     ELSE IF (tname(itr+nqo)=='SCDU') THEN  !--super coarse mode dust
    131       soluble=.FALSE.
    132       spinsol=2
    133       aerindex=4
    134     ELSE
    135        CALL abort_physic(modname,'I cannot do aerosol optics for '//tname(itr+nqo),1)
    136     ENDIF
     115    SELECT CASE(tracers(itr+nqo)%name)
     116      CASE('PREC'); CYCLE                                  !--precursor
     117      CASE('FINE'); soluble=.TRUE.;  spsol=1; aerindex=1   !--fine mode accumulation mode
     118      CASE('COSS'); soluble=.TRUE.;  spsol=2; aerindex=2   !--coarse mode sea salt
     119      CASE('CODU'); soluble=.FALSE.; spsol=1; aerindex=3   !--coarse mode dust
     120      CASE('SCDU'); soluble=.FALSE.; spsol=2; aerindex=4   !--super coarse mode dust
     121      CASE DEFAULT; CALL abort_physic(modname,'I cannot do aerosol optics for '//tracers(itr+nqo)%name,1)
     122    END SELECT
    137123
    138124    DO la=1,las
  • LMDZ6/trunk/libf/phylmd/Dust/splaeropt_6bands_rrtm.F90

    r3770 r4046  
    165165  cg_ae(:,:,:,:)=0.
    166166   
    167   DO itr=1, nbtr
    168 
    169     IF (tname(itr+nqo)=='PREC') THEN       !--precursor
    170       CYCLE
    171     ELSE IF (tname(itr+nqo)=='FINE') THEN  !--fine mode accumulation mode
    172       soluble=.TRUE.
    173       spsol=1
    174       aerindex=1
    175     ELSE IF (tname(itr+nqo)=='COSS') THEN  !--coarse mode sea salt
    176       soluble=.TRUE.
    177       spsol=2
    178       aerindex=2
    179     ELSE IF (tname(itr+nqo)=='CODU') THEN  !--coarse mode dust
    180       soluble=.FALSE.
    181       spinsol=1
    182       aerindex=3
    183     ELSE IF (tname(itr+nqo)=='SCDU') THEN  !--super coarse mode dust
    184       soluble=.FALSE.
    185       spinsol=2
    186       aerindex=4
    187     ELSE
    188        CALL abort_physic(modname,'I cannot do aerosol optics for '//tname(itr+nqo),1)
    189     ENDIF
     167  DO itr=1,nbtr    !--loop over tracers 
     168    SELECT CASE(tracers(itr+nqo)%name)
     169      CASE('PREC'); CYCLE                                  !--precursor
     170      CASE('FINE'); soluble=.TRUE.;  spsol=1; aerindex=1   !--fine mode accumulation mode
     171      CASE('COSS'); soluble=.TRUE.;  spsol=2; aerindex=2   !--coarse mode sea salt
     172      CASE('CODU'); soluble=.FALSE.; spsol=1; aerindex=3   !--coarse mode dust
     173      CASE('SCDU'); soluble=.FALSE.; spsol=2; aerindex=4   !--super coarse mode dust
     174      CASE DEFAULT; CALL abort_physic(modname,'I cannot do aerosol optics for '//tracers(itr+nqo)%name,1)
     175    END SELECT
    190176
    191177    IF (soluble) THEN ! For aerosol soluble components
  • LMDZ6/trunk/libf/phylmd/Dust/splaeropt_lw_rrtm.F90

    r2753 r4046  
    5555    !
    5656    DO itr=1,nbtr
    57       !
    58       IF (tname(itr+nqo)=='PREC') THEN       !--precursor
    59         CYCLE
    60       ELSE IF (tname(itr+nqo)=='FINE') THEN  !--fine mode accumulation mode
    61         CYCLE
    62       ELSE IF (tname(itr+nqo)=='COSS') THEN  !--coarse mode sea salt
    63         CYCLE
    64       ELSE IF (tname(itr+nqo)=='CODU') THEN  !--coarse mode dust
    65         spinsol=1
    66       ELSE IF (tname(itr+nqo)=='SCDU') THEN  !--super coarse mode dust
    67         spinsol=2
    68       ELSE
    69          CALL abort_physic(modname,'I cannot do aerosol optics for '//tname(itr+nqo),1)
    70       ENDIF
     57      SELECT CASE(tracers(itr+nqo)%name)
     58        CASE('PREC','FINE''COSS'); CYCLE                   !--precursor or fine/coarde accumulation mode
     59        CASE('CODU'); spinsol=1                            !--coarse mode dust
     60        CASE('SCDU'); spinsol=2                            !--super coarse mode dust
     61        CASE DEFAULT; CALL abort_physic(modname,'I cannot do aerosol optics for '//tracers(itr+nqo)%name,1)
     62      END SELECT
    7163      !
    7264      DO inu=1,NLW
  • LMDZ6/trunk/libf/phylmd/Dust/splaerosol_optic_rrtm.F90

    r2753 r4046  
    5151  !
    5252  DO itr=1,nbtr
    53     IF (tname(itr+nqo)=='FINE') THEN
     53    IF (tracers(itr+nqo)%name=='FINE') THEN
    5454      mass_solu_aero(:,:)    = tr_seri(:,:,itr)
    5555      mass_solu_aero_pi(:,:) = tr_seri(:,:,itr)
Note: See TracChangeset for help on using the changeset viewer.