Changeset 1862


Ignore:
Timestamp:
Sep 10, 2013, 2:18:14 PM (11 years ago)
Author:
lguez
Message:

Converted physiq.F to free source form (on mandate of the United Poihl).

Location:
LMDZ5/trunk/libf/phylmd
Files:
8 edited
1 moved

Legend:

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

    r1694 r1862  
    1 c
    2 c $Header$
    3 c
    4 cIM on initialise les variables
    5 c
     1!
     2! $Header$
     3!
     4!IM on initialise les variables
     5!
    66        missing_val=nf90_fill_real
    7 c
    8 cIM freq_moyNMC = frequences auxquelles on moyenne les champs accumules
    9 cIM               sur les niveaux de pression standard du NMC
     7!
     8!IM freq_moyNMC = frequences auxquelles on moyenne les champs accumules
     9!IM               sur les niveaux de pression standard du NMC
    1010      DO n=1, nout
    1111       freq_moyNMC(n)=freq_outNMC(n)/freq_calNMC(n)
    1212      ENDDO
    13 c
     13!
    1414        CALL ini_undefSTD(itap,freq_outNMC)
    15 c
    16 cIM on interpole les champs sur les niveaux STD de pression
    17 cIM a chaque pas de temps de la physique
    18 c
    19 c-------------------------------------------------------c
    20 c positionnement de l'argument logique a .false.        c
    21 c pour ne pas recalculer deux fois la meme chose !      c
    22 c a cet effet un appel a plevel_new a ete deplace       c
    23 c a la fin de la serie d'appels                         c
    24 c la boucle 'DO k=1, nlevSTD' a ete internalisee        c
    25 c dans plevel_new, d'ou la creation de cette routine... c
    26 c-------------------------------------------------------c
    27 c
    28         CALL plevel_new(klon,klev,nlevSTD,.true.,pplay,rlevSTD,
    29      &              t_seri,tlevSTD)
    30         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    31      &             u_seri,ulevSTD)
    32         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    33      &             v_seri,vlevSTD)
    34 c
    35 
    36 c
    37         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    38      &             zphi/RG,philevSTD)
    39         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    40      &             qx(:,:,ivap),qlevSTD)
    41         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    42      &             zx_rh*100.,rhlevSTD)
    43 c
     15!
     16!IM on interpole les champs sur les niveaux STD de pression
     17!IM a chaque pas de temps de la physique
     18!
     19!-------------------------------------------------------c
     20! positionnement de l'argument logique a .false.        c
     21! pour ne pas recalculer deux fois la meme chose !      c
     22! a cet effet un appel a plevel_new a ete deplace       c
     23! a la fin de la serie d'appels                         c
     24! la boucle 'DO k=1, nlevSTD' a ete internalisee        c
     25! dans plevel_new, d'ou la creation de cette routine... c
     26!-------------------------------------------------------c
     27!
     28        CALL plevel_new(klon,klev,nlevSTD,.true.,pplay,rlevSTD, &
     29                    t_seri,tlevSTD)
     30        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     31                   u_seri,ulevSTD)
     32        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     33                   v_seri,vlevSTD)
     34!
     35
     36!
     37        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     38                   zphi/RG,philevSTD)
     39        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     40                   qx(:,:,ivap),qlevSTD)
     41        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     42                   zx_rh*100.,rhlevSTD)
     43!
    4444        DO l=1, klev
    4545         DO i=1, klon
     
    4747         ENDDO !i
    4848        ENDDO !l
    49         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    50      &             zx_tmp_fi3d,uvSTD)
    51 c
     49        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     50                   zx_tmp_fi3d,uvSTD)
     51!
    5252        DO l=1, klev
    5353         DO i=1, klon
     
    5555         ENDDO !i
    5656        ENDDO !l
    57         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    58      &             zx_tmp_fi3d,vqSTD)
    59 c
     57        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     58                   zx_tmp_fi3d,vqSTD)
     59!
    6060        DO l=1, klev
    6161         DO i=1, klon
     
    6363         ENDDO !i
    6464        ENDDO !l
    65         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    66      &             zx_tmp_fi3d,vTSTD)
    67 c
     65        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     66                   zx_tmp_fi3d,vTSTD)
     67!
    6868        DO l=1, klev
    6969         DO i=1, klon
     
    7171         ENDDO !i
    7272        ENDDO !l
    73         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    74      &             zx_tmp_fi3d,wqSTD)
    75 c
     73        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     74                   zx_tmp_fi3d,wqSTD)
     75!
    7676        DO l=1, klev
    7777         DO i=1, klon
     
    7979         ENDDO !i
    8080        ENDDO !l
    81         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    82      &             zx_tmp_fi3d,vphiSTD)
    83 c
     81        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     82                   zx_tmp_fi3d,vphiSTD)
     83!
    8484        DO l=1, klev
    8585         DO i=1, klon
     
    8787         ENDDO !i
    8888        ENDDO !l
    89         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    90      &             zx_tmp_fi3d,wTSTD)
    91 c
     89        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     90                   zx_tmp_fi3d,wTSTD)
     91!
    9292        DO l=1, klev
    9393         DO i=1, klon
     
    9595         ENDDO !i
    9696        ENDDO !l
    97         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    98      &             zx_tmp_fi3d,u2STD)
    99 c
     97        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     98                   zx_tmp_fi3d,u2STD)
     99!
    100100        DO l=1, klev
    101101         DO i=1, klon
     
    103103         ENDDO !i
    104104        ENDDO !l
    105         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    106      &             zx_tmp_fi3d,v2STD)
    107 c
     105        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     106                   zx_tmp_fi3d,v2STD)
     107!
    108108        DO l=1, klev
    109109         DO i=1, klon
     
    111111         ENDDO !i
    112112        ENDDO !l
    113         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    114      &             zx_tmp_fi3d,T2STD)
    115 
    116 c
     113        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     114                   zx_tmp_fi3d,T2STD)
     115
     116!
    117117      zx_tmp_fi3d(:,:)=wo(:,:,1) * dobson_u * 1e3 / zmasse / rmo3 * rmd
    118         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    119      &             zx_tmp_fi3d,O3STD)
    120 c
     118        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     119                   zx_tmp_fi3d,O3STD)
     120!
    121121      if (read_climoz == 2) THEN
    122122      zx_tmp_fi3d(:,:)=wo(:,:,2) * dobson_u * 1e3 / zmasse / rmo3 * rmd
    123         CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD,
    124      &             zx_tmp_fi3d,O3daySTD)
     123        CALL plevel_new(klon,klev,nlevSTD,.false.,pplay,rlevSTD, &
     124                   zx_tmp_fi3d,O3daySTD)
    125125      endif
    126 c
     126!
    127127        DO l=1, klev
    128128        DO i=1, klon
     
    130130        ENDDO !i
    131131        ENDDO !l
    132         CALL plevel_new(klon,klev,nlevSTD,.true.,zx_tmp_fi3d,rlevSTD,
    133      &             omega,wlevSTD)
    134 c
    135 cIM on somme les valeurs toutes les freq_calNMC secondes
    136 c
     132        CALL plevel_new(klon,klev,nlevSTD,.true.,zx_tmp_fi3d,rlevSTD, &
     133                   omega,wlevSTD)
     134!
     135!IM on somme les valeurs toutes les freq_calNMC secondes
     136!
    137137       CALL undefSTD(itap,freq_calNMC, read_climoz)
    138 c
    139 cIM on moyenne a la fin du mois ou du jour (toutes les freq_outNMC secondes)
    140 c
     138!
     139!IM on moyenne a la fin du mois ou du jour (toutes les freq_outNMC secondes)
     140!
    141141       CALL moy_undefSTD(itap,freq_outNMC,freq_moyNMC)
    142 c
    143        CALL plevel(klon,klev,.true.,pplay,50000.,
    144      &              zphi/RG,geo500)
    145 
    146 cIM on interpole a chaque pas de temps le SWup(clr) et SWdn(clr) a 200 hPa
    147 c
    148       CALL plevel(klon,klevp1,.true.,paprs,20000.,
    149      $     swdn0,SWdn200clr)
    150       CALL plevel(klon,klevp1,.false.,paprs,20000.,
    151      $     swdn,SWdn200)
    152       CALL plevel(klon,klevp1,.false.,paprs,20000.,
    153      $     swup0,SWup200clr)
    154       CALL plevel(klon,klevp1,.false.,paprs,20000.,
    155      $     swup,SWup200)
    156 c
    157       CALL plevel(klon,klevp1,.false.,paprs,20000.,
    158      $     lwdn0,LWdn200clr)
    159       CALL plevel(klon,klevp1,.false.,paprs,20000.,
    160      $     lwdn,LWdn200)
    161       CALL plevel(klon,klevp1,.false.,paprs,20000.,
    162      $     lwup0,LWup200clr)
    163       CALL plevel(klon,klevp1,.false.,paprs,20000.,
    164      $     lwup,LWup200)
    165 c
     142!
     143       CALL plevel(klon,klev,.true.,pplay,50000., &
     144                    zphi/RG,geo500)
     145
     146!IM on interpole a chaque pas de temps le SWup(clr) et SWdn(clr) a 200 hPa
     147!
     148      CALL plevel(klon,klevp1,.true.,paprs,20000., &
     149           swdn0,SWdn200clr)
     150      CALL plevel(klon,klevp1,.false.,paprs,20000., &
     151           swdn,SWdn200)
     152      CALL plevel(klon,klevp1,.false.,paprs,20000., &
     153           swup0,SWup200clr)
     154      CALL plevel(klon,klevp1,.false.,paprs,20000., &
     155           swup,SWup200)
     156!
     157      CALL plevel(klon,klevp1,.false.,paprs,20000., &
     158           lwdn0,LWdn200clr)
     159      CALL plevel(klon,klevp1,.false.,paprs,20000., &
     160           lwdn,LWdn200)
     161      CALL plevel(klon,klevp1,.false.,paprs,20000., &
     162           lwup0,LWup200clr)
     163      CALL plevel(klon,klevp1,.false.,paprs,20000., &
     164           lwup,LWup200)
     165!
    166166      twriteSTD(:,:,1)=tsumSTD(:,:,1)
    167167      qwriteSTD(:,:,1)=qsumSTD(:,:,1)
     
    195195      vwriteSTD(:,:,4)=vlevSTD(:,:)
    196196      wwriteSTD(:,:,4)=wlevSTD(:,:)
    197 c
    198 cIM initialisation 5eme fichier de sortie
     197!
     198!IM initialisation 5eme fichier de sortie
    199199      twriteSTD(:,:,5)=tlevSTD(:,:)
    200200      qwriteSTD(:,:,5)=qlevSTD(:,:)
     
    204204      vwriteSTD(:,:,5)=vlevSTD(:,:)
    205205      wwriteSTD(:,:,5)=wlevSTD(:,:)
    206 c
    207 cIM initialisation 6eme fichier de sortie
     206!
     207!IM initialisation 6eme fichier de sortie
    208208      twriteSTD(:,:,6)=tlevSTD(:,:)
    209209      qwriteSTD(:,:,6)=qlevSTD(:,:)
     
    213213      vwriteSTD(:,:,6)=vlevSTD(:,:)
    214214      wwriteSTD(:,:,6)=wlevSTD(:,:)
    215 cIM for NMC files
     215!IM for NMC files
    216216      DO n=1, nlevSTD3
    217217       DO k=1, nlevSTD
     
    227227       ENDDO
    228228      ENDDO
    229 c
     229!
    230230      DO n=1, nlevSTD8
    231231       DO k=1, nlevSTD
  • LMDZ5/trunk/libf/phylmd/calcul_divers.h

    r1454 r1862  
    1 c
    2 c $Header$
    3 c
     1!
     2! $Header$
     3!
    44
    5 c     Initialisations diverses au "debut" du mois
     5!     Initialisations diverses au "debut" du mois
    66      IF(debut) THEN
    77         nday_rain(:)=0.
    88
    9 c        surface terre
     9!        surface terre
    1010         paire_ter(:)=0.
    1111         DO i=1, klon
     
    1616      ENDIF
    1717
    18 cIM   Calcul une fois par jour : total_rain, nday_rain
     18!IM   Calcul une fois par jour : total_rain, nday_rain
    1919      IF(MOD(itap,INT(un_jour/dtime)).EQ.0) THEN
    2020         DO i = 1, klon
  • LMDZ5/trunk/libf/phylmd/declare_STDlev.h

    r1828 r1862  
    1 cIM for NMC files
     1!IM for NMC files
    22!      real twriteSTD(klon,nlevSTD,nfiles)
    33!      real qwriteSTD(klon,nlevSTD,nfiles)
     
    2626
    2727      real, save :: rlevSTD(nlevSTD)
    28       DATA rlevSTD/100000., 92500., 85000., 70000.,
    29      .60000., 50000., 40000., 30000., 25000., 20000.,
    30      .15000., 10000., 7000., 5000., 3000., 2000., 1000./
    31 c$OMP THREADPRIVATE(rlevstd)
     28      DATA rlevSTD/100000., 92500., 85000., 70000., &
     29      60000., 50000., 40000., 30000., 25000., 20000., &
     30      15000., 10000., 7000., 5000., 3000., 2000., 1000./
     31!$OMP THREADPRIVATE(rlevstd)
    3232
    3333      CHARACTER*4, SAVE :: clevSTD(nlevSTD)
    34       DATA clevSTD/'1000','925 ','850 ','700 ','600 ',
    35      .'500 ','400 ','300 ','250 ','200 ','150 ','100 ',
    36      .'70  ','50  ','30  ','20  ','10  '/
    37 c$OMP THREADPRIVATE(clevSTD)
     34      DATA clevSTD/'1000','925 ','850 ','700 ','600 ', &
     35      '500 ','400 ','300 ','250 ','200 ','150 ','100 ', &
     36      '70  ','50  ','30  ','20  ','10  '/
     37!$OMP THREADPRIVATE(clevSTD)
    3838
    3939      real, save :: rlevSTD3(nlevSTD3)
    4040      DATA rlevSTD3/85000., 50000., 25000./
    41 c$OMP THREADPRIVATE(rlevSTD3)
     41!$OMP THREADPRIVATE(rlevSTD3)
    4242
    4343      real, save :: rlevSTD8(nlevSTD8)
    44       DATA rlevSTD8/100000., 85000., 70000., 50000., 25000., 10000.,
    45      $     5000., 1000./
    46 c$OMP THREADPRIVATE(rlevSTD8)
    47 c
     44      DATA rlevSTD8/100000., 85000., 70000., 50000., 25000., 10000., &
     45           5000., 1000./
     46!$OMP THREADPRIVATE(rlevSTD8)
     47!
    4848      REAL geo500(klon)
    4949
    50 c nout : niveau de output des variables a une pression donnee
     50! nout : niveau de output des variables a une pression donnee
    5151      logical oknondef(klon,nlevSTD,nout)
    52 c
    53 c les produits uvSTD, vqSTD, .., T2STD sont calcules
    54 c a partir des valeurs instantannees toutes les 6 h
    55 c qui sont moyennees sur le mois
     52!
     53! les produits uvSTD, vqSTD, .., T2STD sont calcules
     54! a partir des valeurs instantannees toutes les 6 h
     55! qui sont moyennees sur le mois
    5656
    5757      REAL zx_tmp_fiNC(klon,nlevSTD)
     
    5959      REAL missing_val
    6060      REAL, SAVE :: freq_moyNMC(nout)
    61 c$OMP THREADPRIVATE(freq_moyNMC)
     61!$OMP THREADPRIVATE(freq_moyNMC)
  • LMDZ5/trunk/libf/phylmd/ini_histday_seri.h

    r1403 r1862  
    1 c
    2 c $Id$
    3 c
    4 cym Ne fonctionnera pas en mode parallele
     1!
     2! $Id$
     3!
     4!ym Ne fonctionnera pas en mode parallele
    55      IF (is_sequential) THEN
    66     
    77      IF (type_run.EQ."AMIP") THEN
    8 c
     8!
    99       zstophy = dtime
    1010       zout = ecrit_day
    11 c
     11!
    1212         idayref = day_ref
    1313         CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian)
    14 c
     14!
    1515         CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlon,zx_lon)
    1616         DO i = 1, iim
     
    2222         ENDDO
    2323         CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlat,zx_lat)
    24 c
     24!
    2525         imin_debut=1
    2626         nbpti=1
    2727         jmin_debut=1
    2828         nbptj=1
    29 c
    30          CALL histbeg("histday_seri.nc",
    31      .                 iim,zx_lon(:,1), jjmp1,zx_lat(1,:),
    32      .                 imin_debut,nbpti,jmin_debut,nbptj,
    33      .                 itau_phy, zjulian, dtime,
    34      .                 nhori, nid_day_seri)
    35 c
    36          CALL histvert(nid_day_seri, "presnivs",
    37      .                "Vertical levels","mb",
    38      .                 klev, presnivs/100., nvert)
    39 c
    40          CALL histdef(nid_day_seri, "bilTOA",
    41      .                "Net radiation at model top", "W/m2",
    42      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    43      .                "ave(X)", zstophy,zout)
    44 c
    45          CALL histdef(nid_day_seri, "bils",
    46      .                "Net downward energy flux at surface","W/m2",
    47      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    48      .                "ave(X)", zstophy,zout)
    49 c
    50          CALL histdef(nid_day_seri, "ecin",
    51      .                "Total kinetic energy (per unit area)","J/m2",
    52      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    53      .                "ave(X)", zstophy,zout)
    54 c
    55 cIM 151004 BEG
     29!
     30         CALL histbeg("histday_seri.nc",  &
     31                       iim,zx_lon(:,1), jjmp1,zx_lat(1,:), &
     32                       imin_debut,nbpti,jmin_debut,nbptj, &
     33                       itau_phy, zjulian, dtime, &
     34                       nhori, nid_day_seri)
     35!
     36         CALL histvert(nid_day_seri, "presnivs",  &
     37                      "Vertical levels","mb", &
     38                       klev, presnivs/100., nvert)
     39!
     40         CALL histdef(nid_day_seri, "bilTOA",  &
     41                      "Net radiation at model top", "W/m2", &
     42                      iim,jjmp1,nhori, 1,1,1, -99, 32,  &
     43                      "ave(X)", zstophy,zout)
     44!
     45         CALL histdef(nid_day_seri, "bils",  &
     46                      "Net downward energy flux at surface","W/m2", &
     47                      iim,jjmp1,nhori, 1,1,1, -99, 32,  &
     48                      "ave(X)", zstophy,zout)
     49!
     50         CALL histdef(nid_day_seri, "ecin",  &
     51                      "Total kinetic energy (per unit area)","J/m2", &
     52                      iim,jjmp1,nhori, 1,1,1, -99, 32, &
     53                      "ave(X)", zstophy,zout)
     54!
     55!IM 151004 BEG
    5656         IF(1.EQ.0) THEN
    57 c
    58          CALL histdef(nid_day_seri, "momang",
    59      .               "Total relative angular momentum (per unit area)",
    60      .               "kg/s",
    61      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    62      .                "ave(X)", zstophy,zout)
    63 c
    64          CALL histdef(nid_day_seri, "frictor",
    65      .               "Friction torque (per unit area)", "N/m",
    66      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    67      .                "ave(X)", zstophy,zout)
    68 c
    69          CALL histdef(nid_day_seri, "mountor",
    70      .               "Mountain torque (per unit area)", "N/m",
    71      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    72      .                "ave(X)", zstophy,zout)
    73 c
     57!
     58         CALL histdef(nid_day_seri, "momang",  &
     59                     "Total relative angular momentum (per unit area)", &
     60                     "kg/s", &
     61                      iim,jjmp1,nhori, 1,1,1, -99, 32, &
     62                      "ave(X)", zstophy,zout)
     63!
     64         CALL histdef(nid_day_seri, "frictor",  &
     65                     "Friction torque (per unit area)", "N/m", &
     66                      iim,jjmp1,nhori, 1,1,1, -99, 32, &
     67                      "ave(X)", zstophy,zout)
     68!
     69         CALL histdef(nid_day_seri, "mountor",  &
     70                     "Mountain torque (per unit area)", "N/m", &
     71                      iim,jjmp1,nhori, 1,1,1, -99, 32, &
     72                      "ave(X)", zstophy,zout)
     73!
    7474         ENDIF !(1.EQ.0) THEN
    75 c
    76          CALL histdef(nid_day_seri, "momang",
    77      .               "Axial angular momentum (per unit area)",
    78      .               "kg/s",
    79      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    80      .                "ave(X)", zstophy,zout)
    81 c
    82          CALL histdef(nid_day_seri, "torsfc",
    83      .        "Total surface torque (including mountain torque)", "N/m",
    84      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    85      .                "ave(X)", zstophy,zout)
    86 c
    87 cIM 151004 END       
    88 c
    89          CALL histdef(nid_day_seri, "tamv",
    90      .                "Temperature (mass-weighted vert. ave)", "K",
    91      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    92      .                "ave(X)", zstophy,zout)
    93 c
    94          CALL histdef(nid_day_seri, "psol",
    95      .                "Surface pressure", "Pa",
    96      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    97      .                "ave(X)", zstophy,zout)
    98 c
    99          CALL histdef(nid_day_seri, "evap",
    100      .                "Evaporation and sublimation (per unit area)",
    101      .                "kg/(m2*s)",
    102      .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    103      .                "ave(X)", zstophy,zout)
    104 c
    105 c          call histdef(nid_day_seri,
    106 c    .         "SnowFrac",
    107 c    .         "Snow-covered area ", "%", 
    108 c    .         iim,jjmp1,nhori, 1,1,1, -99, 32,
    109 c    .         "ave(X)", zstophy,zout)
    110 c
    111 c        CALL histdef(nid_day_seri, "snow_depth",
    112 cIM 080904  .                "Snow Depth (water equivalent)", "m",
    113 cIM 191104  .                "Snow Depth (water equivalent)", "kg/m2",
    114 c    .                "Snow Mass", "kg/m2",
    115 c    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
    116 c    .               "ave(X)", zstophy,zout)
    117 c
    118            call histdef(nid_day_seri,
    119      .         "tsol_"//clnsurf(is_oce),
    120      .         "SST over open (ice-free) ocean ", "K", 
    121      .         iim,jjmp1,nhori, 1,1,1, -99, 32,
    122      .         "ave(X)", zstophy,zout)
    123 c
    124 c=================================================================
    125 c
     75!
     76         CALL histdef(nid_day_seri, "momang",  &
     77                     "Axial angular momentum (per unit area)", &
     78                     "kg/s", &
     79                      iim,jjmp1,nhori, 1,1,1, -99, 32, &
     80                      "ave(X)", zstophy,zout)
     81!
     82         CALL histdef(nid_day_seri, "torsfc",  &
     83              "Total surface torque (including mountain torque)", "N/m", &
     84                      iim,jjmp1,nhori, 1,1,1, -99, 32, &
     85                      "ave(X)", zstophy,zout)
     86!
     87!IM 151004 END       
     88!
     89         CALL histdef(nid_day_seri, "tamv",  &
     90                      "Temperature (mass-weighted vert. ave)", "K", &
     91                      iim,jjmp1,nhori, 1,1,1, -99, 32, &
     92                      "ave(X)", zstophy,zout)
     93!
     94         CALL histdef(nid_day_seri, "psol",  &
     95                      "Surface pressure", "Pa", &
     96                      iim,jjmp1,nhori, 1,1,1, -99, 32,  &
     97                      "ave(X)", zstophy,zout)
     98!
     99         CALL histdef(nid_day_seri, "evap",  &
     100                      "Evaporation and sublimation (per unit area)",  &
     101                      "kg/(m2*s)", &
     102                      iim,jjmp1,nhori, 1,1,1, -99, 32,  &
     103                      "ave(X)", zstophy,zout)
     104!
     105!          call histdef(nid_day_seri,
     106!    .         "SnowFrac",
     107!    .         "Snow-covered area ", "%", 
     108!    .         iim,jjmp1,nhori, 1,1,1, -99, 32,
     109!    .         "ave(X)", zstophy,zout)
     110!
     111!        CALL histdef(nid_day_seri, "snow_depth",
     112!IM 080904  .                "Snow Depth (water equivalent)", "m",
     113!IM 191104  .                "Snow Depth (water equivalent)", "kg/m2",
     114!    .                "Snow Mass", "kg/m2",
     115!    .                iim,jjmp1,nhori, 1,1,1, -99, 32,
     116!    .               "ave(X)", zstophy,zout)
     117!
     118           call histdef(nid_day_seri,  &
     119               "tsol_"//clnsurf(is_oce),  &
     120               "SST over open (ice-free) ocean ", "K",   &
     121               iim,jjmp1,nhori, 1,1,1, -99, 32, &
     122               "ave(X)", zstophy,zout)
     123!
     124!=================================================================
     125!
    126126         CALL histend(nid_day_seri)
    127 c
    128 c=================================================================
     127!
     128!=================================================================
    129129      ENDIF ! fin de test sur type_run.EQ.AMIP
    130130     
  • LMDZ5/trunk/libf/phylmd/ini_paramLMDZ_phy.h

    r1538 r1862  
    1 cIM    Implemente en modes sequentiel et parallele
     1!IM    Implemente en modes sequentiel et parallele
    22
    33       CALL gather(rlat,rlat_glo)
     
    66       CALL bcast(rlon_glo)
    77
    8 c$OMP MASTER
     8!$OMP MASTER
    99      if (is_mpi_root) then
    10 c
     10!
    1111       zstophy = dtime
    1212       zout = mth_len*un_jour
    13 c
     13!
    1414       idayref = day_ref
    1515       CALL ymds2ju(annee_ref, 1, idayref, 0.0, zjulian)
    16 c
     16!
    1717       CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlon_glo,zx_lon)
    1818       if (iim.gt.1) then
     
    2323       endif
    2424       CALL gr_fi_ecrit(1,klon,iim,jjmp1,rlat_glo,zx_lat)
    25 c
    26        CALL histbeg("paramLMDZ_phy.nc",
    27      .                 np,zx_lon(np:np,1), np,zx_lat(1,np:np),
    28      .                 1,1,1,1,
    29      .                 itau_phy, zjulian, dtime,
    30      .                 nhori, nid_ctesGCM)
    31 c
    32        CALL histdef(nid_ctesGCM, "R_ecc",
    33      .                "Excentricite","-",
    34      .                1,1,nhori, 1,1,1, -99, 32,
    35      .                "ave", zstophy,zout)
    36 c
    37        CALL histdef(nid_ctesGCM, "R_peri",
    38      .                "Equinoxe","-",
    39      .                1,1,nhori, 1,1,1, -99, 32,
    40      .                "ave", zstophy,zout)
    41 c
    42        CALL histdef(nid_ctesGCM, "R_incl",
    43      .                "Inclinaison","deg",
    44      .                1,1,nhori, 1,1,1, -99, 32,
    45      .                "ave", zstophy,zout)
    46 c
    47        CALL histdef(nid_ctesGCM, "solaire",
    48      .                "Constante solaire","W/m2",
    49      .                1,1,nhori, 1,1,1, -99, 32,
    50      .                "ave", zstophy,zout)
    51 c
    52        CALL histdef(nid_ctesGCM, "co2_ppm",
    53      .                "Concentration du CO2", "ppm",
    54      .                1,1,nhori, 1,1,1, -99, 32,
    55      .                "ave(X)", zstophy,zout)
    56 c
    57        CALL histdef(nid_ctesGCM, "CH4_ppb",
    58      .                "Concentration du CH4", "ppb",
    59      .                1,1,nhori, 1,1,1, -99, 32,
    60      .                "ave(X)", zstophy,zout)
    61 c
    62        CALL histdef(nid_ctesGCM, "N2O_ppb",
    63      .                "Concentration du N2O", "ppb",
    64      .                1,1,nhori, 1,1,1, -99, 32,
    65      .                "ave(X)", zstophy,zout)
    66 c
    67        CALL histdef(nid_ctesGCM, "CFC11_ppt",
    68      .                "Concentration du CFC11", "ppt",
    69      .                1,1,nhori, 1,1,1, -99, 32,
    70      .                "ave(X)", zstophy,zout)
    71 c
    72        CALL histdef(nid_ctesGCM, "CFC12_ppt",
    73      .                "Concentration du CFC12", "ppt",
    74      .                1,1,nhori, 1,1,1, -99, 32,
    75      .                "ave(X)", zstophy,zout)
    76 c
    77        CALL histdef(nid_ctesGCM, "bils",
    78      .                "Surface total heat flux", "W m-2",
    79      .                1,1,nhori, 1,1,1, -99, 32,
    80      .                "ave", zstophy,zout)
    81 c
    82        CALL histdef(nid_ctesGCM, "evap",
    83      .                "Evaporation", "kg m-2 s-1",
    84      .                1,1,nhori, 1,1,1, -99, 32,
    85      .                "ave", zstophy,zout)
    86 c
    87        CALL histdef(nid_ctesGCM, "evap_land",
    88      .                "Land evaporation", "kg m-2 s-1",
    89      .                1,1,nhori, 1,1,1, -99, 32,
    90      .                "ave", zstophy,zout)
    91 c
    92        CALL histdef(nid_ctesGCM, "flat",
    93      .                "Latent heat flux", "W m-2",
    94      .                1,1,nhori, 1,1,1, -99, 32,
    95      .                "ave", zstophy,zout)
    96 c
    97        CALL histdef(nid_ctesGCM, "nettop0",
    98      .                "Clear sky net downward radiatif flux at TOA",
    99      .                "W m-2",
    100      .                1,1,nhori, 1,1,1, -99, 32,
    101      .                "ave", zstophy,zout)
    102 c
    103        CALL histdef(nid_ctesGCM, "nettop",
    104      .                "Net downward radiatif flux at TOA", "W m-2",
    105      .                1,1,nhori, 1,1,1, -99, 32,
    106      .                "ave", zstophy,zout)
    107 c
    108        CALL histdef(nid_ctesGCM, "precip",
    109      .                "Total precipitation (liq+sol)", "kg m-2 s-1",
    110      .                1,1,nhori, 1,1,1, -99, 32,
    111      .                "ave", zstophy,zout)
    112 c
    113        CALL histdef(nid_ctesGCM, "tsol",
    114      .                "Surface temperature", "K",
    115      .                1,1,nhori, 1,1,1, -99, 32,
    116      .                "ave", zstophy,zout)
    117 c
    118        CALL histdef(nid_ctesGCM, "t2m",
    119      .                "Temperature at 2m", "K",
    120      .                1,1,nhori, 1,1,1, -99, 32,
    121      .                "ave", zstophy,zout)
    122 c
    123        CALL histdef(nid_ctesGCM, "prw",
    124      .                "Precipitable water", "kg m-2",
    125      .                1,1,nhori, 1,1,1, -99, 32,
    126      .                "ave", zstophy,zout)
    127 c=================================================================
    128 c
     25!
     26       CALL histbeg("paramLMDZ_phy.nc",  &
     27                       np,zx_lon(np:np,1), np,zx_lat(1,np:np), &
     28                       1,1,1,1, &
     29                       itau_phy, zjulian, dtime, &
     30                       nhori, nid_ctesGCM)
     31!
     32       CALL histdef(nid_ctesGCM, "R_ecc",  &
     33                      "Excentricite","-", &
     34                      1,1,nhori, 1,1,1, -99, 32, &
     35                      "ave", zstophy,zout)
     36!
     37       CALL histdef(nid_ctesGCM, "R_peri",  &
     38                      "Equinoxe","-", &
     39                      1,1,nhori, 1,1,1, -99, 32, &
     40                      "ave", zstophy,zout)
     41!
     42       CALL histdef(nid_ctesGCM, "R_incl",  &
     43                      "Inclinaison","deg", &
     44                      1,1,nhori, 1,1,1, -99, 32, &
     45                      "ave", zstophy,zout)
     46!
     47       CALL histdef(nid_ctesGCM, "solaire",  &
     48                      "Constante solaire","W/m2", &
     49                      1,1,nhori, 1,1,1, -99, 32, &
     50                      "ave", zstophy,zout)
     51!
     52       CALL histdef(nid_ctesGCM, "co2_ppm",  &
     53                      "Concentration du CO2", "ppm", &
     54                      1,1,nhori, 1,1,1, -99, 32,  &
     55                      "ave(X)", zstophy,zout)
     56!
     57       CALL histdef(nid_ctesGCM, "CH4_ppb",  &
     58                      "Concentration du CH4", "ppb", &
     59                      1,1,nhori, 1,1,1, -99, 32,  &
     60                      "ave(X)", zstophy,zout)
     61!
     62       CALL histdef(nid_ctesGCM, "N2O_ppb", &
     63                      "Concentration du N2O", "ppb", &
     64                      1,1,nhori, 1,1,1, -99, 32, &
     65                      "ave(X)", zstophy,zout)
     66!
     67       CALL histdef(nid_ctesGCM, "CFC11_ppt", &
     68                      "Concentration du CFC11", "ppt", &
     69                      1,1,nhori, 1,1,1, -99, 32, &
     70                      "ave(X)", zstophy,zout)
     71!
     72       CALL histdef(nid_ctesGCM, "CFC12_ppt", &
     73                      "Concentration du CFC12", "ppt", &
     74                      1,1,nhori, 1,1,1, -99, 32, &
     75                      "ave(X)", zstophy,zout)
     76!
     77       CALL histdef(nid_ctesGCM, "bils", &
     78                      "Surface total heat flux", "W m-2", &
     79                      1,1,nhori, 1,1,1, -99, 32, &
     80                      "ave", zstophy,zout)
     81!
     82       CALL histdef(nid_ctesGCM, "evap", &
     83                      "Evaporation", "kg m-2 s-1", &
     84                      1,1,nhori, 1,1,1, -99, 32, &
     85                      "ave", zstophy,zout)
     86!
     87       CALL histdef(nid_ctesGCM, "evap_land", &
     88                      "Land evaporation", "kg m-2 s-1", &
     89                      1,1,nhori, 1,1,1, -99, 32, &
     90                      "ave", zstophy,zout)
     91!
     92       CALL histdef(nid_ctesGCM, "flat", &
     93                      "Latent heat flux", "W m-2", &
     94                      1,1,nhori, 1,1,1, -99, 32, &
     95                      "ave", zstophy,zout)
     96!
     97       CALL histdef(nid_ctesGCM, "nettop0", &
     98                      "Clear sky net downward radiatif flux at TOA",  &
     99                      "W m-2", &
     100                      1,1,nhori, 1,1,1, -99, 32, &
     101                      "ave", zstophy,zout)
     102!
     103       CALL histdef(nid_ctesGCM, "nettop", &
     104                      "Net downward radiatif flux at TOA", "W m-2", &
     105                      1,1,nhori, 1,1,1, -99, 32, &
     106                      "ave", zstophy,zout)
     107!
     108       CALL histdef(nid_ctesGCM, "precip", &
     109                      "Total precipitation (liq+sol)", "kg m-2 s-1", &
     110                      1,1,nhori, 1,1,1, -99, 32, &
     111                      "ave", zstophy,zout)
     112!
     113       CALL histdef(nid_ctesGCM, "tsol", &
     114                      "Surface temperature", "K", &
     115                      1,1,nhori, 1,1,1, -99, 32, &
     116                      "ave", zstophy,zout)
     117!
     118       CALL histdef(nid_ctesGCM, "t2m", &
     119                      "Temperature at 2m", "K", &
     120                      1,1,nhori, 1,1,1, -99, 32, &
     121                      "ave", zstophy,zout)
     122!
     123       CALL histdef(nid_ctesGCM, "prw", &
     124                      "Precipitable water", "kg m-2", &
     125                      1,1,nhori, 1,1,1, -99, 32, &
     126                      "ave", zstophy,zout)
     127!=================================================================
     128!
    129129       CALL histend(nid_ctesGCM)
    130130       
    131131       endif !(is_mpi_root)
    132 c$OMP END MASTER
    133 c=================================================================
     132!$OMP END MASTER
     133!=================================================================
  • LMDZ5/trunk/libf/phylmd/physiq.F90

    r1861 r1862  
    11! $Id$
    2 c#define IO_DEBUG
    3 
    4       SUBROUTINE physiq (nlon,nlev,
    5      .            debut,lafin,jD_cur, jH_cur,pdtphys,
    6      .            paprs,pplay,pphi,pphis,presnivs,clesphy0,
    7      .            u,v,t,qx,
    8      .            flxmass_w,
    9      .            d_u, d_v, d_t, d_qx, d_ps
    10      .            , dudyn
    11      .            , PVteta)
    12 
    13       USE ioipsl, only: histbeg, histvert, histdef, histend, histsync,
    14      $     histwrite, ju2ymds, ymds2ju, ioget_year_len
     2!#define IO_DEBUG
     3
     4      SUBROUTINE physiq (nlon,nlev, &
     5                  debut,lafin,jD_cur, jH_cur,pdtphys, &
     6                  paprs,pplay,pphi,pphis,presnivs,clesphy0, &
     7                  u,v,t,qx, &
     8                  flxmass_w, &
     9                  d_u, d_v, d_t, d_qx, d_ps &
     10                  , dudyn &
     11                  , PVteta)
     12
     13      USE ioipsl, only: histbeg, histvert, histdef, histend, histsync, &
     14           histwrite, ju2ymds, ymds2ju, ioget_year_len
    1515      USE comgeomphy
    1616      USE phys_cal_mod
     
    3737      use regr_pr_av_m, only: regr_pr_av
    3838      use netcdf95, only: nf95_close
    39 cIM for NMC files
    40 c     use netcdf, only: nf90_fill_real
     39!IM for NMC files
     40!     use netcdf, only: nf90_fill_real
    4141      use netcdf
    4242      use mod_phys_lmdz_mpi_data, only: is_mpi_root
     
    6969!!   =====================
    7070#define histNMC
    71 c#define histISCCP
     71!#define histISCCP
    7272!!======================================================================
    7373!!    modif   ( P. Le Van ,  12/10/98 )
     
    114114#include "iniprint.h"
    115115#include "thermcell.h"
    116 c======================================================================
     116!======================================================================
    117117      LOGICAL ok_cvl  ! pour activer le nouveau driver pour convection KE
    118118      PARAMETER (ok_cvl=.TRUE.)
     
    121121      integer iflag_radia     ! active ou non le rayonnement (MPL)
    122122      save iflag_radia
    123 c$OMP THREADPRIVATE(iflag_radia)
    124 c======================================================================
     123!$OMP THREADPRIVATE(iflag_radia)
     124!======================================================================
    125125      LOGICAL check ! Verifier la conservation du modele en eau
    126126      PARAMETER (check=.FALSE.)
    127127      LOGICAL ok_stratus ! Ajouter artificiellement les stratus
    128128      PARAMETER (ok_stratus=.FALSE.)
    129 c======================================================================
     129!======================================================================
    130130      REAL amn, amx
    131131      INTEGER igout
    132 c======================================================================
    133 c Clef controlant l'activation du cycle diurne:
    134 ccc      LOGICAL cycle_diurne
    135 ccc      PARAMETER (cycle_diurne=.FALSE.)
    136 c======================================================================
    137 c Modele thermique du sol, a activer pour le cycle diurne:
    138 ccc      LOGICAL soil_model
    139 ccc      PARAMETER (soil_model=.FALSE.)
    140 c======================================================================
    141 c Dans les versions precedentes, l'eau liquide nuageuse utilisee dans
    142 c le calcul du rayonnement est celle apres la precipitation des nuages.
    143 c Si cette cle new_oliq est activee, ce sera une valeur moyenne entre
    144 c la condensation et la precipitation. Cette cle augmente les impacts
    145 c radiatifs des nuages.
    146 ccc      LOGICAL new_oliq
    147 ccc      PARAMETER (new_oliq=.FALSE.)
    148 c======================================================================
    149 c Clefs controlant deux parametrisations de l'orographie:
    150 cc      LOGICAL ok_orodr
    151 ccc      PARAMETER (ok_orodr=.FALSE.)
    152 ccc      LOGICAL ok_orolf
    153 ccc      PARAMETER (ok_orolf=.FALSE.)
    154 c======================================================================
     132!======================================================================
     133! Clef controlant l'activation du cycle diurne:
     134!cc      LOGICAL cycle_diurne
     135!cc      PARAMETER (cycle_diurne=.FALSE.)
     136!======================================================================
     137! Modele thermique du sol, a activer pour le cycle diurne:
     138!cc      LOGICAL soil_model
     139!cc      PARAMETER (soil_model=.FALSE.)
     140!======================================================================
     141! Dans les versions precedentes, l'eau liquide nuageuse utilisee dans
     142! le calcul du rayonnement est celle apres la precipitation des nuages.
     143! Si cette cle new_oliq est activee, ce sera une valeur moyenne entre
     144! la condensation et la precipitation. Cette cle augmente les impacts
     145! radiatifs des nuages.
     146!cc      LOGICAL new_oliq
     147!cc      PARAMETER (new_oliq=.FALSE.)
     148!======================================================================
     149! Clefs controlant deux parametrisations de l'orographie:
     150!c      LOGICAL ok_orodr
     151!cc      PARAMETER (ok_orodr=.FALSE.)
     152!cc      LOGICAL ok_orolf
     153!cc      PARAMETER (ok_orolf=.FALSE.)
     154!======================================================================
    155155      LOGICAL ok_journe ! sortir le fichier journalier
    156156      save ok_journe
    157 c$OMP THREADPRIVATE(ok_journe)
    158 c
     157!$OMP THREADPRIVATE(ok_journe)
     158!
    159159      LOGICAL ok_mensuel ! sortir le fichier mensuel
    160160      save ok_mensuel
    161 c$OMP THREADPRIVATE(ok_mensuel)
    162 c
     161!$OMP THREADPRIVATE(ok_mensuel)
     162!
    163163      LOGICAL ok_instan ! sortir le fichier instantane
    164164      save ok_instan
    165 c$OMP THREADPRIVATE(ok_instan)
    166 c
     165!$OMP THREADPRIVATE(ok_instan)
     166!
    167167      LOGICAL ok_LES ! sortir le fichier LES
    168168      save ok_LES                           
    169 c$OMP THREADPRIVATE(ok_LES)                 
    170 c
     169!$OMP THREADPRIVATE(ok_LES)                 
     170!
    171171      LOGICAL callstats ! sortir le fichier stats
    172172      save callstats                           
    173 c$OMP THREADPRIVATE(callstats)                 
    174 c
     173!$OMP THREADPRIVATE(callstats)                 
     174!
    175175      LOGICAL ok_region ! sortir le fichier regional
    176176      PARAMETER (ok_region=.FALSE.)
    177 c======================================================================
     177!======================================================================
    178178      real seuil_inversion
    179179      save seuil_inversion
    180 c$OMP THREADPRIVATE(seuil_inversion)
     180!$OMP THREADPRIVATE(seuil_inversion)
    181181      integer iflag_ratqs
    182182      save iflag_ratqs
    183 c$OMP THREADPRIVATE(iflag_ratqs)
     183!$OMP THREADPRIVATE(iflag_ratqs)
    184184      real facteur
    185185
     
    194194      real zqsatth(klon,klev)
    195195
    196 c======================================================================
    197 c
     196!======================================================================
     197!
    198198      INTEGER ivap          ! indice de traceurs pour vapeur d'eau
    199199      PARAMETER (ivap=1)
     
    201201      PARAMETER (iliq=2)
    202202
    203 c
    204 c
    205 c Variables argument:
    206 c
     203!
     204!
     205! Variables argument:
     206!
    207207      INTEGER nlon
    208208      INTEGER nlev
     
    222222      REAL v(klon,klev)
    223223      REAL t(klon,klev),thetal(klon,klev)
    224 c thetal: ligne suivante a decommenter si vous avez les fichiers     MPL 20130625
    225 c fth_fonctions.F90 et parkind1.F90
    226 c sinon thetal=theta
    227 c     REAL fth_thetae,fth_thetav,fth_thetal
     224! thetal: ligne suivante a decommenter si vous avez les fichiers     MPL 20130625
     225! fth_fonctions.F90 et parkind1.F90
     226! sinon thetal=theta
     227!     REAL fth_thetae,fth_thetav,fth_thetal
    228228      REAL qx(klon,klev,nqtot)
    229229      REAL flxmass_w(klon,klev)
     
    245245!IM definition dynamique o_trac dans phys_output_open
    246246!      type(ctrl_out) :: o_trac(nqtot)
    247 c
    248 cIM Amip2 PV a theta constante
    249 c
     247!
     248!IM Amip2 PV a theta constante
     249!
    250250      INTEGER nbteta
    251251      PARAMETER(nbteta=3)
     
    253253      DATA ctetaSTD/'350','380','405'/
    254254      SAVE ctetaSTD
    255 c$OMP THREADPRIVATE(ctetaSTD)
     255!$OMP THREADPRIVATE(ctetaSTD)
    256256      REAL rtetaSTD(nbteta)
    257257      DATA rtetaSTD/350., 380., 405./
    258258      SAVE rtetaSTD
    259 c$OMP THREADPRIVATE(rtetaSTD)     
    260 c
     259!$OMP THREADPRIVATE(rtetaSTD)     
     260!
    261261      REAL PVteta(klon,nbteta)
    262262      REAL zx_tmp_3dte(iim,jjmp1,nbteta)
    263 c
    264 cMI Amip2 PV a theta constante
    265 
    266 cym      INTEGER klevp1, klevm1
    267 cym      PARAMETER(klevp1=klev+1,klevm1=klev-1)
    268 cym#include "raddim.h"
    269 c
    270 c
    271 cIM Amip2
    272 c variables a une pression donnee
    273 c
     263!
     264!MI Amip2 PV a theta constante
     265
     266!ym      INTEGER klevp1, klevm1
     267!ym      PARAMETER(klevp1=klev+1,klevm1=klev-1)
     268!ym#include "raddim.h"
     269!
     270!
     271!IM Amip2
     272! variables a une pression donnee
     273!
    274274#include "declare_STDlev.h"
    275 c
     275!
    276276      CHARACTER*4 bb2
    277277      CHARACTER*2 bb3
    278 c
     278!
    279279#include "radopt.h"
    280 c
    281 c
     280!
     281!
    282282
    283283      REAL convliq(klon,klev)  ! eau liquide nuageuse convective
     
    290290
    291291      INTEGER linv, kp1
    292 c flwp, fiwp = Liquid Water Path & Ice Water Path (kg/m2)
    293 c flwc, fiwc = Liquid Water Content & Ice Water Content (kg/kg)
     292! flwp, fiwp = Liquid Water Path & Ice Water Path (kg/m2)
     293! flwc, fiwc = Liquid Water Content & Ice Water Content (kg/kg)
    294294      REAL flwp_c(klon), fiwp_c(klon)
    295295      REAL flwc_c(klon,klev), fiwc_c(klon,klev)
     
    298298
    299299
    300 cIM ISCCP simulator v3.4
    301 c dans clesphys.h top_height, overlap
    302 cv3.4
     300!IM ISCCP simulator v3.4
     301! dans clesphys.h top_height, overlap
     302!v3.4
    303303      INTEGER debug, debugcol
    304 cym      INTEGER npoints
    305 cym      PARAMETER(npoints=klon)
    306 c
     304!ym      INTEGER npoints
     305!ym      PARAMETER(npoints=klon)
     306!
    307307      INTEGER sunlit(klon) !sunlit=1 if day; sunlit=0 if night
    308308      INTEGER nregISCtot
    309309      PARAMETER(nregISCtot=1)
    310 c
    311 c imin_debut, nbpti, jmin_debut, nbptj : parametres pour sorties sur 1 region rectangulaire
    312 c y compris pour 1 point
    313 c imin_debut : indice minimum de i; nbpti : nombre de points en direction i (longitude)
    314 c jmin_debut : indice minimum de j; nbptj : nombre de points en direction j (latitude)
     310!
     311! imin_debut, nbpti, jmin_debut, nbptj : parametres pour sorties sur 1 region rectangulaire
     312! y compris pour 1 point
     313! imin_debut : indice minimum de i; nbpti : nombre de points en direction i (longitude)
     314! jmin_debut : indice minimum de j; nbptj : nombre de points en direction j (latitude)
    315315      INTEGER imin_debut, nbpti
    316316      INTEGER jmin_debut, nbptj
    317 cIM parametres ISCCP BEG
     317!IM parametres ISCCP BEG
    318318      INTEGER nbapp_isccp
    319319!     INTEGER nbapp_isccp,isccppas
     
    324324      DATA ifreq_isccp/3/
    325325      SAVE ifreq_isccp
    326 c$OMP THREADPRIVATE(ifreq_isccp)
     326!$OMP THREADPRIVATE(ifreq_isccp)
    327327      CHARACTER*5 typinout(napisccp)
    328328      DATA typinout/'i3od'/
    329329      SAVE typinout
    330 c$OMP THREADPRIVATE(typinout)
    331 cIM verif boxptop BEG
     330!$OMP THREADPRIVATE(typinout)
     331!IM verif boxptop BEG
    332332      CHARACTER*1 verticaxe(napisccp)
    333333      DATA verticaxe/'1'/
    334334      SAVE verticaxe
    335 c$OMP THREADPRIVATE(verticaxe)
    336 cIM verif boxptop END
     335!$OMP THREADPRIVATE(verticaxe)
     336!IM verif boxptop END
    337337      INTEGER nvlev(napisccp)
    338 c     INTEGER nvlev
     338!     INTEGER nvlev
    339339      REAL t1, aa
    340340      REAL seed_re(klon,napisccp)
    341 cym !!!! A voir plus tard
    342 cym      INTEGER iphy(iim,jjmp1)
    343 cIM parametres ISCCP END
    344 c
    345 c ncol = nb. de sous-colonnes pour chaque maille du GCM
    346 c ncolmx = No. max. de sous-colonnes pour chaque maille du GCM
    347 c      INTEGER ncol(napisccp), ncolmx, seed(klon,napisccp)
     341!ym !!!! A voir plus tard
     342!ym      INTEGER iphy(iim,jjmp1)
     343!IM parametres ISCCP END
     344!
     345! ncol = nb. de sous-colonnes pour chaque maille du GCM
     346! ncolmx = No. max. de sous-colonnes pour chaque maille du GCM
     347!      INTEGER ncol(napisccp), ncolmx, seed(klon,napisccp)
    348348      INTEGER,SAVE :: ncol(napisccp)
    349 c$OMP THREADPRIVATE(ncol)
     349!$OMP THREADPRIVATE(ncol)
    350350      INTEGER ncolmx, seed(klon,napisccp)
    351351      REAL nbsunlit(nregISCtot,klon,napisccp)  !nbsunlit : moyenne de sunlit
    352 c     PARAMETER(ncolmx=1500)
     352!     PARAMETER(ncolmx=1500)
    353353      PARAMETER(ncolmx=300)
    354 c
    355 cIM verif boxptop BEG
     354!
     355!IM verif boxptop BEG
    356356      REAL vertlev(ncolmx,napisccp)
    357 cIM verif boxptop END
    358 c
     357!IM verif boxptop END
     358!
    359359      REAL,SAVE :: tautab_omp(0:255),tautab(0:255)
    360360      INTEGER,SAVE :: invtau_omp(-20:45000),invtau(-20:45000)
    361 c$OMP THREADPRIVATE(tautab,invtau)
     361!$OMP THREADPRIVATE(tautab,invtau)
    362362      REAL emsfc_lw
    363363      PARAMETER(emsfc_lw=0.99)
    364 c     REAL    ran0                      ! type for random number fuction
    365 c
     364!     REAL    ran0                      ! type for random number fuction
     365!
    366366      REAL cldtot(klon,klev)
    367 c variables de haut en bas pour le simulateur ISCCP
     367! variables de haut en bas pour le simulateur ISCCP
    368368      REAL dtau_s(klon,klev) !tau nuages startiformes
    369369      REAL dtau_c(klon,klev) !tau nuages convectifs
    370370      REAL dem_s(klon,klev)  !emissivite nuages startiformes
    371371      REAL dem_c(klon,klev)  !emissivite nuages convectifs
    372 c
    373 c variables de haut en bas pour le simulateur ISCCP
     372!
     373! variables de haut en bas pour le simulateur ISCCP
    374374      REAL pfull(klon,klev)
    375375      REAL phalf(klon,klev+1)
     
    382382      REAL dem_sH2B(klon,klev)
    383383      REAL dem_cH2B(klon,klev)
    384 c
     384!
    385385      INTEGER kmax, lmax, lmax3
    386386      PARAMETER(kmax=8, lmax=8, lmax3=3)
     
    388388      PARAMETER(kmaxm1=kmax-1, lmaxm1=lmax-1)
    389389      INTEGER iimx7, jjmx7, jjmp1x7
    390       PARAMETER(iimx7=iim*kmaxm1, jjmx7=jjm*lmaxm1,
    391      .jjmp1x7=jjmp1*lmaxm1)
    392 c
    393 c output from ISCCP simulator
     390      PARAMETER(iimx7=iim*kmaxm1, jjmx7=jjm*lmaxm1,  &
     391      jjmp1x7=jjmp1*lmaxm1)
     392!
     393! output from ISCCP simulator
    394394      REAL fq_isccp(klon,kmaxm1,lmaxm1,napisccp)
    395395      REAL fq_is_true(klon,kmaxm1,lmaxm1,napisccp)
     
    401401      REAL zx_tmp_fi3d_bx(klon,ncolmx)
    402402      REAL zx_tmp_3d_bx(iim,jjmp1,ncolmx)
    403 c
     403!
    404404      REAL cld_fi3d(klon,lmax3)
    405405      REAL cld_3d(iim,jjmp1,lmax3)
    406 c
     406!
    407407      INTEGER iw, iwmax
    408408      REAL wmin, pas_w
    409 c     PARAMETER(wmin=-100.,pas_w=10.,iwmax=30)
    410 cIM 051005     PARAMETER(wmin=-200.,pas_w=10.,iwmax=40)
     409!     PARAMETER(wmin=-100.,pas_w=10.,iwmax=30)
     410!IM 051005     PARAMETER(wmin=-200.,pas_w=10.,iwmax=40)
    411411      PARAMETER(wmin=-100.,pas_w=10.,iwmax=20)
    412412      REAL o500(klon)
    413 c
    414 
    415 c sorties ISCCP
     413!
     414
     415! sorties ISCCP
    416416
    417417      integer nid_isccp
    418418      save nid_isccp       
    419 c$OMP THREADPRIVATE(nid_isccp)
     419!$OMP THREADPRIVATE(nid_isccp)
    420420
    421421      REAL zx_tau(kmaxm1), zx_pc(lmaxm1), zx_o500(iwmax)
     
    424424      DATA zx_pc/180., 310., 440., 560., 680., 800., 1000./
    425425      SAVE zx_pc
    426 c$OMP THREADPRIVATE(zx_tau,zx_pc)
    427 c cldtopres pression au sommet des nuages
     426!$OMP THREADPRIVATE(zx_tau,zx_pc)
     427! cldtopres pression au sommet des nuages
    428428      REAL cldtopres(lmaxm1), cldtopres3(lmax3)
    429429      DATA cldtopres/180., 310., 440., 560., 680., 800., 1000./
    430430      DATA cldtopres3/440., 680., 1000./
    431431      SAVE cldtopres,cldtopres3
    432 c$OMP THREADPRIVATE(cldtopres,cldtopres3)
    433 cIM 051005 BEG
     432!$OMP THREADPRIVATE(cldtopres,cldtopres3)
     433!IM 051005 BEG
    434434      INTEGER komega, nhoriRD
    435435
    436 c taulev: numero du niveau de tau dans les sorties ISCCP
     436! taulev: numero du niveau de tau dans les sorties ISCCP
    437437      CHARACTER *4 taulev(kmaxm1)
    438 c     DATA taulev/'tau1','tau2','tau3','tau4','tau5','tau6','tau7'/
     438!     DATA taulev/'tau1','tau2','tau3','tau4','tau5','tau6','tau7'/
    439439      DATA taulev/'tau0','tau1','tau2','tau3','tau4','tau5','tau6'/
    440440      CHARACTER *3 pclev(lmaxm1)
    441441      DATA pclev/'pc1','pc2','pc3','pc4','pc5','pc6','pc7'/
    442442      SAVE taulev,pclev
    443 c$OMP THREADPRIVATE(taulev,pclev)
    444 c
    445 c cnameisccp
     443!$OMP THREADPRIVATE(taulev,pclev)
     444!
     445! cnameisccp
    446446      CHARACTER *29 cnameisccp(lmaxm1,kmaxm1)
    447 cIM bad 151205     DATA cnameisccp/'pc< 50hPa, tau< 0.3',
    448       DATA cnameisccp/'pc= 50-180hPa, tau< 0.3',
    449      .                'pc= 180-310hPa, tau< 0.3',
    450      .                'pc= 310-440hPa, tau< 0.3',
    451      .                'pc= 440-560hPa, tau< 0.3',
    452      .                'pc= 560-680hPa, tau< 0.3',
    453      .                'pc= 680-800hPa, tau< 0.3',
    454      .                'pc= 800-1000hPa, tau< 0.3',
    455      .                'pc= 50-180hPa, tau= 0.3-1.3',
    456      .                'pc= 180-310hPa, tau= 0.3-1.3',
    457      .                'pc= 310-440hPa, tau= 0.3-1.3',
    458      .                'pc= 440-560hPa, tau= 0.3-1.3',
    459      .                'pc= 560-680hPa, tau= 0.3-1.3',
    460      .                'pc= 680-800hPa, tau= 0.3-1.3',
    461      .                'pc= 800-1000hPa, tau= 0.3-1.3',
    462      .                'pc= 50-180hPa, tau= 1.3-3.6',
    463      .                'pc= 180-310hPa, tau= 1.3-3.6',
    464      .                'pc= 310-440hPa, tau= 1.3-3.6',
    465      .                'pc= 440-560hPa, tau= 1.3-3.6',
    466      .                'pc= 560-680hPa, tau= 1.3-3.6',
    467      .                'pc= 680-800hPa, tau= 1.3-3.6',
    468      .                'pc= 800-1000hPa, tau= 1.3-3.6',
    469      .                'pc= 50-180hPa, tau= 3.6-9.4',
    470      .                'pc= 180-310hPa, tau= 3.6-9.4',
    471      .                'pc= 310-440hPa, tau= 3.6-9.4',
    472      .                'pc= 440-560hPa, tau= 3.6-9.4',
    473      .                'pc= 560-680hPa, tau= 3.6-9.4',
    474      .                'pc= 680-800hPa, tau= 3.6-9.4',
    475      .                'pc= 800-1000hPa, tau= 3.6-9.4',
    476      .                'pc= 50-180hPa, tau= 9.4-23',
    477      .                'pc= 180-310hPa, tau= 9.4-23',
    478      .                'pc= 310-440hPa, tau= 9.4-23',
    479      .                'pc= 440-560hPa, tau= 9.4-23',
    480      .                'pc= 560-680hPa, tau= 9.4-23',
    481      .                'pc= 680-800hPa, tau= 9.4-23',
    482      .                'pc= 800-1000hPa, tau= 9.4-23',
    483      .                'pc= 50-180hPa, tau= 23-60',
    484      .                'pc= 180-310hPa, tau= 23-60',
    485      .                'pc= 310-440hPa, tau= 23-60',
    486      .                'pc= 440-560hPa, tau= 23-60',
    487      .                'pc= 560-680hPa, tau= 23-60',
    488      .                'pc= 680-800hPa, tau= 23-60',
    489      .                'pc= 800-1000hPa, tau= 23-60',
    490      .                'pc= 50-180hPa, tau> 60.',
    491      .                'pc= 180-310hPa, tau> 60.',
    492      .                'pc= 310-440hPa, tau> 60.',
    493      .                'pc= 440-560hPa, tau> 60.',
    494      .                'pc= 560-680hPa, tau> 60.',
    495      .                'pc= 680-800hPa, tau> 60.',
    496      .                'pc= 800-1000hPa, tau> 60.'/
     447!IM bad 151205     DATA cnameisccp/'pc< 50hPa, tau< 0.3',
     448      DATA cnameisccp/'pc= 50-180hPa, tau< 0.3', &
     449                      'pc= 180-310hPa, tau< 0.3', &
     450                      'pc= 310-440hPa, tau< 0.3', &
     451                      'pc= 440-560hPa, tau< 0.3', &
     452                      'pc= 560-680hPa, tau< 0.3', &
     453                      'pc= 680-800hPa, tau< 0.3', &
     454                      'pc= 800-1000hPa, tau< 0.3', &
     455                      'pc= 50-180hPa, tau= 0.3-1.3', &
     456                      'pc= 180-310hPa, tau= 0.3-1.3', &
     457                      'pc= 310-440hPa, tau= 0.3-1.3', &
     458                      'pc= 440-560hPa, tau= 0.3-1.3', &
     459                      'pc= 560-680hPa, tau= 0.3-1.3', &
     460                      'pc= 680-800hPa, tau= 0.3-1.3', &
     461                      'pc= 800-1000hPa, tau= 0.3-1.3', &
     462                      'pc= 50-180hPa, tau= 1.3-3.6', &
     463                      'pc= 180-310hPa, tau= 1.3-3.6', &
     464                      'pc= 310-440hPa, tau= 1.3-3.6', &
     465                      'pc= 440-560hPa, tau= 1.3-3.6', &
     466                      'pc= 560-680hPa, tau= 1.3-3.6', &
     467                      'pc= 680-800hPa, tau= 1.3-3.6', &
     468                      'pc= 800-1000hPa, tau= 1.3-3.6', &
     469                      'pc= 50-180hPa, tau= 3.6-9.4', &
     470                      'pc= 180-310hPa, tau= 3.6-9.4', &
     471                      'pc= 310-440hPa, tau= 3.6-9.4', &
     472                      'pc= 440-560hPa, tau= 3.6-9.4', &
     473                      'pc= 560-680hPa, tau= 3.6-9.4', &
     474                      'pc= 680-800hPa, tau= 3.6-9.4', &
     475                      'pc= 800-1000hPa, tau= 3.6-9.4', &
     476                      'pc= 50-180hPa, tau= 9.4-23', &
     477                      'pc= 180-310hPa, tau= 9.4-23', &
     478                      'pc= 310-440hPa, tau= 9.4-23', &
     479                      'pc= 440-560hPa, tau= 9.4-23', &
     480                      'pc= 560-680hPa, tau= 9.4-23', &
     481                      'pc= 680-800hPa, tau= 9.4-23', &
     482                      'pc= 800-1000hPa, tau= 9.4-23', &
     483                      'pc= 50-180hPa, tau= 23-60', &
     484                      'pc= 180-310hPa, tau= 23-60', &
     485                      'pc= 310-440hPa, tau= 23-60', &
     486                      'pc= 440-560hPa, tau= 23-60', &
     487                      'pc= 560-680hPa, tau= 23-60', &
     488                      'pc= 680-800hPa, tau= 23-60', &
     489                      'pc= 800-1000hPa, tau= 23-60', &
     490                      'pc= 50-180hPa, tau> 60.', &
     491                      'pc= 180-310hPa, tau> 60.', &
     492                      'pc= 310-440hPa, tau> 60.', &
     493                      'pc= 440-560hPa, tau> 60.', &
     494                      'pc= 560-680hPa, tau> 60.', &
     495                      'pc= 680-800hPa, tau> 60.', &
     496                      'pc= 800-1000hPa, tau> 60.'/
    497497       SAVE cnameisccp
    498 c$OMP THREADPRIVATE(cnameisccp)
    499 c
    500 c     REAL zx_lonx7(iimx7), zx_latx7(jjmp1x7)
    501 c     INTEGER nhorix7
    502 cIM: region='3d' <==> sorties en global
     498!$OMP THREADPRIVATE(cnameisccp)
     499!
     500!     REAL zx_lonx7(iimx7), zx_latx7(jjmp1x7)
     501!     INTEGER nhorix7
     502!IM: region='3d' <==> sorties en global
    503503      CHARACTER*3 region
    504504      PARAMETER(region='3d')
    505 c
    506 cIM ISCCP simulator v3.4
    507 c
     505!
     506!IM ISCCP simulator v3.4
     507!
    508508      logical ok_hf
    509 c
     509!
    510510      integer nid_hf, nid_hf3d
    511511      save ok_hf, nid_hf, nid_hf3d
    512 c$OMP THREADPRIVATE(ok_hf, nid_hf, nid_hf3d)
    513 c  QUESTION : noms de variables ?
     512!$OMP THREADPRIVATE(ok_hf, nid_hf, nid_hf3d)
     513!  QUESTION : noms de variables ?
    514514
    515515      INTEGER        longcles
    516516      PARAMETER    ( longcles = 20 )
    517517      REAL clesphy0( longcles      )
    518 c
    519 c Variables propres a la physique
     518!
     519! Variables propres a la physique
    520520      INTEGER itap
    521521      SAVE itap                   ! compteur pour la physique
    522 c$OMP THREADPRIVATE(itap)
    523 c
     522!$OMP THREADPRIVATE(itap)
     523!
    524524      REAL,save ::  solarlong0
    525 c$OMP THREADPRIVATE(solarlong0)
    526 
    527 c
    528 c  Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
    529 c
    530 cIM 141004     REAL zulow(klon),zvlow(klon),zustr(klon), zvstr(klon)
     525!$OMP THREADPRIVATE(solarlong0)
     526
     527!
     528!  Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
     529!
     530!IM 141004     REAL zulow(klon),zvlow(klon),zustr(klon), zvstr(klon)
    531531      REAL zulow(klon),zvlow(klon)
    532 c
     532!
    533533      INTEGER igwd,idx(klon),itest(klon)
    534 c
    535 c      REAL,allocatable,save :: run_off_lic_0(:)
    536 cc$OMP THREADPRIVATE(run_off_lic_0)
    537 cym      SAVE run_off_lic_0
    538 cKE43
    539 c Variables liees a la convection de K. Emanuel (sb):
    540 c
     534!
     535!      REAL,allocatable,save :: run_off_lic_0(:)
     536!!$OMP THREADPRIVATE(run_off_lic_0)
     537!ym      SAVE run_off_lic_0
     538!KE43
     539! Variables liees a la convection de K. Emanuel (sb):
     540!
    541541      REAL bas, top             ! cloud base and top levels
    542542      SAVE bas
    543543      SAVE top
    544 c$OMP THREADPRIVATE(bas, top)
     544!$OMP THREADPRIVATE(bas, top)
    545545
    546546      REAL wdn(klon), tdn(klon), qdn(klon)
    547 c
    548 c=================================================================================================
    549 cCR04.12.07: on ajoute les nouvelles variables du nouveau schema de convection avec poches froides
    550 c Variables li\'ees \`a la poche froide (jyg)
     547!
     548!=================================================================================================
     549!CR04.12.07: on ajoute les nouvelles variables du nouveau schema de convection avec poches froides
     550! Variables li\'ees \`a la poche froide (jyg)
    551551
    552552      REAL mip(klon,klev)  ! mass flux shed by the adiab ascent at each level
    553 c
     553!
    554554      REAL wape_prescr, fip_prescr
    555555      INTEGER it_wape_prescr
    556556      SAVE wape_prescr, fip_prescr, it_wape_prescr
    557 c$OMP THREADPRIVATE(wape_prescr, fip_prescr, it_wape_prescr)
    558 c
    559 c variables supplementaires de concvl
     557!$OMP THREADPRIVATE(wape_prescr, fip_prescr, it_wape_prescr)
     558!
     559! variables supplementaires de concvl
    560560      REAL Tconv(klon,klev)
    561561      REAL ment(klon,klev,klev),sij(klon,klev,klev)
     
    570570      real, save :: wake_s_min_lsp=0.1
    571571
    572 c$OMP THREADPRIVATE(alp_bl_prescr,ale_bl_prescr)
    573 c$OMP THREADPRIVATE(ale_max,alp_max)
    574 c$OMP THREADPRIVATE(wake_s_min_lsp)
     572!$OMP THREADPRIVATE(alp_bl_prescr,ale_bl_prescr)
     573!$OMP THREADPRIVATE(ale_max,alp_max)
     574!$OMP THREADPRIVATE(wake_s_min_lsp)
    575575
    576576
    577577      real ok_wk_lsp(klon)
    578578
    579 cRC
    580 c Variables li\'ees \`a la poche froide (jyg et rr)
    581 c Version diagnostique pour l'instant : pas de r\'etroaction sur la convection
     579!RC
     580! Variables li\'ees \`a la poche froide (jyg et rr)
     581! Version diagnostique pour l'instant : pas de r\'etroaction sur la convection
    582582
    583583      REAL t_wake(klon,klev),q_wake(klon,klev) ! wake pour la convection
     
    595595      REAL wake_dp_deltomg(klon,klev) ! Wake : gradient vertical de wake_omg
    596596      REAL wake_spread(klon,klev)     ! spreading term in wake_delt
    597 c
    598 cpourquoi y'a pas de save??
    599 c
     597!
     598!pourquoi y'a pas de save??
     599!
    600600      INTEGER wake_k(klon)            ! Wake sommet
    601 c
     601!
    602602      REAL t_undi(klon,klev)               ! temperature moyenne dans la zone non perturbee
    603603      REAL q_undi(klon,klev)               ! humidite moyenne dans la zone non perturbee
    604 c
    605 cjyg
    606 ccc      REAL wake_pe(klon)              ! Wake potential energy - WAPE
     604!
     605!jyg
     606!cc      REAL wake_pe(klon)              ! Wake potential energy - WAPE
    607607
    608608      REAL wake_gfl(klon)             ! Gust Front Length
    609609      REAL wake_dens(klon)
    610 c
    611 c
     610!
     611!
    612612      REAL dt_dwn(klon,klev)
    613613      REAL dq_dwn(klon,klev)
     
    621621      REAL dq_a(klon,klev)
    622622      REAL, SAVE :: alp_offset
    623 c$OMP THREADPRIVATE(alp_offset)
    624 
    625 c
    626 cRR:fin declarations poches froides
    627 c=======================================================================================================
     623!$OMP THREADPRIVATE(alp_offset)
     624
     625!
     626!RR:fin declarations poches froides
     627!=======================================================================================================
    628628       
    629629      REAL ztv(klon,klev),ztva(klon,klev)
     
    632632      REAL zthl(klon,klev)
    633633
    634 ccc nrlmd le 10/04/2012
    635 
    636 c--------Stochastic Boundary Layer Triggering: ALE_BL--------
    637 c---Propri\'et\'es du thermiques au LCL
     634!cc nrlmd le 10/04/2012
     635
     636!--------Stochastic Boundary Layer Triggering: ALE_BL--------
     637!---Propri\'et\'es du thermiques au LCL
    638638      real zlcl_th(klon)                                     ! Altitude du LCL calcul\'e continument (pcon dans thermcell_main.F90)
    639639      real fraca0(klon)                                      ! Fraction des thermiques au LCL
     
    644644      real env_tke_max0(klon)                                ! TKE dans l'environnement au LCL
    645645
    646 c---D\'eclenchement stochastique
     646!---D\'eclenchement stochastique
    647647      integer :: tau_trig(klon)
    648648
    649 c--------Statistical Boundary Layer Closure: ALP_BL--------
    650 c---Profils de TKE dans et hors du thermique
     649!--------Statistical Boundary Layer Closure: ALP_BL--------
     650!---Profils de TKE dans et hors du thermique
    651651      real pbl_tke_input(klon,klev+1,nbsrf)
    652652      real therm_tke_max(klon,klev)                          ! Profil de TKE dans les thermiques
     
    654654
    655655
    656 ccc fin nrlmd le 10/04/2012
    657 
    658 c Variables locales pour la couche limite (al1):
    659 c
    660 cAl1      REAL pblh(klon)           ! Hauteur de couche limite
    661 cAl1      SAVE pblh
    662 c34EK
    663 c
    664 c Variables locales:
    665 c
    666 cAA
    667 cAA  Pour phytrac
     656!cc fin nrlmd le 10/04/2012
     657
     658! Variables locales pour la couche limite (al1):
     659!
     660!Al1      REAL pblh(klon)           ! Hauteur de couche limite
     661!Al1      SAVE pblh
     662!34EK
     663!
     664! Variables locales:
     665!
     666!AA
     667!AA  Pour phytrac
    668668      REAL u1(klon)             ! vents dans la premiere couche U
    669669      REAL v1(klon)             ! vents dans la premiere couche V
    670670
    671 c@$$      LOGICAL offline           ! Controle du stockage ds "physique"
    672 c@$$      PARAMETER (offline=.false.)
    673 c@$$      INTEGER physid
     671!@$$      LOGICAL offline           ! Controle du stockage ds "physique"
     672!@$$      PARAMETER (offline=.false.)
     673!@$$      INTEGER physid
    674674      REAL frac_impa(klon,klev) ! fractions d'aerosols lessivees (impaction)
    675675      REAL frac_nucl(klon,klev) ! idem (nucleation)
     
    680680      REAL          :: calday
    681681
    682 cIM cf FH pour Tiedtke 080604
     682!IM cf FH pour Tiedtke 080604
    683683      REAL rain_tiedtke(klon),snow_tiedtke(klon)
    684 c
    685 cIM 050204 END
     684!
     685!IM 050204 END
    686686      REAL devap(klon) ! evaporation et sa derivee
    687687      REAL dsens(klon) ! chaleur sensible et sa derivee
    688688
    689 c
    690 c Conditions aux limites
    691 c
     689!
     690! Conditions aux limites
     691!
    692692!
    693693      REAL :: day_since_equinox
     
    698698      LOGICAL, parameter :: new_orbit = .true.
    699699
    700 c
     700!
    701701      INTEGER lmt_pas
    702702      SAVE lmt_pas                ! frequence de mise a jour
    703 c$OMP THREADPRIVATE(lmt_pas)
     703!$OMP THREADPRIVATE(lmt_pas)
    704704      real zmasse(klon, llm),exner(klon, llm)
    705 C     (column-density of mass of air in a cell, in kg m-2)
     705!     (column-density of mass of air in a cell, in kg m-2)
    706706      real, parameter:: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2
    707707
    708 cIM sorties
     708!IM sorties
    709709      REAL un_jour
    710710      PARAMETER(un_jour=86400.)
    711 c======================================================================
    712 c
    713 c Declaration des procedures appelees
    714 c
     711!======================================================================
     712!
     713! Declaration des procedures appelees
     714!
    715715      EXTERNAL angle     ! calculer angle zenithal du soleil
    716716      EXTERNAL alboc     ! calculer l'albedo sur ocean
    717717      EXTERNAL ajsec     ! ajustement sec
    718718      EXTERNAL conlmd    ! convection (schema LMD)
    719 cKE43
     719!KE43
    720720      EXTERNAL conema3  ! convect4.3
    721721      EXTERNAL fisrtilp  ! schema de condensation a grande echelle (pluie)
    722 cAA
     722!AA
    723723      EXTERNAL fisrtilp_tr ! schema de condensation a grande echelle (pluie)
    724 c                          ! stockage des coefficients necessaires au
    725 c                          ! lessivage OFF-LINE et ON-LINE
     724!                          ! stockage des coefficients necessaires au
     725!                          ! lessivage OFF-LINE et ON-LINE
    726726      EXTERNAL hgardfou  ! verifier les temperatures
    727727      EXTERNAL nuage     ! calculer les proprietes radiatives
    728 CC      EXTERNAL o3cm      ! initialiser l'ozone
     728!C      EXTERNAL o3cm      ! initialiser l'ozone
    729729      EXTERNAL orbite    ! calculer l'orbite terrestre
    730730      EXTERNAL phyetat0  ! lire l'etat initial de la physique
     
    736736      EXTERNAL ecrirega  ! ecrire le fichier binaire regional
    737737      EXTERNAL ecriregs  ! ecrire le fichier binaire regional
    738 cIM
     738!IM
    739739      EXTERNAL haut2bas  !variables de haut en bas
    740740      EXTERNAL ini_undefSTD  !initialise a 0 une variable a 1 niveau de pression
    741741      EXTERNAL undefSTD      !somme les valeurs definies d'1 var a 1 niveau de pression
    742 c     EXTERNAL moy_undefSTD  !moyenne d'1 var a 1 niveau de pression
    743 c     EXTERNAL moyglo_aire   !moyenne globale d'1 var ponderee par l'aire de la maille (moyglo_pondaire)
    744 c                            !par la masse/airetot (moyglo_pondaima) et la vraie masse (moyglo_pondmass)
    745 c
    746 c Variables locales
    747 c
     742!     EXTERNAL moy_undefSTD  !moyenne d'1 var a 1 niveau de pression
     743!     EXTERNAL moyglo_aire   !moyenne globale d'1 var ponderee par l'aire de la maille (moyglo_pondaire)
     744!                            !par la masse/airetot (moyglo_pondaima) et la vraie masse (moyglo_pondmass)
     745!
     746! Variables locales
     747!
    748748      REAL rhcl(klon,klev)    ! humiditi relative ciel clair
    749749      REAL dialiq(klon,klev)  ! eau liquide nuageuse
    750750      REAL diafra(klon,klev)  ! fraction nuageuse
    751751      REAL cldliq(klon,klev)  ! eau liquide nuageuse
    752 c
    753 CXXX PB
     752!
     753!XXX PB
    754754      REAL fluxq(klon,klev, nbsrf)   ! flux turbulent d'humidite
    755 c
     755!
    756756      REAL zxfluxt(klon, klev)
    757757      REAL zxfluxq(klon, klev)
     
    759759      REAL zxfluxv(klon, klev)
    760760
    761 c Le rayonnement n'est pas calcule tous les pas, il faut donc
    762 c                      sauvegarder les sorties du rayonnement
    763 cym      SAVE  heat,cool,albpla,topsw,toplw,solsw,sollw,sollwdown
    764 cym      SAVE  sollwdownclr, toplwdown, toplwdownclr
    765 cym      SAVE  topsw0,toplw0,solsw0,sollw0, heat0, cool0
    766 c
     761! Le rayonnement n'est pas calcule tous les pas, il faut donc
     762!                      sauvegarder les sorties du rayonnement
     763!ym      SAVE  heat,cool,albpla,topsw,toplw,solsw,sollw,sollwdown
     764!ym      SAVE  sollwdownclr, toplwdown, toplwdownclr
     765!ym      SAVE  topsw0,toplw0,solsw0,sollw0, heat0, cool0
     766!
    767767      INTEGER itaprad
    768768      SAVE itaprad
    769 c$OMP THREADPRIVATE(itaprad)
    770 c
     769!$OMP THREADPRIVATE(itaprad)
     770!
    771771      REAL conv_q(klon,klev) ! convergence de l'humidite (kg/kg/s)
    772772      REAL conv_t(klon,klev) ! convergence de la temperature(K/s)
    773773
    774 c
     774!
    775775      REAL zxsnow(klon)
    776776      REAL zxsnow_dummy(klon)
    777 c
     777!
    778778      REAL dist, rmu0(klon), fract(klon)
    779779      REAL zdtime, zlongi
    780 c
     780!
    781781      CHARACTER*2 str2
    782782      CHARACTER*2 iqn
    783 c
     783!
    784784      REAL qcheck
    785785      REAL z_avant(klon), z_apres(klon), z_factor(klon)
    786786      LOGICAL zx_ajustq
    787 c
     787!
    788788      REAL za, zb
    789789      REAL zx_t, zx_qs, zdelta, zcor, zfra, zlvdcp, zlsdcp
     
    793793      PARAMETER (t_coup=234.0)
    794794
    795 cym A voir plus tard !!
    796 cym      REAL zx_relief(iim,jjmp1)
    797 cym      REAL zx_aire(iim,jjmp1)
    798 c
    799 c Grandeurs de sorties
     795!ym A voir plus tard !!
     796!ym      REAL zx_relief(iim,jjmp1)
     797!ym      REAL zx_aire(iim,jjmp1)
     798!
     799! Grandeurs de sorties
    800800      REAL s_capCL(klon)
    801801      REAL s_oliqCL(klon), s_cteiCL(klon)
    802802      REAL s_trmb1(klon), s_trmb2(klon)
    803803      REAL s_trmb3(klon)
    804 cKE43
    805 c Variables locales pour la convection de K. Emanuel (sb):
     804!KE43
     805! Variables locales pour la convection de K. Emanuel (sb):
    806806
    807807      REAL tvp(klon,klev)       ! virtual temp of lifted parcel
     
    811811      INTEGER iflagctrl(klon)          ! flag fonctionnement de convect
    812812
    813 c -- convect43:
     813! -- convect43:
    814814      INTEGER ntra              ! nb traceurs pour convect4.3
    815815      REAL pori_con(klon)    ! pressure at the origin level of lifted parcel
     
    817817      REAL dtvpdt1(klon,klev), dtvpdq1(klon,klev)
    818818      REAL dplcldt(klon), dplcldr(klon)
    819 c?     .     condm_con(klon,klev),conda_con(klon,klev),
    820 c?     .     mr_con(klon,klev),ep_con(klon,klev)
    821 c?     .    ,sadiab(klon,klev),wadiab(klon,klev)
    822 c --
    823 c34EK
    824 c
    825 c Variables du changement
    826 c
    827 c con: convection
    828 c lsc: condensation a grande echelle (Large-Scale-Condensation)
    829 c ajs: ajustement sec
    830 c eva: evaporation de l'eau liquide nuageuse
    831 c vdf: couche limite (Vertical DiFfusion)
     819!?     .     condm_con(klon,klev),conda_con(klon,klev),
     820!?     .     mr_con(klon,klev),ep_con(klon,klev)
     821!?     .    ,sadiab(klon,klev),wadiab(klon,klev)
     822! --
     823!34EK
     824!
     825! Variables du changement
     826!
     827! con: convection
     828! lsc: condensation a grande echelle (Large-Scale-Condensation)
     829! ajs: ajustement sec
     830! eva: evaporation de l'eau liquide nuageuse
     831! vdf: couche limite (Vertical DiFfusion)
    832832
    833833! tendance nulles
    834834      REAL du0(klon,klev),dv0(klon,klev),dq0(klon,klev),dql0(klon,klev)
    835835
    836 c
    837 *********************************************************
    838 *     declarations
     836!
     837!********************************************************
     838!     declarations
    839839     
    840 *********************************************************
    841 cIM 081204 END
    842 c
     840!********************************************************
     841!IM 081204 END
     842!
    843843      REAL pen_u(klon,klev), pen_d(klon,klev)
    844844      REAL pde_u(klon,klev), pde_d(klon,klev)
    845845      INTEGER kcbot(klon), kctop(klon), kdtop(klon)
    846 c
     846!
    847847      REAL ratqsc(klon,klev)
    848848      real ratqsbas,ratqshaut,tau_ratqs
    849849      save ratqsbas,ratqshaut,tau_ratqs
    850 c$OMP THREADPRIVATE(ratqsbas,ratqshaut,tau_ratqs)
     850!$OMP THREADPRIVATE(ratqsbas,ratqshaut,tau_ratqs)
    851851      real zpt_conv(klon,klev)
    852852
    853 c Parametres lies au nouveau schema de nuages (SB, PDF)
     853! Parametres lies au nouveau schema de nuages (SB, PDF)
    854854      real fact_cldcon
    855855      real facttemps
    856856      logical ok_newmicro
    857857      save ok_newmicro
    858 c$OMP THREADPRIVATE(ok_newmicro)
     858!$OMP THREADPRIVATE(ok_newmicro)
    859859      save fact_cldcon,facttemps
    860 c$OMP THREADPRIVATE(fact_cldcon,facttemps)
     860!$OMP THREADPRIVATE(fact_cldcon,facttemps)
    861861
    862862      integer iflag_cldcon
    863863      save iflag_cldcon
    864 c$OMP THREADPRIVATE(iflag_cldcon)
     864!$OMP THREADPRIVATE(iflag_cldcon)
    865865      logical ptconv(klon,klev)
    866 cIM cf. AM 081204 BEG
     866!IM cf. AM 081204 BEG
    867867      logical ptconvth(klon,klev)
    868 cIM cf. AM 081204 END
    869 c
    870 c Variables liees a l'ecriture de la bande histoire physique
    871 c
    872 c======================================================================
    873 c
    874 cIM cf. AM 081204 BEG
    875 c   declarations pour sortir sur une sous-region
     868!IM cf. AM 081204 END
     869!
     870! Variables liees a l'ecriture de la bande histoire physique
     871!
     872!======================================================================
     873!
     874!IM cf. AM 081204 BEG
     875!   declarations pour sortir sur une sous-region
    876876      integer imin_ins,imax_ins,jmin_ins,jmax_ins
    877877      save imin_ins,imax_ins,jmin_ins,jmax_ins
    878 c$OMP THREADPRIVATE(imin_ins,imax_ins,jmin_ins,jmax_ins)
    879 c      real lonmin_ins,lonmax_ins,latmin_ins
    880 c     s  ,latmax_ins
    881 c     data lonmin_ins,lonmax_ins,latmin_ins
    882 c    s  ,latmax_ins/
    883 c valeurs initiales     s   -5.,20.,41.,55./   
    884 c    s   100.,130.,-20.,20./
    885 c    s   -180.,180.,-90.,90./
    886 c======================================================================
    887 cIM cf. AM 081204 END
    888 
    889 c
     878!$OMP THREADPRIVATE(imin_ins,imax_ins,jmin_ins,jmax_ins)
     879!      real lonmin_ins,lonmax_ins,latmin_ins
     880!     s  ,latmax_ins
     881!     data lonmin_ins,lonmax_ins,latmin_ins
     882!    s  ,latmax_ins/
     883! valeurs initiales     s   -5.,20.,41.,55./   
     884!    s   100.,130.,-20.,20./
     885!    s   -180.,180.,-90.,90./
     886!======================================================================
     887!IM cf. AM 081204 END
     888
     889!
    890890      integer itau_w   ! pas de temps ecriture = itap + itau_phy
    891 c
    892 c
    893 c Variables locales pour effectuer les appels en serie
    894 c
    895 cIM RH a 2m (la surface)
     891!
     892!
     893! Variables locales pour effectuer les appels en serie
     894!
     895!IM RH a 2m (la surface)
    896896      REAL Lheat
    897897
     
    899899      PARAMETER    ( length = 100 )
    900900      REAL tabcntr0( length       )
    901 c
     901!
    902902      INTEGER ndex2d(iim*jjmp1),ndex3d(iim*jjmp1*klev)
    903 cIM
     903!IM
    904904      INTEGER ndex2d1(iwmax)
    905 c
    906 cIM AMIP2 BEG
     905!
     906!IM AMIP2 BEG
    907907      REAL moyglo, mountor
    908 cIM 141004 BEG
     908!IM 141004 BEG
    909909      REAL zustrdr(klon), zvstrdr(klon)
    910910      REAL zustrli(klon), zvstrli(klon)
     
    912912      REAL zustrhi(klon), zvstrhi(klon)
    913913      REAL aam, torsfc
    914 cIM 141004 END
    915 cIM 190504 BEG
     914!IM 141004 END
     915!IM 190504 BEG
    916916      INTEGER ij, imp1jmp1
    917917      PARAMETER(imp1jmp1=(iim+1)*jjmp1)
    918 cym A voir plus tard
     918!ym A voir plus tard
    919919      REAL zx_tmp(imp1jmp1), airedyn(iim+1,jjmp1)
    920920      REAL padyn(iim+1,jjmp1,klev+1)
    921921      REAL dudyn(iim+1,jjmp1,klev)
    922922      REAL rlatdyn(iim+1,jjmp1)
    923 cIM 190504 END
     923!IM 190504 END
    924924      LOGICAL ok_msk
    925925      REAL msk(klon)
    926 cIM
     926!IM
    927927      REAL airetot, pi
    928 cym A voir plus tard
    929 cym      REAL zm_wo(jjmp1, klev)
    930 cIM AMIP2 END
    931 c
     928!ym A voir plus tard
     929!ym      REAL zm_wo(jjmp1, klev)
     930!IM AMIP2 END
     931!
    932932      REAL zx_tmp_fi2d(klon)      ! variable temporaire grille physique
    933933      REAL zx_tmp_fi3d(klon,klev) ! variable temporaire pour champs 3D
     
    936936      REAL zx_tmp_2d(iim,jjmp1), zx_tmp_3d(iim,jjmp1,klev)
    937937      REAL zx_lon(iim,jjmp1), zx_lat(iim,jjmp1)
    938 c
     938!
    939939      INTEGER nid_day, nid_mth, nid_ins, nid_mthnmc, nid_daynmc
    940940      INTEGER nid_hfnmc, nid_day_seri, nid_ctesGCM
    941941      SAVE nid_day, nid_mth, nid_ins, nid_mthnmc, nid_daynmc
    942942      SAVE nid_hfnmc, nid_day_seri, nid_ctesGCM
    943 c$OMP THREADPRIVATE(nid_day, nid_mth, nid_ins)
    944 c$OMP THREADPRIVATE(nid_mthnmc, nid_daynmc, nid_hfnmc)
    945 c$OMP THREADPRIVATE(nid_day_seri,nid_ctesGCM)
    946 c
    947 cIM 280405 BEG
     943!$OMP THREADPRIVATE(nid_day, nid_mth, nid_ins)
     944!$OMP THREADPRIVATE(nid_mthnmc, nid_daynmc, nid_hfnmc)
     945!$OMP THREADPRIVATE(nid_day_seri,nid_ctesGCM)
     946!
     947!IM 280405 BEG
    948948      INTEGER nid_bilKPins, nid_bilKPave
    949949      SAVE nid_bilKPins, nid_bilKPave
    950 c$OMP THREADPRIVATE(nid_bilKPins, nid_bilKPave)
    951 c
     950!$OMP THREADPRIVATE(nid_bilKPins, nid_bilKPave)
     951!
    952952      REAL ve_lay(klon,klev) ! transport meri. de l'energie a chaque niveau vert.
    953953      REAL vq_lay(klon,klev) ! transport meri. de l'eau a chaque niveau vert.
    954954      REAL ue_lay(klon,klev) ! transport zonal de l'energie a chaque niveau vert.
    955955      REAL uq_lay(klon,klev) ! transport zonal de l'eau a chaque niveau vert.
    956 c
     956!
    957957      INTEGER nhori, nvert, nvert1, nvert3
    958958      REAL zsto, zsto1, zsto2
     
    961961      REAL zout_isccp(napisccp)
    962962      SAVE zcals, zcalh, zoutj, zout_isccp
    963 c$OMP THREADPRIVATE(zcals, zcalh, zoutj, zout_isccp)
     963!$OMP THREADPRIVATE(zcals, zcalh, zoutj, zout_isccp)
    964964
    965965      real zjulian
    966966      save zjulian
    967 c$OMP THREADPRIVATE(zjulian)
     967!$OMP THREADPRIVATE(zjulian)
    968968
    969969      character*20 modname
     
    973973      integer idayref
    974974
    975 C essai writephys
     975! essai writephys
    976976      integer fid_day, fid_mth, fid_ins
    977977      parameter (fid_ins = 1, fid_day = 2, fid_mth = 3)
    978978      integer prof2d_on, prof3d_on, prof2d_av, prof3d_av
    979       parameter (prof2d_on = 1, prof3d_on = 2,
    980      .           prof2d_av = 3, prof3d_av = 4)
     979      parameter (prof2d_on = 1, prof3d_on = 2, &
     980                 prof2d_av = 3, prof3d_av = 4)
    981981      character*30 nom_fichier
    982982      character*40 varname
    983983      character*40 vartitle
    984984      character*20 varunits
    985 C     Variables liees au bilan d'energie et d'enthalpi
     985!     Variables liees au bilan d'energie et d'enthalpi
    986986      REAL ztsol(klon)
    987       REAL      h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot
    988      $        , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot
    989       SAVE      h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot
    990      $        , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot
    991 c$OMP THREADPRIVATE(h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot,
    992 c$OMP+              h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot)
     987      REAL      h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot &
     988              , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot
     989      SAVE      h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot &
     990              , h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot
     991!$OMP THREADPRIVATE(h_vcol_tot, h_dair_tot, h_qw_tot, h_ql_tot)
     992!$OMP THREADPRIVATE(h_qs_tot, qw_tot, ql_tot, qs_tot , ec_tot)
    993993      REAL      d_h_vcol, d_h_dair, d_qt, d_qw, d_ql, d_qs, d_ec
    994994      REAL      d_h_vcol_phy
    995995      REAL      fs_bound, fq_bound
    996996      SAVE      d_h_vcol_phy
    997 c$OMP THREADPRIVATE(d_h_vcol_phy)
     997!$OMP THREADPRIVATE(d_h_vcol_phy)
    998998      REAL      zero_v(klon)
    999999      CHARACTER*15 ztit
     
    10011001      SAVE      ip_ebil
    10021002      DATA      ip_ebil/0/
    1003 c$OMP THREADPRIVATE(ip_ebil)
     1003!$OMP THREADPRIVATE(ip_ebil)
    10041004      INTEGER   if_ebil ! level for energy conserv. dignostics
    10051005      SAVE      if_ebil
    1006 c$OMP THREADPRIVATE(if_ebil)
    1007 c+jld ec_conser
     1006!$OMP THREADPRIVATE(if_ebil)
     1007!+jld ec_conser
    10081008      REAL ZRCPD
    1009 c-jld ec_conser
     1009!-jld ec_conser
    10101010      REAL q2m(klon,nbsrf)  ! humidite a 2m
    10111011
    1012 cIM: t2m, q2m, ustar, u10m, v10m et t2mincels, t2maxcels
     1012!IM: t2m, q2m, ustar, u10m, v10m et t2mincels, t2maxcels
    10131013      CHARACTER*40 t2mincels, t2maxcels       !t2m min., t2m max
    10141014      CHARACTER*40 tinst, tave, typeval
     
    10301030      REAL bl95_b0, bl95_b1   ! Parameter in Boucher and Lohmann (1995)
    10311031      SAVE ok_ade, ok_aie, ok_cdnc, bl95_b0, bl95_b1
    1032 c$OMP THREADPRIVATE(ok_ade, ok_aie, ok_cdnc, bl95_b0, bl95_b1)
     1032!$OMP THREADPRIVATE(ok_ade, ok_aie, ok_cdnc, bl95_b0, bl95_b1)
    10331033      LOGICAL, SAVE :: aerosol_couple ! true  : calcul des aerosols dans INCA
    10341034                                      ! false : lecture des aerosol dans un fichier
    1035 c$OMP THREADPRIVATE(aerosol_couple)   
     1035!$OMP THREADPRIVATE(aerosol_couple)   
    10361036      INTEGER, SAVE :: flag_aerosol
    1037 c$OMP THREADPRIVATE(flag_aerosol)
     1037!$OMP THREADPRIVATE(flag_aerosol)
    10381038      LOGICAL, SAVE :: new_aod
    1039 c$OMP THREADPRIVATE(new_aod)
    1040 c
    1041 c--STRAT AEROSOL
     1039!$OMP THREADPRIVATE(new_aod)
     1040!
     1041!--STRAT AEROSOL
    10421042      LOGICAL, SAVE :: flag_aerosol_strat
    1043 c$OMP THREADPRIVATE(flag_aerosol_strat)
    1044 cc-fin STRAT AEROSOL
    1045 c
    1046 c Declaration des constantes et des fonctions thermodynamiques
    1047 c
     1043!$OMP THREADPRIVATE(flag_aerosol_strat)
     1044!c-fin STRAT AEROSOL
     1045!
     1046! Declaration des constantes et des fonctions thermodynamiques
     1047!
    10481048      LOGICAL,SAVE :: first=.true.
    1049 c$OMP THREADPRIVATE(first)
     1049!$OMP THREADPRIVATE(first)
    10501050
    10511051      integer iunit
    10521052
    10531053      integer, save::  read_climoz ! read ozone climatology
    1054 C     (let it keep the default OpenMP shared attribute)
    1055 C     Allowed values are 0, 1 and 2
    1056 C     0: do not read an ozone climatology
    1057 C     1: read a single ozone climatology that will be used day and night
    1058 C     2: read two ozone climatologies, the average day and night
    1059 C     climatology and the daylight climatology
     1054!     (let it keep the default OpenMP shared attribute)
     1055!     Allowed values are 0, 1 and 2
     1056!     0: do not read an ozone climatology
     1057!     1: read a single ozone climatology that will be used day and night
     1058!     2: read two ozone climatologies, the average day and night
     1059!     climatology and the daylight climatology
    10601060
    10611061      integer, save:: ncid_climoz ! NetCDF file containing ozone climatologies
    1062 C     (let it keep the default OpenMP shared attribute)
     1062!     (let it keep the default OpenMP shared attribute)
    10631063
    10641064      real, pointer, save:: press_climoz(:)
    1065 C     (let it keep the default OpenMP shared attribute)
     1065!     (let it keep the default OpenMP shared attribute)
    10661066!     edges of pressure intervals for ozone climatologies, in Pa, in strictly
    10671067!     ascending order
     
    10691069      integer, save:: co3i = 0
    10701070!     time index in NetCDF file of current ozone fields
    1071 c$OMP THREADPRIVATE(co3i)
     1071!$OMP THREADPRIVATE(co3i)
    10721072
    10731073      integer ro3i
     
    10791079#include "YOETHF.h"
    10801080#include "FCTTRE.h"
    1081 cIM 100106 BEG : pouvoir sortir les ctes de la physique
     1081!IM 100106 BEG : pouvoir sortir les ctes de la physique
    10821082#include "conema3.h"
    10831083#include "fisrtilp.h"
    10841084#include "nuage.h"
    10851085#include "compbl.h"
    1086 cIM 100106 END : pouvoir sortir les ctes de la physique
    1087 c
     1086!IM 100106 END : pouvoir sortir les ctes de la physique
     1087!
    10881088!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    1089 c Declarations pour Simulateur COSP
    1090 c============================================================
     1089! Declarations pour Simulateur COSP
     1090!============================================================
    10911091      real :: mr_ozone(klon,klev)
    10921092
    1093 cIM sorties fichier 1D paramLMDZ_phy.nc
     1093!IM sorties fichier 1D paramLMDZ_phy.nc
    10941094      REAL :: zx_tmp_0d(1,1)
    10951095      INTEGER, PARAMETER :: np=1
     
    10991099      REAL grain(1), gtsol(1), gt2m(1), gprw(1)
    11001100
    1101 cIM stations CFMIP
     1101!IM stations CFMIP
    11021102      INTEGER, SAVE :: nCFMIP
    1103 c$OMP THREADPRIVATE(nCFMIP)
     1103!$OMP THREADPRIVATE(nCFMIP)
    11041104      INTEGER, PARAMETER :: npCFMIP=120
    11051105      INTEGER, ALLOCATABLE, SAVE :: tabCFMIP(:)
    11061106      REAL, ALLOCATABLE, SAVE :: lonCFMIP(:), latCFMIP(:)
    1107 c$OMP THREADPRIVATE(tabCFMIP, lonCFMIP, latCFMIP)
     1107!$OMP THREADPRIVATE(tabCFMIP, lonCFMIP, latCFMIP)
    11081108      INTEGER, ALLOCATABLE, SAVE :: tabijGCM(:)
    11091109      REAL, ALLOCATABLE, SAVE :: lonGCM(:), latGCM(:)
    1110 c$OMP THREADPRIVATE(tabijGCM, lonGCM, latGCM)
     1110!$OMP THREADPRIVATE(tabijGCM, lonGCM, latGCM)
    11111111      INTEGER, ALLOCATABLE, SAVE :: iGCM(:), jGCM(:)
    1112 c$OMP THREADPRIVATE(iGCM, jGCM)
     1112!$OMP THREADPRIVATE(iGCM, jGCM)
    11131113      logical, dimension(nfiles)            :: phys_out_filestations
    11141114      logical, parameter :: lNMC=.FALSE.
    11151115
    1116 cIM betaCRF
     1116!IM betaCRF
    11171117      REAL, SAVE :: pfree, beta_pbl, beta_free
    1118 c$OMP THREADPRIVATE(pfree, beta_pbl, beta_free)
     1118!$OMP THREADPRIVATE(pfree, beta_pbl, beta_free)
    11191119      REAL, SAVE :: lon1_beta,  lon2_beta, lat1_beta, lat2_beta
    1120 c$OMP THREADPRIVATE(lon1_beta,  lon2_beta, lat1_beta, lat2_beta)
     1120!$OMP THREADPRIVATE(lon1_beta,  lon2_beta, lat1_beta, lat2_beta)
    11211121      LOGICAL, SAVE :: mskocean_beta
    1122 c$OMP THREADPRIVATE(mskocean_beta)
     1122!$OMP THREADPRIVATE(mskocean_beta)
    11231123      REAL, dimension(klon, klev) :: beta         ! facteur sur cldtaurad et cldemirad pour evaluer les retros liees aux CRF
    11241124      REAL, dimension(klon, klev) :: cldtaurad    ! epaisseur optique pour radlwsw pour tester "CRF off"
     
    11311131      integer iostat
    11321132
    1133 c======================================================================
     1133!======================================================================
    11341134! Gestion calendrier : mise a jour du module phys_cal_mod
    11351135!
    11361136      CALL phys_cal_update(jD_cur,jH_cur)
    11371137
    1138 c======================================================================
     1138!======================================================================
    11391139! Ecriture eventuelle d'un profil verticale en entree de la physique.
    11401140! Utilise notamment en 1D mais peut etre active egalement en 3D
    11411141! en imposant la valeur de igout.
    1142 c======================================================================d
     1142!======================================================================d
    11431143      if (prt_level.ge.1) then
    11441144          igout=klon/2+1/klon
    11451145         write(lunout,*) 'DEBUT DE PHYSIQ !!!!!!!!!!!!!!!!!!!!'
    1146          write(lunout,*)
    1147      s 'nlon,klev,nqtot,debut,lafin, jD_cur, jH_cur,pdtphys'
    1148          write(lunout,*)
    1149      s  nlon,klev,nqtot,debut,lafin, jD_cur, jH_cur,pdtphys
     1146         write(lunout,*) &
     1147       'nlon,klev,nqtot,debut,lafin, jD_cur, jH_cur,pdtphys'
     1148         write(lunout,*) &
     1149        nlon,klev,nqtot,debut,lafin, jD_cur, jH_cur,pdtphys
    11501150
    11511151         write(lunout,*) 'paprs, play, phi, u, v, t'
    11521152         do k=1,klev
    1153             write(lunout,*) paprs(igout,k),pplay(igout,k),pphi(igout,k),
    1154      s   u(igout,k),v(igout,k),t(igout,k)
     1153            write(lunout,*) paprs(igout,k),pplay(igout,k),pphi(igout,k), &
     1154         u(igout,k),v(igout,k),t(igout,k)
    11551155         enddo
    11561156         write(lunout,*) 'ovap (g/kg),  oliq (g/kg)'
     
    11601160      endif
    11611161
    1162 c======================================================================
     1162!======================================================================
    11631163
    11641164      if (first) then
    11651165     
    1166 cCR:nvelles variables convection/poches froides
     1166!CR:nvelles variables convection/poches froides
    11671167     
    11681168      print*, '================================================='
    11691169      print*, 'Allocation des variables locales et sauvegardees'
    11701170      call phys_local_var_init
    1171 c
     1171!
    11721172      pasphys=pdtphys
    1173 c     appel a la lecture du run.def physique
    1174       call conf_phys(ok_journe, ok_mensuel,
    1175      .     ok_instan, ok_hf,
    1176      .     ok_LES,
    1177      .     callstats,
    1178      .     solarlong0,seuil_inversion,
    1179      .     fact_cldcon, facttemps,ok_newmicro,iflag_radia,
    1180      .     iflag_cldcon,iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs,
    1181      .     ok_ade, ok_aie, ok_cdnc, aerosol_couple,
    1182      .     flag_aerosol, flag_aerosol_strat, new_aod,
    1183      .     bl95_b0, bl95_b1,
    1184 c     nv flags pour la convection et les poches froides
    1185      .     read_climoz,
    1186      &     alp_offset)
     1173!     appel a la lecture du run.def physique
     1174      call conf_phys(ok_journe, ok_mensuel, &
     1175           ok_instan, ok_hf, &
     1176           ok_LES, &
     1177           callstats, &
     1178           solarlong0,seuil_inversion, &
     1179           fact_cldcon, facttemps,ok_newmicro,iflag_radia, &
     1180           iflag_cldcon,iflag_ratqs,ratqsbas,ratqshaut,tau_ratqs, &
     1181           ok_ade, ok_aie, ok_cdnc, aerosol_couple,  &
     1182           flag_aerosol, flag_aerosol_strat, new_aod, &
     1183           bl95_b0, bl95_b1, &
     1184!     nv flags pour la convection et les poches froides
     1185           read_climoz, &
     1186           alp_offset)
    11871187      call phys_state_var_init(read_climoz)
    11881188      call phys_output_var_init
    11891189      print*, '================================================='
    1190 c
     1190!
    11911191          dnwd0=0.0
    11921192          ftd=0.0
    11931193          fqd=0.0
    11941194          cin=0.
    1195 cym Attention pbase pas initialise dans concvl !!!!
     1195!ym Attention pbase pas initialise dans concvl !!!!
    11961196          pbase=0
    1197 cIM 180608
     1197!IM 180608
    11981198
    11991199        itau_con=0
     
    12021202      endif  ! first
    12031203
    1204 cym => necessaire pour iflag_con != 2   
     1204!ym => necessaire pour iflag_con != 2   
    12051205      pmfd(:,:) = 0.
    12061206      pen_u(:,:) = 0.
     
    12161216
    12171217       modname = 'physiq'
    1218 cIM
     1218!IM
    12191219      IF (ip_ebil_phy.ge.1) THEN
    12201220        DO i=1,klon
     
    12311231
    12321232
    1233 c======================================================================
     1233!======================================================================
    12341234! Gestion calendrier : mise a jour du module phys_cal_mod
    12351235!
    1236 c     CALL phys_cal_update(jD_cur,jH_cur)
    1237 
    1238 c
    1239 c Si c'est le debut, il faut initialiser plusieurs choses
    1240 c          ********
    1241 c
     1236!     CALL phys_cal_update(jD_cur,jH_cur)
     1237
     1238!
     1239! Si c'est le debut, il faut initialiser plusieurs choses
     1240!          ********
     1241!
    12421242       IF (debut) THEN
    12431243!rv
    1244 cCRinitialisation de wght_th et lalim_conv pour la definition de la couche alimentation
    1245 cde la convection a partir des caracteristiques du thermique
     1244!CRinitialisation de wght_th et lalim_conv pour la definition de la couche alimentation
     1245!de la convection a partir des caracteristiques du thermique
    12461246         wght_th(:,:)=1.
    12471247         lalim_conv(:)=1
    1248 cRC
     1248!RC
    12491249         ustar(:,:)=0.
    12501250         u10m(:,:)=0.
     
    12731273         clwcon(:,:) = 0.0
    12741274
    1275 cIM     
     1275!IM     
    12761276         IF (ip_ebil_phy.ge.1) d_h_vcol_phy=0.
    1277 c
    1278       print*,'iflag_coupl,iflag_clos,iflag_wake',
    1279      .   iflag_coupl,iflag_clos,iflag_wake
     1277!
     1278      print*,'iflag_coupl,iflag_clos,iflag_wake', &
     1279         iflag_coupl,iflag_clos,iflag_wake
    12801280      print*,'CYCLE_DIURNE', cycle_diurne
    1281 c
     1281!
    12821282      IF (iflag_con.EQ.2.AND.iflag_cldcon.GT.-1) THEN
    12831283         abort_message = 'Tiedtke needs iflag_cldcon=-2 or -1'
    12841284         CALL abort_gcm (modname,abort_message,1)
    12851285      ENDIF
    1286 c
     1286!
    12871287      IF(ok_isccp.AND.iflag_con.LE.2) THEN
    1288          abort_message = 'ISCCP-like outputs may be available for KE
    1289      .(iflag_con >= 3); for Tiedtke (iflag_con=-2) put ok_isccp=n'
     1288         abort_message = 'ISCCP-like outputs may be available for KE' // &
     1289     '(iflag_con >= 3); for Tiedtke (iflag_con=-2) put ok_isccp=n'
    12901290         CALL abort_gcm (modname,abort_message,1)
    12911291      ENDIF
    1292 c
    1293 c Initialiser les compteurs:
    1294 c
     1292!
     1293! Initialiser les compteurs:
     1294!
    12951295         itap    = 0
    12961296         itaprad = 0
     
    13201320         PRINT*,'FH WARNING : lignes a supprimer'
    13211321         ENDIF
    1322 cIM begin
    1323           print*,'physiq: clwcon rnebcon ratqs',clwcon(1,1),rnebcon(1,1)
    1324      $,ratqs(1,1)
    1325 cIM end
     1322!IM begin
     1323          print*,'physiq: clwcon rnebcon ratqs',clwcon(1,1),rnebcon(1,1) &
     1324      ,ratqs(1,1)
     1325!IM end
    13261326
    13271327
    13281328
    13291329!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    1330 c
    1331 C on remet le calendrier a zero
    1332 c
     1330!
     1331! on remet le calendrier a zero
     1332!
    13331333         IF (raz_date .eq. 1) THEN
    13341334           itau_phy = 0
    13351335         ENDIF
    13361336
    1337 cIM cf. AM 081204 BEG
     1337!IM cf. AM 081204 BEG
    13381338         PRINT*,'cycle_diurne3 =',cycle_diurne
    1339 cIM cf. AM 081204 END
    1340 c
    1341          CALL printflag( tabcntr0,radpas,ok_journe,
    1342      ,                    ok_instan, ok_region )
    1343 c
     1339!IM cf. AM 081204 END
     1340!
     1341         CALL printflag( tabcntr0,radpas,ok_journe, &
     1342                          ok_instan, ok_region )
     1343!
    13441344         IF (ABS(dtime-pdtphys).GT.0.001) THEN
    1345             WRITE(lunout,*) 'Pas physique n est pas correct',dtime,
    1346      .                        pdtphys
     1345            WRITE(lunout,*) 'Pas physique n est pas correct',dtime, &
     1346                              pdtphys
    13471347            abort_message='Pas physique n est pas correct '
    13481348!           call abort_gcm(modname,abort_message,1)
     
    13501350         ENDIF
    13511351         IF (nlon .NE. klon) THEN
    1352             WRITE(lunout,*)'nlon et klon ne sont pas coherents', nlon,
    1353      .                      klon
     1352            WRITE(lunout,*)'nlon et klon ne sont pas coherents', nlon,  &
     1353                            klon
    13541354            abort_message='nlon et klon ne sont pas coherents'
    13551355            call abort_gcm(modname,abort_message,1)
    13561356         ENDIF
    13571357         IF (nlev .NE. klev) THEN
    1358             WRITE(lunout,*)'nlev et klev ne sont pas coherents', nlev,
    1359      .                       klev
     1358            WRITE(lunout,*)'nlev et klev ne sont pas coherents', nlev, &
     1359                             klev
    13601360            abort_message='nlev et klev ne sont pas coherents'
    13611361            call abort_gcm(modname,abort_message,1)
    13621362         ENDIF
    1363 c
     1363!
    13641364         IF (dtime*REAL(radpas).GT.21600..AND.cycle_diurne) THEN
    13651365           WRITE(lunout,*)'Nbre d appels au rayonnement insuffisant'
     
    13691369         ENDIF
    13701370         WRITE(lunout,*)"Clef pour la convection, iflag_con=", iflag_con
    1371          WRITE(lunout,*)"Clef pour le driver de la convection, ok_cvl=",
    1372      .                   ok_cvl
    1373 c
    1374 cKE43
    1375 c Initialisation pour la convection de K.E. (sb):
     1371         WRITE(lunout,*)"Clef pour le driver de la convection, ok_cvl=", &
     1372                         ok_cvl
     1373!
     1374!KE43
     1375! Initialisation pour la convection de K.E. (sb):
    13761376         IF (iflag_con.GE.3) THEN
    13771377
    13781378         WRITE(lunout,*)"*** Convection de Kerry Emanuel 4.3  "
    1379          WRITE(lunout,*)
    1380      .      "On va utiliser le melange convectif des traceurs qui"
     1379         WRITE(lunout,*) &
     1380            "On va utiliser le melange convectif des traceurs qui"
    13811381         WRITE(lunout,*)"est calcule dans convect4.3"
    13821382         WRITE(lunout,*)" !!! penser aux logical flags de phytrac"
     
    13861386           ema_pcb(i)  = 0.
    13871387           ema_pct(i)  = 0.
    1388 c          ema_workcbmf(i) = 0.
     1388!          ema_workcbmf(i) = 0.
    13891389          ENDDO
    1390 cIM15/11/02 rajout initialisation ibas_con,itop_con cf. SB =>BEG
     1390!IM15/11/02 rajout initialisation ibas_con,itop_con cf. SB =>BEG
    13911391          DO i = 1, klon
    13921392           ibas_con(i) = 1
    13931393           itop_con(i) = 1
    13941394          ENDDO
    1395 cIM15/11/02 rajout initialisation ibas_con,itop_con cf. SB =>END
    1396 c===============================================================================
    1397 cCR:04.12.07: initialisations poches froides
    1398 c Controle de ALE et ALP pour la fermeture convective (jyg)
     1395!IM15/11/02 rajout initialisation ibas_con,itop_con cf. SB =>END
     1396!===============================================================================
     1397!CR:04.12.07: initialisations poches froides
     1398! Controle de ALE et ALP pour la fermeture convective (jyg)
    13991399          if (iflag_wake>=1) then
    1400             CALL ini_wake(0.,0.,it_wape_prescr,wape_prescr,fip_prescr
    1401      s                  ,alp_bl_prescr, ale_bl_prescr)
    1402 c 11/09/06 rajout initialisation ALE et ALP du wake et PBL(YU)
    1403 c        print*,'apres ini_wake iflag_cldcon=', iflag_cldcon
     1400            CALL ini_wake(0.,0.,it_wape_prescr,wape_prescr,fip_prescr &
     1401                        ,alp_bl_prescr, ale_bl_prescr)
     1402! 11/09/06 rajout initialisation ALE et ALP du wake et PBL(YU)
     1403!        print*,'apres ini_wake iflag_cldcon=', iflag_cldcon
    14041404          endif
    14051405
     
    14091409        enddo
    14101410
    1411 c================================================================================
    1412 cIM stations CFMIP
     1411!================================================================================
     1412!IM stations CFMIP
    14131413      nCFMIP=npCFMIP
    1414       OPEN(98,file='npCFMIP_param.data',status='old',
    1415      $          form='formatted',iostat=iostat)
     1414      OPEN(98,file='npCFMIP_param.data',status='old', &
     1415                form='formatted',iostat=iostat)
    14161416            if (iostat == 0) then
    14171417      READ(98,*,end=998) nCFMIP
     
    14261426      ENDIF
    14271427
    1428 c
     1428!
    14291429      ALLOCATE(tabCFMIP(nCFMIP))
    14301430      ALLOCATE(lonCFMIP(nCFMIP), latCFMIP(nCFMIP))
     
    14321432      ALLOCATE(lonGCM(nCFMIP), latGCM(nCFMIP))
    14331433      ALLOCATE(iGCM(nCFMIP), jGCM(nCFMIP))
    1434 c
    1435 c lecture des nCFMIP stations CFMIP, de leur numero
    1436 c et des coordonnees geographiques lonCFMIP, latCFMIP
    1437 c
    1438          CALL read_CFMIP_point_locations(nCFMIP, tabCFMIP,
    1439      $lonCFMIP, latCFMIP)
    1440 c
    1441 c identification des
    1442 c 1) coordonnees lonGCM, latGCM des points CFMIP dans la grille de LMDZ
    1443 c 2) indices points tabijGCM de la grille physique 1d sur klon points
    1444 c 3) indices iGCM, jGCM de la grille physique 2d
    1445 c
    1446          CALL LMDZ_CFMIP_point_locations(nCFMIP, lonCFMIP, latCFMIP,
    1447      $tabijGCM, lonGCM, latGCM, iGCM, jGCM)
    1448 c
     1434!
     1435! lecture des nCFMIP stations CFMIP, de leur numero
     1436! et des coordonnees geographiques lonCFMIP, latCFMIP
     1437!
     1438         CALL read_CFMIP_point_locations(nCFMIP, tabCFMIP,  &
     1439      lonCFMIP, latCFMIP)
     1440!
     1441! identification des
     1442! 1) coordonnees lonGCM, latGCM des points CFMIP dans la grille de LMDZ
     1443! 2) indices points tabijGCM de la grille physique 1d sur klon points
     1444! 3) indices iGCM, jGCM de la grille physique 2d
     1445!
     1446         CALL LMDZ_CFMIP_point_locations(nCFMIP, lonCFMIP, latCFMIP, &
     1447      tabijGCM, lonGCM, latGCM, iGCM, jGCM)
     1448!
    14491449            else
    14501450               ALLOCATE(tabijGCM(0))
     
    14621462           ENDDO
    14631463
    1464 c34EK
     1464!34EK
    14651465         IF (ok_orodr) THEN
    14661466
     
    14891489           ENDDO
    14901490         ENDIF
    1491 c
    1492 c
     1491!
     1492!
    14931493         lmt_pas = NINT(86400./dtime * 1.0)   ! tous les jours
    1494          WRITE(lunout,*)'La frequence de lecture surface est de ',
    1495      .                   lmt_pas
    1496 c
     1494         WRITE(lunout,*)'La frequence de lecture surface est de ',  &
     1495                         lmt_pas
     1496!
    14971497      capemaxcels = 't_max(X)'
    14981498      t2mincels = 't_min(X)'
     
    15001500      tinst = 'inst(X)'
    15011501      tave = 'ave(X)'
    1502 cIM cf. AM 081204 BEG
     1502!IM cf. AM 081204 BEG
    15031503      write(lunout,*)'AVANT HIST IFLAG_CON=',iflag_con
    1504 cIM cf. AM 081204 END
    1505 c
    1506 c=============================================================
    1507 c   Initialisation des sorties
    1508 c=============================================================
     1504!IM cf. AM 081204 END
     1505!
     1506!=============================================================
     1507!   Initialisation des sorties
     1508!=============================================================
    15091509
    15101510#ifdef CPP_IOIPSL
    15111511
    1512 c$OMP MASTER
    1513        call phys_output_open(rlon,rlat,nCFMIP,tabijGCM,
    1514      &                       iGCM,jGCM,lonGCM,latGCM,
    1515      &                       jjmp1,nlevSTD,clevSTD,rlevSTD,
    1516      &                       nbteta, ctetaSTD, dtime,ok_veget,
    1517      &                       type_ocean,iflag_pbl,ok_mensuel,ok_journe,
    1518      &                       ok_hf,ok_instan,ok_LES,ok_ade,ok_aie,
    1519      &                       read_climoz, phys_out_filestations,
    1520      &                       new_aod, aerosol_couple,
    1521      &                       flag_aerosol_strat, pdtphys, paprs, pphis,
    1522      &                       pplay, lmax_th, ptconv, ptconvth, ivap,
    1523      &                       d_t, qx, d_qx, zmasse, ok_sync)
    1524 c$OMP END MASTER
    1525 c$OMP BARRIER
     1512!$OMP MASTER
     1513       call phys_output_open(rlon,rlat,nCFMIP,tabijGCM, &
     1514                             iGCM,jGCM,lonGCM,latGCM, &
     1515                             jjmp1,nlevSTD,clevSTD,rlevSTD, &
     1516                             nbteta, ctetaSTD, dtime,ok_veget, &
     1517                             type_ocean,iflag_pbl,ok_mensuel,ok_journe, &
     1518                             ok_hf,ok_instan,ok_LES,ok_ade,ok_aie,  &
     1519                             read_climoz, phys_out_filestations, &
     1520                             new_aod, aerosol_couple, &
     1521                             flag_aerosol_strat, pdtphys, paprs, pphis,  &
     1522                             pplay, lmax_th, ptconv, ptconvth, ivap,  &
     1523                             d_t, qx, d_qx, zmasse, ok_sync)
     1524!$OMP END MASTER
     1525!$OMP BARRIER
    15261526
    15271527#undef histISCCP
     
    15381538         ecrit_tra = ecrit_tra * un_jour
    15391539       
    1540 cXXXPB Positionner date0 pour initialisation de ORCHIDEE
     1540!XXXPB Positionner date0 pour initialisation de ORCHIDEE
    15411541      date0 = jD_ref
    15421542      WRITE(*,*) 'physiq date0 : ',date0
    1543 c
    1544 c
    1545 c
    1546 c Prescrire l'ozone dans l'atmosphere
    1547 c
    1548 c
    1549 cc         DO i = 1, klon
    1550 cc         DO k = 1, klev
    1551 cc            CALL o3cm (paprs(i,k)/100.,paprs(i,k+1)/100., wo(i,k),20)
    1552 cc         ENDDO
    1553 cc         ENDDO
    1554 c
     1543!
     1544!
     1545!
     1546! Prescrire l'ozone dans l'atmosphere
     1547!
     1548!
     1549!c         DO i = 1, klon
     1550!c         DO k = 1, klev
     1551!c            CALL o3cm (paprs(i,k)/100.,paprs(i,k+1)/100., wo(i,k),20)
     1552!c         ENDDO
     1553!c         ENDDO
     1554!
    15551555      IF (type_trac == 'inca') THEN
    15561556#ifdef INCA
     
    15621562         WRITE(lunout,*) 'initial time chemini', days_elapsed, calday
    15631563
    1564          CALL chemini(
    1565      $                   rg,
    1566      $                   ra,
    1567      $                   airephy,
    1568      $                   rlat,
    1569      $                   rlon,
    1570      $                   presnivs,
    1571      $                   calday,
    1572      $                   klon,
    1573      $                   nqtot,
    1574      $                   pdtphys,
    1575      $                   annee_ref,
    1576      $                   day_ref,
    1577      $                   itau_phy)
     1564         CALL chemini(  &
     1565                         rg, &
     1566                         ra, &
     1567                         airephy, &
     1568                         rlat, &
     1569                         rlon, &
     1570                         presnivs, &
     1571                         calday, &
     1572                         klon, &
     1573                         nqtot, &
     1574                         pdtphys, &
     1575                         annee_ref, &
     1576                         day_ref,  &
     1577                         itau_phy)
    15781578
    15791579         CALL VTe(VTinca)
     
    15811581#endif
    15821582      END IF
    1583 c
    1584 c
     1583!
     1584!
    15851585!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    15861586! Nouvelle initialisation pour le rayonnement RRTM
     
    15891589      call iniradia(klon,klev,paprs(1,1:klev+1))
    15901590
    1591 C$omp single
     1591!$omp single
    15921592      if (read_climoz >= 1) then
    15931593         call open_climoz(ncid_climoz, press_climoz)
    15941594      END IF
    1595 C$omp end single
    1596 c
    1597 cIM betaCRF
     1595!$omp end single
     1596!
     1597!IM betaCRF
    15981598      pfree=70000. !Pa
    15991599      beta_pbl=1.
     
    16051605      mskocean_beta=.FALSE.
    16061606
    1607       OPEN(99,file='beta_crf.data',status='old',
    1608      $          form='formatted',err=9999)
     1607      OPEN(99,file='beta_crf.data',status='old', &
     1608                form='formatted',err=9999)
    16091609      READ(99,*,end=9998) pfree
    16101610      READ(99,*,end=9998) beta_pbl
     
    16341634!
    16351635      itap   = itap + 1
    1636 c
     1636!
    16371637!
    16381638! Update fraction of the sub-surfaces (pctsrf) and
     
    16401640! on the surface fraction.
    16411641!
    1642       CALL change_srf_frac(itap, dtime, days_elapsed+1,
    1643      *     pctsrf, falb1, falb2, ftsol, ustar, u10m, v10m, pbl_tke)
     1642      CALL change_srf_frac(itap, dtime, days_elapsed+1,  &
     1643           pctsrf, falb1, falb2, ftsol, ustar, u10m, v10m, pbl_tke)
    16441644
    16451645
     
    16601660      dq0(:,:)=0.
    16611661      dql0(:,:)=0.
    1662 c
    1663 c Mettre a zero des variables de sortie (pour securite)
    1664 c
     1662!
     1663! Mettre a zero des variables de sortie (pour securite)
     1664!
    16651665      DO i = 1, klon
    16661666         d_ps(i) = 0.0
     
    16951695! RomP <<<
    16961696
    1697 c
    1698 c Ne pas affecter les valeurs entrees de u, v, h, et q
    1699 c
     1697!
     1698! Ne pas affecter les valeurs entrees de u, v, h, et q
     1699!
    17001700      DO k = 1, klev
    17011701      DO i = 1, klon
     
    17241724      ENDDO
    17251725      ENDIF
    1726 C
     1726!
    17271727      DO i = 1, klon
    17281728        ztsol(i) = 0.
     
    17331733        ENDDO
    17341734      ENDDO
    1735 cIM
     1735!IM
    17361736      IF (ip_ebil_phy.ge.1) THEN
    17371737        ztit='after dynamic'
    1738         CALL diagetpq(airephy,ztit,ip_ebil_phy,1,1,dtime
    1739      e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
    1740      s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    1741 C     Comme les tendances de la physique sont ajoute dans la dynamique,
    1742 C     on devrait avoir que la variation d'entalpie par la dynamique
    1743 C     est egale a la variation de la physique au pas de temps precedent.
    1744 C     Donc la somme de ces 2 variations devrait etre nulle.
    1745         call diagphy(airephy,ztit,ip_ebil_phy
    1746      e      , zero_v, zero_v, zero_v, zero_v, zero_v
    1747      e      , zero_v, zero_v, zero_v, ztsol
    1748      e      , d_h_vcol+d_h_vcol_phy, d_qt, 0.
    1749      s      , fs_bound, fq_bound )
     1738        CALL diagetpq(airephy,ztit,ip_ebil_phy,1,1,dtime &
     1739            , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
     1740            , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     1741!     Comme les tendances de la physique sont ajoute dans la dynamique,
     1742!     on devrait avoir que la variation d'entalpie par la dynamique
     1743!     est egale a la variation de la physique au pas de temps precedent.
     1744!     Donc la somme de ces 2 variations devrait etre nulle.
     1745        call diagphy(airephy,ztit,ip_ebil_phy &
     1746            , zero_v, zero_v, zero_v, zero_v, zero_v &
     1747            , zero_v, zero_v, zero_v, ztsol &
     1748            , d_h_vcol+d_h_vcol_phy, d_qt, 0. &
     1749            , fs_bound, fq_bound )
    17501750      END IF
    17511751
    1752 c Diagnostiquer la tendance dynamique
    1753 c
     1752! Diagnostiquer la tendance dynamique
     1753!
    17541754      IF (ancien_ok) THEN
    17551755         DO k = 1, klev
     
    17661766          DO k = 1, klev
    17671767          DO i = 1, klon
    1768             d_tr_dyn(i,k,iq-2)=
    1769      $       (tr_seri(i,k,iq-2)-tr_ancien(i,k,iq-2))/dtime
     1768            d_tr_dyn(i,k,iq-2)= &
     1769             (tr_seri(i,k,iq-2)-tr_ancien(i,k,iq-2))/dtime
    17701770!         iiq=niadv(iq)
    17711771!         print*,i,k," d_tr_dyn",d_tr_dyn(i,k,iq-2),"tra:",iq,tname(iiq)
     
    17971797         ancien_ok = .TRUE.
    17981798      ENDIF
    1799 c
    1800 c Ajouter le geopotentiel du sol:
    1801 c
     1799!
     1800! Ajouter le geopotentiel du sol:
     1801!
    18021802      DO k = 1, klev
    18031803      DO i = 1, klon
     
    18051805      ENDDO
    18061806      ENDDO
    1807 c
    1808 c Verifier les temperatures
    1809 c
    1810 cIM BEG
     1807!
     1808! Verifier les temperatures
     1809!
     1810!IM BEG
    18111811      IF (check) THEN
    18121812       amn=MIN(ftsol(1,is_ter),1000.)
     
    18161816        amx=MAX(ftsol(i,is_ter),amx)
    18171817       ENDDO
    1818 c
     1818!
    18191819       PRINT*,' debut avant hgardfou min max ftsol',itap,amn,amx
    18201820      ENDIF !(check) THEN
    1821 cIM END
    1822 c
     1821!IM END
     1822!
    18231823      CALL hgardfou(t_seri,ftsol,'debutphy')
    1824 c
    1825 cIM BEG
     1824!
     1825!IM BEG
    18261826      IF (check) THEN
    18271827       amn=MIN(ftsol(1,is_ter),1000.)
     
    18311831        amx=MAX(ftsol(i,is_ter),amx)
    18321832       ENDDO
    1833 c
     1833!
    18341834       PRINT*,' debut apres hgardfou min max ftsol',itap,amn,amx
    18351835      ENDIF !(check) THEN
    1836 cIM END
    1837 c
    1838 c Mettre en action les conditions aux limites (albedo, sst, etc.).
    1839 c Prescrire l'ozone et calculer l'albedo sur l'ocean.
    1840 c
     1836!IM END
     1837!
     1838! Mettre en action les conditions aux limites (albedo, sst, etc.).
     1839! Prescrire l'ozone et calculer l'albedo sur l'ocean.
     1840!
    18411841      if (read_climoz >= 1) then
    1842 C        Ozone from a file
     1842!        Ozone from a file
    18431843!        Update required ozone index:
    1844          ro3i = int((days_elapsed + jh_cur - jh_1jan)
    1845      $        / ioget_year_len(year_cur) * 360.) + 1
     1844         ro3i = int((days_elapsed + jh_cur - jh_1jan) &
     1845              / ioget_year_len(year_cur) * 360.) + 1
    18461846         if (ro3i == 361) ro3i = 360
    1847 C        (This should never occur, except perhaps because of roundup
    1848 C        error. See documentation.)
     1847!        (This should never occur, except perhaps because of roundup
     1848!        error. See documentation.)
    18491849         if (ro3i /= co3i) then
    1850 C           Update ozone field:
     1850!           Update ozone field:
    18511851            if (read_climoz == 1) then
    1852                call regr_pr_av(ncid_climoz, (/"tro3"/), julien=ro3i,
    1853      $              press_in_edg=press_climoz, paprs=paprs, v3=wo)
     1852               call regr_pr_av(ncid_climoz, (/"tro3"/), julien=ro3i, &
     1853                    press_in_edg=press_climoz, paprs=paprs, v3=wo)
    18541854            else
    1855 C              read_climoz == 2
    1856                call regr_pr_av(ncid_climoz,
    1857      $              (/"tro3         ", "tro3_daylight"/),
    1858      $              julien=ro3i, press_in_edg=press_climoz, paprs=paprs,
    1859      $              v3=wo)
     1855!              read_climoz == 2
     1856               call regr_pr_av(ncid_climoz, &
     1857                    (/"tro3         ", "tro3_daylight"/), &
     1858                    julien=ro3i, press_in_edg=press_climoz, paprs=paprs, &
     1859                    v3=wo)
    18601860            end if
    18611861!           Convert from mole fraction of ozone to column density of ozone in a
    18621862!           cell, in kDU:
    1863             forall (l = 1: read_climoz) wo(:, :, l) = wo(:, :, l)
    1864      $           * rmo3 / rmd * zmasse / dobson_u / 1e3
    1865 C           (By regridding ozone values for LMDZ only once every 360th of
    1866 C           year, we have already neglected the variation of pressure in one
    1867 C           360th of year. So do not recompute "wo" at each time step even if
    1868 C           "zmasse" changes a little.)
     1863            forall (l = 1: read_climoz) wo(:, :, l) = wo(:, :, l) &
     1864                 * rmo3 / rmd * zmasse / dobson_u / 1e3
     1865!           (By regridding ozone values for LMDZ only once every 360th of
     1866!           year, we have already neglected the variation of pressure in one
     1867!           360th of year. So do not recompute "wo" at each time step even if
     1868!           "zmasse" changes a little.)
    18691869            co3i = ro3i
    18701870         end if
    18711871      elseif (MOD(itap-1,lmt_pas) == 0) THEN
    1872 C        Once per day, update ozone from Royer:
     1872!        Once per day, update ozone from Royer:
    18731873         wo(:, :, 1) = ozonecm(rlat, paprs, rjour=real(days_elapsed+1))
    18741874      ENDIF
    1875 c
    1876 c Re-evaporer l'eau liquide nuageuse
    1877 c
     1875!
     1876! Re-evaporer l'eau liquide nuageuse
     1877!
    18781878      DO k = 1, klev  ! re-evaporation de l'eau liquide nuageuse
    18791879      DO i = 1, klon
    18801880         zlvdcp=RLVTT/RCPD/(1.0+RVTMP2*q_seri(i,k))
    1881 cjyg<
    1882 c      Attention : Arnaud a propose des formules completement differentes
    1883 c                  A verifier !!!
     1881!jyg<
     1882!      Attention : Arnaud a propose des formules completement differentes
     1883!                  A verifier !!!
    18841884         zlsdcp=RLSTT/RCPD/(1.0+RVTMP2*q_seri(i,k))
    18851885         IF (iflag_ice_thermo .EQ. 0) THEN
    18861886           zlsdcp=zlvdcp
    18871887         ENDIF
    1888 c>jyg
     1888!>jyg
    18891889
    18901890         zdelta = MAX(0.,SIGN(1.,RTT-t_seri(i,k)))
    18911891         zb = MAX(0.0,ql_seri(i,k))
    1892          za = - MAX(0.0,ql_seri(i,k))
    1893      .                  * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta)
     1892         za = - MAX(0.0,ql_seri(i,k)) &
     1893                        * (zlvdcp*(1.-zdelta)+zlsdcp*zdelta)
    18941894         t_seri(i,k) = t_seri(i,k) + za
    18951895         q_seri(i,k) = q_seri(i,k) + zb
     
    18991899      ENDDO
    19001900      ENDDO
    1901 cIM
     1901!IM
    19021902      IF (ip_ebil_phy.ge.2) THEN
    19031903        ztit='after reevap'
    1904         CALL diagetpq(airephy,ztit,ip_ebil_phy,2,1,dtime
    1905      e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
    1906      s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    1907          call diagphy(airephy,ztit,ip_ebil_phy
    1908      e      , zero_v, zero_v, zero_v, zero_v, zero_v
    1909      e      , zero_v, zero_v, zero_v, ztsol
    1910      e      , d_h_vcol, d_qt, d_ec
    1911      s      , fs_bound, fq_bound )
    1912 C
     1904        CALL diagetpq(airephy,ztit,ip_ebil_phy,2,1,dtime &
     1905            , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
     1906            , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     1907         call diagphy(airephy,ztit,ip_ebil_phy &
     1908            , zero_v, zero_v, zero_v, zero_v, zero_v &
     1909            , zero_v, zero_v, zero_v, ztsol &
     1910            , d_h_vcol, d_qt, d_ec &
     1911            , fs_bound, fq_bound )
     1912!
    19131913      END IF
    19141914
    1915 c
    1916 c=========================================================================
     1915!
     1916!=========================================================================
    19171917! Calculs de l'orbite.
    19181918! Necessaires pour le rayonnement et la surface (calcul de l'albedo).
     
    19381938      endif
    19391939      if(prt_level.ge.1)                                                &
    1940      &    write(lunout,*)'Longitude solaire ',zlongi,solarlong0,dist
     1940         write(lunout,*)'Longitude solaire ',zlongi,solarlong0,dist
    19411941
    19421942
     
    19671967      endif
    19681968
    1969 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
    1970 c Appel au pbl_surface : Planetary Boudary Layer et Surface
    1971 c Cela implique tous les interactions des sous-surfaces et la partie diffusion
    1972 c turbulent du couche limit.
    1973 c
    1974 c Certains varibales de sorties de pbl_surface sont utiliser que pour
    1975 c ecriture des fihiers hist_XXXX.nc, ces sont :
    1976 c   qsol,      zq2m,      s_pblh,  s_lcl,
    1977 c   s_capCL,   s_oliqCL,  s_cteiCL,s_pblT,
    1978 c   s_therm,   s_trmb1,   s_trmb2, s_trmb3,
    1979 c   zxrugs,    zu10m,     zv10m,   fder,
    1980 c   zxqsurf,   rh2m,      zxfluxu, zxfluxv,
    1981 c   frugs,     agesno,    fsollw,  fsolsw,
    1982 c   d_ts,      fevap,     fluxlat, t2m,
    1983 c   wfbils,    wfbilo,    fluxt,   fluxu, fluxv,
    1984 c
    1985 c Certains ne sont pas utiliser du tout :
    1986 c   dsens, devap, zxsnow, zxfluxt, zxfluxq, q2m, fluxq
    1987 c
    1988 
    1989 c Calcul de l'humidite de saturation au niveau du sol
     1969!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
     1970! Appel au pbl_surface : Planetary Boudary Layer et Surface
     1971! Cela implique tous les interactions des sous-surfaces et la partie diffusion
     1972! turbulent du couche limit.
     1973!
     1974! Certains varibales de sorties de pbl_surface sont utiliser que pour
     1975! ecriture des fihiers hist_XXXX.nc, ces sont :
     1976!   qsol,      zq2m,      s_pblh,  s_lcl,
     1977!   s_capCL,   s_oliqCL,  s_cteiCL,s_pblT,
     1978!   s_therm,   s_trmb1,   s_trmb2, s_trmb3,
     1979!   zxrugs,    zu10m,     zv10m,   fder,
     1980!   zxqsurf,   rh2m,      zxfluxu, zxfluxv,
     1981!   frugs,     agesno,    fsollw,  fsolsw,
     1982!   d_ts,      fevap,     fluxlat, t2m,
     1983!   wfbils,    wfbilo,    fluxt,   fluxu, fluxv,
     1984!
     1985! Certains ne sont pas utiliser du tout :
     1986!   dsens, devap, zxsnow, zxfluxt, zxfluxq, q2m, fluxq
     1987!
     1988
     1989! Calcul de l'humidite de saturation au niveau du sol
    19901990
    19911991
     
    19931993      if (iflag_pbl/=0) then
    19941994
    1995       CALL pbl_surface(
    1996      e     dtime,     date0,     itap,    days_elapsed+1,
    1997      e     debut,     lafin,
    1998      e     rlon,      rlat,      rugoro,  rmu0,     
    1999      e     rain_fall, snow_fall, solsw,   sollw,   
    2000      e     t_seri,    q_seri,    u_seri,  v_seri,   
    2001      e     pplay,     paprs,     pctsrf,           
    2002      +     ftsol,falb1,falb2,ustar,u10m,v10m,wstar,
    2003      s     sollwdown, cdragh,    cdragm,  u1,    v1,
    2004      s     albsol1,   albsol2,   sens,    evap, 
    2005      s     zxtsol,    zxfluxlat, zt2m,    qsat2m,
    2006      s     d_t_vdf,   d_q_vdf,   d_u_vdf, d_v_vdf, d_t_diss,
    2007      s     coefh,     coefm,     slab_wfbils,               
    2008      d     qsol,      zq2m,      s_pblh,  s_lcl,
    2009      d     s_capCL,   s_oliqCL,  s_cteiCL,s_pblT,
    2010      d     s_therm,   s_trmb1,   s_trmb2, s_trmb3,
    2011      d     zxrugs,    zustar, zu10m,     zv10m,   fder,
    2012      d     zxqsurf,   rh2m,      zxfluxu, zxfluxv,
    2013      d     frugs,     agesno,    fsollw,  fsolsw,
    2014      d     d_ts,      fevap,     fluxlat, t2m,
    2015      d     wfbils,    wfbilo,    fluxt,   fluxu,  fluxv,
    2016      -     dsens,     devap,     zxsnow,
    2017      -     zxfluxt,   zxfluxq,   q2m,     fluxq, pbl_tke )
     1995      CALL pbl_surface(  &
     1996           dtime,     date0,     itap,    days_elapsed+1, &
     1997           debut,     lafin, &
     1998           rlon,      rlat,      rugoro,  rmu0,      &
     1999           rain_fall, snow_fall, solsw,   sollw,     &
     2000           t_seri,    q_seri,    u_seri,  v_seri,    &
     2001           pplay,     paprs,     pctsrf,             &
     2002           ftsol,falb1,falb2,ustar,u10m,v10m,wstar, &
     2003           sollwdown, cdragh,    cdragm,  u1,    v1, &
     2004           albsol1,   albsol2,   sens,    evap,   &
     2005           zxtsol,    zxfluxlat, zt2m,    qsat2m,  &
     2006           d_t_vdf,   d_q_vdf,   d_u_vdf, d_v_vdf, d_t_diss, &
     2007           coefh,     coefm,     slab_wfbils,                 &
     2008           qsol,      zq2m,      s_pblh,  s_lcl, &
     2009           s_capCL,   s_oliqCL,  s_cteiCL,s_pblT, &
     2010           s_therm,   s_trmb1,   s_trmb2, s_trmb3, &
     2011           zxrugs,    zustar, zu10m,     zv10m,   fder, &
     2012           zxqsurf,   rh2m,      zxfluxu, zxfluxv, &
     2013           frugs,     agesno,    fsollw,  fsolsw, &
     2014           d_ts,      fevap,     fluxlat, t2m, &
     2015           wfbils,    wfbilo,    fluxt,   fluxu,  fluxv, &
     2016           dsens,     devap,     zxsnow, &
     2017           zxfluxt,   zxfluxq,   q2m,     fluxq, pbl_tke )
    20182018
    20192019
    20202020!-----------------------------------------------------------------------------------------
    20212021! ajout des tendances de la diffusion turbulente
    2022       CALL add_phys_tend
    2023      s     (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,'vdf')
     2022      CALL add_phys_tend &
     2023           (d_u_vdf,d_v_vdf,d_t_vdf+d_t_diss,d_q_vdf,dql0,'vdf')
    20242024!-----------------------------------------------------------------------------------------
    20252025
     
    20312031      endif
    20322032
    2033          CALL evappot(klon,nbsrf,ftsol,pplay(:,1),cdragh,
    2034      e      t_seri(:,1),q_seri(:,1),u_seri(:,1),v_seri(:,1),evap_pot)
     2033         CALL evappot(klon,nbsrf,ftsol,pplay(:,1),cdragh, &
     2034            t_seri(:,1),q_seri(:,1),u_seri(:,1),v_seri(:,1),evap_pot)
    20352035
    20362036
    20372037      IF (ip_ebil_phy.ge.2) THEN
    20382038        ztit='after surface_main'
    2039         CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime
    2040      e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
    2041      s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    2042          call diagphy(airephy,ztit,ip_ebil_phy
    2043      e      , zero_v, zero_v, zero_v, zero_v, sens
    2044      e      , evap  , zero_v, zero_v, ztsol
    2045      e      , d_h_vcol, d_qt, d_ec
    2046      s      , fs_bound, fq_bound )
     2039        CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     2040            , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
     2041            , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     2042         call diagphy(airephy,ztit,ip_ebil_phy &
     2043            , zero_v, zero_v, zero_v, zero_v, sens &
     2044            , evap  , zero_v, zero_v, ztsol &
     2045            , d_h_vcol, d_qt, d_ec &
     2046            , fs_bound, fq_bound )
    20472047      END IF
    20482048
    20492049      ENDIF
    2050 c =================================================================== c
    2051 c   Calcul de Qsat
     2050! =================================================================== c
     2051!   Calcul de Qsat
    20522052
    20532053      DO k = 1, klev
     
    20752075      write(lunout,'(i4,f15.4)') (k,1000.*zqsat(igout,k),k=1,klev)
    20762076      endif
    2077 c
    2078 c Appeler la convection (au choix)
    2079 c
     2077!
     2078! Appeler la convection (au choix)
     2079!
    20802080      DO k = 1, klev
    20812081      DO i = 1, klon
    2082          conv_q(i,k) = d_q_dyn(i,k)
    2083      .               + d_q_vdf(i,k)/dtime
    2084          conv_t(i,k) = d_t_dyn(i,k)
    2085      .               + d_t_vdf(i,k)/dtime
     2082         conv_q(i,k) = d_q_dyn(i,k)  &
     2083                     + d_q_vdf(i,k)/dtime
     2084         conv_t(i,k) = d_t_dyn(i,k)  &
     2085                     + d_t_vdf(i,k)/dtime
    20862086      ENDDO
    20872087      ENDDO
     
    20982098         DO k = 1, klev
    20992099         DO i = 1, klon
    2100             z_avant(i) = z_avant(i) + (q_seri(i,k)+ql_seri(i,k))
    2101      .                        *(paprs(i,k)-paprs(i,k+1))/RG
     2100            z_avant(i) = z_avant(i) + (q_seri(i,k)+ql_seri(i,k)) &
     2101                              *(paprs(i,k)-paprs(i,k+1))/RG
    21022102         ENDDO
    21032103         ENDDO
    21042104      ENDIF
    21052105
    2106 c Calcule de vitesse verticale a partir de flux de masse verticale
     2106! Calcule de vitesse verticale a partir de flux de masse verticale
    21072107      DO k = 1, klev
    21082108         DO i = 1, klon
     
    21102110         END DO
    21112111      END DO
    2112       if (prt_level.ge.1) write(lunout,*) 'omega(igout, :) = ',
    2113      $     omega(igout, :)
     2112      if (prt_level.ge.1) write(lunout,*) 'omega(igout, :) = ', &
     2113           omega(igout, :)
    21142114
    21152115      IF (iflag_con.EQ.1) THEN
    21162116        abort_message ='reactiver le call conlmd dans physiq.F'
    21172117        CALL abort_gcm (modname,abort_message,1)
    2118 c     CALL conlmd (dtime, paprs, pplay, t_seri, q_seri, conv_q,
    2119 c    .             d_t_con, d_q_con,
    2120 c    .             rain_con, snow_con, ibas_con, itop_con)
     2118!     CALL conlmd (dtime, paprs, pplay, t_seri, q_seri, conv_q,
     2119!    .             d_t_con, d_q_con,
     2120!    .             rain_con, snow_con, ibas_con, itop_con)
    21212121      ELSE IF (iflag_con.EQ.2) THEN
    2122       CALL conflx(dtime, paprs, pplay, t_seri, q_seri,
    2123      e            conv_t, conv_q, -evap, omega,
    2124      s            d_t_con, d_q_con, rain_con, snow_con,
    2125      s            pmfu, pmfd, pen_u, pde_u, pen_d, pde_d,
    2126      s            kcbot, kctop, kdtop, pmflxr, pmflxs)
     2122      CALL conflx(dtime, paprs, pplay, t_seri, q_seri, &
     2123                  conv_t, conv_q, -evap, omega, &
     2124                  d_t_con, d_q_con, rain_con, snow_con, &
     2125                  pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, &
     2126                  kcbot, kctop, kdtop, pmflxr, pmflxs)
    21272127      d_u_con = 0.
    21282128      d_v_con = 0.
     
    21352135      ENDDO
    21362136      ELSE IF (iflag_con.GE.3) THEN
    2137 c nb of tracers for the KE convection:
    2138 c MAF la partie traceurs est faite dans phytrac
    2139 c on met ntra=1 pour limiter les appels mais on peut
    2140 c supprimer les calculs / ftra.
     2137! nb of tracers for the KE convection:
     2138! MAF la partie traceurs est faite dans phytrac
     2139! on met ntra=1 pour limiter les appels mais on peut
     2140! supprimer les calculs / ftra.
    21412141              ntra = 1
    21422142
    2143 c=====================================================================================
    2144 cajout pour la parametrisation des poches froides:
    2145 ccalcul de t_wake et t_undi: si pas de poches froides, t_wake=t_undi=t_seri
     2143!=====================================================================================
     2144!ajout pour la parametrisation des poches froides:
     2145!calcul de t_wake et t_undi: si pas de poches froides, t_wake=t_undi=t_seri
    21462146      do k=1,klev
    21472147            do i=1,klon
    21482148             if (iflag_wake>=1) then
    2149              t_wake(i,k) = t_seri(i,k)
    2150      .           +(1-wake_s(i))*wake_deltat(i,k)
    2151              q_wake(i,k) = q_seri(i,k)
    2152      .           +(1-wake_s(i))*wake_deltaq(i,k)
    2153              t_undi(i,k) = t_seri(i,k)
    2154      .           -wake_s(i)*wake_deltat(i,k)
    2155              q_undi(i,k) = q_seri(i,k)
    2156      .           -wake_s(i)*wake_deltaq(i,k)
     2149             t_wake(i,k) = t_seri(i,k) &
     2150                 +(1-wake_s(i))*wake_deltat(i,k)
     2151             q_wake(i,k) = q_seri(i,k) &
     2152                 +(1-wake_s(i))*wake_deltaq(i,k)
     2153             t_undi(i,k) = t_seri(i,k) &
     2154                 -wake_s(i)*wake_deltat(i,k)
     2155             q_undi(i,k) = q_seri(i,k) &
     2156                 -wake_s(i)*wake_deltaq(i,k)
    21572157             else
    21582158             t_wake(i,k) = t_seri(i,k)
     
    21642164         enddo
    21652165     
    2166 cc--   Calcul de l'energie disponible ALE (J/kg) et de la puissance disponible ALP (W/m2)
    2167 cc--    pour le soulevement des particules dans le modele convectif
    2168 c
     2166!c--   Calcul de l'energie disponible ALE (J/kg) et de la puissance disponible ALP (W/m2)
     2167!c--    pour le soulevement des particules dans le modele convectif
     2168!
    21692169      do i = 1,klon
    21702170        ALE(i) = 0.
    21712171        ALP(i) = 0.
    21722172      enddo
    2173 c
    2174 ccalcul de ale_wake et alp_wake
     2173!
     2174!calcul de ale_wake et alp_wake
    21752175       if (iflag_wake>=1) then
    21762176         if (itap .le. it_wape_prescr) then
     
    21812181         else
    21822182          do i = 1,klon
    2183 cjyg  ALE=WAPE au lieu de ALE = 1/2 Cstar**2
    2184 ccc           ale_wake(i) = 0.5*wake_cstar(i)**2
     2183!jyg  ALE=WAPE au lieu de ALE = 1/2 Cstar**2
     2184!cc           ale_wake(i) = 0.5*wake_cstar(i)**2
    21852185           ale_wake(i) = wake_pe(i)
    21862186           alp_wake(i) = wake_fip(i)
     
    21932193         enddo
    21942194       endif
    2195 ccombinaison avec ale et alp de couche limite: constantes si pas de couplage, valeurs calculees
    2196 cdans le thermique sinon
     2195!combinaison avec ale et alp de couche limite: constantes si pas de couplage, valeurs calculees
     2196!dans le thermique sinon
    21972197       if (iflag_coupl.eq.0) then
    2198           if (debut.and.prt_level.gt.9)
    2199      $                     WRITE(lunout,*)'ALE et ALP imposes'
     2198          if (debut.and.prt_level.gt.9) &
     2199                           WRITE(lunout,*)'ALE et ALP imposes'
    22002200          do i = 1,klon
    2201 con ne couple que ale
    2202 c           ALE(i) = max(ale_wake(i),Ale_bl(i))
     2201!on ne couple que ale
     2202!           ALE(i) = max(ale_wake(i),Ale_bl(i))
    22032203            ALE(i) = max(ale_wake(i),ale_bl_prescr)
    2204 con ne couple que alp
    2205 c           ALP(i) = alp_wake(i) + Alp_bl(i)
     2204!on ne couple que alp
     2205!           ALP(i) = alp_wake(i) + Alp_bl(i)
    22062206            ALP(i) = alp_wake(i) + alp_bl_prescr
    22072207          enddo
     
    22232223       do i = 1,klon
    22242224          ALE(i) = max(ale_wake(i),Ale_bl(i))
    2225 ccc nrlmd le 10/04/2012----------Stochastic triggering--------------
     2225!cc nrlmd le 10/04/2012----------Stochastic triggering--------------
    22262226          if (iflag_trig_bl.ge.1) then
    22272227             ALE(i) = max(ale_wake(i),Ale_bl_trig(i))
    22282228          endif
    2229 ccc fin nrlmd le 10/04/2012
     2229!cc fin nrlmd le 10/04/2012
    22302230          if (alp_offset>=0.) then
    22312231            ALP(i) = alp_wake(i) + Alp_bl(i) + alp_offset ! modif sb
     
    22332233            ALP(i)=alp_wake(i)+Alp_bl(i)+alp_offset*min(omega(i,6),0.)
    22342234            if (alp(i)<0.) then
    2235                print*,'ALP ',alp(i),alp_wake(i)
    2236      s         ,Alp_bl(i),alp_offset*min(omega(i,6),0.)
     2235               print*,'ALP ',alp(i),alp_wake(i) &
     2236               ,Alp_bl(i),alp_offset*min(omega(i,6),0.)
    22372237            endif
    22382238          endif
     
    22442244          if (alp(i)>alp_max) then
    22452245             IF(prt_level>9)WRITE(lunout,*)                             &
    2246      &       'WARNING SUPER ALP (seuil=',alp_max,
    2247      ,       '): i, alp, alp_wake,ale',i,alp(i),alp_wake(i),ale(i)
     2246            'WARNING SUPER ALP (seuil=',alp_max, &
     2247             '): i, alp, alp_wake,ale',i,alp(i),alp_wake(i),ale(i)
    22482248             alp(i)=alp_max
    22492249          endif
    22502250          if (ale(i)>ale_max) then
    22512251             IF(prt_level>9)WRITE(lunout,*)                             &
    2252      &       'WARNING SUPER ALE (seuil=',ale_max,
    2253      ,       '): i, alp, alp_wake,ale',i,ale(i),ale_wake(i),alp(i)
     2252            'WARNING SUPER ALE (seuil=',ale_max, &
     2253             '): i, alp, alp_wake,ale',i,ale(i),ale_wake(i),alp(i)
    22542254             ale(i)=ale_max
    22552255          endif
    22562256       enddo
    22572257
    2258 cfin calcul ale et alp
    2259 c=================================================================================================
    2260 
    2261 
    2262 c sb, oct02:
    2263 c Schema de convection modularise et vectorise:
    2264 c (driver commun aux versions 3 et 4)
    2265 c
     2258!fin calcul ale et alp
     2259!=================================================================================================
     2260
     2261
     2262! sb, oct02:
     2263! Schema de convection modularise et vectorise:
     2264! (driver commun aux versions 3 et 4)
     2265!
    22662266          IF (ok_cvl) THEN ! new driver for convectL
    22672267
     
    22712271                nbtr_tmp=nbtr
    22722272             END IF
    2273 cjyg   iflag_con est dans clesphys
    2274 cc          CALL concvl (iflag_con,iflag_clos,
    2275           CALL concvl (iflag_clos,
    2276      .        dtime,paprs,pplay,t_undi,q_undi,
    2277      .        t_wake,q_wake,wake_s,
    2278      .        u_seri,v_seri,tr_seri,nbtr_tmp,
    2279      .        ALE,ALP,
    2280      .        sig1,w01,
    2281      .        d_t_con,d_q_con,d_u_con,d_v_con,d_tr,
    2282      .        rain_con, snow_con, ibas_con, itop_con, sigd,
    2283      .        ema_cbmf,plcl,plfc,wbeff,upwd,dnwd,dnwd0,
    2284      .        Ma,mip,Vprecip,cape,cin,tvp,Tconv,iflagctrl,
    2285      .        pbase,bbase,dtvpdt1,dtvpdq1,dplcldt,dplcldr,qcondc,wd,
     2273!jyg   iflag_con est dans clesphys
     2274!c          CALL concvl (iflag_con,iflag_clos,
     2275          CALL concvl (iflag_clos, &
     2276              dtime,paprs,pplay,t_undi,q_undi, &
     2277              t_wake,q_wake,wake_s, &
     2278              u_seri,v_seri,tr_seri,nbtr_tmp, &
     2279              ALE,ALP, &
     2280              sig1,w01, &
     2281              d_t_con,d_q_con,d_u_con,d_v_con,d_tr, &
     2282              rain_con, snow_con, ibas_con, itop_con, sigd, &
     2283              ema_cbmf,plcl,plfc,wbeff,upwd,dnwd,dnwd0, &
     2284              Ma,mip,Vprecip,cape,cin,tvp,Tconv,iflagctrl, &
     2285              pbase,bbase,dtvpdt1,dtvpdq1,dplcldt,dplcldr,qcondc,wd, &
    22862286! RomP >>>
    22872287!!     .        pmflxr,pmflxs,da,phi,mp,
    22882288!!     .        ftd,fqd,lalim_conv,wght_th)
    2289      .        pmflxr,pmflxs,da,phi,mp,phi2,d1a,dam,sij,clw,elij,
    2290      .        ftd,fqd,lalim_conv,wght_th,
    2291      .        ev, ep,epmlmMm,eplaMm,
    2292      .        wdtrainA,wdtrainM)
     2289              pmflxr,pmflxs,da,phi,mp,phi2,d1a,dam,sij,clw,elij, &
     2290              ftd,fqd,lalim_conv,wght_th, &
     2291              ev, ep,epmlmMm,eplaMm, &
     2292              wdtrainA,wdtrainM)
    22932293! RomP <<<
    22942294
    2295 cIM begin
    2296 c       print*,'physiq: cin pbase dnwd0 ftd fqd ',cin(1),pbase(1),
    2297 c    .dnwd0(1,1),ftd(1,1),fqd(1,1)
    2298 cIM end
    2299 cIM cf. FH
     2295!IM begin
     2296!       print*,'physiq: cin pbase dnwd0 ftd fqd ',cin(1),pbase(1),
     2297!    .dnwd0(1,1),ftd(1,1),fqd(1,1)
     2298!IM end
     2299!IM cf. FH
    23002300              clwcon0=qcondc
    23012301              pmfu(:,:)=upwd(:,:)+dnwd(:,:)
     
    23072307          ELSE ! ok_cvl
    23082308
    2309 c MAF conema3 ne contient pas les traceurs
    2310           CALL conema3 (dtime,
    2311      .        paprs,pplay,t_seri,q_seri,
    2312      .        u_seri,v_seri,tr_seri,ntra,
    2313      .        sig1,w01,
    2314      .        d_t_con,d_q_con,d_u_con,d_v_con,d_tr,
    2315      .        rain_con, snow_con, ibas_con, itop_con,
    2316      .        upwd,dnwd,dnwd0,bas,top,
    2317      .        Ma,cape,tvp,rflag,
    2318      .        pbase
    2319      .        ,bbase,dtvpdt1,dtvpdq1,dplcldt,dplcldr
    2320      .        ,clwcon0)
     2309! MAF conema3 ne contient pas les traceurs
     2310          CALL conema3 (dtime, &
     2311              paprs,pplay,t_seri,q_seri, &
     2312              u_seri,v_seri,tr_seri,ntra, &
     2313              sig1,w01, &
     2314              d_t_con,d_q_con,d_u_con,d_v_con,d_tr, &
     2315              rain_con, snow_con, ibas_con, itop_con, &
     2316              upwd,dnwd,dnwd0,bas,top, &
     2317              Ma,cape,tvp,rflag, &
     2318              pbase &
     2319              ,bbase,dtvpdt1,dtvpdq1,dplcldt,dplcldr &
     2320              ,clwcon0)
    23212321
    23222322          ENDIF ! ok_cvl
    23232323
    2324 c
    2325 c Correction precip
     2324!
     2325! Correction precip
    23262326          rain_con = rain_con * cvl_corr
    23272327          snow_con = snow_con * cvl_corr
    2328 c
     2328!
    23292329
    23302330           IF (.NOT. ok_gust) THEN
     
    23342334           ENDIF
    23352335
    2336 c =================================================================== c
    2337 c Calcul des proprietes des nuages convectifs
    2338 c
    2339 
    2340 c   calcul des proprietes des nuages convectifs
     2336! =================================================================== c
     2337! Calcul des proprietes des nuages convectifs
     2338!
     2339
     2340!   calcul des proprietes des nuages convectifs
    23412341             clwcon0(:,:)=fact_cldcon*clwcon0(:,:)
    2342              call clouds_gno
    2343      s       (klon,klev,q_seri,zqsat,clwcon0,ptconv,ratqsc,rnebcon0)
    2344 
    2345 c =================================================================== c
     2342             call clouds_gno &
     2343             (klon,klev,q_seri,zqsat,clwcon0,ptconv,ratqsc,rnebcon0)
     2344
     2345! =================================================================== c
    23462346
    23472347          DO i = 1, klon
     
    23822382      ENDIF
    23832383
    2384 c     CALL homogene(paprs, q_seri, d_q_con, u_seri,v_seri,
    2385 c    .              d_u_con, d_v_con)
     2384!     CALL homogene(paprs, q_seri, d_q_con, u_seri,v_seri,
     2385!    .              d_u_con, d_v_con)
    23862386
    23872387!-----------------------------------------------------------------------------------------
     
    23972397      endif
    23982398
    2399 cIM
     2399!IM
    24002400      IF (ip_ebil_phy.ge.2) THEN
    24012401        ztit='after convect'
    2402         CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime
    2403      e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
    2404      s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    2405          call diagphy(airephy,ztit,ip_ebil_phy
    2406      e      , zero_v, zero_v, zero_v, zero_v, zero_v
    2407      e      , zero_v, rain_con, snow_con, ztsol
    2408      e      , d_h_vcol, d_qt, d_ec
    2409      s      , fs_bound, fq_bound )
     2402        CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     2403            , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
     2404            , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     2405         call diagphy(airephy,ztit,ip_ebil_phy &
     2406            , zero_v, zero_v, zero_v, zero_v, zero_v &
     2407            , zero_v, rain_con, snow_con, ztsol &
     2408            , d_h_vcol, d_qt, d_ec &
     2409            , fs_bound, fq_bound )
    24102410      END IF
    2411 C
     2411!
    24122412      IF (check) THEN
    24132413          za = qcheck(klon,klev,paprs,q_seri,ql_seri,airephy)
     
    24172417          DO i = 1, klon
    24182418            za = za + airephy(i)/REAL(klon)
    2419             zx_t = zx_t + (rain_con(i)+
    2420      .                   snow_con(i))*airephy(i)/REAL(klon)
     2419            zx_t = zx_t + (rain_con(i)+ &
     2420                         snow_con(i))*airephy(i)/REAL(klon)
    24212421          ENDDO
    24222422          zx_t = zx_t/za*dtime
     
    24292429          DO k = 1, klev
    24302430            DO i = 1, klon
    2431               z_apres(i) = z_apres(i) + (q_seri(i,k)+ql_seri(i,k))
    2432      .            *(paprs(i,k)-paprs(i,k+1))/RG
     2431              z_apres(i) = z_apres(i) + (q_seri(i,k)+ql_seri(i,k)) &
     2432                  *(paprs(i,k)-paprs(i,k+1))/RG
    24332433            ENDDO
    24342434          ENDDO
    24352435          DO i = 1, klon
    2436             z_factor(i) = (z_avant(i)-(rain_con(i)+snow_con(i))*dtime)
    2437      .          /z_apres(i)
     2436            z_factor(i) = (z_avant(i)-(rain_con(i)+snow_con(i))*dtime) &
     2437                /z_apres(i)
    24382438          ENDDO
    24392439          DO k = 1, klev
    24402440            DO i = 1, klon
    2441               IF (z_factor(i).GT.(1.0+1.0E-08) .OR.
    2442      .            z_factor(i).LT.(1.0-1.0E-08)) THEN
     2441              IF (z_factor(i).GT.(1.0+1.0E-08) .OR. &
     2442                  z_factor(i).LT.(1.0-1.0E-08)) THEN
    24432443                  q_seri(i,k) = q_seri(i,k) * z_factor(i)
    24442444              ENDIF
     
    24482448      zx_ajustq=.FALSE.
    24492449
    2450 c
    2451 c=============================================================================
    2452 cRR:Evolution de la poche froide: on ne fait pas de separation wake/env
    2453 cpour la couche limite diffuse pour l instant
    2454 c
     2450!
     2451!=============================================================================
     2452!RR:Evolution de la poche froide: on ne fait pas de separation wake/env
     2453!pour la couche limite diffuse pour l instant
     2454!
    24552455      if (iflag_wake>=1) then
    24562456      DO k=1,klev
     
    24722472        ok_wk_lsp(:)=max(sign(1.,wake_s(:)-wake_s_min_lsp),0.)
    24732473        DO k = 1,klev
    2474          dt_dwn(:,k)= dt_dwn(:,k)+
    2475      :            ok_wk_lsp(:)*(d_t_eva(:,k)+d_t_lsc(:,k))/dtime
    2476          dq_dwn(:,k)= dq_dwn(:,k)+
    2477      :            ok_wk_lsp(:)*(d_q_eva(:,k)+d_q_lsc(:,k))/dtime
     2474         dt_dwn(:,k)= dt_dwn(:,k)+ &
     2475                  ok_wk_lsp(:)*(d_t_eva(:,k)+d_t_lsc(:,k))/dtime
     2476         dq_dwn(:,k)= dq_dwn(:,k)+ &
     2477                  ok_wk_lsp(:)*(d_q_eva(:,k)+d_q_lsc(:,k))/dtime
    24782478        ENDDO
    24792479      endif
    2480 c
    2481 ccalcul caracteristiques de la poche froide
    2482       call calWAKE (paprs,pplay,dtime
    2483      :               ,t_seri,q_seri,omega
    2484      :               ,dt_dwn,dq_dwn,M_dwn,M_up
    2485      :               ,dt_a,dq_a,sigd
    2486      :               ,wdt_PBL,wdq_PBL
    2487      :               ,udt_PBL,udq_PBL
    2488      o               ,wake_deltat,wake_deltaq,wake_dth
    2489      o               ,wake_h,wake_s,wake_dens
    2490      o               ,wake_pe,wake_fip,wake_gfl
    2491      o               ,dt_wake,dq_wake
    2492      o               ,wake_k, t_undi,q_undi
    2493      o               ,wake_omgbdth,wake_dp_omgb
    2494      o               ,wake_dtKE,wake_dqKE
    2495      o               ,wake_dtPBL,wake_dqPBL
    2496      o               ,wake_omg,wake_dp_deltomg
    2497      o               ,wake_spread,wake_Cstar,wake_d_deltat_gw
    2498      o               ,wake_ddeltat,wake_ddeltaq)
    2499 c
     2480!
     2481!calcul caracteristiques de la poche froide
     2482      call calWAKE (paprs,pplay,dtime &
     2483                     ,t_seri,q_seri,omega &
     2484                     ,dt_dwn,dq_dwn,M_dwn,M_up &
     2485                     ,dt_a,dq_a,sigd &
     2486                     ,wdt_PBL,wdq_PBL &
     2487                     ,udt_PBL,udq_PBL &
     2488                     ,wake_deltat,wake_deltaq,wake_dth &
     2489                     ,wake_h,wake_s,wake_dens &
     2490                     ,wake_pe,wake_fip,wake_gfl &
     2491                     ,dt_wake,dq_wake &
     2492                     ,wake_k, t_undi,q_undi &
     2493                     ,wake_omgbdth,wake_dp_omgb &
     2494                     ,wake_dtKE,wake_dqKE &
     2495                     ,wake_dtPBL,wake_dqPBL &
     2496                     ,wake_omg,wake_dp_deltomg &
     2497                     ,wake_spread,wake_Cstar,wake_d_deltat_gw &
     2498                     ,wake_ddeltat,wake_ddeltaq)
     2499!
    25002500!-----------------------------------------------------------------------------------------
    25012501! ajout des tendances des poches froides
     
    25082508
    25092509      endif
    2510 c
    2511 c===================================================================
    2512 cJYG
     2510!
     2511!===================================================================
     2512!JYG
    25132513      IF (ip_ebil_phy.ge.2) THEN
    25142514        ztit='after wake'
    2515         CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime
    2516      e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
    2517      s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    2518         call diagphy(airephy,ztit,ip_ebil_phy
    2519      e      , zero_v, zero_v, zero_v, zero_v, zero_v
    2520      e      , zero_v, zero_v, zero_v, ztsol
    2521      e      , d_h_vcol, d_qt, d_ec
    2522      s      , fs_bound, fq_bound )
     2515        CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     2516            , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
     2517            , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     2518        call diagphy(airephy,ztit,ip_ebil_phy &
     2519            , zero_v, zero_v, zero_v, zero_v, zero_v &
     2520            , zero_v, zero_v, zero_v, ztsol &
     2521            , d_h_vcol, d_qt, d_ec &
     2522            , fs_bound, fq_bound )
    25232523      END IF
    25242524
    2525 c      print*,'apres callwake iflag_cldcon=', iflag_cldcon
    2526 c
    2527 c===================================================================
    2528 c Convection seche (thermiques ou ajustement)
    2529 c===================================================================
    2530 c
    2531        call stratocu_if(klon,klev,pctsrf,paprs, pplay,t_seri
    2532      s ,seuil_inversion,weak_inversion,dthmin)
     2525!      print*,'apres callwake iflag_cldcon=', iflag_cldcon
     2526!
     2527!===================================================================
     2528! Convection seche (thermiques ou ajustement)
     2529!===================================================================
     2530!
     2531       call stratocu_if(klon,klev,pctsrf,paprs, pplay,t_seri &
     2532       ,seuil_inversion,weak_inversion,dthmin)
    25332533
    25342534
     
    25412541      d_q_ajs(:,:)=0.
    25422542      clwcon0th(:,:)=0.
    2543 c
    2544 c      fm_therm(:,:)=0.
    2545 c      entr_therm(:,:)=0.
    2546 c      detr_therm(:,:)=0.
    2547 c
    2548       IF(prt_level>9)WRITE(lunout,*)
    2549      .    'AVANT LA CONVECTION SECHE , iflag_thermals='
    2550      s   ,iflag_thermals,'   nsplit_thermals=',nsplit_thermals
     2543!
     2544!      fm_therm(:,:)=0.
     2545!      entr_therm(:,:)=0.
     2546!      detr_therm(:,:)=0.
     2547!
     2548      IF(prt_level>9)WRITE(lunout,*) &
     2549          'AVANT LA CONVECTION SECHE , iflag_thermals=' &
     2550         ,iflag_thermals,'   nsplit_thermals=',nsplit_thermals
    25512551      if(iflag_thermals.lt.0) then
    2552 c  Rien
    2553 c  ====
     2552!  Rien
     2553!  ====
    25542554         IF(prt_level>9)WRITE(lunout,*)'pas de convection'
    25552555
     
    25572557      else
    25582558
    2559 c  Thermiques
    2560 c  ==========
    2561          IF(prt_level>9)WRITE(lunout,*)'JUSTE AVANT , iflag_thermals='
    2562      s   ,iflag_thermals,'   nsplit_thermals=',nsplit_thermals
    2563 
    2564 
    2565 ccc nrlmd le 10/04/2012
     2559!  Thermiques
     2560!  ==========
     2561         IF(prt_level>9)WRITE(lunout,*)'JUSTE AVANT , iflag_thermals=' &
     2562         ,iflag_thermals,'   nsplit_thermals=',nsplit_thermals
     2563
     2564
     2565!cc nrlmd le 10/04/2012
    25662566         DO k=1,klev+1
    25672567           DO i=1,klon
     
    25722572           ENDDO
    25732573         ENDDO
    2574 ccc fin nrlmd le 10/04/2012
     2574!cc fin nrlmd le 10/04/2012
    25752575
    25762576         if (iflag_thermals>=1) then
    2577          call calltherm(pdtphys
    2578      s      ,pplay,paprs,pphi,weak_inversion
    2579      s      ,u_seri,v_seri,t_seri,q_seri,zqsat,debut
    2580      s      ,d_u_ajs,d_v_ajs,d_t_ajs,d_q_ajs
    2581      s      ,fm_therm,entr_therm,detr_therm
    2582      s      ,zqasc,clwcon0th,lmax_th,ratqscth
    2583      s      ,ratqsdiff,zqsatth
    2584 con rajoute ale et alp, et les caracteristiques de la couche alim
    2585      s      ,Ale_bl,Alp_bl,lalim_conv,wght_th, zmax0, f0, zw2,fraca
    2586      s      ,ztv,zpspsk,ztla,zthl
    2587 ccc nrlmd le 10/04/2012
    2588      e      ,pbl_tke_input,pctsrf,omega,airephy
    2589      s      ,zlcl_th,fraca0,w0,w_conv,therm_tke_max0,env_tke_max0
    2590      s      ,n2,s2,ale_bl_stat
    2591      s      ,therm_tke_max,env_tke_max
    2592      s      ,alp_bl_det,alp_bl_fluct_m,alp_bl_fluct_tke
    2593      s      ,alp_bl_conv,alp_bl_stat
    2594 ccc fin nrlmd le 10/04/2012
    2595      s      ,zqla,ztva )
    2596 
    2597 ccc nrlmd le 10/04/2012
    2598 c-----------Stochastic triggering-----------
     2577         call calltherm(pdtphys &
     2578            ,pplay,paprs,pphi,weak_inversion &
     2579            ,u_seri,v_seri,t_seri,q_seri,zqsat,debut &
     2580            ,d_u_ajs,d_v_ajs,d_t_ajs,d_q_ajs &
     2581            ,fm_therm,entr_therm,detr_therm &
     2582            ,zqasc,clwcon0th,lmax_th,ratqscth &
     2583            ,ratqsdiff,zqsatth &
     2584!on rajoute ale et alp, et les caracteristiques de la couche alim
     2585            ,Ale_bl,Alp_bl,lalim_conv,wght_th, zmax0, f0, zw2,fraca &
     2586            ,ztv,zpspsk,ztla,zthl &
     2587!cc nrlmd le 10/04/2012
     2588            ,pbl_tke_input,pctsrf,omega,airephy &
     2589            ,zlcl_th,fraca0,w0,w_conv,therm_tke_max0,env_tke_max0 &
     2590            ,n2,s2,ale_bl_stat &
     2591            ,therm_tke_max,env_tke_max &
     2592            ,alp_bl_det,alp_bl_fluct_m,alp_bl_fluct_tke &
     2593            ,alp_bl_conv,alp_bl_stat &
     2594!cc fin nrlmd le 10/04/2012
     2595            ,zqla,ztva )
     2596
     2597!cc nrlmd le 10/04/2012
     2598!-----------Stochastic triggering-----------
    25992599      if (iflag_trig_bl.ge.1) then
    2600 c
     2600!
    26012601        IF (prt_level .GE. 10) THEN
    2602          print *,'cin, ale_bl_stat, alp_bl_stat ',
    2603      $            cin, ale_bl_stat, alp_bl_stat
     2602         print *,'cin, ale_bl_stat, alp_bl_stat ', &
     2603                  cin, ale_bl_stat, alp_bl_stat
    26042604        ENDIF
    26052605
    2606 c----Initialisations
     2606!----Initialisations
    26072607      do i=1,klon
    26082608      proba_notrig(i)=1.
     
    26142614        endif
    26152615      enddo
    2616 c
     2616!
    26172617        IF (prt_level .GE. 10) THEN
    2618          print *,'random_notrig, tau_trig ',
    2619      $            random_notrig, tau_trig
    2620           print *,'s_trig,s2,n2 ',
    2621      $             s_trig,s2,n2
     2618         print *,'random_notrig, tau_trig ', &
     2619                  random_notrig, tau_trig
     2620          print *,'s_trig,s2,n2 ', &
     2621                   s_trig,s2,n2
    26222622        ENDIF
    26232623
    2624 c----Tirage al\'eatoire et calcul de ale_bl_trig
     2624!----Tirage al\'eatoire et calcul de ale_bl_trig
    26252625      do i=1,klon
    26262626        if ( (ale_bl_stat(i) .gt. abs(cin(i))+1.e-10) )  then
    2627         proba_notrig(i)=(1.-exp(-s_trig/s2(i)))**
    2628      $                  (n2(i)*dtime/tau_trig(i))
    2629 c        print *, 'proba_notrig(i) ',proba_notrig(i)
     2627        proba_notrig(i)=(1.-exp(-s_trig/s2(i)))** &
     2628                        (n2(i)*dtime/tau_trig(i))
     2629!        print *, 'proba_notrig(i) ',proba_notrig(i)
    26302630          if (random_notrig(i) .ge. proba_notrig(i)) then
    26312631          ale_bl_trig(i)=ale_bl_stat(i)
     
    26392639        endif
    26402640      enddo
    2641 c
     2641!
    26422642        IF (prt_level .GE. 10) THEN
    2643          print *,'proba_notrig, ale_bl_trig ',
    2644      $            proba_notrig, ale_bl_trig
     2643         print *,'proba_notrig, ale_bl_trig ', &
     2644                  proba_notrig, ale_bl_trig
    26452645        ENDIF
    26462646
    26472647      endif !(iflag_trig_bl)
    26482648
    2649 c-----------Statistical closure-----------
     2649!-----------Statistical closure-----------
    26502650      if (iflag_clos_bl.ge.1) then
    26512651
     
    26642664        ENDIF
    26652665
    2666 ccc fin nrlmd le 10/04/2012
     2666!cc fin nrlmd le 10/04/2012
    26672667
    26682668! ----------------------------------------------------------------------
     
    26922692
    26932693
    2694 c  Ajustement sec
    2695 c  ==============
     2694!  Ajustement sec
     2695!  ==============
    26962696
    26972697! Dans le cas o\`u on active les thermiques, on fait partir l'ajustement
     
    27152715
    27162716         if (iflag_thermals.eq.0) then
    2717             CALL ajsec_convV2(paprs, pplay, t_seri,q_seri
    2718      s      , d_t_ajsb, d_q_ajsb)
     2717            CALL ajsec_convV2(paprs, pplay, t_seri,q_seri &
     2718            , d_t_ajsb, d_q_ajsb)
    27192719         else
    2720             CALL ajsec(paprs, pplay, t_seri,q_seri,limbas
    2721      s      , d_t_ajsb, d_q_ajsb)
     2720            CALL ajsec(paprs, pplay, t_seri,q_seri,limbas &
     2721            , d_t_ajsb, d_q_ajsb)
    27222722         endif
    27232723
     
    27332733
    27342734      endif
    2735 c
    2736 c===================================================================
    2737 cIM
     2735!
     2736!===================================================================
     2737!IM
    27382738      IF (ip_ebil_phy.ge.2) THEN
    27392739        ztit='after dry_adjust'
    2740         CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime
    2741      e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
    2742      s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    2743         call diagphy(airephy,ztit,ip_ebil_phy
    2744      e      , zero_v, zero_v, zero_v, zero_v, zero_v
    2745      e      , zero_v, zero_v, zero_v, ztsol
    2746      e      , d_h_vcol, d_qt, d_ec
    2747      s      , fs_bound, fq_bound )
     2740        CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     2741            , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
     2742            , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     2743        call diagphy(airephy,ztit,ip_ebil_phy &
     2744            , zero_v, zero_v, zero_v, zero_v, zero_v &
     2745            , zero_v, zero_v, zero_v, ztsol &
     2746            , d_h_vcol, d_qt, d_ec &
     2747            , fs_bound, fq_bound )
    27482748      END IF
    27492749
    27502750
    2751 c-------------------------------------------------------------------------
     2751!-------------------------------------------------------------------------
    27522752! Computation of ratqs, the width (normalized) of the subrid scale
    27532753! water distribution
    2754       CALL  calcratqs(klon,klev,prt_level,lunout,       
    2755      s     iflag_ratqs,iflag_con,iflag_cldcon,pdtphys,
    2756      s     ratqsbas,ratqshaut,tau_ratqs,fact_cldcon, 
    2757      s     ptconv,ptconvth,clwcon0th, rnebcon0th,   
    2758      s     paprs,pplay,q_seri,zqsat,fm_therm,
    2759      s     ratqs,ratqsc)
    2760 
    2761 
    2762 c
    2763 c Appeler le processus de condensation a grande echelle
    2764 c et le processus de precipitation
    2765 c-------------------------------------------------------------------------
     2754      CALL  calcratqs(klon,klev,prt_level,lunout,        &
     2755           iflag_ratqs,iflag_con,iflag_cldcon,pdtphys,  &
     2756           ratqsbas,ratqshaut,tau_ratqs,fact_cldcon,   &
     2757           ptconv,ptconvth,clwcon0th, rnebcon0th,     &
     2758           paprs,pplay,q_seri,zqsat,fm_therm, &
     2759           ratqs,ratqsc)
     2760
     2761
     2762!
     2763! Appeler le processus de condensation a grande echelle
     2764! et le processus de precipitation
     2765!-------------------------------------------------------------------------
    27662766      IF (prt_level .GE.10) THEN
    27672767       print *,' ->fisrtilp '
    27682768      ENDIF
    2769 c-------------------------------------------------------------------------
    2770       CALL fisrtilp(dtime,paprs,pplay,
    2771      .           t_seri, q_seri,ptconv,ratqs,
    2772      .           d_t_lsc, d_q_lsc, d_ql_lsc, rneb, cldliq,
    2773      .           rain_lsc, snow_lsc,
    2774      .           pfrac_impa, pfrac_nucl, pfrac_1nucl,
    2775      .           frac_impa, frac_nucl, beta_prec_fisrt,
    2776      .           prfl, psfl, rhcl,
    2777      .           zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cldcon,
    2778      .           iflag_ice_thermo)
     2769!-------------------------------------------------------------------------
     2770      CALL fisrtilp(dtime,paprs,pplay, &
     2771                 t_seri, q_seri,ptconv,ratqs, &
     2772                 d_t_lsc, d_q_lsc, d_ql_lsc, rneb, cldliq, &
     2773                 rain_lsc, snow_lsc, &
     2774                 pfrac_impa, pfrac_nucl, pfrac_1nucl, &
     2775                 frac_impa, frac_nucl, beta_prec_fisrt, &
     2776                 prfl, psfl, rhcl,  &
     2777                 zqasc, fraca,ztv,zpspsk,ztla,zthl,iflag_cldcon, &
     2778                 iflag_ice_thermo)
    27792779
    27802780      WHERE (rain_lsc < 0) rain_lsc = 0.
     
    27972797         DO i = 1, klon
    27982798            za = za + airephy(i)/REAL(klon)
    2799             zx_t = zx_t + (rain_lsc(i)
    2800      .                  + snow_lsc(i))*airephy(i)/REAL(klon)
     2799            zx_t = zx_t + (rain_lsc(i) &
     2800                        + snow_lsc(i))*airephy(i)/REAL(klon)
    28012801        ENDDO
    28022802         zx_t = zx_t/za*dtime
    28032803         WRITE(lunout,*)"Precip=", zx_t
    28042804      ENDIF
    2805 cIM
     2805!IM
    28062806      IF (ip_ebil_phy.ge.2) THEN
    28072807        ztit='after fisrt'
    2808         CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime
    2809      e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
    2810      s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    2811         call diagphy(airephy,ztit,ip_ebil_phy
    2812      e      , zero_v, zero_v, zero_v, zero_v, zero_v
    2813      e      , zero_v, rain_lsc, snow_lsc, ztsol
    2814      e      , d_h_vcol, d_qt, d_ec
    2815      s      , fs_bound, fq_bound )
     2808        CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     2809            , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
     2810            , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     2811        call diagphy(airephy,ztit,ip_ebil_phy &
     2812            , zero_v, zero_v, zero_v, zero_v, zero_v &
     2813            , zero_v, rain_lsc, snow_lsc, ztsol &
     2814            , d_h_vcol, d_qt, d_ec &
     2815            , fs_bound, fq_bound )
    28162816      END IF
    28172817
     
    28232823      endif
    28242824
    2825 c
    2826 c-------------------------------------------------------------------
    2827 c  PRESCRIPTION DES NUAGES POUR LE RAYONNEMENT
    2828 c-------------------------------------------------------------------
    2829 
    2830 c 1. NUAGES CONVECTIFS
    2831 c
    2832 cIM cf FH
    2833 c     IF (iflag_cldcon.eq.-1) THEN ! seulement pour Tiedtke
     2825!
     2826!-------------------------------------------------------------------
     2827!  PRESCRIPTION DES NUAGES POUR LE RAYONNEMENT
     2828!-------------------------------------------------------------------
     2829
     2830! 1. NUAGES CONVECTIFS
     2831!
     2832!IM cf FH
     2833!     IF (iflag_cldcon.eq.-1) THEN ! seulement pour Tiedtke
    28342834      IF (iflag_cldcon.le.-1) THEN ! seulement pour Tiedtke
    28352835       snow_tiedtke=0.
    2836 c     print*,'avant calcul de la pseudo precip '
    2837 c     print*,'iflag_cldcon',iflag_cldcon
     2836!     print*,'avant calcul de la pseudo precip '
     2837!     print*,'iflag_cldcon',iflag_cldcon
    28382838       if (iflag_cldcon.eq.-1) then
    28392839          rain_tiedtke=rain_con
    28402840       else
    2841 c       print*,'calcul de la pseudo precip '
     2841!       print*,'calcul de la pseudo precip '
    28422842          rain_tiedtke=0.
    2843 c         print*,'calcul de la pseudo precip 0'
     2843!         print*,'calcul de la pseudo precip 0'
    28442844          do k=1,klev
    28452845          do i=1,klon
    28462846             if (d_q_con(i,k).lt.0.) then
    2847                 rain_tiedtke(i)=rain_tiedtke(i)-d_q_con(i,k)/pdtphys
    2848      s         *(paprs(i,k)-paprs(i,k+1))/rg
     2847                rain_tiedtke(i)=rain_tiedtke(i)-d_q_con(i,k)/pdtphys &
     2848               *(paprs(i,k)-paprs(i,k+1))/rg
    28492849             endif
    28502850          enddo
    28512851          enddo
    28522852       endif
    2853 c
    2854 c     call dump2d(iim,jjm,rain_tiedtke(2:klon-1),'PSEUDO PRECIP ')
    2855 c
    2856 
    2857 c Nuages diagnostiques pour Tiedtke
    2858       CALL diagcld1(paprs,pplay,
    2859 cIM cf FH  .             rain_con,snow_con,ibas_con,itop_con,
    2860      .             rain_tiedtke,snow_tiedtke,ibas_con,itop_con,
    2861      .             diafra,dialiq)
     2853!
     2854!     call dump2d(iim,jjm,rain_tiedtke(2:klon-1),'PSEUDO PRECIP ')
     2855!
     2856
     2857! Nuages diagnostiques pour Tiedtke
     2858      CALL diagcld1(paprs,pplay, &
     2859!IM cf FH  .             rain_con,snow_con,ibas_con,itop_con,
     2860                   rain_tiedtke,snow_tiedtke,ibas_con,itop_con, &
     2861                   diafra,dialiq)
    28622862      DO k = 1, klev
    28632863      DO i = 1, klon
     
    28702870
    28712871      ELSE IF (iflag_cldcon.ge.3) THEN
    2872 c  On prend pour les nuages convectifs le max du calcul de la
    2873 c  convection et du calcul du pas de temps precedent diminue d'un facteur
    2874 c  facttemps
     2872!  On prend pour les nuages convectifs le max du calcul de la
     2873!  convection et du calcul du pas de temps precedent diminue d'un facteur
     2874!  facttemps
    28752875      facteur = pdtphys *facttemps
    28762876      do k=1,klev
    28772877         do i=1,klon
    28782878            rnebcon(i,k)=rnebcon(i,k)*facteur
    2879             if (rnebcon0(i,k)*clwcon0(i,k).gt.rnebcon(i,k)*clwcon(i,k))
    2880      s      then
     2879            if (rnebcon0(i,k)*clwcon0(i,k).gt.rnebcon(i,k)*clwcon(i,k)) &
     2880            then
    28812881                rnebcon(i,k)=rnebcon0(i,k)
    28822882                clwcon(i,k)=clwcon0(i,k)
     
    28852885      enddo
    28862886
    2887 c
    2888 cjq - introduce the aerosol direct and first indirect radiative forcings
    2889 cjq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr)
     2887!
     2888!jq - introduce the aerosol direct and first indirect radiative forcings
     2889!jq - Johannes Quaas, 27/11/2003 (quaas@lmd.jussieu.fr)
    28902890      IF (flag_aerosol .gt. 0) THEN
    2891          IF (.NOT. aerosol_couple)
    2892      &        CALL readaerosol_optic(
    2893      &        debut, new_aod, flag_aerosol, itap, jD_cur-jD_ref,
    2894      &        pdtphys, pplay, paprs, t_seri, rhcl, presnivs,
    2895      &        mass_solu_aero, mass_solu_aero_pi,
    2896      &        tau_aero, piz_aero, cg_aero,
    2897      &        tausum_aero, tau3d_aero)
     2891         IF (.NOT. aerosol_couple) &
     2892              CALL readaerosol_optic( &
     2893              debut, new_aod, flag_aerosol, itap, jD_cur-jD_ref, &
     2894              pdtphys, pplay, paprs, t_seri, rhcl, presnivs,  &
     2895              mass_solu_aero, mass_solu_aero_pi,  &
     2896              tau_aero, piz_aero, cg_aero,  &
     2897              tausum_aero, tau3d_aero)
    28982898      ELSE
    28992899         tausum_aero(:,:,:) = 0.
     
    29022902         cg_aero(:,:,:,:)  = 0.
    29032903      ENDIF
    2904 c
    2905 c--STRAT AEROSOL
    2906 c--updates tausum_aero,tau_aero,piz_aero,cg_aero
     2904!
     2905!--STRAT AEROSOL
     2906!--updates tausum_aero,tau_aero,piz_aero,cg_aero
    29072907      IF (flag_aerosol_strat) THEN
    29082908         PRINT *,'appel a readaerosolstrat', mth_cur
    29092909         CALL readaerosolstrato(debut)
    29102910      ENDIF
    2911 c--fin STRAT AEROSOL
    2912 
    2913 cIM calcul nuages par le simulateur ISCCP
    2914 c
     2911!--fin STRAT AEROSOL
     2912
     2913!IM calcul nuages par le simulateur ISCCP
     2914!
    29152915#ifdef histISCCP
    29162916      IF (ok_isccp) THEN
    2917 c
    2918 cIM lecture invtau, tautab des fichiers formattes
    2919 c
     2917!
     2918!IM lecture invtau, tautab des fichiers formattes
     2919!
    29202920      IF (debut) THEN
    2921 c$OMP MASTER
    2922 c
     2921!$OMP MASTER
     2922!
    29232923      open(99,file='tautab.formatted', FORM='FORMATTED')
    29242924      read(99,'(f30.20)') tautab_omp
    29252925      close(99)
    2926 c
     2926!
    29272927      open(99,file='invtau.formatted',form='FORMATTED')
    29282928      read(99,'(i10)') invtau_omp
    29292929
    2930 c     print*,'calcul_simulISCCP invtau_omp',invtau_omp
    2931 c     write(6,'(a,8i10)') 'invtau_omp',(invtau_omp(i),i=1,100)
     2930!     print*,'calcul_simulISCCP invtau_omp',invtau_omp
     2931!     write(6,'(a,8i10)') 'invtau_omp',(invtau_omp(i),i=1,100)
    29322932
    29332933      close(99)
    2934 c$OMP END MASTER
    2935 c$OMP BARRIER
     2934!$OMP END MASTER
     2935!$OMP BARRIER
    29362936      tautab=tautab_omp
    29372937      invtau=invtau_omp
    2938 c
     2938!
    29392939      ENDIF !debut
    2940 c
    2941 cIM appel simulateur toutes les  NINT(freq_ISCCP/dtime) heures
     2940!
     2941!IM appel simulateur toutes les  NINT(freq_ISCCP/dtime) heures
    29422942       IF (MOD(itap,NINT(freq_ISCCP/dtime)).EQ.0) THEN
    29432943#include "calcul_simulISCCP.h"
     
    29462946#endif
    29472947
    2948 c   On prend la somme des fractions nuageuses et des contenus en eau
     2948!   On prend la somme des fractions nuageuses et des contenus en eau
    29492949
    29502950      if (iflag_cldcon>=5) then
     
    30153015!        enddo prfl, psfl,
    30163016!     enddo
    3017 c
    3018 c 2. NUAGES STARTIFORMES
    3019 c
     3017!
     3018! 2. NUAGES STARTIFORMES
     3019!
    30203020      IF (ok_stratus) THEN
    30213021      CALL diagcld2(paprs,pplay,t_seri,q_seri, diafra,dialiq)
     
    30293029      ENDDO
    30303030      ENDIF
    3031 c
    3032 c Precipitation totale
    3033 c
     3031!
     3032! Precipitation totale
     3033!
    30343034      DO i = 1, klon
    30353035         rain_fall(i) = rain_con(i) + rain_lsc(i)
    30363036         snow_fall(i) = snow_con(i) + snow_lsc(i)
    30373037      ENDDO
    3038 cIM
     3038!IM
    30393039      IF (ip_ebil_phy.ge.2) THEN
    30403040        ztit="after diagcld"
    3041         CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime
    3042      e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
    3043      s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    3044         call diagphy(airephy,ztit,ip_ebil_phy
    3045      e      , zero_v, zero_v, zero_v, zero_v, zero_v
    3046      e      , zero_v, zero_v, zero_v, ztsol
    3047      e      , d_h_vcol, d_qt, d_ec
    3048      s      , fs_bound, fq_bound )
     3041        CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     3042            , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
     3043            , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     3044        call diagphy(airephy,ztit,ip_ebil_phy &
     3045            , zero_v, zero_v, zero_v, zero_v, zero_v &
     3046            , zero_v, zero_v, zero_v, ztsol &
     3047            , d_h_vcol, d_qt, d_ec &
     3048            , fs_bound, fq_bound )
    30493049      END IF
    3050 c
    3051 c Calculer l'humidite relative pour diagnostique
    3052 c
     3050!
     3051! Calculer l'humidite relative pour diagnostique
     3052!
    30533053      DO k = 1, klev
    30543054      DO i = 1, klon
     
    30723072      ENDDO
    30733073
    3074 cIM Calcul temp.potentielle a 2m (tpot) et temp. potentielle
    3075 c   equivalente a 2m (tpote) pour diagnostique
    3076 c
     3074!IM Calcul temp.potentielle a 2m (tpot) et temp. potentielle
     3075!   equivalente a 2m (tpote) pour diagnostique
     3076!
    30773077      DO i = 1, klon
    30783078       tpot(i)=zt2m(i)*(100000./paprs(i,1))**RKAPPA
     
    30903090        ENDIF
    30913091       ENDIF
    3092        tpote(i) = tpot(i)*     
    3093      . EXP((Lheat *qsat2m(i))/(RCPD*zt2m(i)))
     3092       tpote(i) = tpot(i)*      &
     3093       EXP((Lheat *qsat2m(i))/(RCPD*zt2m(i)))
    30943094      ENDDO
    30953095
     
    31023102         call chemtime(itap+itau_phy-1, date0, dtime)
    31033103         IF (config_inca == 'aero') THEN
    3104             CALL AEROSOL_METEO_CALC(
    3105      $           calday,pdtphys,pplay,paprs,t,pmflxr,pmflxs,
    3106      $           prfl,psfl,pctsrf,airephy,rlat,rlon,u10m,v10m)
     3104            CALL AEROSOL_METEO_CALC( &
     3105                 calday,pdtphys,pplay,paprs,t,pmflxr,pmflxs, &
     3106                 prfl,psfl,pctsrf,airephy,rlat,rlon,u10m,v10m)
    31073107         END IF
    31083108
    31093109         zxsnow_dummy(:) = 0.0
    31103110
    3111          CALL chemhook_begin (calday,
    3112      $                          days_elapsed+1,
    3113      $                          jH_cur,
    3114      $                          pctsrf(1,1),
    3115      $                          rlat,
    3116      $                          rlon,
    3117      $                          airephy,
    3118      $                          paprs,
    3119      $                          pplay,
    3120      $                          coefh(:,:,is_ave),
    3121      $                          pphi,
    3122      $                          t_seri,
    3123      $                          u,
    3124      $                          v,
    3125      $                          wo(:, :, 1),
    3126      $                          q_seri,
    3127      $                          zxtsol,
    3128      $                          zxsnow_dummy,
    3129      $                          solsw,
    3130      $                          albsol1,
    3131      $                          rain_fall,
    3132      $                          snow_fall,
    3133      $                          itop_con,
    3134      $                          ibas_con,
    3135      $                          cldfra,
    3136      $                          iim,
    3137      $                          jjm,
    3138      $                          tr_seri,
    3139      $                          ftsol,
    3140      $                          paprs,
    3141      $                          cdragh,
    3142      $                          cdragm,
    3143      $                          pctsrf,
    3144      $                          pdtphys,
    3145      $                            itap)
     3111         CALL chemhook_begin (calday, &
     3112                                days_elapsed+1, &
     3113                                jH_cur, &
     3114                                pctsrf(1,1), &
     3115                                rlat, &
     3116                                rlon, &
     3117                                airephy, &
     3118                                paprs, &
     3119                                pplay, &
     3120                                coefh(:,:,is_ave), &
     3121                                pphi, &
     3122                                t_seri, &
     3123                                u, &
     3124                                v, &
     3125                                wo(:, :, 1), &
     3126                                q_seri, &
     3127                                zxtsol, &
     3128                                zxsnow_dummy, &
     3129                                solsw, &
     3130                                albsol1, &
     3131                                rain_fall, &
     3132                                snow_fall, &
     3133                                itop_con, &
     3134                                ibas_con, &
     3135                                cldfra, &
     3136                                iim, &
     3137                                jjm, &
     3138                                tr_seri, &
     3139                                ftsol, &
     3140                                paprs, &
     3141                                cdragh, &
     3142                                cdragm, &
     3143                                pctsrf, &
     3144                                pdtphys, &
     3145                                  itap)
    31463146
    31473147         CALL VTe(VTinca)
     
    31493149#endif
    31503150      END IF !type_trac = inca
    3151 c     
    3152 c Calculer les parametres optiques des nuages et quelques
    3153 c parametres pour diagnostiques:
    3154 c
     3151!     
     3152! Calculer les parametres optiques des nuages et quelques
     3153! parametres pour diagnostiques:
     3154!
    31553155
    31563156      IF (aerosol_couple) THEN
     
    31603160
    31613161      if (ok_newmicro) then
    3162       CALL newmicro (ok_cdnc, bl95_b0, bl95_b1,
    3163      .              paprs, pplay, t_seri, cldliq, cldfra,
    3164      .              cldtau, cldemi, cldh, cldl, cldm, cldt, cldq,
    3165      e              flwp, fiwp, flwc, fiwc,
    3166      e              mass_solu_aero, mass_solu_aero_pi,
    3167      s              cldtaupi, re, fl, ref_liq, ref_ice)
     3162      CALL newmicro (ok_cdnc, bl95_b0, bl95_b1, &
     3163                    paprs, pplay, t_seri, cldliq, cldfra, &
     3164                    cldtau, cldemi, cldh, cldl, cldm, cldt, cldq, &
     3165                    flwp, fiwp, flwc, fiwc, &
     3166                    mass_solu_aero, mass_solu_aero_pi, &
     3167                    cldtaupi, re, fl, ref_liq, ref_ice)
    31683168      else
    3169       CALL nuage (paprs, pplay,
    3170      .            t_seri, cldliq, cldfra, cldtau, cldemi,
    3171      .            cldh, cldl, cldm, cldt, cldq,
    3172      e            ok_aie,
    3173      e            mass_solu_aero, mass_solu_aero_pi,
    3174      e            bl95_b0, bl95_b1,
    3175      s            cldtaupi, re, fl)
     3169      CALL nuage (paprs, pplay, &
     3170                  t_seri, cldliq, cldfra, cldtau, cldemi, &
     3171                  cldh, cldl, cldm, cldt, cldq, &
     3172                  ok_aie, &
     3173                  mass_solu_aero, mass_solu_aero_pi, &
     3174                  bl95_b0, bl95_b1, &
     3175                  cldtaupi, re, fl)
    31763176      endif
    3177 c
    3178 cIM betaCRF
    3179 c
     3177!
     3178!IM betaCRF
     3179!
    31803180      cldtaurad   = cldtau
    31813181      cldtaupirad = cldtaupi
    31823182      cldemirad   = cldemi
    31833183     
    3184 c
    3185       if(lon1_beta.EQ.-180..AND.lon2_beta.EQ.180..AND.
    3186      $lat1_beta.EQ.90..AND.lat2_beta.EQ.-90.) THEN
    3187 c
    3188 c global
    3189 c
     3184!
     3185      if(lon1_beta.EQ.-180..AND.lon2_beta.EQ.180..AND. &
     3186      lat1_beta.EQ.90..AND.lat2_beta.EQ.-90.) THEN
     3187!
     3188! global
     3189!
    31903190       DO k=1, klev
    31913191       DO i=1, klon
     
    32043204       ENDDO
    32053205       ENDDO
    3206 c
     3206!
    32073207      else
    3208 c
    3209 c regional
    3210 c
     3208!
     3209! regional
     3210!
    32113211       DO k=1, klev
    32123212       DO i=1,klon
    3213 c
    3214         if (rlon(i).ge.lon1_beta.AND.rlon(i).le.lon2_beta.AND.
    3215      $      rlat(i).le.lat1_beta.AND.rlat(i).ge.lat2_beta) THEN
     3213!
     3214        if (rlon(i).ge.lon1_beta.AND.rlon(i).le.lon2_beta.AND. &
     3215            rlat(i).le.lat1_beta.AND.rlat(i).ge.lat2_beta) THEN
    32163216         if (pplay(i,k).GE.pfree) THEN
    32173217          beta(i,k) = beta_pbl
     
    32273227        cldfrarad(i,k)   = cldfra(i,k) * beta(i,k)
    32283228        endif
    3229 c
     3229!
    32303230       ENDDO
    32313231       ENDDO
    3232 c
     3232!
    32333233      endif
    3234 c
    3235 c Appeler le rayonnement mais calculer tout d'abord l'albedo du sol.
    3236 c
     3234!
     3235! Appeler le rayonnement mais calculer tout d'abord l'albedo du sol.
     3236!
    32373237      IF (MOD(itaprad,radpas).EQ.0) THEN
    32383238
    32393239      DO i = 1, klon
    3240          albsol1(i) = falb1(i,is_oce) * pctsrf(i,is_oce)
    3241      .             + falb1(i,is_lic) * pctsrf(i,is_lic)
    3242      .             + falb1(i,is_ter) * pctsrf(i,is_ter)
    3243      .             + falb1(i,is_sic) * pctsrf(i,is_sic)
    3244          albsol2(i) = falb2(i,is_oce) * pctsrf(i,is_oce)
    3245      .               + falb2(i,is_lic) * pctsrf(i,is_lic)
    3246      .               + falb2(i,is_ter) * pctsrf(i,is_ter)
    3247      .               + falb2(i,is_sic) * pctsrf(i,is_sic)
     3240         albsol1(i) = falb1(i,is_oce) * pctsrf(i,is_oce) &
     3241                   + falb1(i,is_lic) * pctsrf(i,is_lic) &
     3242                   + falb1(i,is_ter) * pctsrf(i,is_ter) &
     3243                   + falb1(i,is_sic) * pctsrf(i,is_sic)
     3244         albsol2(i) = falb2(i,is_oce) * pctsrf(i,is_oce) &
     3245                     + falb2(i,is_lic) * pctsrf(i,is_lic) &
     3246                     + falb2(i,is_ter) * pctsrf(i,is_ter) &
     3247                     + falb2(i,is_sic) * pctsrf(i,is_sic)
    32483248      ENDDO
    32493249
     
    32573257      IF (aerosol_couple) THEN
    32583258#ifdef INCA
    3259          CALL radlwsw_inca
    3260      e        (kdlon,kflev,dist, rmu0, fract, solaire,
    3261      e        paprs, pplay,zxtsol,albsol1, albsol2, t_seri,q_seri,
    3262      e        wo(:, :, 1),
    3263      e        cldfrarad, cldemirad, cldtaurad,
    3264      s        heat,heat0,cool,cool0,radsol,albpla,
    3265      s        topsw,toplw,solsw,sollw,
    3266      s        sollwdown,
    3267      s        topsw0,toplw0,solsw0,sollw0,
    3268      s        lwdn0, lwdn, lwup0, lwup,
    3269      s        swdn0, swdn, swup0, swup,
    3270      e        ok_ade, ok_aie,
    3271      e        tau_aero, piz_aero, cg_aero,
    3272      s        topswad_aero, solswad_aero,
    3273      s        topswad0_aero, solswad0_aero,
    3274      s        topsw_aero, topsw0_aero,
    3275      s        solsw_aero, solsw0_aero,
    3276      e        cldtaupirad,
    3277      s        topswai_aero, solswai_aero)
     3259         CALL radlwsw_inca  &
     3260              (kdlon,kflev,dist, rmu0, fract, solaire, &
     3261              paprs, pplay,zxtsol,albsol1, albsol2, t_seri,q_seri, &
     3262              wo(:, :, 1), &
     3263              cldfrarad, cldemirad, cldtaurad, &
     3264              heat,heat0,cool,cool0,radsol,albpla, &
     3265              topsw,toplw,solsw,sollw, &
     3266              sollwdown, &
     3267              topsw0,toplw0,solsw0,sollw0, &
     3268              lwdn0, lwdn, lwup0, lwup,  &
     3269              swdn0, swdn, swup0, swup, &
     3270              ok_ade, ok_aie, &
     3271              tau_aero, piz_aero, cg_aero, &
     3272              topswad_aero, solswad_aero, &
     3273              topswad0_aero, solswad0_aero, &
     3274              topsw_aero, topsw0_aero, &
     3275              solsw_aero, solsw0_aero, &
     3276              cldtaupirad, &
     3277              topswai_aero, solswai_aero)
    32783278           
    32793279#endif
    32803280      ELSE
    3281 c
    3282 cIM calcul radiatif pour le cas actuel
    3283 c
     3281!
     3282!IM calcul radiatif pour le cas actuel
     3283!
    32843284       RCO2 = RCO2_act
    32853285       RCH4 = RCH4_act
     
    32873287       RCFC11 = RCFC11_act
    32883288       RCFC12 = RCFC12_act
    3289 c
     3289!
    32903290      IF (prt_level .GE.10) THEN
    32913291       print *,' ->radlwsw, number 1 '
    32923292      ENDIF
    3293 c
    3294          CALL radlwsw
    3295      e        (dist, rmu0, fract,
    3296      e        paprs, pplay,zxtsol,albsol1, albsol2,
    3297      e        t_seri,q_seri,wo,
    3298      e        cldfrarad, cldemirad, cldtaurad,
    3299      e        ok_ade.OR.flag_aerosol_strat, ok_aie, flag_aerosol,
    3300      e        flag_aerosol_strat,
    3301      e        tau_aero, piz_aero, cg_aero,
    3302      e        cldtaupirad,new_aod,
    3303      e        zqsat, flwc, fiwc,
    3304      s        heat,heat0,cool,cool0,radsol,albpla,
    3305      s        topsw,toplw,solsw,sollw,
    3306      s        sollwdown,
    3307      s        topsw0,toplw0,solsw0,sollw0,
    3308      s        lwdn0, lwdn, lwup0, lwup,
    3309      s        swdn0, swdn, swup0, swup,
    3310      s        topswad_aero, solswad_aero,
    3311      s        topswai_aero, solswai_aero,
    3312      o        topswad0_aero, solswad0_aero,
    3313      o        topsw_aero, topsw0_aero,
    3314      o        solsw_aero, solsw0_aero,
    3315      o        topswcf_aero, solswcf_aero)
     3293!
     3294         CALL radlwsw &
     3295              (dist, rmu0, fract,  &
     3296              paprs, pplay,zxtsol,albsol1, albsol2,  &
     3297              t_seri,q_seri,wo, &
     3298              cldfrarad, cldemirad, cldtaurad, &
     3299              ok_ade.OR.flag_aerosol_strat, ok_aie, flag_aerosol, &
     3300              flag_aerosol_strat, &
     3301              tau_aero, piz_aero, cg_aero, &
     3302              cldtaupirad,new_aod, &
     3303              zqsat, flwc, fiwc, &
     3304              heat,heat0,cool,cool0,radsol,albpla, &
     3305              topsw,toplw,solsw,sollw, &
     3306              sollwdown, &
     3307              topsw0,toplw0,solsw0,sollw0, &
     3308              lwdn0, lwdn, lwup0, lwup,  &
     3309              swdn0, swdn, swup0, swup, &
     3310              topswad_aero, solswad_aero, &
     3311              topswai_aero, solswai_aero, &
     3312              topswad0_aero, solswad0_aero, &
     3313              topsw_aero, topsw0_aero, &
     3314              solsw_aero, solsw0_aero, &
     3315              topswcf_aero, solswcf_aero)
    33163316         
    3317 c
    3318 cIM 2eme calcul radiatif pour le cas perturbe ou au moins un
    3319 cIM des taux doit etre different du taux actuel
    3320 cIM Par defaut on a les taux perturbes egaux aux taux actuels
    3321 c
     3317!
     3318!IM 2eme calcul radiatif pour le cas perturbe ou au moins un
     3319!IM des taux doit etre different du taux actuel
     3320!IM Par defaut on a les taux perturbes egaux aux taux actuels
     3321!
    33223322      if (ok_4xCO2atm) then
    3323        if (RCO2_per.NE.RCO2_act.OR.RCH4_per.NE.RCH4_act.OR.
    3324      $RN2O_per.NE.RN2O_act.OR.RCFC11_per.NE.RCFC11_act.OR.
    3325      $RCFC12_per.NE.RCFC12_act) THEN
    3326 c
     3323       if (RCO2_per.NE.RCO2_act.OR.RCH4_per.NE.RCH4_act.OR. &
     3324      RN2O_per.NE.RN2O_act.OR.RCFC11_per.NE.RCFC11_act.OR. &
     3325      RCFC12_per.NE.RCFC12_act) THEN
     3326!
    33273327       RCO2 = RCO2_per
    33283328       RCH4 = RCH4_per
     
    33303330       RCFC11 = RCFC11_per
    33313331       RCFC12 = RCFC12_per
    3332 c
     3332!
    33333333      IF (prt_level .GE.10) THEN
    33343334       print *,' ->radlwsw, number 2 '
    33353335      ENDIF
    3336 c
    3337          CALL radlwsw
    3338      e        (dist, rmu0, fract,
    3339      e        paprs, pplay,zxtsol,albsol1, albsol2,
    3340      e        t_seri,q_seri,wo,
    3341      e        cldfra, cldemi, cldtau,
    3342      e        ok_ade.OR.flag_aerosol_strat, ok_aie, flag_aerosol,
    3343      e        flag_aerosol_strat,
    3344      e        tau_aero, piz_aero, cg_aero,
    3345      e        cldtaupi,new_aod,
    3346      e        zqsat, flwc, fiwc,
    3347      s        heatp,heat0p,coolp,cool0p,radsolp,albplap,
    3348      s        topswp,toplwp,solswp,sollwp,
    3349      s        sollwdownp,
    3350      s        topsw0p,toplw0p,solsw0p,sollw0p,
    3351      s        lwdn0p, lwdnp, lwup0p, lwupp,
    3352      s        swdn0p, swdnp, swup0p, swupp,
    3353      s        topswad_aerop, solswad_aerop,
    3354      s        topswai_aerop, solswai_aerop,
    3355      o        topswad0_aerop, solswad0_aerop,
    3356      o        topsw_aerop, topsw0_aerop,
    3357      o        solsw_aerop, solsw0_aerop,
    3358      o        topswcf_aerop, solswcf_aerop)
     3336!
     3337         CALL radlwsw &
     3338              (dist, rmu0, fract,  &
     3339              paprs, pplay,zxtsol,albsol1, albsol2,  &
     3340              t_seri,q_seri,wo, &
     3341              cldfra, cldemi, cldtau, &
     3342              ok_ade.OR.flag_aerosol_strat, ok_aie, flag_aerosol, &
     3343              flag_aerosol_strat, &
     3344              tau_aero, piz_aero, cg_aero, &
     3345              cldtaupi,new_aod, &
     3346              zqsat, flwc, fiwc, &
     3347              heatp,heat0p,coolp,cool0p,radsolp,albplap, &
     3348              topswp,toplwp,solswp,sollwp, &
     3349              sollwdownp, &
     3350              topsw0p,toplw0p,solsw0p,sollw0p, &
     3351              lwdn0p, lwdnp, lwup0p, lwupp,  &
     3352              swdn0p, swdnp, swup0p, swupp, &
     3353              topswad_aerop, solswad_aerop, &
     3354              topswai_aerop, solswai_aerop, &
     3355              topswad0_aerop, solswad0_aerop, &
     3356              topsw_aerop, topsw0_aerop, &
     3357              solsw_aerop, solsw0_aerop, &
     3358              topswcf_aerop, solswcf_aerop)
    33593359       endif
    33603360      endif
    3361 c
     3361!
    33623362      ENDIF ! aerosol_couple
    33633363      itaprad = 0
     
    33873387      END IF
    33883388
    3389 c
    3390 c Ajouter la tendance des rayonnements (tous les pas)
    3391 c
     3389!
     3390! Ajouter la tendance des rayonnements (tous les pas)
     3391!
    33923392      DO k = 1, klev
    33933393      DO i = 1, klon
    3394          t_seri(i,k) = t_seri(i,k)
    3395      .               + (heat(i,k)-cool(i,k)) * dtime/RDAY
    3396       ENDDO
    3397       ENDDO
    3398 c
     3394         t_seri(i,k) = t_seri(i,k) &
     3395                     + (heat(i,k)-cool(i,k)) * dtime/RDAY
     3396      ENDDO
     3397      ENDDO
     3398!
    33993399      if (mydebug) then
    34003400        call writefield_phy('u_seri',u_seri,llm)
     
    34043404      endif
    34053405 
    3406 cIM
     3406!IM
    34073407      IF (ip_ebil_phy.ge.2) THEN
    34083408        ztit='after rad'
    3409         CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime
    3410      e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
    3411      s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    3412         call diagphy(airephy,ztit,ip_ebil_phy
    3413      e      , topsw, toplw, solsw, sollw, zero_v
    3414      e      , zero_v, zero_v, zero_v, ztsol
    3415      e      , d_h_vcol, d_qt, d_ec
    3416      s      , fs_bound, fq_bound )
     3409        CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     3410            , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
     3411            , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     3412        call diagphy(airephy,ztit,ip_ebil_phy &
     3413            , topsw, toplw, solsw, sollw, zero_v &
     3414            , zero_v, zero_v, zero_v, ztsol &
     3415            , d_h_vcol, d_qt, d_ec &
     3416            , fs_bound, fq_bound )
    34173417      END IF
    3418 c
    3419 c
    3420 c Calculer l'hydrologie de la surface
    3421 c
    3422 c      CALL hydrol(dtime,pctsrf,rain_fall, snow_fall, zxevap,
    3423 c     .            agesno, ftsol,fqsurf,fsnow, ruis)
    3424 c
    3425 
    3426 c
    3427 c Calculer le bilan du sol et la derive de temperature (couplage)
    3428 c
     3418!
     3419!
     3420! Calculer l'hydrologie de la surface
     3421!
     3422!      CALL hydrol(dtime,pctsrf,rain_fall, snow_fall, zxevap,
     3423!     .            agesno, ftsol,fqsurf,fsnow, ruis)
     3424!
     3425
     3426!
     3427! Calculer le bilan du sol et la derive de temperature (couplage)
     3428!
    34293429      DO i = 1, klon
    3430 c         bils(i) = radsol(i) - sens(i) - evap(i)*RLVTT
    3431 c a la demande de JLD
     3430!         bils(i) = radsol(i) - sens(i) - evap(i)*RLVTT
     3431! a la demande de JLD
    34323432         bils(i) = radsol(i) - sens(i) + zxfluxlat(i)
    34333433      ENDDO
    3434 c
    3435 cmoddeblott(jan95)
    3436 c Appeler le programme de parametrisation de l'orographie
    3437 c a l'echelle sous-maille:
    3438 c
     3434!
     3435!moddeblott(jan95)
     3436! Appeler le programme de parametrisation de l'orographie
     3437! a l'echelle sous-maille:
     3438!
    34393439      IF (prt_level .GE.10) THEN
    34403440       print *,' call orography ? ', ok_orodr
    34413441      ENDIF
    3442 c
     3442!
    34433443      IF (ok_orodr) THEN
    3444 c
    3445 c  selection des points pour lesquels le shema est actif:
     3444!
     3445!  selection des points pour lesquels le shema est actif:
    34463446        igwd=0
    34473447        DO i=1,klon
    34483448        itest(i)=0
    3449 c        IF ((zstd(i).gt.10.0)) THEN
     3449!        IF ((zstd(i).gt.10.0)) THEN
    34503450        IF (((zpic(i)-zmea(i)).GT.100.).AND.(zstd(i).GT.10.0)) THEN
    34513451          itest(i)=1
     
    34543454        ENDIF
    34553455        ENDDO
    3456 c        igwdim=MAX(1,igwd)
    3457 c
     3456!        igwdim=MAX(1,igwd)
     3457!
    34583458        IF (ok_strato) THEN
    34593459       
    3460           CALL drag_noro_strato(klon,klev,dtime,paprs,pplay,
    3461      e                   zmea,zstd, zsig, zgam, zthe,zpic,zval,
    3462      e                   igwd,idx,itest,
    3463      e                   t_seri, u_seri, v_seri,
    3464      s                   zulow, zvlow, zustrdr, zvstrdr,
    3465      s                   d_t_oro, d_u_oro, d_v_oro)
     3460          CALL drag_noro_strato(klon,klev,dtime,paprs,pplay, &
     3461                         zmea,zstd, zsig, zgam, zthe,zpic,zval, &
     3462                         igwd,idx,itest, &
     3463                         t_seri, u_seri, v_seri, &
     3464                         zulow, zvlow, zustrdr, zvstrdr, &
     3465                         d_t_oro, d_u_oro, d_v_oro)
    34663466
    34673467       ELSE
    3468         CALL drag_noro(klon,klev,dtime,paprs,pplay,
    3469      e                   zmea,zstd, zsig, zgam, zthe,zpic,zval,
    3470      e                   igwd,idx,itest,
    3471      e                   t_seri, u_seri, v_seri,
    3472      s                   zulow, zvlow, zustrdr, zvstrdr,
    3473      s                   d_t_oro, d_u_oro, d_v_oro)
     3468        CALL drag_noro(klon,klev,dtime,paprs,pplay, &
     3469                         zmea,zstd, zsig, zgam, zthe,zpic,zval, &
     3470                         igwd,idx,itest, &
     3471                         t_seri, u_seri, v_seri, &
     3472                         zulow, zvlow, zustrdr, zvstrdr, &
     3473                         d_t_oro, d_u_oro, d_v_oro)
    34743474       ENDIF
    3475 c
    3476 c  ajout des tendances
     3475!
     3476!  ajout des tendances
    34773477!-----------------------------------------------------------------------------------------
    34783478! ajout des tendances de la trainee de l'orographie
    34793479      CALL add_phys_tend(d_u_oro,d_v_oro,d_t_oro,dq0,dql0,'oro')
    34803480!-----------------------------------------------------------------------------------------
    3481 c
     3481!
    34823482      ENDIF ! fin de test sur ok_orodr
    3483 c
     3483!
    34843484      if (mydebug) then
    34853485        call writefield_phy('u_seri',u_seri,llm)
     
    34903490     
    34913491      IF (ok_orolf) THEN
    3492 c
    3493 c  selection des points pour lesquels le shema est actif:
     3492!
     3493!  selection des points pour lesquels le shema est actif:
    34943494        igwd=0
    34953495        DO i=1,klon
     
    35013501        ENDIF
    35023502        ENDDO
    3503 c        igwdim=MAX(1,igwd)
    3504 c
     3503!        igwdim=MAX(1,igwd)
     3504!
    35053505        IF (ok_strato) THEN
    35063506
    3507           CALL lift_noro_strato(klon,klev,dtime,paprs,pplay,
    3508      e                   rlat,zmea,zstd,zpic,zgam,zthe,zpic,zval,
    3509      e                   igwd,idx,itest,
    3510      e                   t_seri, u_seri, v_seri,
    3511      s                   zulow, zvlow, zustrli, zvstrli,
    3512      s                   d_t_lif, d_u_lif, d_v_lif               )
     3507          CALL lift_noro_strato(klon,klev,dtime,paprs,pplay, &
     3508                         rlat,zmea,zstd,zpic,zgam,zthe,zpic,zval, &
     3509                         igwd,idx,itest, &
     3510                         t_seri, u_seri, v_seri, &
     3511                         zulow, zvlow, zustrli, zvstrli, &
     3512                         d_t_lif, d_u_lif, d_v_lif               )
    35133513       
    35143514        ELSE
    3515           CALL lift_noro(klon,klev,dtime,paprs,pplay,
    3516      e                   rlat,zmea,zstd,zpic,
    3517      e                   itest,
    3518      e                   t_seri, u_seri, v_seri,
    3519      s                   zulow, zvlow, zustrli, zvstrli,
    3520      s                   d_t_lif, d_u_lif, d_v_lif)
     3515          CALL lift_noro(klon,klev,dtime,paprs,pplay, &
     3516                         rlat,zmea,zstd,zpic, &
     3517                         itest, &
     3518                         t_seri, u_seri, v_seri, &
     3519                         zulow, zvlow, zustrli, zvstrli, &
     3520                         d_t_lif, d_u_lif, d_v_lif)
    35213521       ENDIF
    3522 c   
     3522!   
    35233523!-----------------------------------------------------------------------------------------
    35243524! ajout des tendances de la portance de l'orographie
    35253525      CALL add_phys_tend(d_u_lif,d_v_lif,d_t_lif,dq0,dql0,'lif')
    35263526!-----------------------------------------------------------------------------------------
    3527 c
     3527!
    35283528      ENDIF ! fin de test sur ok_orolf
    3529 C  HINES GWD PARAMETRIZATION
     3529!  HINES GWD PARAMETRIZATION
    35303530
    35313531       IF (ok_hines) then
    35323532
    3533          CALL hines_gwd(klon,klev,dtime,paprs,pplay,
    3534      i                  rlat,t_seri,u_seri,v_seri,
    3535      o                  zustrhi,zvstrhi,
    3536      o                  d_t_hin, d_u_hin, d_v_hin)
    3537 c
    3538 c  ajout des tendances
     3533         CALL hines_gwd(klon,klev,dtime,paprs,pplay, &
     3534                        rlat,t_seri,u_seri,v_seri, &
     3535                        zustrhi,zvstrhi, &
     3536                        d_t_hin, d_u_hin, d_v_hin)
     3537!
     3538!  ajout des tendances
    35393539        CALL add_phys_tend(d_u_hin,d_v_hin,d_t_hin,dq0,dql0,'hin')
    35403540
    35413541      ENDIF
    3542 c
    3543 
    3544 c
    3545 cIM cf. FLott BEG
    3546 C STRESS NECESSAIRES: TOUTE LA PHYSIQUE
     3542!
     3543
     3544!
     3545!IM cf. FLott BEG
     3546! STRESS NECESSAIRES: TOUTE LA PHYSIQUE
    35473547
    35483548      if (mydebug) then
     
    35593559      DO k = 1, klev
    35603560      DO i = 1, klon
    3561        zustrph(i)=zustrph(i)+(u_seri(i,k)-u(i,k))/dtime*
    3562      c            (paprs(i,k)-paprs(i,k+1))/rg
    3563        zvstrph(i)=zvstrph(i)+(v_seri(i,k)-v(i,k))/dtime*
    3564      c            (paprs(i,k)-paprs(i,k+1))/rg
    3565       ENDDO
    3566       ENDDO
    3567 c
    3568 cIM calcul composantes axiales du moment angulaire et couple des montagnes
    3569 c
     3561       zustrph(i)=zustrph(i)+(u_seri(i,k)-u(i,k))/dtime* &
     3562                  (paprs(i,k)-paprs(i,k+1))/rg
     3563       zvstrph(i)=zvstrph(i)+(v_seri(i,k)-v(i,k))/dtime* &
     3564                  (paprs(i,k)-paprs(i,k+1))/rg
     3565      ENDDO
     3566      ENDDO
     3567!
     3568!IM calcul composantes axiales du moment angulaire et couple des montagnes
     3569!
    35703570      IF (is_sequential .and. ok_orodr) THEN
    3571         CALL aaam_bud (27,klon,klev,jD_cur-jD_ref,jH_cur,
    3572      C                 ra,rg,romega,
    3573      C                 rlat,rlon,pphis,
    3574      C                 zustrdr,zustrli,zustrph,
    3575      C                 zvstrdr,zvstrli,zvstrph,
    3576      C                 paprs,u,v,
    3577      C                 aam, torsfc)
     3571        CALL aaam_bud (27,klon,klev,jD_cur-jD_ref,jH_cur, &
     3572                       ra,rg,romega, &
     3573                       rlat,rlon,pphis, &
     3574                       zustrdr,zustrli,zustrph, &
     3575                       zvstrdr,zvstrli,zvstrph, &
     3576                       paprs,u,v, &
     3577                       aam, torsfc)
    35783578       ENDIF
    3579 cIM cf. FLott END
    3580 cIM
     3579!IM cf. FLott END
     3580!IM
    35813581      IF (ip_ebil_phy.ge.2) THEN
    35823582        ztit='after orography'
    3583         CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime
    3584      e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
    3585      s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    3586          call diagphy(airephy,ztit,ip_ebil_phy
    3587      e      , zero_v, zero_v, zero_v, zero_v, zero_v
    3588      e      , zero_v, zero_v, zero_v, ztsol
    3589      e      , d_h_vcol, d_qt, d_ec
    3590      s      , fs_bound, fq_bound )
     3583        CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     3584            , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
     3585            , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     3586         call diagphy(airephy,ztit,ip_ebil_phy &
     3587            , zero_v, zero_v, zero_v, zero_v, zero_v &
     3588            , zero_v, zero_v, zero_v, ztsol &
     3589            , d_h_vcol, d_qt, d_ec &
     3590            , fs_bound, fq_bound )
    35913591      END IF
    3592 c
    3593 c
     3592!
     3593!
    35943594!====================================================================
    35953595! Interface Simulateur COSP (Calipso, ISCCP, MISR, ..)
     
    36063606!       print*,'Dans physiq.F avant appel cosp ref_liq,ref_ice=',
    36073607!     s        ref_liq,ref_ice
    3608           call phys_cosp(itap,dtime,freq_cosp,
    3609      $                   ok_mensuelCOSP,ok_journeCOSP,ok_hfCOSP,
    3610      $                   ecrit_mth,ecrit_day,ecrit_hf,
    3611      $                   klon,klev,rlon,rlat,presnivs,overlap,
    3612      $                   ref_liq,ref_ice,
    3613      $                   pctsrf(:,is_ter)+pctsrf(:,is_lic),
    3614      $                   zu10m,zv10m,pphis,
    3615      $                   zphi,paprs(:,1:klev),pplay,zxtsol,t_seri,
    3616      $                   qx(:,:,ivap),zx_rh,cldfra,rnebcon,flwc,fiwc,
    3617      $                   prfl(:,1:klev),psfl(:,1:klev),
    3618      $                   pmflxr(:,1:klev),pmflxs(:,1:klev),
    3619      $                   mr_ozone,cldtau, cldemi)
     3608          call phys_cosp(itap,dtime,freq_cosp, &
     3609                         ok_mensuelCOSP,ok_journeCOSP,ok_hfCOSP, &
     3610                         ecrit_mth,ecrit_day,ecrit_hf, &
     3611                         klon,klev,rlon,rlat,presnivs,overlap, &
     3612                         ref_liq,ref_ice, &
     3613                         pctsrf(:,is_ter)+pctsrf(:,is_lic), &
     3614                         zu10m,zv10m,pphis, &
     3615                         zphi,paprs(:,1:klev),pplay,zxtsol,t_seri, &
     3616                         qx(:,:,ivap),zx_rh,cldfra,rnebcon,flwc,fiwc, &
     3617                         prfl(:,1:klev),psfl(:,1:klev), &
     3618                         pmflxr(:,1:klev),pmflxs(:,1:klev), &
     3619                         mr_ozone,cldtau, cldemi)
    36203620
    36213621!     L          calipso2D,calipso3D,cfadlidar,parasolrefl,atb,betamol,
     
    36303630       ENDIF  !ok_cosp
    36313631!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    3632 cAA
    3633 cAA Installation de l'interface online-offline pour traceurs
    3634 cAA
    3635 c====================================================================
    3636 c   Calcul  des tendances traceurs
    3637 c====================================================================
    3638 C
     3632!AA
     3633!AA Installation de l'interface online-offline pour traceurs
     3634!AA
     3635!====================================================================
     3636!   Calcul  des tendances traceurs
     3637!====================================================================
     3638!
    36393639
    36403640       IF (type_trac=='repr') THEN
     
    36443644       END IF
    36453645
    3646       call phytrac (
    3647      I     itap,     days_elapsed+1,    jH_cur,   debut,
    3648      I     lafin,    dtime,     u, v,     t,
    3649      I     paprs,    pplay,     pmfu,     pmfd,
    3650      I     pen_u,    pde_u,     pen_d,    pde_d,
    3651      I     cdragh,   coefh(:,:,is_ave),   fm_therm, entr_therm,
    3652      I     u1,       v1,        ftsol,    pctsrf,
    3653      I     zustar,   zu10m,     zv10m,
    3654      I     wstar(:,is_ave),    ale_bl,         ale_wake,
    3655      I     rlat,     rlon,
    3656      I     frac_impa,frac_nucl, beta_prec_fisrt,beta_prec,
    3657      I     presnivs, pphis,     pphi,     albsol1,
    3658      I     sh_in,    rhcl,      cldfra,   rneb,
    3659      I     diafra,   cldliq,    itop_con, ibas_con,
    3660      I     pmflxr,   pmflxs,    prfl,     psfl,
    3661      I     da,       phi,       mp,       upwd,
    3662      I     phi2,     d1a,       dam,      sij,         !<<RomP
    3663      I     wdtrainA, wdtrainM,  sigd,     clw,elij,    !<<RomP
    3664      I     ev,       ep,        epmlmMm,  eplaMm,      !<<RomP
    3665      I     dnwd,     aerosol_couple,      flxmass_w,
    3666      I     tau_aero, piz_aero,  cg_aero,  ccm,
    3667      I     rfname,
    3668      I     d_tr_dyn,                                   !<<RomP
    3669      O     tr_seri)
     3646      call phytrac ( &
     3647           itap,     days_elapsed+1,    jH_cur,   debut, &
     3648           lafin,    dtime,     u, v,     t, &
     3649           paprs,    pplay,     pmfu,     pmfd, &
     3650           pen_u,    pde_u,     pen_d,    pde_d, &
     3651           cdragh,   coefh(:,:,is_ave),   fm_therm, entr_therm, &
     3652           u1,       v1,        ftsol,    pctsrf, &
     3653           zustar,   zu10m,     zv10m, &
     3654           wstar(:,is_ave),    ale_bl,         ale_wake, &
     3655           rlat,     rlon, &
     3656           frac_impa,frac_nucl, beta_prec_fisrt,beta_prec, &
     3657           presnivs, pphis,     pphi,     albsol1, &
     3658           sh_in,    rhcl,      cldfra,   rneb, &
     3659           diafra,   cldliq,    itop_con, ibas_con, &
     3660           pmflxr,   pmflxs,    prfl,     psfl, &
     3661           da,       phi,       mp,       upwd, &
     3662           phi2,     d1a,       dam,      sij, &        !<<RomP
     3663           wdtrainA, wdtrainM,  sigd,     clw,elij, &   !<<RomP
     3664           ev,       ep,        epmlmMm,  eplaMm, &     !<<RomP
     3665           dnwd,     aerosol_couple,      flxmass_w, &
     3666           tau_aero, piz_aero,  cg_aero,  ccm, &
     3667           rfname, &
     3668           d_tr_dyn, &                                 !<<RomP
     3669           tr_seri)
    36703670
    36713671      IF (offline) THEN
    36723672
    3673        IF (prt_level.ge.9)
    3674      $    print*,'Attention on met a 0 les thermiques pour phystoke'
    3675          call phystokenc (
    3676      I                   nlon,klev,pdtphys,rlon,rlat,
    3677      I                   t,pmfu, pmfd, pen_u, pde_u, pen_d, pde_d,
    3678      I                   fm_therm,entr_therm,
    3679      I                   cdragh,coefh(:,:,is_ave),u1,v1,ftsol,pctsrf,
    3680      I                   frac_impa, frac_nucl,
    3681      I                   pphis,airephy,dtime,itap,
    3682      I                   qx(:,:,ivap),da,phi,mp,upwd,dnwd)
     3673       IF (prt_level.ge.9) &
     3674          print*,'Attention on met a 0 les thermiques pour phystoke'
     3675         call phystokenc ( &
     3676                         nlon,klev,pdtphys,rlon,rlat, &
     3677                         t,pmfu, pmfd, pen_u, pde_u, pen_d, pde_d, &
     3678                         fm_therm,entr_therm, &
     3679                         cdragh,coefh(:,:,is_ave),u1,v1,ftsol,pctsrf, &
     3680                         frac_impa, frac_nucl, &
     3681                         pphis,airephy,dtime,itap, &
     3682                         qx(:,:,ivap),da,phi,mp,upwd,dnwd)
    36833683
    36843684
    36853685      ENDIF
    36863686
    3687 c
    3688 c Calculer le transport de l'eau et de l'energie (diagnostique)
    3689 c
    3690       CALL transp (paprs,zxtsol,
    3691      e                   t_seri, q_seri, u_seri, v_seri, zphi,
    3692      s                   ve, vq, ue, uq)
    3693 c
    3694 cIM global posePB BEG
     3687!
     3688! Calculer le transport de l'eau et de l'energie (diagnostique)
     3689!
     3690      CALL transp (paprs,zxtsol, &
     3691                         t_seri, q_seri, u_seri, v_seri, zphi, &
     3692                         ve, vq, ue, uq)
     3693!
     3694!IM global posePB BEG
    36953695      IF(1.EQ.0) THEN
    3696 c
    3697       CALL transp_lay (paprs,zxtsol,
    3698      e                   t_seri, q_seri, u_seri, v_seri, zphi,
    3699      s                   ve_lay, vq_lay, ue_lay, uq_lay)
    3700 c
     3696!
     3697      CALL transp_lay (paprs,zxtsol, &
     3698                         t_seri, q_seri, u_seri, v_seri, zphi, &
     3699                         ve_lay, vq_lay, ue_lay, uq_lay)
     3700!
    37013701      ENDIF !(1.EQ.0) THEN
    3702 cIM global posePB END
    3703 c Accumuler les variables a stocker dans les fichiers histoire:
    3704 c
     3702!IM global posePB END
     3703! Accumuler les variables a stocker dans les fichiers histoire:
     3704!
    37053705
    37063706!================================================================
     
    37113711      d_t_ec(:,:)=0.
    37123712      forall (k=1: llm) exner(:, k) = (pplay(:, k)/paprs(:,1))**RKAPPA
    3713       CALL ener_conserv(klon,klev,pdtphys,u,v,t,qx(:,:,ivap),
    3714      s        u_seri,v_seri,t_seri,q_seri,pbl_tke(:,:,is_ave)-tke0(:,:),
    3715      s        zmasse,exner,d_t_ec)
     3713      CALL ener_conserv(klon,klev,pdtphys,u,v,t,qx(:,:,ivap), &
     3714              u_seri,v_seri,t_seri,q_seri,pbl_tke(:,:,is_ave)-tke0(:,:), &
     3715              zmasse,exner,d_t_ec)
    37163716      t_seri(:,:)=t_seri(:,:)+d_t_ec(:,:)
    37173717
    3718 cIM
     3718!IM
    37193719      IF (ip_ebil_phy.ge.1) THEN
    37203720        ztit='after physic'
    3721         CALL diagetpq(airephy,ztit,ip_ebil_phy,1,1,dtime
    3722      e      , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay
    3723      s      , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    3724 C     Comme les tendances de la physique sont ajoute dans la dynamique,
    3725 C     on devrait avoir que la variation d'entalpie par la dynamique
    3726 C     est egale a la variation de la physique au pas de temps precedent.
    3727 C     Donc la somme de ces 2 variations devrait etre nulle.
    3728 
    3729         call diagphy(airephy,ztit,ip_ebil_phy
    3730      e      , topsw, toplw, solsw, sollw, sens
    3731      e      , evap, rain_fall, snow_fall, ztsol
    3732      e      , d_h_vcol, d_qt, d_ec
    3733      s      , fs_bound, fq_bound )
    3734 C
     3721        CALL diagetpq(airephy,ztit,ip_ebil_phy,1,1,dtime &
     3722            , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
     3723            , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     3724!     Comme les tendances de la physique sont ajoute dans la dynamique,
     3725!     on devrait avoir que la variation d'entalpie par la dynamique
     3726!     est egale a la variation de la physique au pas de temps precedent.
     3727!     Donc la somme de ces 2 variations devrait etre nulle.
     3728
     3729        call diagphy(airephy,ztit,ip_ebil_phy &
     3730            , topsw, toplw, solsw, sollw, sens &
     3731            , evap, rain_fall, snow_fall, ztsol &
     3732            , d_h_vcol, d_qt, d_ec &
     3733            , fs_bound, fq_bound )
     3734!
    37353735      d_h_vcol_phy=d_h_vcol
    3736 C
     3736!
    37373737      END IF
    3738 C
    3739 c=======================================================================
    3740 c   SORTIES
    3741 c=======================================================================
    3742 
    3743 cIM Interpolation sur les niveaux de pression du NMC
    3744 c   -------------------------------------------------
    3745 c
     3738!
     3739!=======================================================================
     3740!   SORTIES
     3741!=======================================================================
     3742
     3743!IM Interpolation sur les niveaux de pression du NMC
     3744!   -------------------------------------------------
     3745!
    37463746#include "calcul_STDlev.h"
    3747 c
    3748 c slp sea level pressure
     3747!
     3748! slp sea level pressure
    37493749      slp(:) = paprs(:,1)*exp(pphis(:)/(RD*t_seri(:,1)))
    3750 c
    3751 ccc prw = eau precipitable
     3750!
     3751!cc prw = eau precipitable
    37523752      DO i = 1, klon
    37533753       prw(i) = 0.
    37543754       DO k = 1, klev
    3755         prw(i) = prw(i) +
    3756      .           q_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/RG
     3755        prw(i) = prw(i) + &
     3756                 q_seri(i,k)*(paprs(i,k)-paprs(i,k+1))/RG
    37573757       ENDDO
    37583758      ENDDO
    3759 c
    3760 cIM initialisation + calculs divers diag AMIP2
    3761 c
     3759!
     3760!IM initialisation + calculs divers diag AMIP2
     3761!
    37623762#include "calcul_divers.h"
    3763 c
     3763!
    37643764      IF (type_trac == 'inca') THEN
    37653765#ifdef INCA
     
    37673767         CALL VTb(VTinca)
    37683768
    3769          CALL chemhook_end (
    3770      $                        dtime,
    3771      $                        pplay,
    3772      $                        t_seri,
    3773      $                        tr_seri,
    3774      $                        nbtr,
    3775      $                        paprs,
    3776      $                        q_seri,
    3777      $                        airephy,
    3778      $                        pphi,
    3779      $                        pphis,
    3780      $                        zx_rh)
     3769         CALL chemhook_end ( &
     3770                              dtime, &
     3771                              pplay, &
     3772                              t_seri, &
     3773                              tr_seri, &
     3774                              nbtr, &
     3775                              paprs, &
     3776                              q_seri, &
     3777                              airephy, &
     3778                              pphi, &
     3779                              pphis, &
     3780                              zx_rh)
    37813781
    37823782         CALL VTe(VTinca)
     
    37863786
    37873787
    3788 c
    3789 c Convertir les incrementations en tendances
    3790 c
     3788!
     3789! Convertir les incrementations en tendances
     3790!
    37913791      IF (prt_level .GE.10) THEN
    37923792        print *,'Convertir les incrementations en tendances '
    37933793      ENDIF
    3794 c
     3794!
    37953795      if (mydebug) then
    37963796        call writefield_phy('u_seri',u_seri,llm)
     
    38093809      ENDDO
    38103810      ENDDO
    3811 c
     3811!
    38123812      IF (nqtot.GE.3) THEN
    38133813      DO iq = 3, nqtot
     
    38193819      ENDDO
    38203820      ENDIF
    3821 c
    3822 cIM rajout diagnostiques bilan KP pour analyse MJO par Jun-Ichi Yano
    3823 cIM global posePB#include "write_bilKP_ins.h"
    3824 cIM global posePB#include "write_bilKP_ave.h"
    3825 c
    3826 
    3827 c Sauvegarder les valeurs de t et q a la fin de la physique:
    3828 c
     3821!
     3822!IM rajout diagnostiques bilan KP pour analyse MJO par Jun-Ichi Yano
     3823!IM global posePB#include "write_bilKP_ins.h"
     3824!IM global posePB#include "write_bilKP_ave.h"
     3825!
     3826
     3827! Sauvegarder les valeurs de t et q a la fin de la physique:
     3828!
    38293829      DO k = 1, klev
    38303830      DO i = 1, klon
     
    38563856      if (prt_level.ge.1) then
    38573857      write(lunout,*) 'FIN DE PHYSIQ !!!!!!!!!!!!!!!!!!!!'
    3858       write(lunout,*)
    3859      s 'nlon,klev,nqtot,debut,lafin,jD_cur, jH_cur, pdtphys pct tlos'
    3860       write(lunout,*)
    3861      s  nlon,klev,nqtot,debut,lafin, jD_cur, jH_cur ,pdtphys,
    3862      s  pctsrf(igout,is_ter), pctsrf(igout,is_lic),pctsrf(igout,is_oce),
    3863      s  pctsrf(igout,is_sic)
     3858      write(lunout,*) &
     3859       'nlon,klev,nqtot,debut,lafin,jD_cur, jH_cur, pdtphys pct tlos'
     3860      write(lunout,*) &
     3861        nlon,klev,nqtot,debut,lafin, jD_cur, jH_cur ,pdtphys, &
     3862        pctsrf(igout,is_ter), pctsrf(igout,is_lic),pctsrf(igout,is_oce), &
     3863        pctsrf(igout,is_sic)
    38643864      write(lunout,*) 'd_t_dyn,d_t_con,d_t_lsc,d_t_ajsb,d_t_ajs,d_t_eva'
    38653865      do k=1,klev
    3866          write(lunout,*) d_t_dyn(igout,k),d_t_con(igout,k),
    3867      s   d_t_lsc(igout,k),d_t_ajsb(igout,k),d_t_ajs(igout,k),
    3868      s   d_t_eva(igout,k)
     3866         write(lunout,*) d_t_dyn(igout,k),d_t_con(igout,k), &
     3867         d_t_lsc(igout,k),d_t_ajsb(igout,k),d_t_ajs(igout,k), &
     3868         d_t_eva(igout,k)
    38693869      enddo
    38703870      write(lunout,*) 'cool,heat'
     
    38753875      write(lunout,*) 'd_t_oli,d_t_vdf,d_t_oro,d_t_lif,d_t_ec'
    38763876      do k=1,klev
    3877          write(lunout,*) d_t_oli(igout,k),d_t_vdf(igout,k),
    3878      s d_t_oro(igout,k),d_t_lif(igout,k),d_t_ec(igout,k)
     3877         write(lunout,*) d_t_oli(igout,k),d_t_vdf(igout,k), &
     3878       d_t_oro(igout,k),d_t_lif(igout,k),d_t_ec(igout,k)
    38793879      enddo
    38803880
     
    38823882      write(lunout,*) 'd_u, d_v, d_t, d_qx1, d_qx2 '
    38833883      do k=1,klev
    3884          write(lunout,*) d_u(igout,k),d_v(igout,k),d_t(igout,k),
    3885      s  d_qx(igout,k,1),d_qx(igout,k,2)
     3884         write(lunout,*) d_u(igout,k),d_v(igout,k),d_t(igout,k), &
     3885        d_qx(igout,k,1),d_qx(igout,k,2)
    38863886      enddo
    38873887      endif
     
    38893889!==========================================================================
    38903890
    3891 c============================================================
    3892 c   Calcul de la temperature potentielle
    3893 c============================================================
     3891!============================================================
     3892!   Calcul de la temperature potentielle
     3893!============================================================
    38943894      DO k = 1, klev
    38953895      DO i = 1, klon
    3896 cJYG/IM theta en debut du pas de temps
    3897 cJYG/IM       theta(i,k)=t(i,k)*(100000./pplay(i,k))**(RD/RCPD)
    3898 cJYG/IM theta en fin de pas de temps de physique
     3896!JYG/IM theta en debut du pas de temps
     3897!JYG/IM       theta(i,k)=t(i,k)*(100000./pplay(i,k))**(RD/RCPD)
     3898!JYG/IM theta en fin de pas de temps de physique
    38993899        theta(i,k)=t_seri(i,k)*(100000./pplay(i,k))**(RD/RCPD)
    3900 c thetal: 2 lignes suivantes a decommenter si vous avez les fichiers     MPL 20130625
    3901 c fth_fonctions.F90 et parkind1.F90
    3902 c sinon thetal=theta
    3903 c       thetal(i,k)=fth_thetal(pplay(i,k),t_seri(i,k),q_seri(i,k),
    3904 c    :         ql_seri(i,k))
     3900! thetal: 2 lignes suivantes a decommenter si vous avez les fichiers     MPL 20130625
     3901! fth_fonctions.F90 et parkind1.F90
     3902! sinon thetal=theta
     3903!       thetal(i,k)=fth_thetal(pplay(i,k),t_seri(i,k),q_seri(i,k),
     3904!    :         ql_seri(i,k))
    39053905        thetal(i,k)=theta(i,k)
    39063906      ENDDO
    39073907      ENDDO
    3908 c
    3909 
    3910 c 22.03.04 BEG
    3911 c=============================================================
    3912 c   Ecriture des sorties
    3913 c=============================================================
     3908!
     3909
     3910! 22.03.04 BEG
     3911!=============================================================
     3912!   Ecriture des sorties
     3913!=============================================================
    39143914#ifdef CPP_IOIPSL
    39153915 
    3916 c Recupere des varibles calcule dans differents modules
    3917 c pour ecriture dans histxxx.nc
     3916! Recupere des varibles calcule dans differents modules
     3917! pour ecriture dans histxxx.nc
    39183918
    39193919      ! Get some variables from module fonte_neige_mod
    3920       CALL fonte_neige_get_vars(pctsrf,
    3921      .     zxfqcalving, zxfqfonte, zxffonte)
    3922 
    3923 
    3924 
    3925 
    3926 c=============================================================
     3920      CALL fonte_neige_get_vars(pctsrf,  &
     3921           zxfqcalving, zxfqfonte, zxffonte)
     3922
     3923
     3924
     3925
     3926!=============================================================
    39273927! Separation entre thermiques et non thermiques dans les sorties
    39283928! de fisrtilp
    3929 c=============================================================
     3929!=============================================================
    39303930
    39313931      if (iflag_thermals>=1) then
     
    39563956
    39573957      CALL phys_output_write(itap, pdtphys, paprs, pphis,               &
    3958      &                  pplay, lmax_th, aerosol_couple,                 &
    3959      &                  ok_ade, ok_aie, ivap, new_aod, ok_sync,         &
    3960      &                  ptconv, read_climoz, clevSTD, freq_moyNMC,      &
    3961      &                  ptconvth, d_t, qx, d_qx, zmasse,                &
    3962      &                  flag_aerosol_strat)
     3958                        pplay, lmax_th, aerosol_couple,                 &
     3959                        ok_ade, ok_aie, ivap, new_aod, ok_sync,         &
     3960                        ptconv, read_climoz, clevSTD, freq_moyNMC,      &
     3961                        ptconvth, d_t, qx, d_qx, zmasse,                &
     3962                        flag_aerosol_strat)
    39633963
    39643964
     
    39753975#endif
    39763976
    3977 c 22.03.04 END
    3978 c
    3979 c====================================================================
    3980 c Si c'est la fin, il faut conserver l'etat de redemarrage
    3981 c====================================================================
    3982 c
    3983 
    3984 c        -----------------------------------------------------------------
    3985 c        WSTATS: Saving statistics
    3986 c        -----------------------------------------------------------------
    3987 c        ("stats" stores and accumulates 8 key variables in file "stats.nc"
    3988 c        which can later be used to make the statistic files of the run:
    3989 c        "stats")          only possible in 3D runs !
     3977! 22.03.04 END
     3978!
     3979!====================================================================
     3980! Si c'est la fin, il faut conserver l'etat de redemarrage
     3981!====================================================================
     3982!
     3983
     3984!        -----------------------------------------------------------------
     3985!        WSTATS: Saving statistics
     3986!        -----------------------------------------------------------------
     3987!        ("stats" stores and accumulates 8 key variables in file "stats.nc"
     3988!        which can later be used to make the statistic files of the run:
     3989!        "stats")          only possible in 3D runs !
    39903990
    39913991         
    39923992         IF (callstats) THEN
    39933993
    3994            call wstats(klon,o_psol%name,"Surface pressure","Pa"
    3995      &                 ,2,paprs(:,1))
    3996            call wstats(klon,o_tsol%name,"Surface temperature","K",
    3997      &                 2,zxtsol)
     3994           call wstats(klon,o_psol%name,"Surface pressure","Pa" &
     3995                       ,2,paprs(:,1))
     3996           call wstats(klon,o_tsol%name,"Surface temperature","K", &
     3997                       2,zxtsol)
    39983998           zx_tmp_fi2d(:) = rain_fall(:) + snow_fall(:)
    3999            call wstats(klon,o_precip%name,"Precip Totale liq+sol",
    4000      &                 "kg/(s*m2)",2,zx_tmp_fi2d)
     3999           call wstats(klon,o_precip%name,"Precip Totale liq+sol", &
     4000                       "kg/(s*m2)",2,zx_tmp_fi2d)
    40014001           zx_tmp_fi2d(:) = rain_lsc(:) + snow_lsc(:)
    4002            call wstats(klon,o_plul%name,"Large-scale Precip",
    4003      &                 "kg/(s*m2)",2,zx_tmp_fi2d)
     4002           call wstats(klon,o_plul%name,"Large-scale Precip", &
     4003                       "kg/(s*m2)",2,zx_tmp_fi2d)
    40044004           zx_tmp_fi2d(:) = rain_con(:) + snow_con(:)
    4005            call wstats(klon,o_pluc%name,"Convective Precip",
    4006      &                 "kg/(s*m2)",2,zx_tmp_fi2d)
    4007            call wstats(klon,o_sols%name,"Solar rad. at surf.",
    4008      &                 "W/m2",2,solsw)
    4009            call wstats(klon,o_soll%name,"IR rad. at surf.",
    4010      &                 "W/m2",2,sollw)
     4005           call wstats(klon,o_pluc%name,"Convective Precip", &
     4006                       "kg/(s*m2)",2,zx_tmp_fi2d)
     4007           call wstats(klon,o_sols%name,"Solar rad. at surf.", &
     4008                       "W/m2",2,solsw)
     4009           call wstats(klon,o_soll%name,"IR rad. at surf.", &
     4010                       "W/m2",2,sollw)
    40114011          zx_tmp_fi2d(:) = topsw(:)-toplw(:)
    4012           call wstats(klon,o_nettop%name,"Net dn radiatif flux at TOA",
    4013      &                 "W/m2",2,zx_tmp_fi2d)
    4014 
    4015 
    4016 
    4017            call wstats(klon,o_temp%name,"Air temperature","K",
    4018      &                 3,t_seri)
    4019            call wstats(klon,o_vitu%name,"Zonal wind","m.s-1",
    4020      &                 3,u_seri)
    4021            call wstats(klon,o_vitv%name,"Meridional wind",
    4022      &                "m.s-1",3,v_seri)
    4023            call wstats(klon,o_vitw%name,"Vertical wind",
    4024      &                "m.s-1",3,omega)
    4025            call wstats(klon,o_ovap%name,"Specific humidity", "kg/kg",
    4026      &                 3,q_seri)
     4012          call wstats(klon,o_nettop%name,"Net dn radiatif flux at TOA", &
     4013                       "W/m2",2,zx_tmp_fi2d)
     4014
     4015
     4016
     4017           call wstats(klon,o_temp%name,"Air temperature","K", &
     4018                       3,t_seri)
     4019           call wstats(klon,o_vitu%name,"Zonal wind","m.s-1", &
     4020                       3,u_seri)
     4021           call wstats(klon,o_vitv%name,"Meridional wind", &
     4022                      "m.s-1",3,v_seri)
     4023           call wstats(klon,o_vitw%name,"Vertical wind", &
     4024                      "m.s-1",3,omega)
     4025           call wstats(klon,o_ovap%name,"Specific humidity", "kg/kg", &
     4026                       3,q_seri)
    40274027 
    40284028
     
    40414041!         write(97) u_seri,v_seri,t_seri,q_seri
    40424042!         close(97)
    4043 C$OMP MASTER
     4043!$OMP MASTER
    40444044         if (read_climoz >= 1) then
    40454045            if (is_mpi_root) then
     
    40484048            deallocate(press_climoz) ! pointer
    40494049         end if
    4050 C$OMP END MASTER
     4050!$OMP END MASTER
    40514051      ENDIF
    40524052     
     
    40574057      FUNCTION qcheck(klon,klev,paprs,q,ql,aire)
    40584058      IMPLICIT none
    4059 c
    4060 c Calculer et imprimer l'eau totale. A utiliser pour verifier
    4061 c la conservation de l'eau
    4062 c
     4059!
     4060! Calculer et imprimer l'eau totale. A utiliser pour verifier
     4061! la conservation de l'eau
     4062!
    40634063#include "YOMCST.h"
    40644064      INTEGER klon,klev
     
    40674067      REAL qtotal, zx, qcheck
    40684068      INTEGER i, k
    4069 c
     4069!
    40704070      zx = 0.0
    40714071      DO i = 1, klon
     
    40754075      DO k = 1, klev
    40764076      DO i = 1, klon
    4077          qtotal = qtotal + (q(i,k)+ql(i,k)) * aire(i)
    4078      .                     *(paprs(i,k)-paprs(i,k+1))/RG
    4079       ENDDO
    4080       ENDDO
    4081 c
     4077         qtotal = qtotal + (q(i,k)+ql(i,k)) * aire(i) &
     4078                           *(paprs(i,k)-paprs(i,k+1))/RG
     4079      ENDDO
     4080      ENDDO
     4081!
    40824082      qcheck = qtotal/zx
    4083 c
     4083!
    40844084      RETURN
    40854085      END
    40864086      SUBROUTINE gr_fi_ecrit(nfield,nlon,iim,jjmp1,fi,ecrit)
    40874087      IMPLICIT none
    4088 c
    4089 c Tranformer une variable de la grille physique a
    4090 c la grille d'ecriture
    4091 c
     4088!
     4089! Tranformer une variable de la grille physique a
     4090! la grille d'ecriture
     4091!
    40924092      INTEGER nfield,nlon,iim,jjmp1, jjm
    40934093      REAL fi(nlon,nfield), ecrit(iim*jjmp1,nfield)
    4094 c
     4094!
    40954095      INTEGER i, n, ig
    4096 c
     4096!
    40974097      jjm = jjmp1 - 1
    40984098      DO n = 1, nfield
  • LMDZ5/trunk/libf/phylmd/regdim.h

    r524 r1862  
    22! $Header$
    33!
     4!     Valid and equivalent for either free source form or fixed source form
    45      INTEGER i1_deb, i1_fin
    56      INTEGER i2_deb, i2_fin
    6 ccc      PARAMETER (i1_deb=21, i1_fin=40)
    7 ccc      PARAMETER (i2_deb=41, i2_fin=44)
    8 cccc      PARAMETER (i1_deb=47, i1_fin=77)
    9 cccc      PARAMETER (i2_deb=78, i2_fin=79)
     7!cc      PARAMETER (i1_deb=21, i1_fin=40)
     8!cc      PARAMETER (i2_deb=41, i2_fin=44)
     9!ccc      PARAMETER (i1_deb=47, i1_fin=77)
     10!ccc      PARAMETER (i2_deb=78, i2_fin=79)
    1011      PARAMETER (i1_deb=16, i1_fin=30)
    1112      PARAMETER (i2_deb=31, i2_fin=33)
    12 c
     13!
    1314      INTEGER j_deb, j_fin
    14 ccc      PARAMETER (j_deb=29, j_fin=61)
    15 cccc      PARAMETER (j_deb=21, j_fin=51)
     15!cc      PARAMETER (j_deb=29, j_fin=61)
     16!ccc      PARAMETER (j_deb=21, j_fin=51)
    1617      PARAMETER (j_deb=18, j_fin=39)
  • LMDZ5/trunk/libf/phylmd/write_histday_seri.h

    r1577 r1862  
    1 c
    2 c $Header$
    3 c
     1!
     2! $Header$
     3!
    44      IF (is_sequential) THEN
    55     
    66      IF (type_run.EQ."AMIP") THEN
    7 c
     7!
    88      ndex2d = 0
    99      itau_w = itau_phy + itap + start_time * day_step / iphysiq
    10 c
    11 c Champs 2D:
    12 c
     10!
     11! Champs 2D:
     12!
    1313      pi = ACOS(-1.)
    1414      pir = 4.0*ATAN(1.0) / 180.0
    15 c
     15!
    1616      DO i=1, klon
    1717       zx_tmp_fi2d(i)=(topsw(i)-toplw(i))
    1818      ENDDO
    19 c
     19!
    2020      ok_msk=.FALSE.
    2121      msk(1:klon)=pctsrf(1:klon,is_ter)
    22       CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
    23      .     ok_msk, msk, moyglo)
    24       zx_tmp_fi2d(1:klon)=moyglo
    25 c
    26       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    27       CALL histwrite(nid_day_seri,"bilTOA",itau_w,
    28      .               zx_tmp_2d,iim*jjmp1,ndex2d)
    29 c
    30       ok_msk=.FALSE.
    31       CALL moyglo_pondaire(klon, bils, airephy,
    32      .     ok_msk, msk, moyglo)
    33       zx_tmp_fi2d(1:klon)=moyglo
    34 c
    35       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    36       CALL histwrite(nid_day_seri,"bils",itau_w,
    37      .               zx_tmp_2d,iim*jjmp1,ndex2d)
    38 c
     22      CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,  &
     23           ok_msk, msk, moyglo)
     24      zx_tmp_fi2d(1:klon)=moyglo
     25!
     26      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     27      CALL histwrite(nid_day_seri,"bilTOA",itau_w, &
     28                     zx_tmp_2d,iim*jjmp1,ndex2d)
     29!
     30      ok_msk=.FALSE.
     31      CALL moyglo_pondaire(klon, bils, airephy,  &
     32           ok_msk, msk, moyglo)
     33      zx_tmp_fi2d(1:klon)=moyglo
     34!
     35      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     36      CALL histwrite(nid_day_seri,"bils",itau_w, &
     37                     zx_tmp_2d,iim*jjmp1,ndex2d)
     38!
    3939      DO k=1, klev
    4040      DO i=1, klon
    41 cIM 080904    zx_tmp_fi3d(i,k)=u(i,k)**2+v(i,k)**2
     41!IM 080904    zx_tmp_fi3d(i,k)=u(i,k)**2+v(i,k)**2
    4242       zx_tmp_fi3d(i,k)=(u(i,k)**2+v(i,k)**2)/2.
    4343      ENDDO
    4444      ENDDO
    45 c
    46       CALL moyglo_pondaima(klon, klev, zx_tmp_fi3d,
    47      .     airephy, paprs, moyglo)
    48       zx_tmp_fi2d(1:klon)=moyglo
    49 c
    50       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    51       CALL histwrite(nid_day_seri,"ecin",itau_w,
    52      .               zx_tmp_2d,iim*jjmp1,ndex2d)
    53 c
    54 cIM 151004 BEG
     45!
     46      CALL moyglo_pondaima(klon, klev, zx_tmp_fi3d,  &
     47           airephy, paprs, moyglo)
     48      zx_tmp_fi2d(1:klon)=moyglo
     49!
     50      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     51      CALL histwrite(nid_day_seri,"ecin",itau_w, &
     52                     zx_tmp_2d,iim*jjmp1,ndex2d)
     53!
     54!IM 151004 BEG
    5555      IF(1.EQ.0) THEN
    56 c
     56!
    5757      DO k=1, klev
    5858      DO i=1, klon
     
    6060      ENDDO
    6161      ENDDO
    62 c
    63       CALL moyglo_pondaima(klon, klev, zx_tmp_fi3d,
    64      .     airephy, paprs, moyglo)
    65       zx_tmp_fi2d(1:klon)=moyglo
    66 c
    67       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    68       CALL histwrite(nid_day_seri,"momang",itau_w,zx_tmp_2d,
    69      .               iim*jjmp1,ndex2d)
    70 c
    71 c friction torque
    72 c
     62!
     63      CALL moyglo_pondaima(klon, klev, zx_tmp_fi3d,  &
     64           airephy, paprs, moyglo)
     65      zx_tmp_fi2d(1:klon)=moyglo
     66!
     67      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     68      CALL histwrite(nid_day_seri,"momang",itau_w,zx_tmp_2d, &
     69                     iim*jjmp1,ndex2d)
     70!
     71! friction torque
     72!
    7373      DO i=1, klon
    7474       zx_tmp_fi2d(i)=zxfluxu(i,1)*RA* cos(pir* rlat(i))
    7575      ENDDO
    76 c
    77       ok_msk=.FALSE.
    78       CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
    79      .     ok_msk, msk, moyglo)
    80       zx_tmp_fi2d(1:klon)=moyglo
    81 c
    82       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    83       CALL histwrite(nid_day_seri,"frictor",itau_w,zx_tmp_2d,
    84      .               iim*jjmp1,ndex2d)
    85 c
    86 c mountain torque
    87 c
    88 cIM 190504 BEG
     76!
     77      ok_msk=.FALSE.
     78      CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,  &
     79           ok_msk, msk, moyglo)
     80      zx_tmp_fi2d(1:klon)=moyglo
     81!
     82      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     83      CALL histwrite(nid_day_seri,"frictor",itau_w,zx_tmp_2d, &
     84                     iim*jjmp1,ndex2d)
     85!
     86! mountain torque
     87!
     88!IM 190504 BEG
    8989      CALL gr_fi_dyn(1,klon,iim+1,jjm+1,airephy,airedyn)
    9090      CALL gr_fi_dyn(klev+1,klon,iim+1,jjm+1,paprs,padyn)
     
    9797        zx_tmp(ij)=0.
    9898        DO k = 1, klev
    99          zx_tmp(ij)=zx_tmp(ij)+dudyn(i,j,k)*airedyn(i,j)*
    100      $              (padyn(i,j,k+1)-padyn(i,j,k))/RG
     99         zx_tmp(ij)=zx_tmp(ij)+dudyn(i,j,k)*airedyn(i,j)* &
     100                    (padyn(i,j,k+1)-padyn(i,j,k))/RG
    101101         airetot=airetot+airedyn(i,j)
    102102        ENDDO
    103 cIM 190504 mountor=mountor+zx_tmp(ij)*airedyn(i,j)*RA*
    104         mountor=mountor+zx_tmp(ij)*RA*
    105      $           cos(pir* rlatdyn(i,j))
     103!IM 190504 mountor=mountor+zx_tmp(ij)*airedyn(i,j)*RA*
     104        mountor=mountor+zx_tmp(ij)*RA* &
     105                 cos(pir* rlatdyn(i,j))
    106106       ENDDO
    107107      ENDDO
    108 cIM 151004 BEG
     108!IM 151004 BEG
    109109      IF(itap.EQ.1) PRINT*,'airetot=',airetot,airetot/klev
    110 cIM 151004 END
    111 cIM 190504      mountor=mountor/(airetot*airetot)
     110!IM 151004 END
     111!IM 190504      mountor=mountor/(airetot*airetot)
    112112      mountor=mountor/airetot
    113 c
    114 cIM 190504 END
     113!
     114!IM 190504 END
    115115      zx_tmp_2d(1:iim,1:jjmp1)=mountor
    116       CALL histwrite(nid_day_seri,"mountor",itau_w,zx_tmp_2d,
    117      .               iim*jjmp1,ndex2d)
    118 c
     116      CALL histwrite(nid_day_seri,"mountor",itau_w,zx_tmp_2d, &
     117                     iim*jjmp1,ndex2d)
     118!
    119119      ENDIF !(1.EQ.0) THEN
    120 c
    121 c
     120!
     121!
    122122      CALL gr_fi_dyn(1,klon,iim+1,jjm+1,airephy,airedyn)
    123123      CALL gr_fi_ecrit(1,klon,iim,jjmp1,airephy,zx_tmp_2d)
    124124      airetot=0.
    125 c     DO j = 1, jjmp1
    126 c      DO i = 1, iim+1
    127 c       ij=i+(iim+1)*(j-1)
    128 c       DO k = 1, klev
    129 c        airetot=airetot+airedyn(i,j)
    130 c        airetot=airetot+airedyn(i,j)
    131 c       ENDDO !k
    132 c      ENDDO !i
    133 c     ENDDO !j
    134 c
     125!     DO j = 1, jjmp1
     126!      DO i = 1, iim+1
     127!       ij=i+(iim+1)*(j-1)
     128!       DO k = 1, klev
     129!        airetot=airetot+airedyn(i,j)
     130!        airetot=airetot+airedyn(i,j)
     131!       ENDDO !k
     132!      ENDDO !i
     133!     ENDDO !j
     134!
    135135      DO i=1, klon
    136136       airetot=airetot+airephy(i)
    137137      ENDDO
    138 c     IF(itap.EQ.1) PRINT*,'airetotphy=',airetot
    139 c
     138!     IF(itap.EQ.1) PRINT*,'airetotphy=',airetot
     139!
    140140      airetot=0.
    141141      DO j=1, jjmp1
     
    144144       ENDDO
    145145      ENDDO
    146 c
    147 c     IF(itap.EQ.1) PRINT*,'airetotij=',airetot,
    148 c    $ '4piR2',4.*pi*RA*RA
    149 c
     146!
     147!     IF(itap.EQ.1) PRINT*,'airetotij=',airetot,
     148!    $ '4piR2',4.*pi*RA*RA
     149!
    150150      zx_tmp_fi2d(1:klon)=aam/airetot
    151151      CALL gr_fi_ecrit(1,klon,iim,jjmp1,zx_tmp_fi2d,zx_tmp_2d)
    152       CALL histwrite(nid_day_seri,"momang",itau_w,zx_tmp_2d,
    153      .               iim*jjmp1,ndex2d)
    154 c
     152      CALL histwrite(nid_day_seri,"momang",itau_w,zx_tmp_2d, &
     153                     iim*jjmp1,ndex2d)
     154!
    155155      zx_tmp_fi2d(1:klon)=torsfc/airetot
    156156      CALL gr_fi_ecrit(1,klon,iim,jjmp1,zx_tmp_fi2d,zx_tmp_2d)
    157       CALL histwrite(nid_day_seri,"torsfc",itau_w,zx_tmp_2d,
    158      .               iim*jjmp1,ndex2d)
    159 c
    160 cIM 151004 END
    161 c
    162       CALL moyglo_pondmass(klon, klev, t_seri,
    163      .     airephy, paprs, moyglo)
    164       zx_tmp_fi2d(1:klon)=moyglo
    165 c
     157      CALL histwrite(nid_day_seri,"torsfc",itau_w,zx_tmp_2d, &
     158                     iim*jjmp1,ndex2d)
     159!
     160!IM 151004 END
     161!
     162      CALL moyglo_pondmass(klon, klev, t_seri, &
     163           airephy, paprs, moyglo)
     164      zx_tmp_fi2d(1:klon)=moyglo
     165!
    166166      CALL gr_fi_ecrit(1,klon,iim,jjmp1,zx_tmp_fi2d,zx_tmp_2d)
    167       CALL histwrite(nid_day_seri,"tamv",itau_w,
    168      .               zx_tmp_2d,iim*jjmp1,ndex2d)
    169 c
    170       ok_msk=.FALSE.
    171       CALL moyglo_pondaire(klon, paprs(:,1), airephy,
    172      .     ok_msk, msk, moyglo)
    173       zx_tmp_fi2d(1:klon)=moyglo
    174 c
    175       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    176       CALL histwrite(nid_day_seri,"psol",itau_w,
    177      .               zx_tmp_2d,iim*jjmp1,ndex2d)
    178 c
    179       ok_msk=.FALSE.
    180       CALL moyglo_pondaire(klon, evap, airephy,
    181      .     ok_msk, msk, moyglo)
    182       zx_tmp_fi2d(1:klon)=moyglo
    183 c
    184       CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
    185       CALL histwrite(nid_day_seri,"evap",itau_w,
    186      .               zx_tmp_2d,iim*jjmp1,ndex2d)
    187 c
    188 c     DO i=1, klon
    189 c      zx_tmp_fi2d(i)=SnowFrac(i,is_ter)
    190 c     ENDDO
    191 c
    192 c     ok_msk=.TRUE.
    193 c     msk(1:klon)=pctsrf(1:klon,is_ter)
    194 c     CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
    195 c    .                     ok_msk, msk, moyglo)
    196 c     zx_tmp_fi2d(1:klon)=moyglo
    197 c
    198 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1,zx_tmp_fi2d,zx_tmp_2d)
    199 c     CALL histwrite(nid_day_seri,"SnowFrac",
    200 c    .               itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    201 c
    202 c     DO i=1, klon
    203 cIM 080904    zx_tmp_fi2d(i)=zsnow_mass(i)/330.*rowl
    204 c      zx_tmp_fi2d(i)=zsnow_mass(i)
    205 c     ENDDO
    206 c
    207 cIM 140904   ok_msk=.FALSE.
    208 c     ok_msk=.TRUE.
    209 c     msk(1:klon)=pctsrf(1:klon,is_ter)
    210 c     CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
    211 c    .     ok_msk, msk, moyglo)
    212 c     zx_tmp_fi2d(1:klon)=moyglo
    213 c
    214 c     CALL gr_fi_ecrit(1, klon,iim,jjmp1,zx_tmp_fi2d,zx_tmp_2d)
    215 c     CALL histwrite(nid_day_seri,"snow_depth",itau_w,
    216 c    .               zx_tmp_2d,iim*jjmp1,ndex2d)
    217 c
     167      CALL histwrite(nid_day_seri,"tamv",itau_w, &
     168                     zx_tmp_2d,iim*jjmp1,ndex2d)
     169!
     170      ok_msk=.FALSE.
     171      CALL moyglo_pondaire(klon, paprs(:,1), airephy,  &
     172           ok_msk, msk, moyglo)
     173      zx_tmp_fi2d(1:klon)=moyglo
     174!
     175      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     176      CALL histwrite(nid_day_seri,"psol",itau_w, &
     177                     zx_tmp_2d,iim*jjmp1,ndex2d)
     178!
     179      ok_msk=.FALSE.
     180      CALL moyglo_pondaire(klon, evap, airephy,  &
     181           ok_msk, msk, moyglo)
     182      zx_tmp_fi2d(1:klon)=moyglo
     183!
     184      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d,zx_tmp_2d)
     185      CALL histwrite(nid_day_seri,"evap",itau_w, &
     186                     zx_tmp_2d,iim*jjmp1,ndex2d)
     187!
     188!     DO i=1, klon
     189!      zx_tmp_fi2d(i)=SnowFrac(i,is_ter)
     190!     ENDDO
     191!
     192!     ok_msk=.TRUE.
     193!     msk(1:klon)=pctsrf(1:klon,is_ter)
     194!     CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
     195!    .                     ok_msk, msk, moyglo)
     196!     zx_tmp_fi2d(1:klon)=moyglo
     197!
     198!     CALL gr_fi_ecrit(1, klon,iim,jjmp1,zx_tmp_fi2d,zx_tmp_2d)
     199!     CALL histwrite(nid_day_seri,"SnowFrac",
     200!    .               itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
     201!
     202!     DO i=1, klon
     203!IM 080904    zx_tmp_fi2d(i)=zsnow_mass(i)/330.*rowl
     204!      zx_tmp_fi2d(i)=zsnow_mass(i)
     205!     ENDDO
     206!
     207!IM 140904   ok_msk=.FALSE.
     208!     ok_msk=.TRUE.
     209!     msk(1:klon)=pctsrf(1:klon,is_ter)
     210!     CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
     211!    .     ok_msk, msk, moyglo)
     212!     zx_tmp_fi2d(1:klon)=moyglo
     213!
     214!     CALL gr_fi_ecrit(1, klon,iim,jjmp1,zx_tmp_fi2d,zx_tmp_2d)
     215!     CALL histwrite(nid_day_seri,"snow_depth",itau_w,
     216!    .               zx_tmp_2d,iim*jjmp1,ndex2d)
     217!
    218218      DO i=1, klon
    219219       zx_tmp_fi2d(i)=ftsol(i,is_oce)
    220220      ENDDO
    221 c
     221!
    222222      ok_msk=.TRUE.
    223223      msk(1:klon)=pctsrf(1:klon,is_oce)
    224       CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
    225      .     ok_msk, msk, moyglo)
    226       zx_tmp_fi2d(1:klon)=moyglo
    227 c
     224      CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,  &
     225           ok_msk, msk, moyglo)
     226      zx_tmp_fi2d(1:klon)=moyglo
     227!
    228228      CALL gr_fi_ecrit(1, klon,iim,jjmp1, zx_tmp_fi2d, zx_tmp_2d)
    229       CALL histwrite(nid_day_seri,"tsol_"//clnsurf(is_oce),
    230      $               itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
    231 c
    232 c=================================================================
    233 c=================================================================
    234 c=================================================================
    235 c
     229      CALL histwrite(nid_day_seri,"tsol_"//clnsurf(is_oce), &
     230                     itau_w,zx_tmp_2d,iim*jjmp1,ndex2d)
     231!
     232!=================================================================
     233!=================================================================
     234!=================================================================
     235!
    236236      if (ok_sync) then
    237237        call histsync(nid_day_seri)
    238238      endif
    239 c
     239!
    240240      ENDIF !fin test sur type_run.EQ."AMIP"
    241241     
  • LMDZ5/trunk/libf/phylmd/write_paramLMDZ_phy.h

    r1577 r1862  
    1 c
    2 c calcul moyennes globales
    3 c
     1!
     2! calcul moyennes globales
     3!
    44       zx_tmp_fi2d=bils*airephy
    55       CALL global_mean(zx_tmp_fi2d,airephy,.TRUE.,gbils)
     
    2222       zx_tmp_fi2d=prw*airephy
    2323       CALL global_mean(zx_tmp_fi2d,airephy,.TRUE.,gprw)
    24 c
    25 c$OMP MASTER
     24!
     25!$OMP MASTER
    2626      if (is_mpi_root) then     
    27 c
     27!
    2828      ndex2d = 0
    2929      itau_w = itau_phy + itap + start_time * day_step / iphysiq
    30 c
    31 c Variables globales
    32 c
     30!
     31! Variables globales
     32!
    3333      zx_tmp_0d=R_ecc
    34       CALL histwrite(nid_ctesGCM,"R_ecc",itau_w,
    35      .               zx_tmp_0d,np,ndex2d)
    36 c
     34      CALL histwrite(nid_ctesGCM,"R_ecc",itau_w, &
     35                     zx_tmp_0d,np,ndex2d)
     36!
    3737      zx_tmp_0d=R_peri
    38       CALL histwrite(nid_ctesGCM,"R_peri",itau_w,
    39      .               zx_tmp_0d,np,ndex2d)
    40 c
     38      CALL histwrite(nid_ctesGCM,"R_peri",itau_w, &
     39                     zx_tmp_0d,np,ndex2d)
     40!
    4141      zx_tmp_0d=R_incl
    42       CALL histwrite(nid_ctesGCM,"R_incl",itau_w,
    43      .               zx_tmp_0d,np,ndex2d)
    44 c
     42      CALL histwrite(nid_ctesGCM,"R_incl",itau_w, &
     43                     zx_tmp_0d,np,ndex2d)
     44!
    4545      zx_tmp_0d=solaire
    46       CALL histwrite(nid_ctesGCM,"solaire",itau_w,
    47      .               zx_tmp_0d,np,ndex2d)
    48 c
     46      CALL histwrite(nid_ctesGCM,"solaire",itau_w, &
     47                     zx_tmp_0d,np,ndex2d)
     48!
    4949      zx_tmp_0d=co2_ppm
    50       CALL histwrite(nid_ctesGCM,"co2_ppm",itau_w,
    51      .               zx_tmp_0d,np,ndex2d)
    52 c
     50      CALL histwrite(nid_ctesGCM,"co2_ppm",itau_w, &
     51                     zx_tmp_0d,np,ndex2d)
     52!
    5353      zx_tmp_0d=CH4_ppb
    54       CALL histwrite(nid_ctesGCM,"CH4_ppb",itau_w,
    55      .               zx_tmp_0d,np,ndex2d)
    56 c
     54      CALL histwrite(nid_ctesGCM,"CH4_ppb",itau_w, &
     55                     zx_tmp_0d,np,ndex2d)
     56!
    5757      zx_tmp_0d=N2O_ppb
    58       CALL histwrite(nid_ctesGCM,"N2O_ppb",itau_w,
    59      .               zx_tmp_0d,np,ndex2d)
    60 c
     58      CALL histwrite(nid_ctesGCM,"N2O_ppb",itau_w, &
     59                     zx_tmp_0d,np,ndex2d)
     60!
    6161      zx_tmp_0d=CFC11_ppt
    62       CALL histwrite(nid_ctesGCM,"CFC11_ppt",itau_w,
    63      .               zx_tmp_0d,np,ndex2d)
    64 c
     62      CALL histwrite(nid_ctesGCM,"CFC11_ppt",itau_w, &
     63                     zx_tmp_0d,np,ndex2d)
     64!
    6565      zx_tmp_0d=CFC12_ppt
    66       CALL histwrite(nid_ctesGCM,"CFC12_ppt",itau_w,
    67      .               zx_tmp_0d,np,ndex2d)
    68 c
    69 c=================================================================
    70 c moyennes globales
    71 c
    72       CALL histwrite(nid_ctesGCM,"bils",itau_w,
    73      .               gbils,np,ndex2d)
    74       CALL histwrite(nid_ctesGCM,"evap",itau_w,
    75      .               gevap,np,ndex2d)
    76       CALL histwrite(nid_ctesGCM,"evap_land",itau_w,
    77      .               gevapt,np,ndex2d)
    78       CALL histwrite(nid_ctesGCM,"flat",itau_w,
    79      .               glat,np,ndex2d)
    80       CALL histwrite(nid_ctesGCM,"nettop0",itau_w,
    81      .               gnet0,np,ndex2d)
    82       CALL histwrite(nid_ctesGCM,"nettop",itau_w,
    83      .               gnet,np,ndex2d)
    84       CALL histwrite(nid_ctesGCM,"precip",itau_w,
    85      .               grain,np,ndex2d)
    86       CALL histwrite(nid_ctesGCM,"tsol",itau_w,
    87      .               gtsol,np,ndex2d)
    88       CALL histwrite(nid_ctesGCM,"t2m",itau_w,
    89      .               gt2m,np,ndex2d)
    90       CALL histwrite(nid_ctesGCM,"prw",itau_w,
    91      .               gprw,np,ndex2d)
    92 c=================================================================
    93 c
     66      CALL histwrite(nid_ctesGCM,"CFC12_ppt",itau_w, &
     67                     zx_tmp_0d,np,ndex2d)
     68!
     69!=================================================================
     70! moyennes globales
     71!
     72      CALL histwrite(nid_ctesGCM,"bils",itau_w, &
     73                     gbils,np,ndex2d)
     74      CALL histwrite(nid_ctesGCM,"evap",itau_w, &
     75                     gevap,np,ndex2d)
     76      CALL histwrite(nid_ctesGCM,"evap_land",itau_w, &
     77                     gevapt,np,ndex2d)
     78      CALL histwrite(nid_ctesGCM,"flat",itau_w, &
     79                     glat,np,ndex2d)
     80      CALL histwrite(nid_ctesGCM,"nettop0",itau_w, &
     81                     gnet0,np,ndex2d)
     82      CALL histwrite(nid_ctesGCM,"nettop",itau_w, &
     83                     gnet,np,ndex2d)
     84      CALL histwrite(nid_ctesGCM,"precip",itau_w, &
     85                     grain,np,ndex2d)
     86      CALL histwrite(nid_ctesGCM,"tsol",itau_w, &
     87                     gtsol,np,ndex2d)
     88      CALL histwrite(nid_ctesGCM,"t2m",itau_w, &
     89                     gt2m,np,ndex2d)
     90      CALL histwrite(nid_ctesGCM,"prw",itau_w, &
     91                     gprw,np,ndex2d)
     92!=================================================================
     93!
    9494      if (ok_sync) then
    9595        call histsync(nid_ctesGCM)
    9696      endif
    97 c
     97!
    9898      endif !(is_mpi_root) then     
    99 c$OMP END MASTER
     99!$OMP END MASTER
Note: See TracChangeset for help on using the changeset viewer.