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/phylmd/phys_output_mod.F90

    r3792 r4046  
    3535    USE iophy
    3636    USE dimphy
    37     USE infotrac_phy, ONLY: nqtot, nqo, niadv, tname, ttext, type_trac
     37    USE infotrac_phy, ONLY: nqtot, nqo, niadv, tracers, type_trac
     38    USE strings_mod,  ONLY: maxlen
    3839    USE ioipsl
    3940    USE phys_cal_mod, only : hour, calend
     
    9596    CHARACTER(LEN=4), DIMENSION(nlevSTD)  :: clevSTD
    9697    REAL, DIMENSION(nlevSTD)              :: rlevSTD
    97     INTEGER                               :: nsrf, k, iq, iiq, iff, i, j, ilev
     98    INTEGER                               :: nsrf, k, iq, iiq, iff, i, j, ilev, jq
    9899    INTEGER                               :: naero
    99100    LOGICAL                               :: ok_veget
     
    113114    LOGICAL, DIMENSION(nfiles)            :: phys_out_filekeys
    114115    LOGICAL, DIMENSION(nfiles)            :: phys_out_filestations
     116
     117    CHARACTER(LEN=50) :: outiso
     118    CHARACTER(LEN=20) :: unit
     119    CHARACTER(LEN=maxlen) :: tnam, lnam, dn
     120    INTEGER :: flag(nfiles)
    115121
    116122!!!!!!!!!! stockage dans une region limitee pour chaque fichier !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    494500       IF (nqtot>=nqo+1) THEN
    495501!
    496             DO iq=nqo+1,nqtot
    497             iiq=niadv(iq)
    498             o_trac(iq-nqo) = ctrl_out((/ 1, 5, 5, 5, 10, 10, 11, 11, 11, 11 /), &
    499                            tname(iiq),'Tracer '//ttext(iiq), "-",  &
    500                            (/ '', '', '', '', '', '', '', '', '', '' /))
    501             o_dtr_vdf(iq-nqo) = ctrl_out((/ 4, 7, 7, 7, 10, 10, 11, 11, 11, 11 /), &
    502                               'd'//trim(tname(iq))//'_vdf',  &
    503                               'Tendance tracer '//ttext(iiq), "-" , &
    504                               (/ '', '', '', '', '', '', '', '', '', '' /))
    505 
    506             o_dtr_the(iq-nqo) = ctrl_out((/ 5, 7, 7, 7, 10, 10, 11, 11, 11, 11 /), &
    507                               'd'//trim(tname(iq))//'_the', &
    508                               'Tendance tracer '//ttext(iiq), "-", &
    509                               (/ '', '', '', '', '', '', '', '', '', '' /))
    510 
    511             o_dtr_con(iq-nqo) = ctrl_out((/ 5, 7, 7, 7, 10, 10, 11, 11, 11, 11 /), &
    512                               'd'//trim(tname(iq))//'_con', &
    513                               'Tendance tracer '//ttext(iiq), "-", &
    514                               (/ '', '', '', '', '', '', '', '', '', '' /))
    515 
    516             o_dtr_lessi_impa(iq-nqo) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11, 11 /), &
    517                                      'd'//trim(tname(iq))//'_lessi_impa', &
    518                                      'Tendance tracer '//ttext(iiq), "-", &
    519                                      (/ '', '', '', '', '', '', '', '', '', '' /))
    520 
    521             o_dtr_lessi_nucl(iq-nqo) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11, 11 /), &
    522                                      'd'//trim(tname(iq))//'_lessi_nucl', &
    523                                      'Tendance tracer '//ttext(iiq), "-", &
    524                                      (/ '', '', '', '', '', '', '', '', '', '' /))
    525 
    526             o_dtr_insc(iq-nqo) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11, 11 /), &
    527                                'd'//trim(tname(iq))//'_insc', &
    528                                'Tendance tracer '//ttext(iiq), "-", &
    529                                (/ '', '', '', '', '', '', '', '', '', '' /))
    530 
    531             o_dtr_bcscav(iq-nqo) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11, 11 /), &
    532                                  'd'//trim(tname(iq))//'_bcscav', &
    533                                  'Tendance tracer '//ttext(iiq), "-", &
    534                                  (/ '', '', '', '', '', '', '', '', '', '' /))
    535 
    536             o_dtr_evapls(iq-nqo) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11, 11 /), &
    537                                  'd'//trim(tname(iq))//'_evapls', &
    538                                  'Tendance tracer '//ttext(iiq), "-", &
    539                                  (/ '', '', '', '', '', '', '', '', '', '' /))
    540 
    541             o_dtr_ls(iq-nqo) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11, 11 /), &
    542                              'd'//trim(tname(iq))//'_ls', &
    543                              'Tendance tracer '//ttext(iiq), "-", &
    544                              (/ '', '', '', '', '', '', '', '', '', '' /))
    545 
    546             o_dtr_trsp(iq-nqo) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11, 11 /), &
    547                                'd'//trim(tname(iq))//'_trsp', &
    548                                'Tendance tracer '//ttext(iiq), "-", &
    549                                (/ '', '', '', '', '', '', '', '', '', '' /))
    550 
    551             o_dtr_sscav(iq-nqo) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11, 11 /), &
    552                                 'd'//trim(tname(iq))//'_sscav', &
    553                                 'Tendance tracer '//ttext(iiq), "-", &
    554                                 (/ '', '', '', '', '', '', '', '', '', '' /))
    555 
    556             o_dtr_sat(iq-nqo) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11, 11 /), &
    557                                'd'//trim(tname(iq))//'_sat', &
    558                                'Tendance tracer '//ttext(iiq), "-", &
    559                                (/ '', '', '', '', '', '', '', '', '', '' /))
    560 
    561             o_dtr_uscav(iq-nqo) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11, 11 /), &
    562                                 'd'//trim(tname(iq))//'_uscav', &
    563                                 'Tendance tracer '//ttext(iiq), "-", &
    564                                  (/ '', '', '', '', '', '', '', '', '', '' /))
    565 
    566             o_dtr_dry(iq-nqo) = ctrl_out((/ 7, 7, 7, 7, 10, 10, 11, 11, 11, 11 /), &
    567                               'cum'//'d'//trim(tname(iq))//'_dry', &
    568                               'tracer tendency dry deposition'//ttext(iiq), "-", &
    569                               (/ '', '', '', '', '', '', '', '', '', '' /))
    570 
    571             o_trac_cum(iq-nqo) = ctrl_out((/ 1, 4, 10, 10, 10, 10, 11, 11, 11, 11 /), &
    572                                'cum'//tname(iiq),&
    573                                'Cumulated tracer '//ttext(iiq), "-", &
    574                                (/ '', '', '', '', '', '', '', '', '', '' /))
    575             ENDDO
    576       ENDIF
     502          DO iq=nqo+1,nqtot
     503            iiq=niadv(iq); jq = iq-nqo
     504            dn = 'd'//TRIM(tracers(iiq)%name)//'_'
     505
     506            flag = [1, 5, 5, 5, 10, 10, 11, 11, 11, 11]
     507            lnam = 'Tracer '//TRIM(tracers(iiq)%longName)
     508            tnam = TRIM(tracers(iiq)%name); o_trac          (jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     509            flag = [4, 7, 7, 7, 10, 10, 11, 11, 11, 11]
     510            lnam = 'Tendance tracer '//TRIM(tracers(iiq)%longName)
     511            tnam = TRIM(dn)//'vdf';         o_dtr_vdf       (jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     512
     513            flag = [5, 7, 7, 7, 10, 10, 11, 11, 11, 11]
     514            tnam = TRIM(dn)//'the';         o_dtr_the       (jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     515            tnam = TRIM(dn)//'con';         o_dtr_con       (jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     516
     517            flag = [7, 7, 7, 7, 10, 10, 11, 11, 11, 11]
     518            tnam = TRIM(dn)//'lessi_impa';  o_dtr_lessi_impa(jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     519            tnam = TRIM(dn)//'lessi_nucl';  o_dtr_lessi_nucl(jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     520            tnam = TRIM(dn)//'insc';        o_dtr_insc      (jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     521            tnam = TRIM(dn)//'bcscav';      o_dtr_bcscav    (jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     522            tnam = TRIM(dn)//'evapls';      o_dtr_evapls    (jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     523            tnam = TRIM(dn)//'ls';          o_dtr_ls        (jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     524            tnam = TRIM(dn)//'trsp';        o_dtr_trsp      (jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     525            tnam = TRIM(dn)//'sscav';       o_dtr_sscav     (jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     526            tnam = TRIM(dn)//'sat';         o_dtr_sat       (jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     527            tnam = TRIM(dn)//'uscav';       o_dtr_uscav     (jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     528
     529            lnam = 'tracer tendency dry deposition'//TRIM(tracers(iiq)%longName)
     530            tnam = 'cum'//TRIM(dn)//'dry';  o_dtr_dry       (jq) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     531
     532            flag = [1, 4, 10, 10, 10, 10, 11, 11, 11, 11]
     533            lnam = 'Cumulated tracer '//TRIM(tracers(iiq)%longName)
     534            tnam = 'cum'//TRIM(tracers(iiq)%name); o_trac_cum(jq)= ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     535          ENDDO
     536       ENDIF
    577537
    578538   ENDDO !  iff
     
    594554      WRITE(lunout,*)'phys_output_open: ends here'
    595555    ENDIF
     556
     557!  DO iq=nqo+1,nqtot
     558!    iiq=niadv(iq)
     559!    dn = 'd'//TRIM(tracers(iiq)%name)//'_'
     560!    WRITE(*,'(a,i1,a,10i3)')'trac(',iiq,')%flag = ',o_trac(iiq)%flag
     561!    WRITE(*,'(a,i1,a)')'trac(',iiq,')%tnam = '//TRIM(o_trac(iiq)%name)
     562!    WRITE(*,'(a,i1,a)')'trac(',iiq,')%lnam = '//TRIM(o_trac(iiq)%description)
     563!  END DO
    596564
    597565  END SUBROUTINE phys_output_open
Note: See TracChangeset for help on using the changeset viewer.