Changeset 5685 for LMDZ6


Ignore:
Timestamp:
May 27, 2025, 1:07:44 PM (12 days ago)
Author:
fhourdin
Message:

Correction/nettoyage sorties en pression

Location:
LMDZ6/trunk/libf
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/calcul_STDlev.h

    r2312 r5685  
    22! $Header$
    33!
     4!-------------------------------------------------------------------
     5! Interpolation sur des niveaux de pression.
     6!
     7! Enchainement des operations en prenant pour exemple la temperature
     8!
     9! 1. CALL ini_undefSTD :
     10!  On met les champs cumules à 0 si
     11!  if mod(itap,nint(freq_outnmc(n)/phys_tstep))==1
     12!          tnondef(i, k, n) = 0.
     13!          tsumstd(i, k, n) = 0.
     14!
     15! 2. Ensuite :
     16!   on interpole les champs sur les niveaux STD de pression
     17!   a chaque pas de temps de la physique avec plevel_new
     18!   t_seri -> tlevSTD
     19!
     20! 3. CALL undefSTD :
     21!   On ajoute les champs à la moyenne tous les frec_calnmc
     22!      pas de temps
     23!   IF (mod(itap,nint(freq_calnmc(n)/phys_tstep))==0) THEN
     24!         IF (tlevstd(i,k)==missing_val) THEN
     25!           tnondef(i, k, n) = tnondef(i, k, n) + 1.
     26!         ELSE IF (tlevstd(i,k)/=missing_val) THEN
     27!           tsumstd(i, k, n) = tsumstd(i, k, n) + tlevstd(i, k)
     28!
     29! 4. CALL moy_undefSTD
     30!    On normalise à freq_outnmc, avant de reinitialiser plus haut dans ini_undef
     31!    IF mod(itap,nint(freq_outnmc(n)/phys_tstep))==0
     32!         tsumstd(i, k, n) = tsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     33!
     34! 5. Intrpolation des flux (pourquoi pas avec 2 ?)
     35!
     36! 6. Choix entre instantanné et moyenne en temps
     37!     twriteSTD(:,:,1)=tsumSTD(:,:,1)
     38!     twriteSTD(:,:,3)=tlevSTD(:,:)
     39!
     40!  Premiere série de modifications (2025/05/07, FH) :
     41!   - Fait en sorte que freq_outnmc=ecrit_files
     42!   - Mis tous les USE avec ONLY dans *undefSTD.f90
     43!   - Utilie ecrit_files comme frequence de sortie freq_outnmc
     44!   - Nettoye la lecture des freq_outnmc et freq_calnmc dans conf_phys
     45!   - Passe les dimensionnement de certaines variables de 3 à 10
     46!     nombre de fichiers par défaut. En gros nout=nfiles
     47
     48!  Proposition de modifications :
     49!   - Ne plus calculer l'interpolation à tous les pas de temps
     50!      mais seulement à la fréquence freq_calcnmc
     51!   - Mettre le call ini_undefSTD juste avant undef_STD et moy_undefSTD
     52!   - Enlever ecrit_files(7) = freq_outNMC(1) dans phys_output_mod
     53!   - Enlever les vieux controles de fichiers dans conf_phys
     54!   - enlever les dimensionnement à 10 en dur
     55!   - Enlever toute chaine de caractère NMC dans le modèle.
     56!
     57!-------------------------------------------------------------------
     58
    459!IM on initialise les variables
    560!
    661!       missing_val=nf90_fill_real
    762!
     63
     64! On peut à terme utiliser directement ecrit_files (le nom est moins
     65! bien choisi ...
     66
     67       !print*,'STDSTD ecrit_files ',ecrit_files(1:4)
     68       freq_outnmc(:)=ecrit_files(:)
     69       freq_calnmc(:)=pdtphys
     70
    871       IF (.not. ok_all_xml) then
    9         CALL ini_undefSTD(itap,itapm1)
     72        CALL ini_undefSTD(itap)
    1073       ENDIF
    11 !
    12 !IM on interpole les champs sur les niveaux STD de pression
    13 !IM a chaque pas de temps de la physique
    1474!
    1575!-------------------------------------------------------c
     
    134194       IF (.not. ok_all_xml) then
    135195        CALL undefSTD(itap, read_climoz)
    136         CALL moy_undefSTD(itap,itapm1)
     196        CALL moy_undefSTD(itap)
    137197       ENDIF
    138198!
     
    160220           lwup,LWup200)
    161221!
    162       twriteSTD(:,:,1)=tsumSTD(:,:,1)
    163       qwriteSTD(:,:,1)=qsumSTD(:,:,1)
    164       rhwriteSTD(:,:,1)=rhsumSTD(:,:,1)
    165       phiwriteSTD(:,:,1)=phisumSTD(:,:,1)
    166       uwriteSTD(:,:,1)=usumSTD(:,:,1)
    167       vwriteSTD(:,:,1)=vsumSTD(:,:,1)
    168       wwriteSTD(:,:,1)=wsumSTD(:,:,1)
    169 
    170       twriteSTD(:,:,2)=tsumSTD(:,:,2)
    171       qwriteSTD(:,:,2)=qsumSTD(:,:,2)
    172       rhwriteSTD(:,:,2)=rhsumSTD(:,:,2)
    173       phiwriteSTD(:,:,2)=phisumSTD(:,:,2)
    174       uwriteSTD(:,:,2)=usumSTD(:,:,2)
    175       vwriteSTD(:,:,2)=vsumSTD(:,:,2)
    176       wwriteSTD(:,:,2)=wsumSTD(:,:,2)
    177 
    178       twriteSTD(:,:,3)=tlevSTD(:,:)
    179       qwriteSTD(:,:,3)=qlevSTD(:,:)
    180       rhwriteSTD(:,:,3)=rhlevSTD(:,:)
    181       phiwriteSTD(:,:,3)=philevSTD(:,:)
    182       uwriteSTD(:,:,3)=ulevSTD(:,:)
    183       vwriteSTD(:,:,3)=vlevSTD(:,:)
    184       wwriteSTD(:,:,3)=wlevSTD(:,:)
    185 
    186       twriteSTD(:,:,4)=tlevSTD(:,:)
    187       qwriteSTD(:,:,4)=qlevSTD(:,:)
    188       rhwriteSTD(:,:,4)=rhlevSTD(:,:)
    189       phiwriteSTD(:,:,4)=philevSTD(:,:)
    190       uwriteSTD(:,:,4)=ulevSTD(:,:)
    191       vwriteSTD(:,:,4)=vlevSTD(:,:)
    192       wwriteSTD(:,:,4)=wlevSTD(:,:)
    193 !
    194 !IM initialisation 5eme fichier de sortie
    195       twriteSTD(:,:,5)=tlevSTD(:,:)
    196       qwriteSTD(:,:,5)=qlevSTD(:,:)
    197       rhwriteSTD(:,:,5)=rhlevSTD(:,:)
    198       phiwriteSTD(:,:,5)=philevSTD(:,:)
    199       uwriteSTD(:,:,5)=ulevSTD(:,:)
    200       vwriteSTD(:,:,5)=vlevSTD(:,:)
    201       wwriteSTD(:,:,5)=wlevSTD(:,:)
    202 !
    203 !IM initialisation 6eme fichier de sortie
    204       twriteSTD(:,:,6)=tlevSTD(:,:)
    205       qwriteSTD(:,:,6)=qlevSTD(:,:)
    206       rhwriteSTD(:,:,6)=rhlevSTD(:,:)
    207       phiwriteSTD(:,:,6)=philevSTD(:,:)
    208       uwriteSTD(:,:,6)=ulevSTD(:,:)
    209       vwriteSTD(:,:,6)=vlevSTD(:,:)
    210       wwriteSTD(:,:,6)=wlevSTD(:,:)
     222      do n=1,nout
     223         !print*,'STDSTD n nout',n,nout,clef_files(n)
     224         if (clef_files(n)) then
     225             if (type_ecri(n)=='ave(X)') then
     226                 !print*,'STDSTD fichier ave(X), n=',n
     227                 twriteSTD(:,:,n)=tsumSTD(:,:,n)
     228                 qwriteSTD(:,:,n)=qsumSTD(:,:,n)
     229                 rhwriteSTD(:,:,n)=rhsumSTD(:,:,n)
     230                 phiwriteSTD(:,:,n)=phisumSTD(:,:,n)
     231                 uwriteSTD(:,:,n)=usumSTD(:,:,n)
     232                 vwriteSTD(:,:,n)=vsumSTD(:,:,n)
     233                 wwriteSTD(:,:,n)=wsumSTD(:,:,n)
     234             else
     235                 !print*,'STDSTD fichier autre, n=',n,type_ecri(n)
     236                 twriteSTD(:,:,n)=tlevSTD(:,:)
     237                 qwriteSTD(:,:,n)=qlevSTD(:,:)
     238                 rhwriteSTD(:,:,n)=rhlevSTD(:,:)
     239                 phiwriteSTD(:,:,n)=philevSTD(:,:)
     240                 uwriteSTD(:,:,n)=ulevSTD(:,:)
     241                 vwriteSTD(:,:,n)=vlevSTD(:,:)
     242                 wwriteSTD(:,:,n)=wlevSTD(:,:)
     243             endif
     244         endif
     245      enddo
     246
    211247!IM for NMC files
    212248      DO n=1, nlevSTD3
  • LMDZ6/trunk/libf/phylmd/clesphys_mod_h.f90

    r5645 r5685  
    3636          , ok_kzmin                                                   &
    3737          , lev_histhf, lev_histday, lev_histmth                       &
    38           , lev_histins, lev_histLES, lev_histdayNMC, levout_histNMC   &
    39           , ok_histNMC                                                 &
     38          , lev_histins, lev_histLES                                   &
    4039          , type_run, ok_regdyn, ok_cosp, ok_airs                      &
    4140          , ok_mensuelCOSP, ok_journeCOSP, ok_hfCOSP                     &
     
    117116  !IM lev_histday : niveau sorties journalieres
    118117  !IM lev_histmth : niveau sorties mensuelles
    119   !IM lev_histdayNMC : on peut sortir soit sur 8 (comme AR5) ou bien
    120   !                    sur 17 niveaux de pression
    121118  INTEGER lev_histhf, lev_histday, lev_histmth
    122   INTEGER lev_histdayNMC
    123119  Integer lev_histins, lev_histLES
    124   !IM ok_histNMC  : sortie fichiers niveaux de pression (histmthNMC, histdayNMC, histhfNMC)
    125120  !IM freq_outNMC : frequences de sortie fichiers niveaux de pression (histmthNMC, histdayNMC, histhfNMC)
    126121  !IM freq_calNMC : frequences de calcul fis. hist*NMC.nc
    127   LOGICAL ok_histNMC(3)
    128   INTEGER levout_histNMC(3)
    129   REAL freq_outNMC(3), freq_calNMC(3)
     122  REAL freq_outNMC(10), freq_calNMC(10)
    130123  CHARACTER(len = 4) type_run
    131124  ! aer_type: pour utiliser un fichier constant dans readaerosol
     
    197190  !$OMP      , ok_kzmin                                                   &
    198191  !$OMP      , lev_histhf, lev_histday, lev_histmth                       &
    199   !$OMP      , lev_histins, lev_histLES, lev_histdayNMC, levout_histNMC   &
    200   !$OMP      , ok_histNMC                                                 &
     192  !$OMP      , lev_histins, lev_histLES                                   &
    201193  !$OMP      , type_run, ok_regdyn, ok_cosp, ok_airs                      &
    202194  !$OMP      , ok_mensuelCOSP, ok_journeCOSP, ok_hfCOSP                     &
  • LMDZ6/trunk/libf/phylmd/conf_phys_m.f90

    r5662 r5685  
    197197    INTEGER,SAVE :: iflag_order2_sollw_omp
    198198    INTEGER, SAVE :: lev_histins_omp, lev_histLES_omp
    199     INTEGER, SAVE :: lev_histdayNMC_omp
    200     INTEGER, SAVE :: levout_histNMC_omp(3)
    201     LOGICAL, SAVE :: ok_histNMC_omp(3)
    202     REAL, SAVE    :: freq_outNMC_omp(3), freq_calNMC_omp(3)
    203199    CHARACTER*4, SAVE :: type_run_omp
    204200    LOGICAL, SAVE :: ok_cosp_omp, ok_airs_omp
     
    18981894    CALL getin('lev_histLES',lev_histLES_omp)
    18991895    !
    1900     !Config Key  = lev_histdayNMC
    1901     !Config Desc =
    1902     !Config Def  = 8
    1903     !Config Help =
    1904     !
    1905     lev_histdayNMC_omp = 8
    1906     CALL getin('lev_histdayNMC',lev_histdayNMC_omp)
    1907     !
    1908     !Config Key  = levout_histNMC
    1909     !Config Desc =
    1910     !Config Def  = 5
    1911     !Config Help =
    1912     !
    1913     levout_histNMC_omp(1) = 5
    1914     levout_histNMC_omp(2) = 5
    1915     levout_histNMC_omp(3) = 5
    1916     CALL getin('levout_histNMC',levout_histNMC_omp)
    1917     !
    1918     !histNMC BEG
    1919     !Config Key  = ok_histNMC
    1920     !Config Desc = ok_histNMC(1) = frequence de sortie fichiers histmthNMC
    1921     !Config Desc = ok_histNMC(2) = frequence de sortie fichiers histdayNMC
    1922     !Config Desc = ok_histNMC(3) = frequence de sortie fichiers histhfNMC
    1923     !Config Def  = n, n, n
    1924     !Config Help =
    1925     !
    1926     ok_histNMC_omp(1) = .FALSE.
    1927     ok_histNMC_omp(2) = .FALSE.
    1928     ok_histNMC_omp(3) = .FALSE.
    1929     CALL getin('ok_histNMC',ok_histNMC_omp)
    1930     !
    1931     !Config Key  = freq_outNMC
    1932     !Config Desc = freq_outNMC(1) = frequence de sortie fichiers histmthNMC
    1933     !Config Desc = freq_outNMC(2) = frequence de sortie fichiers histdayNMC
    1934     !Config Desc = freq_outNMC(3) = frequence de sortie fichiers histhfNMC
    1935     !Config Def  = 2592000., 86400., 21600. (1mois, 1jour, 6h)
    1936     !Config Help =
    1937     !
    1938     freq_outNMC_omp(1) = mth_len
    1939     freq_outNMC_omp(2) = 1.
    1940     freq_outNMC_omp(3) = 1./4.
    1941     CALL getin('freq_outNMC',freq_outNMC_omp)
    1942     !
    1943     !Config Key  = freq_calNMC
    1944     !Config Desc = freq_calNMC(1) = frequence de calcul fichiers histmthNMC
    1945     !Config Desc = freq_calNMC(2) = frequence de calcul fichiers histdayNMC
    1946     !Config Desc = freq_calNMC(3) = frequence de calcul fichiers histhfNMC
    1947     !Config Def  = phys_tstep
    1948     !Config Help =
    1949     !
    1950     freq_calNMC_omp(1) = phys_tstep
    1951     freq_calNMC_omp(2) = phys_tstep
    1952     freq_calNMC_omp(3) = phys_tstep
    1953     CALL getin('freq_calNMC',freq_calNMC_omp)
    1954     !
    19551896    !Config Key  = type_run
    19561897    !Config Desc =
     
    25832524    lev_histins = lev_histins_omp
    25842525    lev_histLES = lev_histLES_omp
    2585     lev_histdayNMC = lev_histdayNMC_omp
    2586     levout_histNMC = levout_histNMC_omp
    2587     ok_histNMC(:) = ok_histNMC_omp(:)
    2588     freq_outNMC(:) = freq_outNMC_omp(:)
    2589     freq_calNMC(:) = freq_calNMC_omp(:)
     2526
    25902527
    25912528    type_ocean = type_ocean_omp
     
    30162953    WRITE(lunout,*) ' lev_histins = ',lev_histins
    30172954    WRITE(lunout,*) ' lev_histLES = ',lev_histLES
    3018     WRITE(lunout,*) ' lev_histdayNMC = ',lev_histdayNMC
    3019     WRITE(lunout,*) ' levout_histNMC = ',levout_histNMC
    3020     WRITE(lunout,*) ' ok_histNMC = ',ok_histNMC
    3021     WRITE(lunout,*) ' freq_outNMC = ',freq_outNMC
    3022     WRITE(lunout,*) ' freq_calNMC = ',freq_calNMC
    30232955    WRITE(lunout,*) ' iflag_pbl = ', iflag_pbl
    30242956    WRITE(lunout,*) ' iflag_physiq = ', iflag_physiq
  • LMDZ6/trunk/libf/phylmd/cv3_routines.f90

    r5682 r5685  
    40434043
    40444044    if ( restore_bug_cvdn ) then
    4045       print*,'DOWND BUG'
    40464045      DO il = 1, ncum
    40474046         amp1(il) = upwd(il,i+1)
     
    40494048      ENDDO
    40504049    else
    4051       print*,'DOWND NO BUG'
    40524050      DO il = 1, ncum
    40534051         amp1(il) = upwd(il,i+1)
  • LMDZ6/trunk/libf/phylmd/ini_undefSTD.f90

    r5282 r5685  
    33
    44
    5 SUBROUTINE ini_undefstd(itap, itapm1)
    6   USE clesphys_mod_h
    7   USE dimphy
    8   USE phys_state_var_mod ! Variables sauvegardees de la physique
    9   USE phys_cal_mod, ONLY: mth_len
    10   IMPLICIT NONE
     5SUBROUTINE ini_undefstd(itap)
     6USE clesphys_mod_h, ONLY : freq_outnmc
     7USE dimphy, ONLY : klon
     8USE phys_state_var_mod, ONLY : tnondef,tsumstd,usumstd,vsumstd,wsumstd,phisumstd,qsumstd,rhsumstd
     9USE phys_state_var_mod, ONLY : uvsumstd,vqsumstd,vtsumstd,wqsumstd,vphisumstd,wtsumstd,u2sumstd
     10USE phys_state_var_mod, ONLY : v2sumstd,t2sumstd,o3sumstd,o3daysumstd,nlevSTD,nout,phys_tstep
     11USE phys_state_var_mod, ONLY : missing_val_nf90
     12USE phys_cal_mod, ONLY: mth_len
     13USE phys_output_var_mod, ONLY : clef_files
     14
     15IMPLICIT NONE
    1116
    1217  ! ====================================================================
     
    3439  ! variables Input/Output
    3540  ! INTEGER nlevSTD, klevSTD, itap
    36   INTEGER itap, itapm1
     41  INTEGER itap
    3742  ! PARAMETER(klevSTD=17)
    3843  ! REAL dtime
     
    5459    ! initialisation variables en debut du mois, de la journee ou des 6h
    5560
    56     IF (n==1 .AND. itap-itapm1==1 .OR. n>1 .AND. mod(itap,nint( &
    57         freq_outnmc(n)/phys_tstep))==1) THEN
     61    IF ( clef_files(n) .and. mod(itap,nint(freq_outnmc(n)/phys_tstep))==1) THEN
    5862      ! print*,'ini_undefSTD n itap',n,itap
    5963      DO k = 1, nlevstd
  • LMDZ6/trunk/libf/phylmd/moy_undefSTD.f90

    r5310 r5685  
    22! $Id$
    33
    4 SUBROUTINE moy_undefstd(itap, itapm1)
    5   USE clesphys_mod_h
    6   USE netcdf
    7   USE dimphy
    8   USE phys_state_var_mod
    9   use wxios_mod, ONLY: missing_val_xios => missing_val, using_xios
     4SUBROUTINE moy_undefstd(itap)
     5USE clesphys_mod_h, ONLY : freq_calnmc, freq_outnmc
     6USE netcdf
     7USE dimphy, ONLY : klon
     8USE phys_state_var_mod, ONLY : missing_val_nf90,nlevstd,nout,o3daysumstd,o3sumstd,phisumstd,phys_tstep
     9USE phys_state_var_mod, ONLY : qsumstd,rhsumstd,t2sumstd,tnondef,tsumstd,u2sumstd,usumstd,uvsumstd,v2sumstd
     10USE phys_state_var_mod, ONLY : vphisumstd,vqsumstd,vsumstd,vtsumstd,wqsumstd,wsumstd,wtsumstd
     11USE wxios_mod, ONLY: missing_val_xios => missing_val, using_xios
     12USE phys_cal_mod, ONLY: mth_len
     13USE phys_output_var_mod, ONLY : clef_files
    1014
    11   USE phys_cal_mod, ONLY: mth_len
     15
    1216  IMPLICIT NONE
    1317  REAL :: missing_val
     
    3438  ! INTEGER nlevSTD, klevSTD, itap
    3539  ! PARAMETER(klevSTD=17)
    36   INTEGER itap, itapm1
     40  INTEGER itap
    3741
    3842  ! variables locales
     
    6973
    7074    ! calcul 1 fois pas mois, 1 fois par jour ou toutes les 6h
     75 
     76!   print*,'STDSTD n,freq_outnmc(n),phys_tstep',n,freq_outnmc(n),phys_tstep
    7177
    72     IF (n==1 .AND. itap==itapm1 .OR. n>1 .AND. mod(itap,nint(freq_outnmc(n)/ &
    73         phys_tstep))==0) THEN
    74 
    75       ! print*,'moy_undefSTD n itap itapm1',n,itap,itapm1
     78    IF ( clef_files(n) .and. mod(itap,nint(freq_outnmc(n)/phys_tstep))==0) THEN
    7679
    7780      DO k = 1, nlevstd
    7881        DO i = 1, klon
    7982          IF (tnondef(i,k,n)/=(freq_moynmc(n))) THEN
    80             tsumstd(i, k, n) = tsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n &
    81               ))
    82             usumstd(i, k, n) = usumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n &
    83               ))
    84             vsumstd(i, k, n) = vsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n &
    85               ))
    86             wsumstd(i, k, n) = wsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n &
    87               ))
    88             phisumstd(i, k, n) = phisumstd(i, k, n)/ &
    89               (freq_moynmc(n)-tnondef(i,k,n))
    90             qsumstd(i, k, n) = qsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n &
    91               ))
    92             rhsumstd(i, k, n) = rhsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
    93               ,n))
    94             uvsumstd(i, k, n) = uvsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
    95               ,n))
    96             vqsumstd(i, k, n) = vqsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
    97               ,n))
    98             vtsumstd(i, k, n) = vtsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
    99               ,n))
    100             wqsumstd(i, k, n) = wqsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
    101               ,n))
    102             vphisumstd(i, k, n) = vphisumstd(i, k, n)/ &
    103               (freq_moynmc(n)-tnondef(i,k,n))
    104             wtsumstd(i, k, n) = wtsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
    105               ,n))
    106             u2sumstd(i, k, n) = u2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
    107               ,n))
    108             v2sumstd(i, k, n) = v2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
    109               ,n))
    110             t2sumstd(i, k, n) = t2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
    111               ,n))
    112             o3sumstd(i, k, n) = o3sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k &
    113               ,n))
    114             o3daysumstd(i, k, n) = o3daysumstd(i, k, n)/ &
    115               (freq_moynmc(n)-tnondef(i,k,n))
     83            tsumstd(i, k, n) = tsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     84            usumstd(i, k, n) = usumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     85            vsumstd(i, k, n) = vsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     86            wsumstd(i, k, n) = wsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     87            phisumstd(i, k, n) = phisumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     88            qsumstd(i, k, n) = qsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     89            rhsumstd(i, k, n) = rhsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     90            uvsumstd(i, k, n) = uvsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     91            vqsumstd(i, k, n) = vqsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     92            vtsumstd(i, k, n) = vtsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     93            wqsumstd(i, k, n) = wqsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     94            vphisumstd(i, k, n) = vphisumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     95            wtsumstd(i, k, n) = wtsumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     96            u2sumstd(i, k, n) = u2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     97            v2sumstd(i, k, n) = v2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     98            t2sumstd(i, k, n) = t2sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     99            o3sumstd(i, k, n) = o3sumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
     100            o3daysumstd(i, k, n) = o3daysumstd(i, k, n)/(freq_moynmc(n)-tnondef(i,k,n))
    116101          ELSE
    117102            tsumstd(i, k, n) = missing_val
  • LMDZ6/trunk/libf/phylmd/phys_output_mod.F90

    r5677 r5685  
    66  USE phys_output_var_mod
    77  USE phys_output_write_mod, ONLY : phys_output_write
     8
    89  REAL, DIMENSION(nfiles),SAVE :: ecrit_files
     10  LOGICAL, DIMENSION(nfiles)   :: phys_out_filekeys
    911
    1012
     
    126128    CHARACTER(LEN=20), DIMENSION(nfiles)  :: chtimestep = (/ 'Default', 'Default', 'Default', 'Default', 'Default', &
    127129                                                             'Default', 'Default', 'Default', 'Default', 'Default' /)
    128     LOGICAL, DIMENSION(nfiles)            :: phys_out_filekeys
    129130    LOGICAL, DIMENSION(nfiles)            :: phys_out_filestations
    130131
     
    249250    type_ecri(10)= 'ave(X)'
    250251
    251     clef_files(1) = ok_mensuel
    252     clef_files(2) = ok_journe
    253     clef_files(3) = ok_hf
    254     clef_files(4) = ok_instan
    255     clef_files(5) = ok_LES
    256     clef_files(6) = ok_instan
    257     clef_files(7) = ok_histNMC(1)
    258     clef_files(8) = ok_histNMC(2)
    259     clef_files(9) = ok_histNMC(3)
     252    clef_files(1:3) = .TRUE.
     253    clef_files(4:10) = .FALSE.
    260254    IF (CPPKEY_STRATAER) THEN
    261255      clef_files(10)= .TRUE.
     
    265259
    266260    !sortir des fichiers "stations" si clef_stations(:)=.TRUE.
    267     clef_stations(1) = .FALSE.
    268     clef_stations(2) = .FALSE.
    269     clef_stations(3) = .FALSE.
    270     clef_stations(4) = .FALSE.
    271     clef_stations(5) = .FALSE.
    272     clef_stations(6) = .FALSE.
    273     clef_stations(7) = .FALSE.
    274     clef_stations(8) = .FALSE.
    275     clef_stations(9) = .FALSE.
    276     clef_stations(10)= .FALSE.
    277 
    278     lev_files(1) = lev_histmth
    279     lev_files(2) = lev_histday
    280     lev_files(3) = lev_histhf
    281     lev_files(4) = lev_histins
    282     lev_files(5) = lev_histLES
    283     lev_files(6) = lev_histins
    284     lev_files(7) = levout_histNMC(1)
    285     lev_files(8) = levout_histNMC(2)
    286     lev_files(9) = levout_histNMC(3)
    287     lev_files(10)= 5
    288 
     261    clef_stations(1:10) = .FALSE.
     262    lev_files(1:10) = 5
     263
     264    print*,'A ecrit_mth=',ecrit_mth
     265    ! Frequencies of the history files;
     266    ! Defaut
     267    ! overwritten by chtimestep given to convers_timesteps
    289268    ecrit_files(1) = ecrit_mth
    290269    ecrit_files(2) = ecrit_day
     
    292271    ecrit_files(4) = ecrit_ins
    293272    ecrit_files(5) = ecrit_LES
    294     ecrit_files(6) = ecrit_ins
    295     ecrit_files(7) = freq_outNMC(1)
    296     ecrit_files(8) = freq_outNMC(2)
    297     ecrit_files(9) = freq_outNMC(3)
    298     ecrit_files(10)= ecrit_mth
     273    ecrit_files(6:10) = ecrit_ins
    299274
    300275    !! Lectures des parametres de sorties dans physiq.def
     
    387362      ELSE
    388363       CALL convers_timesteps(chtimestep(iff),dtime,ecrit_files(iff))
     364      print*,'Dans phys_output_open, iff=',iff,' ecrit_files=',ecrit_files(iff)
    389365      ENDIF
     366      ! ecrit_files contains frequency of file iif in seconds
     367
    390368
    391369       WRITE(lunout,*)'ecrit_files(',iff,')= ',ecrit_files(iff)
     
    650628   ! Updated write frequencies due to phys_out_filetimesteps.
    651629    ! Write frequencies are now in seconds. 
    652     ecrit_mth = ecrit_files(1)
    653     ecrit_day = ecrit_files(2)
    654     ecrit_hf  = ecrit_files(3)
    655     ecrit_ins = ecrit_files(4)
    656     ecrit_LES = ecrit_files(5)
    657     ecrit_ins = ecrit_files(6)
     630! WHY CHANGING ecrit_mth ?
     631! For Cosp ?
     632!    ecrit_mth = ecrit_files(1)
     633!    print*,'B ecrit_mth=',ecrit_mth
     634!    ecrit_day = ecrit_files(2)
     635!    ecrit_hf  = ecrit_files(3)
     636!    ecrit_ins = ecrit_files(4)
     637!    ecrit_LES = ecrit_files(5)
     638!    ecrit_ins = ecrit_files(6)
    658639
    659640    IF (prt_level >= 10) THEN
     
    664645      WRITE(lunout,*)'phys_output_open: ends here'
    665646    ENDIF
     647    print*,'Dans phys_output_open,ecrit_files B',ecrit_files(1:6)
    666648
    667649!  DO iq=1,nqtot
     
    705687    IF ( type == 'day'.or.type == 'days'.or.type == 'd'.or.type == 'jours'.or.type == 'jour'.or.type == 'j' )&
    706688           &  timestep = ttt * dayseconde
    707     IF ( type == 'months'.or.type == 'month'.or.type == 'mth'.or.type == 'mois'.or.type == 'm' ) THEN
     689    IF ( type == 'months'.or.type == 'month'.or.type == 'mth'.or.type == 'mois'.or.type == 'm' .or.type == 'mo' ) THEN
    708690       WRITE(lunout,*)'annee_ref,day_ref mon_len',annee_ref,day_ref,mth_len
    709691       timestep = ttt * dayseconde * mth_len
     
    713695    IF ( type == 'mn'.or.type == 'minutes'.or.type == 'minute'.or.type == 'm' ) timestep = ttt * 60.
    714696    IF ( type == 's'.or.type == 'sec'.or.type == 'secondes'.or.type =='seconde'   ) timestep = ttt
    715     IF ( type == 'TS' ) timestep = ttt * dtime
     697    IF ( type == 'TS' .or. type == 'ts' ) timestep = ttt * dtime
    716698
    717699    WRITE(lunout,*)'type =      ',type
  • LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90

    r5683 r5685  
    1515      INTEGER, PARAMETER :: nlevSTD8=8
    1616      INTEGER, PARAMETER :: nlevSTD3=3
    17       INTEGER, PARAMETER :: nout=3
     17      INTEGER, PARAMETER :: nout=10
    1818      INTEGER, PARAMETER :: napisccp=1
    1919      INTEGER, SAVE :: radpas  ! radiation is called every "radpas" step
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r5677 r5685  
    9696    USE phys_output_var_mod, ONLY : cloud_cover_sw, cloud_cover_sw_s2, ZFLUX_DIR, ZFLUX_DIR_CLEAR, &
    9797  &      ZFLUX_DIR_s2, ZFLUX_DIR_CLEAR_s2, ZFLUX_DIR_SUN, ZFLUX_DIR_SUN_s2
     98    USE phys_output_var_mod, ONLY : type_ecri
    9899
    99100
     
    17491750       ok_sync=ok_sync_omp
    17501751
    1751        freq_outNMC(1) = ecrit_files(7)
    1752        freq_outNMC(2) = ecrit_files(8)
    1753        freq_outNMC(3) = ecrit_files(9)
    1754        WRITE(lunout,*)'OK freq_outNMC(1)=',freq_outNMC(1)
    1755        WRITE(lunout,*)'OK freq_outNMC(2)=',freq_outNMC(2)
    1756        WRITE(lunout,*)'OK freq_outNMC(3)=',freq_outNMC(3)
     1752!       freq_outNMC(1) = ecrit_files(7)
     1753!       freq_outNMC(2) = ecrit_files(8)
     1754!       freq_outNMC(3) = ecrit_files(9)
     1755!       WRITE(lunout,*)'OK freq_outNMC(1)=',freq_outNMC(1)
     1756!       WRITE(lunout,*)'OK freq_outNMC(2)=',freq_outNMC(2)
     1757!       WRITE(lunout,*)'OK freq_outNMC(3)=',freq_outNMC(3)
    17571758
    17581759#ifndef CPP_XIOS
  • LMDZ6/trunk/libf/phylmd/undefSTD.f90

    r5310 r5685  
    33
    44SUBROUTINE undefstd(itap, read_climoz)
    5   USE clesphys_mod_h
     5  USE clesphys_mod_h, ONLY : freq_calnmc
    66  USE netcdf
    7   USE dimphy
    8   USE phys_state_var_mod
     7  USE dimphy, ONLY : klon
     8  USE phys_state_var_mod, ONLY : nlevstd,nout,o3std,o3sumstd,philevstd,phisumstd,phys_tstep,qlevstd,qsumstd
     9  USE phys_state_var_mod, ONLY : rhlevstd,rhsumstd,t2std,t2sumstd,tlevstd,tnondef,tsumstd,u2std,u2sumstd
     10  USE phys_state_var_mod, ONLY : ulevstd,usumstd,uvstd,uvsumstd,v2std,v2sumstd,vlevstd,vphistd,vphisumstd
     11  USE phys_state_var_mod, ONLY : vqstd,vqsumstd,vsumstd,vtstd,vtsumstd,wlevstd,wqstd,wqsumstd,wsumstd
     12  USE phys_state_var_mod, ONLY : wtstd,wtsumstd,o3daysumstd,o3daystd,missing_val_nf90
     13  USE phys_output_var_mod, ONLY : clef_files
     14
     15
    916  use wxios_mod, ONLY: missing_val_xios => missing_val, using_xios
    1017
     
    6471    ! de la physique
    6572
    66     IF (mod(itap,nint(freq_calnmc(n)/phys_tstep))==0) THEN
     73!   print*,'STDSTD n,freq_calnmc(n),phys_tstep',n,freq_calnmc(n),phys_tstep
     74    IF (clef_files(n) .and. mod(itap,nint(freq_calnmc(n)/phys_tstep))==0) THEN
    6775      DO k = 1, nlevstd
    6876        DO i = 1, klon
  • LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90

    r5681 r5685  
    19041904       ok_sync=ok_sync_omp
    19051905
    1906        freq_outNMC(1) = ecrit_files(7)
    1907        freq_outNMC(2) = ecrit_files(8)
    1908        freq_outNMC(3) = ecrit_files(9)
    1909        WRITE(lunout,*)'OK freq_outNMC(1)=',freq_outNMC(1)
    1910        WRITE(lunout,*)'OK freq_outNMC(2)=',freq_outNMC(2)
    1911        WRITE(lunout,*)'OK freq_outNMC(3)=',freq_outNMC(3)
     1906!       freq_outNMC(1) = ecrit_files(7)
     1907!       freq_outNMC(2) = ecrit_files(8)
     1908!       freq_outNMC(3) = ecrit_files(9)
     1909!       WRITE(lunout,*)'OK freq_outNMC(1)=',freq_outNMC(1)
     1910!       WRITE(lunout,*)'OK freq_outNMC(2)=',freq_outNMC(2)
     1911!       WRITE(lunout,*)'OK freq_outNMC(3)=',freq_outNMC(3)
     1912
    19121913
    19131914#ifndef CPP_XIOS
Note: See TracChangeset for help on using the changeset viewer.