Changeset 1350 for LMDZ4


Ignore:
Timestamp:
Apr 14, 2010, 10:55:22 AM (14 years ago)
Author:
musat
Message:

Add 3 output files for standard pressure levels AR5 exercice and flags
to manage their computation and output frequencies
histhfNMC.nc with 3 standard pressure levels
histdayNMC.nc with 8 (or may have 17) standard pressure levels
histmthNMC.nc with 17 standard pressure levels
Add 3 flags in the physiq.def file: freq_calNMC(3), freq_outNMC(3) and lev_histdayNMC
freq_calNMC(3) : computation frequency of variables on standard pressure levels

and by default has fallowing values (in fact physics' time step dtime)

freq_calNMC(1)=900.
freq_calNMC(2)=900.
freq_calNMC(3)=900.
freq_outNMC(3) : output frequency of variables on standard pressure levels

with following default values

freq_out(1) = 2592000. (30 days)
freq_out(2) = 86400. (1 day)
freq_out(3) = 21600. (6 hours)
lev_histdayNMC is 8 by default but may be switched to 17 (if we need more levels for a particular run)
IM

Location:
LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/calcul_STDlev.h

    r1146 r1350  
    33c
    44c
    5 cIM on initialise les champs en debut du jour ou du mois
     5cIM on initialise les variables
    66c
    7         CALL ini_undefSTD(nlevSTD,itap,
    8      $           dtime,ecrit_day,ecrit_mth,
    9      $                    tnondef,tsumSTD)
    10         CALL ini_undefSTD(nlevSTD,itap,
    11      $           dtime,ecrit_day,ecrit_mth,
    12      $                    tnondef,usumSTD)
    13         CALL ini_undefSTD(nlevSTD,itap,
    14      $           dtime,ecrit_day,ecrit_mth,
    15      $                    tnondef,vsumSTD)
    16         CALL ini_undefSTD(nlevSTD,itap,
    17      $           dtime,ecrit_day,ecrit_mth,
    18      $                    tnondef,wsumSTD)
    19         CALL ini_undefSTD(nlevSTD,itap,
    20      $           dtime,ecrit_day,ecrit_mth,
    21      $                    tnondef,phisumSTD)
    22         CALL ini_undefSTD(nlevSTD,itap,
    23      $           dtime,ecrit_day,ecrit_mth,
    24      $                    tnondef,qsumSTD)
    25         CALL ini_undefSTD(nlevSTD,itap,
    26      $           dtime,ecrit_day,ecrit_mth,
    27      $                    tnondef,rhsumSTD)
    28         CALL ini_undefSTD(nlevSTD,itap,
    29      $           dtime,ecrit_day,ecrit_mth,
    30      $                    tnondef,uvsumSTD)
    31         CALL ini_undefSTD(nlevSTD,itap,
    32      $           dtime,ecrit_day,ecrit_mth,
    33      $                    tnondef,vqsumSTD)
    34         CALL ini_undefSTD(nlevSTD,itap,
    35      $           dtime,ecrit_day,ecrit_mth,
    36      $                    tnondef,vTsumSTD)
    37         CALL ini_undefSTD(nlevSTD,itap,
    38      $           dtime,ecrit_day,ecrit_mth,
    39      $                    tnondef,wqsumSTD)
    40         CALL ini_undefSTD(nlevSTD,itap,
    41      $           dtime,ecrit_day,ecrit_mth,
    42      $                    tnondef,vphisumSTD)
    43         CALL ini_undefSTD(nlevSTD,itap,
    44      $           dtime,ecrit_day,ecrit_mth,
    45      $                    tnondef,wTsumSTD)
    46         CALL ini_undefSTD(nlevSTD,itap,
    47      $           dtime,ecrit_day,ecrit_mth,
    48      $                    tnondef,u2sumSTD)
    49         CALL ini_undefSTD(nlevSTD,itap,
    50      $           dtime,ecrit_day,ecrit_mth,
    51      $                    tnondef,v2sumSTD)
    52         CALL ini_undefSTD(nlevSTD,itap,
    53      $           dtime,ecrit_day,ecrit_mth,
    54      $                    tnondef,T2sumSTD)
     7        CALL ini_undefSTD(itap,freq_outNMC)
    558c
    56 cIM on interpole sur les niveaux STD de pression a chaque pas de temps de la physique
     9cIM on interpole les champs sur les niveaux STD de pression
     10cIM a chaque pas de temps de la physique
    5711c
    5812c-------------------------------------------------------c
     
    163117
    164118c
    165 cIM on somme les valeurs definies a chaque pas de temps de la physique ou
    166 cIM toutes les 6 heures
     119cIM on somme les valeurs toutes les freq_calNMC secondes
    167120c
    168        oknondef(1:klon,1:nlevSTD,1:nout)=.TRUE.
    169        CALL undefSTD(nlevSTD,itap,tlevSTD,
    170      $               dtime,ecrit_hf,
    171      $               oknondef,tnondef,tsumSTD)
     121       CALL undefSTD(itap,freq_calNMC)
    172122c
    173        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    174        CALL undefSTD(nlevSTD,itap,ulevSTD,
    175      $           dtime,ecrit_hf,
    176      $               oknondef,tnondef,usumSTD)
     123cIM on moyenne a la fin du mois ou du jour (toutes les freq_outNMC secondes)
    177124c
    178        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    179        CALL undefSTD(nlevSTD,itap,vlevSTD,
    180      $           dtime,ecrit_hf,
    181      $               oknondef,tnondef,vsumSTD)
     125       CALL moy_undefSTD(itap,freq_outNMC,freq_moyNMC)
    182126c
    183        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    184        CALL undefSTD(nlevSTD,itap,wlevSTD,
    185      $           dtime,ecrit_hf,
    186      $               oknondef,tnondef,wsumSTD)
    187 c
    188        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    189        CALL undefSTD(nlevSTD,itap,philevSTD,
    190      $           dtime,ecrit_hf,
    191      $               oknondef,tnondef,phisumSTD)
    192 c
    193        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    194        CALL undefSTD(nlevSTD,itap,qlevSTD,
    195      $           dtime,ecrit_hf,
    196      $               oknondef,tnondef,qsumSTD)
    197 c
    198        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    199        CALL undefSTD(nlevSTD,itap,rhlevSTD,
    200      $           dtime,ecrit_hf,
    201      $               oknondef,tnondef,rhsumSTD)
    202 c
    203        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    204        CALL undefSTD(nlevSTD,itap,uvSTD,
    205      $           dtime,ecrit_hf,
    206      $               oknondef,tnondef,uvsumSTD)
    207 c
    208        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    209        CALL undefSTD(nlevSTD,itap,vqSTD,
    210      $           dtime,ecrit_hf,
    211      $               oknondef,tnondef,vqsumSTD)
    212 c
    213        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    214        CALL undefSTD(nlevSTD,itap,vTSTD,
    215      $           dtime,ecrit_hf,
    216      $               oknondef,tnondef,vTsumSTD)
    217 c
    218        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    219        CALL undefSTD(nlevSTD,itap,wqSTD,
    220      $           dtime,ecrit_hf,
    221      $               oknondef,tnondef,wqsumSTD)
    222 c
    223        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    224        CALL undefSTD(nlevSTD,itap,vphiSTD,
    225      $           dtime,ecrit_hf,
    226      $               oknondef,tnondef,vphisumSTD)
    227 c
    228        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    229        CALL undefSTD(nlevSTD,itap,wTSTD,
    230      $           dtime,ecrit_hf,
    231      $               oknondef,tnondef,wTsumSTD)
    232 c
    233        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    234        CALL undefSTD(nlevSTD,itap,u2STD,
    235      $           dtime,ecrit_hf,
    236      $               oknondef,tnondef,u2sumSTD)
    237 c
    238        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    239        CALL undefSTD(nlevSTD,itap,v2STD,
    240      $           dtime,ecrit_hf,
    241      $               oknondef,tnondef,v2sumSTD)
    242 c
    243        oknondef(1:klon,1:nlevSTD,1:nout)=.FALSE.
    244        CALL undefSTD(nlevSTD,itap,T2STD,
    245      $           dtime,ecrit_hf,
    246      $               oknondef,tnondef,T2sumSTD)
    247 c
    248 cIM on moyenne a la fin du jour ou du mois
    249 c
    250        CALL moy_undefSTD(nlevSTD,itap,
    251      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    252      $                   tnondef,tsumSTD)
    253 c
    254        CALL moy_undefSTD(nlevSTD,itap,
    255      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    256      $                   tnondef,usumSTD)
    257 c
    258        CALL moy_undefSTD(nlevSTD,itap,
    259      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    260      $                   tnondef,vsumSTD)
    261 c
    262        CALL moy_undefSTD(nlevSTD,itap,
    263      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    264      $                   tnondef,wsumSTD)
    265 c
    266        CALL moy_undefSTD(nlevSTD,itap,
    267      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    268      $                   tnondef,phisumSTD)
    269 c
    270        CALL moy_undefSTD(nlevSTD,itap,
    271      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    272      $                   tnondef,qsumSTD)
    273 c
    274        CALL moy_undefSTD(nlevSTD,itap,
    275      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    276      $                   tnondef,rhsumSTD)
    277 c
    278        CALL moy_undefSTD(nlevSTD,itap,
    279      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    280      $                   tnondef,uvsumSTD)
    281 c
    282        CALL moy_undefSTD(nlevSTD,itap,
    283      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    284      $                   tnondef,vqsumSTD)
    285 c
    286        CALL moy_undefSTD(nlevSTD,itap,
    287      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    288      $                   tnondef,vTsumSTD)
    289 c
    290        CALL moy_undefSTD(nlevSTD,itap,
    291      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    292      $                   tnondef,wqsumSTD)
    293 c
    294        CALL moy_undefSTD(nlevSTD,itap,
    295      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    296      $                   tnondef,vphisumSTD)
    297 c
    298        CALL moy_undefSTD(nlevSTD,itap,
    299      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    300      $                   tnondef,wTsumSTD)
    301 c
    302        CALL moy_undefSTD(nlevSTD,itap,
    303      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    304      $                   tnondef,u2sumSTD)
    305 c
    306        CALL moy_undefSTD(nlevSTD,itap,
    307      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    308      $                   tnondef,v2sumSTD)
    309 c
    310        CALL moy_undefSTD(nlevSTD,itap,
    311      $      dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    312      $                   tnondef,T2sumSTD)
    313 c
    314 cIM interpolation a chaque pas de temps du SWup(clr) et SWdn(clr) a 200 hPa
     127       CALL plevel(klon,klev,.true.,pplay,50000.,
     128     &              zphi/RG,geo500)
     129
     130cIM on interpole a chaque pas de temps le SWup(clr) et SWdn(clr) a 200 hPa
    315131c
    316132      CALL plevel(klon,klevp1,.true.,paprs,20000.,
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/clesphys.h

    r1279 r1350  
    4343!IM lev_histday : niveau sorties journalieres
    4444!IM lev_histmth : niveau sorties mensuelles
     45!IM lev_histdayNMC : on peut sortir soit sur 8 (comme AR5) ou bien
     46!                    sur 17 niveaux de pression
    4547       INTEGER lev_histhf, lev_histday, lev_histmth
     48       INTEGER lev_histdayNMC
    4649       Integer lev_histins, lev_histLES 
     50!IM freq_outNMC : frequences de sortie fichiers niveaux de pression (histmthNMC, histdayNMC, histhfNMC)
     51!IM freq_calNMC : frequences de calcul fis. hist*NMC.nc
     52!IM pasphys : pas de temps de physique (secondes)
     53       REAL pasphys
     54       REAL freq_outNMC(3) , freq_calNMC(3)
    4755       CHARACTER(len=4) type_run
    4856! aer_type: pour utiliser un fichier constant dans readaerosol
     
    6876     &     , f_cdrag_ter,f_cdrag_oce,f_rugoro                           &
    6977     &     , lev_histhf, lev_histday, lev_histmth                       &
    70      &     , lev_histins, lev_histLES                                   &
     78     &     , lev_histins, lev_histLES, lev_histdayNMC                   &
     79     &     , pasphys, freq_outNMC, freq_calNMC                          &
    7180     &     , type_run, ok_isccp, ok_regdyn, ok_cosp                     &
    7281     &     , lonmin_ins, lonmax_ins, latmin_ins, latmax_ins             &
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/conf_phys.F90

    r1336 r1350  
    139139  REAL, SAVE ::  fmagic_omp, pmagic_omp
    140140  INTEGER,SAVE :: iflag_pbl_omp,lev_histhf_omp,lev_histday_omp,lev_histmth_omp
    141   Integer,save :: lev_histins_omp, lev_histLES_omp
     141  Integer, save :: lev_histins_omp, lev_histLES_omp
     142  INTEGER, SAVE :: lev_histdayNMC_omp
     143  REAL, SAVE :: freq_outNMC_omp(3), freq_calNMC_omp(3)
    142144  CHARACTER*4, SAVE :: type_run_omp
    143145  LOGICAL,SAVE :: ok_isccp_omp
     
    10861088  lev_histLES_omp = 1
    10871089  call getin('lev_histLES',lev_histLES_omp)
    1088   !
     1090!
     1091!Config Key  = lev_histdayNMC
     1092!Config Desc =
     1093!Config Def  = 8
     1094!Config Help =
     1095!
     1096  lev_histdayNMC_omp = 8
     1097  call getin('lev_histdayNMC',lev_histdayNMC_omp)
     1098!
     1099!histNMC BEG
     1100!Config Key  = freq_outNMC
     1101!Config Desc = freq_outNMC(1) = frequence de sortie fichiers histmthNMC
     1102!Config Desc = freq_outNMC(2) = frequence de sortie fichiers histdayNMC
     1103!Config Desc = freq_outNMC(3) = frequence de sortie fichiers histhfNMC
     1104!Config Def  = 2592000., 86400., 21600.
     1105!Config Help =
     1106!
     1107  freq_outNMC_omp(1) = 2592000.
     1108  freq_outNMC_omp(2) = 86400.
     1109  freq_outNMC_omp(3) = 21600.
     1110  call getin('freq_outNMC',freq_outNMC_omp)
     1111!
     1112!Config Key  = freq_calNMC
     1113!Config Desc = freq_calNMC(1) = frequence de calcul fichiers histmthNMC
     1114!Config Desc = freq_calNMC(2) = frequence de calcul fichiers histdayNMC
     1115!Config Desc = freq_calNMC(3) = frequence de calcul fichiers histhfNMC
     1116!Config Def  = pasphys
     1117!Config Help =
     1118!
     1119  freq_calNMC_omp(1) = pasphys
     1120  freq_calNMC_omp(2) = pasphys
     1121  freq_calNMC_omp(3) = pasphys
     1122  call getin('freq_calNMC',freq_calNMC_omp)
     1123!
    10891124!Config Key  = type_run
    10901125!Config Desc =
     
    14211456    lev_histins = lev_histins_omp
    14221457    lev_histLES = lev_histLES_omp
     1458    lev_histdayNMC = lev_histdayNMC_omp
     1459    freq_outNMC(:) = freq_outNMC_omp(:)
     1460    freq_calNMC(:) = freq_calNMC_omp(:)
    14231461
    14241462    type_ocean = type_ocean_omp
     
    16031641  write(numout,*)' lev_histins = ',lev_histins
    16041642  write(numout,*)' lev_histLES = ',lev_histLES
     1643  write(numout,*)' lev_histdayNMC = ',lev_histdayNMC
     1644  write(numout,*)' freq_outNMC = ',freq_outNMC
     1645  write(numout,*)' freq_calNMC = ',freq_calNMC
    16051646  write(numout,*)' iflag_pbl = ', iflag_pbl
    16061647  write(numout,*)' iflag_thermals = ', iflag_thermals
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/ini_histmthNMC.h

    r1299 r1350  
    22! $Id$
    33!
    4       IF (ok_mensuel) THEN
    5 c
    64c$OMP MASTER
    75
    8        zstophy = dtime
    9        zstohf = ecrit_hf
    10        zstomth = ecrit_mth
    11        zout = ecrit_mth
    126c
    13          idayref = day_ref
    14          CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian)
     7       zout = freq_outNMC(1)
     8c
     9       idayref = day_ref
     10       CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian)
    1511c
    1612cym         CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlon,zx_lon)
     
    2521cym         CALL histbeg("histNMC.nc", iim,zx_lon(:,1), jjmp1,zx_lat(1,:),
    2622cym     .                 1,iim,1,jjmp1, itau_phy, zjulian, dtime,
    27 cym     .                 nhori, nid_nmc)
     23cym     .                 nhori, nid_mthnmc)
    2824
    29          CALL histbeg_phy("histNMC",itau_phy, zjulian, dtime,
    30      .                 nhori, nid_nmc)
     25         CALL histbeg_phy("histmthNMC",itau_phy, zjulian, dtime,
     26     .                 nhori, nid_mthnmc)
    3127c
    32          CALL histvert(nid_nmc, "presnivs", "Vertical levels", "mb",
    33      .                 nlevSTD, rlevSTD/100., nvert)
     28         CALL histvert(nid_mthnmc, "plev", "pressure", "Pa",
     29     .                 nlevSTD, rlevSTD, nvert)
    3430ccc
    3531ccc Champs 3D interpolles sur des niveaux de pression du NMC
    3632ccc
    37       IF(type_run.EQ."ENSP".OR.type_run.EQ."CLIM") THEN
    3833c
    39           CALL histdef(nid_nmc, "temp",
    40      .                 "Temperature","K",
     34c ATTENTION : pour AMIP2 on interpole t,u,v,wphi,q,rh
     35c             sur les niveaux du NMC et on somme & moyenne
     36c             toutes les freq_moyNMC secondes par des routines undefSTD et
     37c             moy_undefSTD pour eliminer les valeurs "undef"
     38c             de la moyenne mensuelle
     39c ======> le "inst(X)" ci-dessous est par consequence factice !
     40c
     41c
     42          CALL histdef(nid_mthnmc, "tnondef",
     43     .                 "Valeurs non-definies","-",
    4144     .                iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    4245     .                "inst(X)", zout,zout)
    4346c
    44          CALL histdef(nid_nmc, "phi",
    45      .                "Geopotential", "m",
     47          CALL histdef(nid_mthnmc, "ta",
     48     .                 "Air temperature","K",
    4649     .                iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    4750     .                "inst(X)", zout,zout)
    4851c
    49           CALL histdef(nid_nmc, "q",
    50      .                 "Specific humidity","kg/kg",
     52         CALL histdef(nid_mthnmc, "zg",
     53     .                "Geopotential height", "m",
    5154     .                iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    5255     .                "inst(X)", zout,zout)
    5356c
    54          CALL histdef(nid_nmc, "rh",
     57          CALL histdef(nid_mthnmc, "hus",
     58     .                 "Specific humidity","1",
     59     .                iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
     60     .                "inst(X)", zout,zout)
     61c
     62         CALL histdef(nid_mthnmc, "hur",
    5563     .                 "Relative humidity", "%",
    5664     .                iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    5765     .                "inst(X)", zout,zout)
    5866c
    59           CALL histdef(nid_nmc, "u",
    60      .                 "Zonal wind","m/s",
     67          CALL histdef(nid_mthnmc, "ua",
     68     .                 "Eastward wind","m s-1",
    6169     .                iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    6270     .                "inst(X)", zout,zout)
    6371c
    64           CALL histdef(nid_nmc, "v",
    65      .                 "Meridional wind","m/s",
     72          CALL histdef(nid_mthnmc, "va",
     73     .                 "Northward wind","m s-1",
    6674     .                iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    6775     .                "inst(X)", zout,zout)
    6876c
    69       ELSE IF(type_run.EQ."AMIP".OR.type_run.EQ."CFMI") THEN
    70 c
    71 c ATTENTION : pour AMIP2 on interpole t,u,v,wphi,q,rh
    72 c             sur les niveaux du NMC et on somme & moyenne
    73 c             toutes les 6 heures par des routines undefSTD et
    74 c             moy_undefSTD pour eliminer les valeurs "undef"
    75 c             de la moyenne mensuelle
    76 c ======> le "inst(X)" ci-dessous est par consequence factice !
    77 c
    78           CALL histdef(nid_nmc, "temp",
    79      .                 "Temperature","K",
     77          CALL histdef(nid_mthnmc, "wap",
     78     .                 "Lagrangian tendency of air pressure","Pa s-1",
    8079     .                iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    8180     .                "inst(X)", zout,zout)
    8281c
    83          CALL histdef(nid_nmc, "phi",
    84      .                "Geopotential ", "m",
    85      .                iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    86      .                "inst(X)", zout,zout)
    87 c
    88           CALL histdef(nid_nmc, "q",
    89      .                 "Specific humidity","kg/kg",
    90      .                iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    91      .                "inst(X)", zout,zout)
    92 c
    93          CALL histdef(nid_nmc, "rh",
    94      .                 "Relative humidity", "%",
    95      .                iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    96      .                "inst(X)", zout,zout)
    97 c
    98           CALL histdef(nid_nmc, "u",
    99      .                 "Zonal wind","m/s",
    100      .                iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    101      .                "inst(X)", zout,zout)
    102 c
    103           CALL histdef(nid_nmc, "v",
    104      .                 "Meridional wind","m/s",
    105      .                iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    106      .                "inst(X)", zout,zout)
    107 c
    108           CALL histdef(nid_nmc, "w",
    109      .                 "Vertical motion","Pa/s",
    110      .                iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    111      .                "inst(X)", zout,zout)
    112 c
    113 c ATTENTION : pour AMIP2 on interpole t,u,v,wphi,q,rh
    114 c             sur les niveaux du NMC et on somme & moyenne
    115 c             toutes les 6 heures par des routines undefSTD et
    116 c             moy_undefSTD pour eliminer les valeurs "undef"
    117 c             de la moyenne mensuelle
    118 c ======> le "inst(X)" ci-dessus est par consequence factice !
    119 c
    120 c
    121           CALL histdef(nid_nmc, "psbg",
     82          CALL histdef(nid_mthnmc, "psbg",
    12283     .         "Pressure sfce below ground","%",
    12384     .         iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    12485     .         "inst(X)", zout,zout)
    12586c
    126           CALL histdef(nid_nmc, "uv",
     87          CALL histdef(nid_mthnmc, "uv",
    12788     .         "uv ",
    12889     .         "m2/s2",iim,jj_nb,nhori, nlevSTD,1,nlevSTD, nvert, 32,
    12990     .         "inst(X)", zout,zout)
    13091c
    131           CALL histdef(nid_nmc, "vq",
     92          CALL histdef(nid_mthnmc, "vq",
    13293     .         "vq ",
    13394     .         "m/s * (kg/kg)",iim,jj_nb,nhori,
     
    13596     .         "inst(X)", zout,zout)
    13697c
    137           CALL histdef(nid_nmc, "vT",
     98          CALL histdef(nid_mthnmc, "vT",
    13899     .         "vT ",
    139100     .         "mK/s",iim,jj_nb,nhori,
     
    141102     .         "inst(X)", zout,zout)
    142103c
    143           CALL histdef(nid_nmc, "wq",
     104          CALL histdef(nid_mthnmc, "wq",
    144105     .         "wq ",
    145106     .         "(Pa/s)*(kg/kg)",iim,jj_nb,nhori,
     
    147108     .         "inst(X)", zout,zout)
    148109c
    149           CALL histdef(nid_nmc, "vphi",
     110          CALL histdef(nid_mthnmc, "vphi",
    150111     .         "vphi ",
    151112     .         "m2/s",iim,jj_nb,nhori,
     
    153114     .         "inst(X)", zout,zout)
    154115c
    155           CALL histdef(nid_nmc, "wT",
     116          CALL histdef(nid_mthnmc, "wT",
    156117     .         "wT ",
    157118     .         "K*Pa/s",iim,jj_nb,nhori,
     
    159120     .         "inst(X)", zout,zout)
    160121c
    161           CALL histdef(nid_nmc, "uxu",
     122          CALL histdef(nid_mthnmc, "uxu",
    162123     .         "u2 ",
    163124     .         "m2/s2",iim,jj_nb,nhori,
     
    165126     .         "inst(X)", zout,zout)
    166127c
    167           CALL histdef(nid_nmc, "vxv",
     128          CALL histdef(nid_mthnmc, "vxv",
    168129     .         "v2 ",
    169130     .         "m2/s2",iim,jj_nb,nhori,
     
    171132     .         "inst(X)", zout,zout)
    172133c
    173           CALL histdef(nid_nmc, "TxT",
     134          CALL histdef(nid_mthnmc, "TxT",
    174135     .         "T2 ",
    175136     .         "K2",iim,jj_nb,nhori,
     
    177138     .         "inst(X)", zout,zout)
    178139c
    179       ENDIF !(type_run.EQ."AMIP")
    180140
    181          CALL histend(nid_nmc)
     141         CALL histend(nid_mthnmc)
    182142c
    183143c$OMP END MASTER
    184 
    185       ENDIF ! fin de test sur ok_mensuel
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/ini_undefSTD.F

    r776 r1350  
    33!
    44
    5       SUBROUTINE ini_undefSTD(nlevSTD,itap,
    6      $           dtime,ecrit_day,ecrit_mth,
    7      $           tnondef,tsumSTD)
     5      SUBROUTINE ini_undefSTD(itap,
     6     $           freq_outNMC)
    87      USE dimphy
     8      USE phys_state_var_mod ! Variables sauvegardees de la physique
    99      IMPLICIT none
    1010c
     
    2727c nout=3 !var. mensuelle "NMC" moyennee toutes les 6heures
    2828c
    29 c
    30 c NB: mettre "inst(X)" dans le write_histXXX.h !
     29c NB: mettre "inst(X)" dans le write_hist*NMC.h !
    3130c====================================================================
    3231c
     
    3635cym #include "dimphy.h"
    3736c variables Input/Output
    38       INTEGER nlevSTD, klevSTD, itap
    39       PARAMETER(klevSTD=17)
    40       REAL dtime
    41       REAL ecrit_day,ecrit_mth
     37c     INTEGER nlevSTD, klevSTD, itap
     38      INTEGER itap
     39c     PARAMETER(klevSTD=17)
     40c     REAL dtime
    4241c
    4342c variables locales
    44       INTEGER i, k, nout
    45       PARAMETER(nout=3) !nout=1 day/nout=2 mth/nout=3 NMC
     43c     INTEGER i, k, nout, n
     44      INTEGER i, k, n
     45c     PARAMETER(nout=3) !nout=1 day/nout=2 mth/nout=3 NMC
     46      REAL freq_outNMC(nout)
    4647c
    4748c variables Output
    48       REAL tnondef(klon,klevSTD,nout)
    49       REAL tsumSTD(klon,klevSTD,nout)
     49c     REAL tnondef(klon,klevSTD,nout)
     50c     REAL tsumSTD(klon,klevSTD,nout)
    5051c
    51 c initialisation variables journalieres en debut de journee
     52      DO n=1, nout
    5253c
    53       IF(MOD(itap,NINT(ecrit_day/dtime)).EQ.1.) THEN
    54        DO k=1, nlevSTD
    55         DO i=1, klon
    56          tnondef(i,k,1)=0.
    57          tsumSTD(i,k,1)=0.
    58         ENDDO !i
    59        ENDDO !k
    60       ENDIF
     54c initialisation variables en debut de la journee ou du mois
    6155c
    62 c initialisation variables mensuelles (calculees a chaque pas de temps)
    63 c en debut de mois : nout=2
     56       IF(MOD(itap,NINT(freq_outNMC(n)/dtime)).EQ.1.) THEN
    6457c
    65       IF(MOD(itap,NINT(ecrit_mth/dtime)).EQ.1.) THEN
     58c       print*,'n freq_ini=',n,itap,freq_outNMC(n)/dtime
    6659c
    67        DO k=1, nlevSTD
    68         DO i=1, klon
    69          tnondef(i,k,2)=0.
    70          tsumSTD(i,k,2)=0.
    71         ENDDO !i
    72        ENDDO !k
     60        DO k=1, nlevSTD
     61         DO i=1, klon
     62          tnondef(i,k,n)=0.
     63          tsumSTD(i,k,n)=0.
     64          usumSTD(i,k,n)=0.
     65          vsumSTD(i,k,n)=0.
     66          wsumSTD(i,k,n)=0.
     67          phisumSTD(i,k,n)=0.
     68          qsumSTD(i,k,n)=0.
     69          rhsumSTD(i,k,n)=0.
     70          uvsumSTD(i,k,n)=0.
     71          vqsumSTD(i,k,n)=0.
     72          vTsumSTD(i,k,n)=0.
     73          wqsumSTD(i,k,n)=0.
     74          vphisumSTD(i,k,n)=0.
     75          wTsumSTD(i,k,n)=0.
     76          u2sumSTD(i,k,n)=0.
     77          v2sumSTD(i,k,n)=0.
     78          T2sumSTD(i,k,n)=0.
     79         ENDDO !i
     80        ENDDO !k
    7381c
    74 c initialisation variables mensuelles - runs type Amip - (calculees toutes les 6h)
    75 c en debut de mois : nout = 3
     82c          if(n.EQ.1.AND.i.EQ.4513.AND.k.EQ.17) THEN
     83           if(n.EQ.1.AND.i.EQ.1128.AND.k.EQ.17) THEN
     84            print*,'itap rlon rlat tlevSTD=',itap,rlon(i),rlat(i),
     85     $tlevSTD(i,k)
     86           endif
    7687c
    77        DO k=1, nlevSTD
    78         DO i=1, klon
    79          tnondef(i,k,3)=0.
    80          tsumSTD(i,k,3)=0.
    81         ENDDO !i
    82        ENDDO !k
     88       ENDIF !MOD(itap,NINT(freq_outNMC(n)/dtime)).EQ.1.
    8389c
    84       ENDIF
     90      ENDDO !n
    8591c
    8692      RETURN
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/moy_undefSTD.F

    r1279 r1350  
    22! $Header$
    33!
    4       SUBROUTINE moy_undefSTD(nlevSTD,itap,
    5      $           dtime,ecrit_day,ecrit_mth,ecrit_hf2mth,
    6      $           tnondef,tsumSTD)
     4c     SUBROUTINE moy_undefSTD(nlevSTD,itap,
     5c    $           dtime,freq_outNMC,freq_moyNMC,
     6c    $           tnondef,tsumSTD)
     7      SUBROUTINE moy_undefSTD(itap,freq_outNMC,freq_moyNMC)
    78      USE netcdf
    89      USE dimphy
     10      USE phys_state_var_mod ! Variables sauvegardees de la physique
    911      IMPLICIT none
    1012c
     
    1416c
    1517c Moyenne - a des frequences differentes - des valeurs bien definies
    16 c         (.NE.1.E+20) des variables interpolees a un niveau de
     18c         (.NE.missing_val) des variables interpolees a un niveau de
    1719c         pression.
    1820c 1) les variables de type "day" (nout=1) ou "mth" (nout=2) sont sommees
     
    2325c
    2426c
    25 c NB: mettre "inst(X)" dans le write_histXXX.h !
     27c NB: mettre "inst(X)" dans le write_hist*NMC.h !
    2628c====================================================================
    2729cym#include "dimensions.h"
     
    3234c
    3335c variables Input
    34       INTEGER nlevSTD, klevSTD, itap
    35       PARAMETER(klevSTD=17)
    36       REAL dtime, ecrit_day, ecrit_mth, ecrit_hf2mth
     36c     INTEGER nlevSTD, klevSTD, itap
     37c     PARAMETER(klevSTD=17)
     38      INTEGER itap
    3739c
    3840c variables locales
    39       INTEGER i, k, nout
    40       PARAMETER(nout=3) !nout=1 day/nout=2 mth/nout=3 NMC
     41c     INTEGER i, k, nout, n
     42c     PARAMETER(nout=3) !nout=1 day/nout=2 mth/nout=3 NMC
     43      INTEGER i, k, n
     44c     REAL dtime, freq_outNMC(nout), freq_moyNMC(nout)
     45      REAL freq_outNMC(nout), freq_moyNMC(nout)
    4146c
    4247c variables Output
    43       REAL tnondef(klon,klevSTD,nout)
    44       REAL tsumSTD(klon,klevSTD,nout)
     48c     REAL tnondef(klon,klevSTD,nout)
     49c     REAL tsumSTD(klon,klevSTD,nout)
    4550c
    4651      REAL missing_val
     
    4853      missing_val=nf90_fill_real
    4954c
     55      DO n=1, nout
     56c
    5057c calcul 1 fois par jour
    5158c
    52       IF(MOD(itap,NINT(ecrit_day/dtime)).EQ.0) THEN
    53        DO k=1, nlevSTD
    54         DO i=1, klon
    55          IF (NINT(tnondef(i,k,1)).NE.NINT(ecrit_day/dtime)) THEN
    56           tsumSTD(i,k,1)=tsumSTD(i,k,1)/
    57      $    (ecrit_day/dtime-tnondef(i,k,1))
    58          ELSE
    59           tsumSTD(i,k,1)=missing_val
    60          ENDIF !tnondef
    61         ENDDO !i
    62        ENDDO !k
    63       ENDIF !MOD(itap,ecrit_day).EQ.0
     59       IF(MOD(itap,NINT(freq_outNMC(n)/dtime)).EQ.0) THEN
    6460c
    65 c calcul 1 fois par mois
     61c      print*,'n freq_ini=',n,itap,freq_outNMC(n),missing_val
    6662c
    67       IF(MOD(itap,NINT(ecrit_mth/dtime)).EQ.0) THEN
    68        DO k=1, nlevSTD
    69         DO i=1, klon
    70          IF(tnondef(i,k,2).NE.ecrit_mth/dtime) THEN
    71           tsumSTD(i,k,2)=tsumSTD(i,k,2)/
    72      $    (ecrit_mth/dtime-tnondef(i,k,2))
    73          ELSE
    74           tsumSTD(i,k,2)=missing_val
    75          ENDIF !tnondef
     63        DO k=1, nlevSTD
     64         DO i=1, klon
     65          IF(tnondef(i,k,n).NE.(freq_moyNMC(n))) THEN
     66           tsumSTD(i,k,n)=tsumSTD(i,k,n)/
     67     $     (freq_moyNMC(n)-tnondef(i,k,n))
     68cIM BEG
     69          usumSTD(i,k,n)=usumSTD(i,k,n)/
     70     $     (freq_moyNMC(n)-tnondef(i,k,n))
     71          vsumSTD(i,k,n)=vsumSTD(i,k,n)/
     72     $     (freq_moyNMC(n)-tnondef(i,k,n))
     73          wsumSTD(i,k,n)=wsumSTD(i,k,n)/
     74     $     (freq_moyNMC(n)-tnondef(i,k,n))
     75          phisumSTD(i,k,n)=phisumSTD(i,k,n)/
     76     $     (freq_moyNMC(n)-tnondef(i,k,n))
     77          qsumSTD(i,k,n)=qsumSTD(i,k,n)/
     78     $     (freq_moyNMC(n)-tnondef(i,k,n))
     79          rhsumSTD(i,k,n)=rhsumSTD(i,k,n)/
     80     $     (freq_moyNMC(n)-tnondef(i,k,n))
     81          uvsumSTD(i,k,n)=uvsumSTD(i,k,n)/
     82     $     (freq_moyNMC(n)-tnondef(i,k,n))
     83          vqsumSTD(i,k,n)=vqsumSTD(i,k,n)/
     84     $     (freq_moyNMC(n)-tnondef(i,k,n))
     85          vTsumSTD(i,k,n)=vTsumSTD(i,k,n)/
     86     $     (freq_moyNMC(n)-tnondef(i,k,n))
     87          wqsumSTD(i,k,n)=wqsumSTD(i,k,n)/
     88     $     (freq_moyNMC(n)-tnondef(i,k,n))
     89          vphisumSTD(i,k,n)=vphisumSTD(i,k,n)/
     90     $     (freq_moyNMC(n)-tnondef(i,k,n))
     91          wTsumSTD(i,k,n)=wTsumSTD(i,k,n)/
     92     $     (freq_moyNMC(n)-tnondef(i,k,n))
     93          u2sumSTD(i,k,n)=u2sumSTD(i,k,n)/
     94     $     (freq_moyNMC(n)-tnondef(i,k,n))
     95          v2sumSTD(i,k,n)=v2sumSTD(i,k,n)/
     96     $     (freq_moyNMC(n)-tnondef(i,k,n))
     97          T2sumSTD(i,k,n)=T2sumSTD(i,k,n)/
     98     $     (freq_moyNMC(n)-tnondef(i,k,n))
     99cIM END
     100          ELSE
     101           tsumSTD(i,k,n)=missing_val
     102           usumSTD(i,k,n)=missing_val
     103           vsumSTD(i,k,n)=missing_val
     104           wsumSTD(i,k,n)=missing_val
     105           phisumSTD(i,k,n)=missing_val
     106           qsumSTD(i,k,n)=missing_val
     107           rhsumSTD(i,k,n)=missing_val
     108           uvsumSTD(i,k,n)=missing_val
     109           vqsumSTD(i,k,n)=missing_val
     110           vTsumSTD(i,k,n)=missing_val
     111           wqsumSTD(i,k,n)=missing_val
     112           vphisumSTD(i,k,n)=missing_val
     113           wTsumSTD(i,k,n)=missing_val
     114           u2sumSTD(i,k,n)=missing_val
     115           v2sumSTD(i,k,n)=missing_val
     116           T2sumSTD(i,k,n)=missing_val
     117          ENDIF !tnondef(i,k,n).NE.(freq_moyNMC(n))
    76118c
    77          IF(tnondef(i,k,3).NE.NINT(ecrit_hf2mth)) THEN
    78           tsumSTD(i,k,3)=tsumSTD(i,k,3)/
    79      $    (ecrit_hf2mth-tnondef(i,k,3))
    80          ELSE
    81           tsumSTD(i,k,3)=missing_val
    82          ENDIF !tnondef
     119c          if(n.EQ.1.AND.i.EQ.4513.AND.k.EQ.17) THEN
     120           if(n.EQ.1.AND.i.EQ.1128.AND.k.EQ.17) THEN
     121            print*,'itap rlon rlat tlevSTD=',itap,rlon(i),rlat(i),
     122     $tlevSTD(i,k)
     123           endif
    83124c
    84         ENDDO !i
    85        ENDDO !k
    86       ENDIF !MOD
     125         ENDDO !i
     126        ENDDO !k
     127       ENDIF !MOD(itap,NINT(freq_outNMC(n)/dtime)).EQ.0
     128c
     129      ENDDO !n
    87130c
    88131      RETURN
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/phys_state_var_mod.F90

    r1322 r1350  
    1111      USE dimphy
    1212      INTEGER, PARAMETER :: nlevSTD=17
     13      INTEGER, PARAMETER :: nlevSTD8=8
     14      INTEGER, PARAMETER :: nlevSTD3=3
    1315      INTEGER, PARAMETER :: nout=3
    1416      INTEGER, PARAMETER :: napisccp=1
    1517      INTEGER, SAVE :: radpas
     18!$OMP THREADPRIVATE(radpas)
    1619      REAL, SAVE :: dtime, solaire_etat0
    17 !$OMP THREADPRIVATE(radpas)
    1820!$OMP THREADPRIVATE(dtime, solaire_etat0)
    1921
     
    118120      REAL,ALLOCATABLE,SAVE :: T2sumSTD(:,:,:)
    119121!$OMP THREADPRIVATE(T2sumSTD)
     122!IM begin
     123      REAL,ALLOCATABLE,SAVE :: wlevSTD(:,:), ulevSTD(:,:), vlevSTD(:,:)
     124      REAL,ALLOCATABLE,SAVE :: tlevSTD(:,:), qlevSTD(:,:), rhlevSTD(:,:)
     125      REAL,ALLOCATABLE,SAVE :: philevSTD(:,:)
     126      REAL,ALLOCATABLE,SAVE :: uvSTD(:,:)
     127      REAL,ALLOCATABLE,SAVE :: vqSTD(:,:)
     128      REAL,ALLOCATABLE,SAVE :: vTSTD(:,:)
     129      REAL,ALLOCATABLE,SAVE :: wqSTD(:,:)
     130      REAL,ALLOCATABLE,SAVE :: vphiSTD(:,:)
     131      REAL,ALLOCATABLE,SAVE :: wTSTD(:,:)
     132      REAL,ALLOCATABLE,SAVE :: u2STD(:,:)
     133      REAL,ALLOCATABLE,SAVE :: v2STD(:,:)
     134      REAL,ALLOCATABLE,SAVE :: T2STD(:,:)
     135!IM end
    120136      INTEGER,ALLOCATABLE,SAVE :: seed_old(:,:)
    121137!$OMP THREADPRIVATE(seed_old)
     
    357373      ALLOCATE(v2sumSTD(klon,nlevSTD,nout))
    358374      ALLOCATE(T2sumSTD(klon,nlevSTD,nout))
     375!IM beg
     376      ALLOCATE(wlevSTD(klon,nlevSTD), ulevSTD(klon,nlevSTD), vlevSTD(klon,nlevSTD))
     377      ALLOCATE(tlevSTD(klon,nlevSTD), qlevSTD(klon,nlevSTD), rhlevSTD(klon,nlevSTD))
     378      ALLOCATE(philevSTD(klon,nlevSTD))
     379      ALLOCATE(uvSTD(klon,nlevSTD),vqSTD(klon,nlevSTD))
     380      ALLOCATE(vTSTD(klon,nlevSTD),wqSTD(klon,nlevSTD))
     381      ALLOCATE(vphiSTD(klon,nlevSTD),wTSTD(klon,nlevSTD))
     382      ALLOCATE(u2STD(klon,nlevSTD),v2STD(klon,nlevSTD))
     383      ALLOCATE(T2STD(klon,nlevSTD))
     384!IM end
    359385      ALLOCATE(seed_old(klon,napisccp))
    360386      ALLOCATE(zuthe(klon),zvthe(klon))
     
    459485      deallocate(v2sumSTD)
    460486      deallocate(T2sumSTD)
     487!IM beg
     488      deallocate(wlevSTD,ulevSTD,vlevSTD,tlevSTD,qlevSTD,rhlevSTD,philevSTD)
     489      deallocate(uvSTD,vqSTD,vTSTD,wqSTD,vphiSTD,wTSTD,u2STD,v2STD,T2STD)
     490!IM end
    461491      deallocate(seed_old)
    462492      deallocate(zuthe, zvthe)
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/physiq.F

    r1347 r1350  
    3535      use regr_pr_av_m, only: regr_pr_av
    3636      use netcdf95, only: nf95_close
     37cIM for NMC files
     38      use netcdf, only: nf90_fill_real
    3739      use mod_phys_lmdz_mpi_data, only: is_mpi_root
    3840      USE aero_mod
     
    5658c   CLEFS CPP POUR LES IO
    5759c   =====================
    58 c#define histmthNMC
     60#define histNMC
    5961c#define histISCCP
    6062c======================================================================
     
    259261      CHARACTER*2 bb3
    260262c
    261       real tlevSTD(klon,nlevSTD), qlevSTD(klon,nlevSTD)
    262       real rhlevSTD(klon,nlevSTD), philevSTD(klon,nlevSTD)
    263       real ulevSTD(klon,nlevSTD), vlevSTD(klon,nlevSTD)
    264       real wlevSTD(klon,nlevSTD)
    265263
    266264      real twriteSTD(klon,nlevSTD,nfiles)
     
    271269      real vwriteSTD(klon,nlevSTD,nfiles)
    272270      real wwriteSTD(klon,nlevSTD,nfiles)
     271cIM for NMC files
     272      REAL geo500(klon)
     273      real :: rlevSTD3(nlevSTD3)
     274      DATA rlevSTD3/85000., 50000., 25000./
     275      SAVE rlevSTD3
     276c$OMP THREADPRIVATE(rlevSTD3)
     277      real :: rlevSTD8(nlevSTD8)
     278      DATA rlevSTD8/100000., 85000., 70000., 50000., 25000., 10000.,
     279     $     5000., 1000./
     280      SAVE rlevSTD8
     281c$OMP THREADPRIVATE(rlevSTD8)
     282      real twriteSTD3(klon,nlevSTD3)
     283      real qwriteSTD3(klon,nlevSTD3)
     284      real rhwriteSTD3(klon,nlevSTD3)
     285      real phiwriteSTD3(klon,nlevSTD3)
     286      real uwriteSTD3(klon,nlevSTD3)
     287      real vwriteSTD3(klon,nlevSTD3)
     288      real wwriteSTD3(klon,nlevSTD3)
     289c
     290      real tnondefSTD8(klon,nlevSTD8)
     291      real twriteSTD8(klon,nlevSTD8)
     292      real qwriteSTD8(klon,nlevSTD8)
     293      real rhwriteSTD8(klon,nlevSTD8)
     294      real phiwriteSTD8(klon,nlevSTD8)
     295      real uwriteSTD8(klon,nlevSTD8)
     296      real vwriteSTD8(klon,nlevSTD8)
     297      real wwriteSTD8(klon,nlevSTD8)
     298c
     299c plevSTD3 END
    273300c
    274301c nout : niveau de output des variables a une pression donnee
     
    278305c a partir des valeurs instantannees toutes les 6 h
    279306c qui sont moyennees sur le mois
    280 c
    281       real uvSTD(klon,nlevSTD)
    282       real vqSTD(klon,nlevSTD)
    283       real vTSTD(klon,nlevSTD)
    284       real wqSTD(klon,nlevSTD)
    285 c
    286       real vphiSTD(klon,nlevSTD)
    287       real wTSTD(klon,nlevSTD)
    288       real u2STD(klon,nlevSTD)
    289       real v2STD(klon,nlevSTD)
    290       real T2STD(klon,nlevSTD)
    291307c
    292308#include "radopt.h"
     
    976992      REAL zx_tmp_fi2d(klon)      ! variable temporaire grille physique
    977993      REAL zx_tmp_fi3d(klon,klev) ! variable temporaire pour champs 3D
    978 c#ifdef histmthNMC
     994c#ifdef histNMC
    979995cym   A voir plus tard !!!!
    980996cym      REAL zx_tmp_NC(iim,jjmp1,nlevSTD)
     
    9841000      REAL zx_tmp_2d(iim,jjmp1), zx_tmp_3d(iim,jjmp1,klev)
    9851001      REAL zx_lon(iim,jjmp1), zx_lat(iim,jjmp1)
    986 c
    987       INTEGER nid_day, nid_mth, nid_ins, nid_nmc, nid_day_seri
    988       INTEGER nid_ctesGCM
    989       SAVE nid_day, nid_mth, nid_ins, nid_nmc, nid_day_seri
    990       SAVE nid_ctesGCM
    991 c$OMP THREADPRIVATE(nid_day, nid_mth, nid_ins, nid_nmc)
     1002cIM for NMC files
     1003      REAL missing_val
     1004      REAL, SAVE :: freq_moyNMC(nout)
     1005c$OMP THREADPRIVATE(freq_moyNMC)
     1006c
     1007      INTEGER nid_day, nid_mth, nid_ins, nid_mthnmc, nid_daynmc
     1008      INTEGER nid_hfnmc, nid_day_seri, nid_ctesGCM
     1009      SAVE nid_day, nid_mth, nid_ins, nid_mthnmc, nid_daynmc
     1010      SAVE nid_hfnmc, nid_day_seri, nid_ctesGCM
     1011c$OMP THREADPRIVATE(nid_day, nid_mth, nid_ins)
     1012c$OMP THREADPRIVATE(nid_mthnmc, nid_daynmc, nid_hfnmc)
    9921013c$OMP THREADPRIVATE(nid_day_seri,nid_ctesGCM)
    9931014c
     
    11121133!     edges of pressure intervals for ozone climatologies, in Pa, in strictly
    11131134!     ascending order
     1135cIM for NMC files en parallele
     1136c$OMP THREADPRIVATE(read_climoz, ncid_climoz, press_climoz)
    11141137
    11151138      integer, save:: co3i = 0
     
    11351158c============================================================
    11361159      real :: mr_ozone(klon,klev)
     1160cIM for NMC files
     1161      missing_val=nf90_fill_real
    11371162c======================================================================
    11381163! Ecriture eventuelle d'un profil verticale en entree de la physique.
     
    11801205      print*, 'Allocation des variables locales et sauvegardees'
    11811206      call phys_local_var_init
     1207c
     1208      pasphys=pdtphys
    11821209c     appel a la lecture du run.def physique
    11831210      call conf_phys(ok_journe, ok_mensuel,
     
    11971224      call phys_state_var_init(read_climoz)
    11981225      print*, '================================================='
    1199 
     1226cIM for NMC files
     1227cIM freq_moyNMC = frequences auxquelles on moyenne les champs accumules
     1228cIM               sur les niveaux de pression standard du NMC
     1229      DO n=1, nout
     1230       freq_moyNMC(n)=freq_outNMC(n)/freq_calNMC(n)
     1231      ENDDO
     1232c
    12001233cIM beg
    12011234          dnwd0=0.0
     
    14731506#endif
    14741507
    1475 #ifdef histmthNMC
     1508#ifdef histNMC
     1509#include "ini_histhfNMC.h"
     1510#include "ini_histdayNMC.h"
    14761511#include "ini_histmthNMC.h"
    14771512#endif
     
    14871522
    14881523         ecrit_hf = ecrit_hf * un_jour
    1489 !IM
     1524cIM
    14901525         IF(ecrit_day.LE.1.) THEN
    14911526          ecrit_day = ecrit_day * un_jour !en secondes
    14921527         ENDIF
    1493 !IM
     1528cIM
    14941529         ecrit_mth = ecrit_mth * un_jour
    14951530         ecrit_ins = ecrit_ins * un_jour
     
    27552790     &        tausum_aero, tau3d_aero)
    27562791      ELSE
     2792cIM 170310 BEG
     2793         tausum_aero(:,:,:) = 0.
     2794cIM 170310 END
    27572795         tau_aero(:,:,:,:) = 0.
    27582796         piz_aero(:,:,:,:) = 0.
     
    33903428c
    33913429#include "calcul_STDlev.h"
    3392       twriteSTD(:,:,1)=tsumSTD(:,:,2)
    3393       qwriteSTD(:,:,1)=qsumSTD(:,:,2)
    3394       rhwriteSTD(:,:,1)=rhsumSTD(:,:,2)
    3395       phiwriteSTD(:,:,1)=phisumSTD(:,:,2)
    3396       uwriteSTD(:,:,1)=usumSTD(:,:,2)
    3397       vwriteSTD(:,:,1)=vsumSTD(:,:,2)
    3398       wwriteSTD(:,:,1)=wsumSTD(:,:,2)
    3399 
    3400       twriteSTD(:,:,2)=tsumSTD(:,:,1)
    3401       qwriteSTD(:,:,2)=qsumSTD(:,:,1)
    3402       rhwriteSTD(:,:,2)=rhsumSTD(:,:,1)
    3403       phiwriteSTD(:,:,2)=phisumSTD(:,:,1)
    3404       uwriteSTD(:,:,2)=usumSTD(:,:,1)
    3405       vwriteSTD(:,:,2)=vsumSTD(:,:,1)
    3406       wwriteSTD(:,:,2)=wsumSTD(:,:,1)
     3430      twriteSTD(:,:,1)=tsumSTD(:,:,1)
     3431      qwriteSTD(:,:,1)=qsumSTD(:,:,1)
     3432      rhwriteSTD(:,:,1)=rhsumSTD(:,:,1)
     3433      phiwriteSTD(:,:,1)=phisumSTD(:,:,1)
     3434      uwriteSTD(:,:,1)=usumSTD(:,:,1)
     3435      vwriteSTD(:,:,1)=vsumSTD(:,:,1)
     3436      wwriteSTD(:,:,1)=wsumSTD(:,:,1)
     3437
     3438      twriteSTD(:,:,2)=tsumSTD(:,:,2)
     3439      qwriteSTD(:,:,2)=qsumSTD(:,:,2)
     3440      rhwriteSTD(:,:,2)=rhsumSTD(:,:,2)
     3441      phiwriteSTD(:,:,2)=phisumSTD(:,:,2)
     3442      uwriteSTD(:,:,2)=usumSTD(:,:,2)
     3443      vwriteSTD(:,:,2)=vsumSTD(:,:,2)
     3444      wwriteSTD(:,:,2)=wsumSTD(:,:,2)
    34073445
    34083446      twriteSTD(:,:,3)=tlevSTD(:,:)
     
    34213459      vwriteSTD(:,:,4)=vlevSTD(:,:)
    34223460      wwriteSTD(:,:,4)=wlevSTD(:,:)
     3461c
     3462cIM ajoute 5eme niveau 170310 BEG
     3463      twriteSTD(:,:,5)=tlevSTD(:,:)
     3464      qwriteSTD(:,:,5)=qlevSTD(:,:)
     3465      rhwriteSTD(:,:,5)=rhlevSTD(:,:)
     3466      phiwriteSTD(:,:,5)=philevSTD(:,:)
     3467      uwriteSTD(:,:,5)=ulevSTD(:,:)
     3468      vwriteSTD(:,:,5)=vlevSTD(:,:)
     3469      wwriteSTD(:,:,5)=wlevSTD(:,:)
     3470cIM for NMC files
     3471      DO n=1, nlevSTD3
     3472       DO k=1, nlevSTD
     3473        if(rlevSTD3(n).EQ.rlevSTD(k)) THEN
     3474         twriteSTD3(:,n)=tlevSTD(:,k)
     3475         qwriteSTD3(:,n)=qlevSTD(:,k)
     3476         rhwriteSTD3(:,n)=rhlevSTD(:,k)
     3477         phiwriteSTD3(:,n)=philevSTD(:,k)
     3478         uwriteSTD3(:,n)=ulevSTD(:,k)
     3479         vwriteSTD3(:,n)=vlevSTD(:,k)
     3480         wwriteSTD3(:,n)=wlevSTD(:,k)
     3481        endif !rlevSTD3(n).EQ.rlevSTD(k)
     3482       ENDDO
     3483      ENDDO
     3484c
     3485      DO n=1, nlevSTD8
     3486       DO k=1, nlevSTD
     3487        if(rlevSTD8(n).EQ.rlevSTD(k)) THEN
     3488         tnondefSTD8(:,n)=tnondef(:,k,2)
     3489         twriteSTD8(:,n)=tsumSTD(:,k,2)
     3490         qwriteSTD8(:,n)=qsumSTD(:,k,2)
     3491         rhwriteSTD8(:,n)=rhsumSTD(:,k,2)
     3492         phiwriteSTD8(:,n)=phisumSTD(:,k,2)
     3493         uwriteSTD8(:,n)=usumSTD(:,k,2)
     3494         vwriteSTD8(:,n)=vsumSTD(:,k,2)
     3495         wwriteSTD8(:,n)=wsumSTD(:,k,2)
     3496        endif !rlevSTD8(n).EQ.rlevSTD(k)
     3497       ENDDO
     3498      ENDDO
    34233499c
    34243500c slp sea level pressure
     
    35793655#endif
    35803656
    3581 #ifdef histmthNMC
     3657#ifdef histNMC
     3658#include "write_histhfNMC.h"
     3659#include "write_histdayNMC.h"
    35823660#include "write_histmthNMC.h"
    35833661#endif
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/undefSTD.F

    r1299 r1350  
    22! $Id$
    33!
    4       SUBROUTINE undefSTD(nlevSTD,itap,tlevSTD,
    5      $           dtime,ecrit_hf,
    6      $           oknondef,tnondef,tsumSTD)
     4c     SUBROUTINE undefSTD(nlevSTD,itap,tlevSTD,
     5c    $           dtime,freq_calNMC,
     6c    $           oknondef,tnondef,tsumSTD)
     7      SUBROUTINE undefSTD(itap,freq_calNMC)
    78      USE netcdf
    89      USE dimphy
     10      USE phys_state_var_mod ! Variables sauvegardees de la physique
    911      IMPLICIT none
    1012c
     
    1315c I. Musat : 09.2004
    1416c
    15 c Calcul * du nombre de pas de temps (REAL(ecrit_XXX)-tnondef))
    16 c          ou la variable tlevSTD est bien definie (.NE.1.E+20),
     17c Calcul * du nombre de pas de temps (FLOAT(ecrit_XXX)-tnondef))
     18c          ou la variable tlevSTD est bien definie (.NE.missing_val),
    1719c et
    1820c        * de la somme de tlevSTD => tsumSTD
     
    2224c nout=2 !var. mensuelle "mth" moyennee sur tous les pas de temps
    2325c        ! de la physique
    24 c nout=3 !var. mensuelle "NMC" moyennee toutes les 6heures
     26c nout=3 !var. mensuelle "NMC" moyennee toutes les ecrit_hf
    2527c
    2628c
    27 c NB: mettre "inst(X)" dans le write_histXXX.h !
     29c NB: mettre "inst(X)" dans le write_hist*NMC.h !
    2830c====================================================================
    2931c
     
    3436c variables Input
    3537c
    36       INTEGER nlevSTD, klevSTD, itap
    37       PARAMETER(klevSTD=17)
    38       REAL dtime, ecrit_hf
     38c     INTEGER nlevSTD, klevSTD, itap
     39c     PARAMETER(klevSTD=17)
     40      INTEGER itap
     41c     REAL dtime
    3942c
    4043c variables locales
    41       INTEGER i, k, nout
    42       PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC
     44c     INTEGER i, k, nout, n
     45c     PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC
     46      INTEGER i, k, n
     47      REAL freq_calNMC(nout)
    4348c
    4449c variables Output
    45       REAL tlevSTD(klon,klevSTD), tsumSTD(klon,klevSTD,nout)
    46       LOGICAL oknondef(klon,klevSTD,nout)
    47       REAL tnondef(klon,klevSTD,nout)
     50c     REAL tlevSTD(klon,klevSTD), tsumSTD(klon,klevSTD,nout)
     51c     LOGICAL oknondef(klon,klevSTD,nout)
     52c     REAL tnondef(klon,klevSTD,nout)
    4853c
    4954      REAL missing_val
     
    5156      missing_val=nf90_fill_real
    5257c
    53 c calcul variables tous les pas de temps de la physique
     58      DO n=1, nout
    5459c
    55       DO k=1, nlevSTD
    56        DO i=1, klon
    57         IF(tlevSTD(i,k).EQ.missing_val) THEN
    58          IF(oknondef(i,k,1)) THEN         
    59           tnondef(i,k,1)=tnondef(i,k,1)+1.
    60          ENDIF !oknondef(i,k)
    6160c
    62          IF(oknondef(i,k,2)) THEN         
    63           tnondef(i,k,2)=tnondef(i,k,2)+1.
    64          ENDIF !oknondef(i,k)
     61c calcul variables tous les freq_calNMC(n)/dtime pas de temps
     62c de la physique
    6563c
    66         ELSE IF(tlevSTD(i,k).NE.missing_val) THEN
    67          tsumSTD(i,k,1)=tsumSTD(i,k,1)+tlevSTD(i,k)
    68          tsumSTD(i,k,2)=tsumSTD(i,k,2)+tlevSTD(i,k)
    69         ENDIF
    70        ENDDO !i
    71       ENDDO !k
     64       IF(MOD(itap,NINT(freq_calNMC(n)/dtime)).EQ.0) THEN
    7265c
    73 c calcul variables toutes les 6h
     66c       print*,'n freq_cal=',n,itap,freq_calNMC(n)/dtime
    7467c
    75       IF(MOD(itap,NINT(ecrit_hf/dtime)).EQ.0) THEN
     68        DO k=1, nlevSTD
     69         DO i=1, klon
     70          IF(tlevSTD(i,k).EQ.missing_val) THEN
     71c          IF(oknondef(i,k,n)) THEN         
     72            tnondef(i,k,n)=tnondef(i,k,n)+1.
     73c          ENDIF !oknondef(i,k)
    7674c
    77        DO k=1, nlevSTD
    78         DO i=1, klon
    79          IF(tlevSTD(i,k).EQ.missing_val) THEN
    80           IF(oknondef(i,k,3)) THEN         
    81            tnondef(i,k,3)=tnondef(i,k,3)+1.
    82           ENDIF !oknondef(i,k)
     75          ELSE IF(tlevSTD(i,k).NE.missing_val) THEN
     76           tsumSTD(i,k,n)=tsumSTD(i,k,n)+tlevSTD(i,k)
     77           usumSTD(i,k,n)=usumSTD(i,k,n)+ulevSTD(i,k)
     78           vsumSTD(i,k,n)=vsumSTD(i,k,n)+vlevSTD(i,k)
     79           wsumSTD(i,k,n)=wsumSTD(i,k,n)+wlevSTD(i,k)
     80           phisumSTD(i,k,n)=phisumSTD(i,k,n)+philevSTD(i,k)
     81           qsumSTD(i,k,n)=qsumSTD(i,k,n)+qlevSTD(i,k)
     82           rhsumSTD(i,k,n)=rhsumSTD(i,k,n)+rhlevSTD(i,k)
     83           uvsumSTD(i,k,n)=uvsumSTD(i,k,n)+uvSTD(i,k)
     84           vqsumSTD(i,k,n)=vqsumSTD(i,k,n)+vqSTD(i,k)
     85           vTsumSTD(i,k,n)=vTsumSTD(i,k,n)+vTSTD(i,k)
     86           wqsumSTD(i,k,n)=wqsumSTD(i,k,n)+wqSTD(i,k)
     87           vphisumSTD(i,k,n)=vphisumSTD(i,k,n)+vphiSTD(i,k)
     88           wTsumSTD(i,k,n)=wTsumSTD(i,k,n)+wTSTD(i,k)
     89           u2sumSTD(i,k,n)=u2sumSTD(i,k,n)+u2STD(i,k)
     90           v2sumSTD(i,k,n)=v2sumSTD(i,k,n)+v2STD(i,k)
     91           T2sumSTD(i,k,n)=T2sumSTD(i,k,n)+T2STD(i,k)
    8392c
    84          ELSE IF(tlevSTD(i,k).NE.missing_val) THEN
    85          tsumSTD(i,k,3)=tsumSTD(i,k,3)+tlevSTD(i,k)
    86          ENDIF
    87         ENDDO !i
    88        ENDDO !k
    89 
    90       ENDIF !MOD(itap,NINT(ecrit_hf/dtime)).EQ.0
     93c          if(n.EQ.1.AND.i.EQ.4513.AND.k.EQ.17) THEN
     94           if(n.EQ.1.AND.i.EQ.1128.AND.k.EQ.17) THEN
     95            print*,'itap rlon rlat tlevSTD=',itap,rlon(i),rlat(i),
     96     $tlevSTD(i,k)
     97           endif
     98c
     99          ENDIF
     100         ENDDO !i
     101        ENDDO !k
     102c
     103       ENDIF !MOD(itap,NINT(freq_calNMC(n)/dtime)).EQ.0
     104c
     105      ENDDO !n
    91106c
    92107      RETURN
  • LMDZ4/branches/LMDZ4V5.0-dev/libf/phylmd/write_histmthNMC.h

    r776 r1350  
    22! $Header$
    33!
    4       IF (ok_mensuel) THEN
    54c
    65       ndex3d = 0
     
    98c  Champs interpolles sur des niveaux de pression du NMC
    109c
    11 c     PARAMETER(nout=3) !nout=1 : day; =2 : mth; =3 : NMC
     10c     PARAMETER(nout=3)
     11c nout=1 : in=pdtphys,    out=mth
     12c nout=2 : in=pdtphys,    out=day
     13c nout=3 : in=pdtphys,    out=hf
    1214ccc
    13       IF(type_run.EQ."CLIM".OR.type_run.EQ."ENSP") THEN
    14 ccc
    15 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,tsumSTD(:,:,2),
    16 cym     $      zx_tmp_NC)
    17        CALL histwrite_phy(nid_nmc,"temp",itau_w,tsumSTD(:,:,2))
     15       CALL histwrite_phy(nid_mthnmc,"tnondef",itau_w,tnondef(:,:,1))
    1816c
    19 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,phisumSTD(:,:,2),
    20 cym     $     zx_tmp_NC)
    21        CALL histwrite_phy(nid_nmc,"phi",itau_w,phisumSTD(:,:,2))
     17c      CALL histwrite_phy(nid_mthnmc,"ta",itau_w,twriteSTD(:,:,1))
     18       CALL histwrite_phy(nid_mthnmc,"ta",itau_w,tsumSTD(:,:,1))
    2219c
    23 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,qsumSTD(:,:,2),
    24 cym     $     zx_tmp_NC)
    25        CALL histwrite_phy(nid_nmc,"q",itau_w,qsumSTD(:,:,2))
     20       CALL histwrite_phy(nid_mthnmc,"zg",itau_w,phiwriteSTD(:,:,1))
    2621c
    27 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,rhsumSTD(:,:,2),
    28 cym     $     zx_tmp_NC)
    29        CALL histwrite_phy(nid_nmc,"rh",itau_w,rhsumSTD(:,:,2))
     22       CALL histwrite_phy(nid_mthnmc,"hus",itau_w,qwriteSTD(:,:,1))
    3023c
    31 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,usumSTD(:,:,2),
    32 cym     $     zx_tmp_NC)
    33        CALL histwrite_phy(nid_nmc,"u",itau_w,usumSTD(:,:,2))
     24       CALL histwrite_phy(nid_mthnmc,"hur",itau_w,rhwriteSTD(:,:,1))
    3425c
    35 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,vsumSTD(:,:,2),
    36 cym     $     zx_tmp_NC)
    37        CALL histwrite_phy(nid_nmc,"v",itau_w,vsumSTD(:,:,2))
    38 ccc
    39       ELSE IF(type_run.EQ."AMIP".OR.type_run.EQ."CFMI") THEN
    40 ccc
    41 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,tsumSTD(:,:,3),
    42 cym     $     zx_tmp_NC)
    43        CALL histwrite_phy(nid_nmc,"temp",itau_w,tsumSTD(:,:,3))
     26       CALL histwrite_phy(nid_mthnmc,"ua",itau_w,uwriteSTD(:,:,1))
    4427c
    45 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,phisumSTD(:,:,3),
    46 cym     $     zx_tmp_NC)
    47        CALL histwrite_phy(nid_nmc,"phi",itau_w,phisumSTD(:,:,3))
     28       CALL histwrite_phy(nid_mthnmc,"va",itau_w,vwriteSTD(:,:,1))
    4829c
    49 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,qsumSTD(:,:,3),
    50 cym     $     zx_tmp_NC)
    51        CALL histwrite_phy(nid_nmc,"q",itau_w,qsumSTD(:,:,3))
    52 c
    53 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,rhsumSTD(:,:,3),
    54 cym     $     zx_tmp_NC)
    55        CALL histwrite_phy(nid_nmc,"rh",itau_w,rhsumSTD(:,:,3))
    56 c
    57 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,usumSTD(:,:,3),
    58 cym     $     zx_tmp_NC)
    59        CALL histwrite_phy(nid_nmc,"u",itau_w,usumSTD(:,:,3))
    60 c
    61 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,vsumSTD(:,:,3),
    62 cym     $     zx_tmp_NC)
    63        CALL histwrite_phy(nid_nmc,"v",itau_w,vsumSTD(:,:,3))
    64 c
    65 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,wsumSTD(:,:,3),
    66 cym     $     zx_tmp_NC)
    67        CALL histwrite_phy(nid_nmc,"w",itau_w,wsumSTD(:,:,3))
     30       CALL histwrite_phy(nid_mthnmc,"wap",itau_w,wwriteSTD(:,:,1))
    6831c
    6932       DO k=1, nlevSTD
    7033        DO i=1, klon
    71          IF(tnondef(i,k,3).NE.1.E+20) THEN
    72           zx_tmp_fiNC(i,k) = (100.*tnondef(i,k,3))/ecrit_hf2mth
     34         IF(tnondef(i,k,1).NE.missing_val) THEN
     35          zx_tmp_fiNC(i,k) = (100.*tnondef(i,k,1))/ecrit_hf2mth
    7336         ELSE
    74           zx_tmp_fiNC(i,k) = 1.E+20
     37          zx_tmp_fiNC(i,k) = missing_val
    7538         ENDIF
    7639        ENDDO
    7740       ENDDO !k=1, nlevSTD
    7841c
    79 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,zx_tmp_fiNC,zx_tmp_NC)
    80        CALL histwrite_phy(nid_nmc,"psbg",itau_w,zx_tmp_fiNC)
     42       CALL histwrite_phy(nid_mthnmc,"psbg",itau_w,zx_tmp_fiNC)
    8143c
    82 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,uvsumSTD(:,:,3),
    83 cym     $     zx_tmp_NC)
    84        CALL histwrite_phy(nid_nmc,"uv",itau_w,uvsumSTD(:,:,3))
     44       CALL histwrite_phy(nid_mthnmc,"uv",itau_w,uvsumSTD(:,:,1))
    8545c
    86 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,vqsumSTD(:,:,3),
    87 cym     $     zx_tmp_NC)
    88        CALL histwrite_phy(nid_nmc,"vq",itau_w,vqsumSTD(:,:,3))
     46       CALL histwrite_phy(nid_mthnmc,"vq",itau_w,vqsumSTD(:,:,1))
    8947c
    90 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,vTsumSTD(:,:,3),
    91 cym     $     zx_tmp_NC)
    92        CALL histwrite_phy(nid_nmc,"vT",itau_w,vTsumSTD(:,:,3))
     48       CALL histwrite_phy(nid_mthnmc,"vT",itau_w,vTsumSTD(:,:,1))
    9349c
    94 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1, wqsumSTD(:,:,3),
    95 cym     $     zx_tmp_NC)
    96        CALL histwrite_phy(nid_nmc,"wq",itau_w,wqsumSTD(:,:,3))
     50       CALL histwrite_phy(nid_mthnmc,"wq",itau_w,wqsumSTD(:,:,1))
    9751c
    98 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,vphisumSTD(:,:,3),
    99 cym     $     zx_tmp_NC)
    100        CALL histwrite_phy(nid_nmc,"vphi",itau_w,vphisumSTD(:,:,3))
     52       CALL histwrite_phy(nid_mthnmc,"vphi",itau_w,vphisumSTD(:,:,1))
    10153c
    102 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,wTsumSTD(:,:,3),
    103 cym     $     zx_tmp_NC)
    104        CALL histwrite_phy(nid_nmc,"wT",itau_w,wTsumSTD(:,:,3))
     54       CALL histwrite_phy(nid_mthnmc,"wT",itau_w,wTsumSTD(:,:,1))
    10555c
    106 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,u2sumSTD(:,:,3),
    107 cym     $     zx_tmp_NC)
    108        CALL histwrite_phy(nid_nmc,"uxu",itau_w,u2sumSTD(:,:,3))
     56       CALL histwrite_phy(nid_mthnmc,"uxu",itau_w,u2sumSTD(:,:,1))
    10957c
    110 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,v2sumSTD(:,:,3),
    111 cym     $     zx_tmp_NC)
    112        CALL histwrite_phy(nid_nmc,"vxv",itau_w,v2sumSTD(:,:,3))
     58       CALL histwrite_phy(nid_mthnmc,"vxv",itau_w,v2sumSTD(:,:,1))
    11359c
    114 cym       CALL gr_fi_ecrit(nlevSTD, klon,iim,jjmp1,T2sumSTD(:,:,3),
    115 cym     $     zx_tmp_NC)
    116        CALL histwrite_phy(nid_nmc,"TxT",itau_w,T2sumSTD(:,:,3))
    117 c
    118       ENDIF !type_run
     60       CALL histwrite_phy(nid_mthnmc,"TxT",itau_w,T2sumSTD(:,:,1))
    11961c
    12062      if (ok_sync) then
    12163c$OMP MASTER
    122         call histsync(nid_nmc)
     64        call histsync(nid_mthnmc)
    12365c$OMP END MASTER
    12466      endif
    125 
    126       ENDIF
Note: See TracChangeset for help on using the changeset viewer.