Ignore:
Timestamp:
Jun 17, 2022, 4:24:49 PM (2 years ago)
Author:
lguez
Message:

Sync latest trunk changes to branch LMDZ-ECRAD.

Location:
LMDZ6/branches/LMDZ-ECRAD
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/LMDZ-ECRAD

  • LMDZ6/branches/LMDZ-ECRAD/libf/phylmd/phys_output_mod.F90

    r3792 r4171  
    3535    USE iophy
    3636    USE dimphy
    37     USE infotrac_phy, ONLY: nqtot, nqo, niadv, tname, ttext, type_trac
     37    USE infotrac_phy, ONLY: nqtot, tracers, niso
     38    USE strings_mod,  ONLY: maxlen
    3839    USE ioipsl
    3940    USE phys_cal_mod, only : hour, calend
     
    5354    IMPLICIT NONE
    5455    include "clesphys.h"
    55     include "thermcell.h"
    5656    include "YOMCST.h"
    5757
     
    9595    CHARACTER(LEN=4), DIMENSION(nlevSTD)  :: clevSTD
    9696    REAL, DIMENSION(nlevSTD)              :: rlevSTD
    97     INTEGER                               :: nsrf, k, iq, iiq, iff, i, j, ilev
     97    INTEGER                               :: nsrf, k, iq, iff, i, j, ilev, itr, ixt, iiso, izone
    9898    INTEGER                               :: naero
    9999    LOGICAL                               :: ok_veget
     
    114114    LOGICAL, DIMENSION(nfiles)            :: phys_out_filestations
    115115
     116    CHARACTER(LEN=maxlen) :: tnam, lnam, dn
     117    INTEGER :: flag(nfiles)
     118
    116119!!!!!!!!!! stockage dans une region limitee pour chaque fichier !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    117120    !                 entre [phys_out_lonmin,phys_out_lonmax] et [phys_out_latmin,phys_out_latmax]
    118 
    119     LOGICAL, DIMENSION(nfiles), SAVE  :: phys_out_regfkey       = (/ .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., &
    120                                                                      .FALSE., .FALSE., .FALSE., .FALSE., .FALSE. /)
    121     REAL, DIMENSION(nfiles), SAVE     :: phys_out_lonmin        = (/ -180., -180., -180., -180., -180., &
    122                                                                      -180., -180., -180., -180., -180. /)
    123     REAL, DIMENSION(nfiles), SAVE     :: phys_out_lonmax        = (/  180.,  180.,  180.,  180.,  180., &
    124                                                                       180.,  180.,  180.,  180.,  180. /)
    125     REAL, DIMENSION(nfiles), SAVE     :: phys_out_latmin        = (/  -90.,  -90.,  -90.,  -90.,  -90., &
    126                                                                       -90.,  -90.,  -90.,  -90.,  -90. /)
    127     REAL, DIMENSION(nfiles), SAVE     :: phys_out_latmax        = (/   90.,   90.,   90.,   90.,   90., &
    128                                                                        90.,   90.,   90.,   90.,   90. /)
     121    LOGICAL, DIMENSION(nfiles), SAVE :: &
     122      phys_out_regfkey = [.FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE., .FALSE.]
     123    REAL,    DIMENSION(nfiles), SAVE :: &
     124      phys_out_lonmin  = [  -180.,   -180.,   -180.,   -180.,   -180.,   -180.,   -180.,   -180.,   -180.,   -180.], &
     125      phys_out_lonmax  = [   180.,    180.,    180.,    180.,    180.,    180.,    180.,    180.,    180.,    180.], &
     126      phys_out_latmin  = [   -90.,    -90.,    -90.,    -90.,    -90.,    -90.,    -90.,    -90.,    -90.,    -90.], &
     127      phys_out_latmax  = [    90.,     90.,     90.,     90.,     90.,     90.,     90.,     90.,     90.,     90.]
    129128    REAL, DIMENSION(klev,2) :: Ahyb_bounds, Bhyb_bounds
    130129    REAL, DIMENSION(klev+1)   :: lev_index
     
    163162    ALLOCATE(o_dtr_dry(nqtot),o_dtr_vdf(nqtot))
    164163
    165     levmax = (/ klev, klev, klev, klev, klev, klev, nlevSTD, nlevSTD, nlevSTD, klev /)
     164    levmax = [klev, klev, klev, klev, klev, klev, nlevSTD, nlevSTD, nlevSTD, klev]
    166165
    167166    phys_out_filenames(1) = 'histmth'
     
    360359    CALL wxios_add_vaxis("bnds", 2, (/1.,2./))
    361360
    362      CALL wxios_add_vaxis("Alt", &
     361    CALL wxios_add_vaxis("Alt", &
    363362            levmax(iff) - levmin(iff) + 1, pseudoalt)
    364363
    365     IF (NSW.EQ.6) THEN
    366 !
    367 !wl1_sun: minimum bound of wavelength (in um)
    368 !
    369       wl1_sun(1)=0.180
    370       wl1_sun(2)=0.250
    371       wl1_sun(3)=0.440
    372       wl1_sun(4)=0.690
    373       wl1_sun(5)=1.190
    374       wl1_sun(6)=2.380
    375 !
    376 !wl2_sun: maximum bound of wavelength (in um)
    377 !
    378       wl2_sun(1)=0.250
    379       wl2_sun(2)=0.440
    380       wl2_sun(3)=0.690
    381       wl2_sun(4)=1.190
    382       wl2_sun(5)=2.380
    383       wl2_sun(6)=4.000
    384 !
    385     ELSE IF(NSW.EQ.2) THEN
    386 !
    387 !wl1_sun: minimum bound of wavelength (in um)
    388 !
    389       wl1_sun(1)=0.250
    390       wl1_sun(2)=0.690
    391 !
    392 !wl2_sun: maximum bound of wavelength (in um)
    393 !
    394       wl2_sun(1)=0.690
    395       wl2_sun(2)=4.000
    396     ENDIF
     364    ! wl1_sun/wl2_sun: minimum/maximum bound of wavelength (in um)
     365    SELECT CASE(NSW)
     366      CASE(6)
     367        wl1_sun(1:6) = [0.180, 0.250, 0.440, 0.690, 1.190, 2.380]
     368        wl2_sun(1:6) = [0.250, 0.440, 0.690, 1.190, 2.380, 4.000]
     369      CASE(2)
     370        wl1_sun(1:2) = [0.250, 0.690]
     371        wl2_sun(1:2) = [0.690, 4.000]
     372    END SELECT
    397373
    398374    DO ISW=1, NSW
     
    492468     ENDIF ! clef_files
    493469
    494        IF (nqtot>=nqo+1) THEN
    495 !
    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
     470          itr = 0
     471          DO iq = 1, nqtot
     472            IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
     473            itr = itr + 1
     474            dn = 'd'//TRIM(tracers(iq)%name)//'_'
     475
     476            flag = [1, 5, 5, 5, 10, 10, 11, 11, 11, 11]
     477            lnam = 'Tracer '//TRIM(tracers(iq)%longName)
     478            tnam = TRIM(tracers(iq)%name);  o_trac          (itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     479
     480            flag = [4, 7, 7, 7, 10, 10, 11, 11, 11, 11]
     481            lnam = 'Tendance tracer '//TRIM(tracers(iq)%longName)
     482            tnam = TRIM(dn)//'vdf';         o_dtr_vdf       (itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     483
     484            flag = [5, 7, 7, 7, 10, 10, 11, 11, 11, 11]
     485            tnam = TRIM(dn)//'the';         o_dtr_the       (itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     486            tnam = TRIM(dn)//'con';         o_dtr_con       (itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     487
     488            flag = [7, 7, 7, 7, 10, 10, 11, 11, 11, 11]
     489            tnam = TRIM(dn)//'lessi_impa';  o_dtr_lessi_impa(itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     490            tnam = TRIM(dn)//'lessi_nucl';  o_dtr_lessi_nucl(itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     491            tnam = TRIM(dn)//'insc';        o_dtr_insc      (itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     492            tnam = TRIM(dn)//'bcscav';      o_dtr_bcscav    (itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     493            tnam = TRIM(dn)//'evapls';      o_dtr_evapls    (itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     494            tnam = TRIM(dn)//'ls';          o_dtr_ls        (itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     495            tnam = TRIM(dn)//'trsp';        o_dtr_trsp      (itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     496            tnam = TRIM(dn)//'sscav';       o_dtr_sscav     (itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     497            tnam = TRIM(dn)//'sat';         o_dtr_sat       (itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     498            tnam = TRIM(dn)//'uscav';       o_dtr_uscav     (itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     499
     500            lnam = 'tracer tendency dry deposition'//TRIM(tracers(iq)%longName)
     501            tnam = 'cum'//TRIM(dn)//'dry';  o_dtr_dry       (itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     502
     503            flag = [1, 4, 10, 10, 10, 10, 11, 11, 11, 11]
     504            lnam = 'Cumulated tracer '//TRIM(tracers(iq)%longName)
     505            tnam = 'cum'//TRIM(tracers(iq)%name); o_trac_cum(itr) = ctrl_out(flag, tnam, lnam, "-", [('',i=1,nfiles)])
     506          ENDDO
    577507
    578508   ENDDO !  iff
     
    594524      WRITE(lunout,*)'phys_output_open: ends here'
    595525    ENDIF
     526
     527!  DO iq=1,nqtot
     528!    IF(.NOT.(tracers(iq)%isAdvected .AND. tracers(iq)%isInPhysics)) CYCLE
     529!    WRITE(*,'(a,i1,a,10i3)')'trac(',iq,')%flag = ',o_trac(iq)%flag
     530!    WRITE(*,'(a,i1,a)')'trac(',iq,')%name = '//TRIM(o_trac(iq)%name)
     531!    WRITE(*,'(a,i1,a)')'trac(',iq,')%description = '//TRIM(o_trac(iq)%description)
     532!  END DO
    596533
    597534  END SUBROUTINE phys_output_open
Note: See TracChangeset for help on using the changeset viewer.