Ignore:
Timestamp:
Dec 15, 2021, 11:18:49 PM (2 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".
File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmdiso/phys_output_write_mod.F90

    r4040 r4046  
    2525
    2626    USE dimphy, ONLY: klon, klev, klevp1
    27     USE infotrac_phy, ONLY: nbtr
     27    USE infotrac_phy, ONLY: nbtr, nqtot, nqo, type_trac, tracers, niadv, &
     28        nqtottr,itr_indice
     29    USE strings_mod,  ONLY: maxlen
    2830    USE mod_phys_lmdz_para, ONLY: is_north_pole_phy,is_south_pole_phy
    2931    USE mod_grid_phy_lmdz, ONLY : nbp_lon, nbp_lat
     
    383385    USE pbl_surface_mod, ONLY: snow
    384386    USE indice_sol_mod, ONLY: nbsrf
    385     USE infotrac_phy, ONLY: nqtot, nqo, type_trac, tname, niadv, &
    386         nqtottr,itr_indice ! C Risi: ajout nqtottr
    387387#ifdef ISO
    388388    USE infotrac_phy, only: ntraciso,niso,nqtottr
     
    467467    INTEGER ISW
    468468    CHARACTER*1 ch1
    469     CHARACTER*20 varname
     469    CHARACTER(LEN=maxlen) :: varname, dn
    470470
    471471#ifdef CPP_XIOS
     
    538538          DO iq=nqo+1, nqtot
    539539            iiq=niadv(iq)
    540             varname=trim(tname(iiq))
    541             WRITE (lunout,*) 'XIOS var=', nqo, iq, nqtot, varname
     540            dn = 'd'//TRIM(tracers(iiq)%name)//'_'
     541            WRITE (lunout,*) 'XIOS var=', nqo, iq, nqtot, tracers(iiq)%name
     542
     543            unt = "kg kg-1"
     544            varname=trim(tracers(iiq)%name)
    542545            CALL xios_add_child(group_handle, child, varname)
    543             CALL xios_set_attr(child, name=varname, unit="kg kg-1")
    544             varname='d'//trim(tname(iiq))//'_vdf'
     546            CALL xios_set_attr(child, name=varname, unit=unt)
     547
     548            unt = "kg kg-1 s-1"
     549            varname=TRIM(dn)//'vdf'
    545550            CALL xios_add_child(group_handle, child, varname)
    546             CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
    547             varname='d'//trim(tname(iiq))//'_the'
     551            CALL xios_set_attr(child, name=varname, unit=unt)
     552            varname=TRIM(dn)//'the'
    548553            CALL xios_add_child(group_handle, child, varname)
    549             CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
    550             varname='d'//trim(tname(iiq))//'_con'
     554            CALL xios_set_attr(child, name=varname, unit=unt)
     555            varname=TRIM(dn)//'con'
    551556            CALL xios_add_child(group_handle, child, varname)
    552             CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
    553             varname='d'//trim(tname(iiq))//'_lessi_impa'
     557            CALL xios_set_attr(child, name=varname, unit=unt)
     558            varname=TRIM(dn)//'lessi_impa'
    554559            CALL xios_add_child(group_handle, child, varname)
    555             CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
    556             varname='d'//trim(tname(iiq))//'_lessi_nucl'
     560            CALL xios_set_attr(child, name=varname, unit=unt)
     561            varname=TRIM(dn)//'lessi_nucl'
    557562            CALL xios_add_child(group_handle, child, varname)
    558             CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
    559             varname='d'//trim(tname(iiq))//'_insc'
     563            CALL xios_set_attr(child, name=varname, unit=unt)
     564            varname=TRIM(dn)//'insc'
    560565            CALL xios_add_child(group_handle, child, varname)
    561             CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
    562             varname='d'//trim(tname(iiq))//'_bcscav'
     566            CALL xios_set_attr(child, name=varname, unit=unt)
     567            varname=TRIM(dn)//'bcscav'
    563568            CALL xios_add_child(group_handle, child, varname)
    564             CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
    565             varname='d'//trim(tname(iiq))//'_evapls'
     569            CALL xios_set_attr(child, name=varname, unit=unt)
     570            varname=TRIM(dn)//'evapls'
    566571            CALL xios_add_child(group_handle, child, varname)
    567             CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
    568             varname='d'//trim(tname(iiq))//'_ls'
     572            CALL xios_set_attr(child, name=varname, unit=unt)
     573            varname=TRIM(dn)//'ls'
    569574            CALL xios_add_child(group_handle, child, varname)
    570             CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
    571             varname='d'//trim(tname(iiq))//'_trsp'
     575            CALL xios_set_attr(child, name=varname, unit=unt)
     576            varname=TRIM(dn)//'trsp'
    572577            CALL xios_add_child(group_handle, child, varname)
    573             CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
    574             varname='d'//trim(tname(iiq))//'_sscav'
     578            CALL xios_set_attr(child, name=varname, unit=unt)
     579            varname=TRIM(dn)//'sscav'
    575580            CALL xios_add_child(group_handle, child, varname)
    576             CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
    577             varname='d'//trim(tname(iiq))//'_sat'
     581            CALL xios_set_attr(child, name=varname, unit=unt)
     582            varname=TRIM(dn)//'sat'
    578583            CALL xios_add_child(group_handle, child, varname)
    579             CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
    580             varname='d'//trim(tname(iiq))//'_uscav'
     584            CALL xios_set_attr(child, name=varname, unit=unt)
     585            varname=TRIM(dn)//'uscav'
    581586            CALL xios_add_child(group_handle, child, varname)
    582             CALL xios_set_attr(child, name=varname, unit="kg kg-1 s-1")
     587            CALL xios_set_attr(child, name=varname, unit=unt)
    583588          ENDDO
    584589          !On ajoute les variables 2D traceurs par l interface fortran
     
    587592          DO iq=nqo+1, nqtot
    588593            iiq=niadv(iq)
    589             varname='cum'//trim(tname(iiq))
     594
     595            unt = "kg m-2"
     596            varname='cum'//trim(tracers(iiq)%name)
    590597            WRITE (lunout,*) 'XIOS var=', iq, nqtot, varname
    591598            CALL xios_add_child(group_handle, child, varname)
    592             CALL xios_set_attr(child, name=varname, unit="kg m-2")
    593             varname='cumd'//trim(tname(iiq))//'_dry'
     599            CALL xios_set_attr(child, name=varname, unit=unt)
     600
     601            unt = "kg m-2 s-1"
     602            varname='cumd'//trim(tracers(iiq)%name)//'_dry'
    594603            CALL xios_add_child(group_handle, child, varname)
    595             CALL xios_set_attr(child, name=varname, unit="kg m-2 s-1")
     604            CALL xios_set_attr(child, name=varname, unit=unt)
    596605          ENDDO
    597606    ENDIF
Note: See TracChangeset for help on using the changeset viewer.