Changeset 2142 for LMDZ5/trunk/libf


Ignore:
Timestamp:
Nov 14, 2014, 2:32:39 PM (10 years ago)
Author:
lguez
Message:

dyn3d/conf_gcm.F, fixed source form, was included in lmdz1d.F90, free source
form, did not work. So converted conf_gcm.F to free source form. Also
converted dyn3dpar and dyn3dmem versions.

Location:
LMDZ5/trunk/libf
Files:
3 copied

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/dyn3d/conf_gcm.F90

    r2141 r2142  
    1 !
     1
    22! $Id$
    3 !
    4 !
    5 !
    6       SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 )
    7 !
    8       USE control_mod
     3
     4SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 )
     5
     6  USE control_mod
    97#ifdef CPP_IOIPSL
    10       use IOIPSL
     8  use IOIPSL
    119#else
    12 ! if not using IOIPSL, we still need to use (a local version of) getin
    13       use ioipsl_getincom
     10  ! if not using IOIPSL, we still need to use (a local version of) getin
     11  use ioipsl_getincom
    1412#endif
    15       USE infotrac, ONLY : type_trac
    16       use assert_m, only: assert
    17 
    18       IMPLICIT NONE
    19 !-----------------------------------------------------------------------
    20 !     Auteurs :   L. Fairhead , P. Le Van  .
    21 !
    22 !     Arguments :
    23 !
    24 !     tapedef   :
    25 !     etatinit  :     = TRUE   , on ne  compare pas les valeurs des para-
    26 !     -metres  du zoom  avec  celles lues sur le fichier start .
    27 !      clesphy0 :  sortie  .
    28 !
    29        LOGICAL etatinit
    30        INTEGER tapedef
    31 
    32        INTEGER        longcles
    33        PARAMETER(     longcles = 20 )
    34        REAL clesphy0( longcles )
    35 !
    36 !   Declarations :
    37 !   --------------
    38 #include "dimensions.h"
    39 #include "paramet.h"
    40 #include "logic.h"
    41 #include "serre.h"
    42 #include "comdissnew.h"
    43 #include "temps.h"
    44 #include "comconst.h"
    45 
    46 ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
    47 ! #include "clesphys.h"
    48 #include "iniprint.h"
    49 !
    50 !
    51 !   local:
    52 !   ------
    53 
    54       CHARACTER ch1*72,ch2*72,ch3*72,ch4*12
    55       REAL clonn,clatt,grossismxx,grossismyy
    56       REAL dzoomxx,dzoomyy, tauxx,tauyy
    57       LOGICAL  fxyhypbb, ysinuss
    58       INTEGER i
    59       LOGICAL use_filtre_fft
    60 !
    61 !  -------------------------------------------------------------------
    62 !
    63 !       .........     Version  du 29/04/97       ..........
    64 !
    65 !   Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot,
    66 !      tetatemp   ajoutes  pour la dissipation   .
    67 !
    68 !   Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb **
    69 !
    70 !  Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb.
    71 !    Sinon , choix de fxynew  , a derivee sinusoidale  ..
    72 !
    73 !   ......  etatinit = . TRUE. si defrun  est appele dans ETAT0_LMD  ou
    74 !         LIMIT_LMD  pour l'initialisation de start.dat (dic) et
    75 !                de limit.dat ( dic)                        ...........
    76 !           Sinon  etatinit = . FALSE .
    77 !
    78 !   Donc etatinit = .F.  si on veut comparer les valeurs de  grossismx ,
    79 !    grossismy,clon,clat, fxyhypb  lues sur  le fichier  start  avec
    80 !   celles passees  par run.def ,  au debut du gcm, apres l'appel a
    81 !    lectba . 
    82 !   Ces parmetres definissant entre autres la grille et doivent etre
    83 !   pareils et coherents , sinon il y aura  divergence du gcm .
    84 !
    85 !-----------------------------------------------------------------------
    86 !   initialisations:
    87 !   ----------------
    88 
    89 !Config  Key  = lunout
    90 !Config  Desc = unite de fichier pour les impressions
    91 !Config  Def  = 6
    92 !Config  Help = unite de fichier pour les impressions
    93 !Config         (defaut sortie standard = 6)
    94       lunout=6
    95       CALL getin('lunout', lunout)
    96       IF (lunout /= 5 .and. lunout /= 6) THEN
    97         OPEN(UNIT=lunout,FILE='lmdz.out',ACTION='write',                     &
    98      &          STATUS='unknown',FORM='formatted')
    99       ENDIF
    100 
    101 !Config  Key  = prt_level
    102 !Config  Desc = niveau d'impressions de débogage
    103 !Config  Def  = 0
    104 !Config  Help = Niveau d'impression pour le débogage
    105 !Config         (0 = minimum d'impression)
    106       prt_level = 0
    107       CALL getin('prt_level',prt_level)
    108 
    109 !-----------------------------------------------------------------------
    110 !  Parametres de controle du run:
    111 !-----------------------------------------------------------------------
    112 !Config  Key  = planet_type
    113 !Config  Desc = planet type ("earth", "mars", "venus", ...)
    114 !Config  Def  = earth
    115 !Config  Help = this flag sets the type of atymosphere that is considered
    116       planet_type="earth"
    117       CALL getin('planet_type',planet_type)
    118 
    119 !Config  Key  = calend
    120 !Config  Desc = type de calendrier utilise
    121 !Config  Def  = earth_360d
    122 !Config  Help = valeur possible: earth_360d, earth_365d, earth_366d
    123 !Config         
    124       calend = 'earth_360d'
    125       CALL getin('calend', calend)
    126 
    127 !Config  Key  = dayref
    128 !Config  Desc = Jour de l'etat initial
    129 !Config  Def  = 1
    130 !Config  Help = Jour de l'etat initial ( = 350  si 20 Decembre ,
    131 !Config         par expl. ,comme ici ) ... A completer
    132       dayref=1
    133       CALL getin('dayref', dayref)
    134 
    135 !Config  Key  = anneeref
    136 !Config  Desc = Annee de l'etat initial
    137 !Config  Def  = 1998
    138 !Config  Help = Annee de l'etat  initial
    139 !Config         (   avec  4  chiffres   ) ... A completer
    140       anneeref = 1998
    141       CALL getin('anneeref',anneeref)
    142 
    143 !Config  Key  = raz_date
    144 !Config  Desc = Remise a zero de la date initiale
    145 !Config  Def  = 0 (pas de remise a zero)
    146 !Config  Help = Remise a zero de la date initiale
    147 !Config         0 pas de remise a zero, on garde la date du fichier restart
    148 !Config         1 prise en compte de la date de gcm.def avec remise a zero
    149 !Config         des compteurs de pas de temps
    150       raz_date = 0
    151       CALL getin('raz_date', raz_date)
    152 
    153 !Config  Key  = resetvarc
    154 !Config  Desc = Reinit des variables de controle
    155 !Config  Def  = n
    156 !Config  Help = Reinit des variables de controle
    157       resetvarc = .false.
    158       CALL getin('resetvarc',resetvarc)
    159 
    160 !Config  Key  = nday
    161 !Config  Desc = Nombre de jours d'integration
    162 !Config  Def  = 10
    163 !Config  Help = Nombre de jours d'integration
    164 !Config         ... On pourait aussi permettre des mois ou des annees !
    165       nday = 10
    166       CALL getin('nday',nday)
    167 
    168 !Config  Key  = starttime
    169 !Config  Desc = Heure de depart de la simulation
    170 !Config  Def  = 0
    171 !Config  Help = Heure de depart de la simulation
    172 !Config         en jour
    173       starttime = 0
    174       CALL getin('starttime',starttime)
    175 
    176 !Config  Key  = day_step
    177 !Config  Desc = nombre de pas par jour
    178 !Config  Def  = 240
    179 !Config  Help = nombre de pas par jour (multiple de iperiod) (
    180 !Config          ici pour  dt = 1 min )
    181        day_step = 240
    182        CALL getin('day_step',day_step)
    183 
    184 !Config  Key  = nsplit_phys
    185        nsplit_phys = 1
    186        CALL getin('nsplit_phys',nsplit_phys)
    187 
    188 !Config  Key  = iperiod
    189 !Config  Desc = periode pour le pas Matsuno
    190 !Config  Def  = 5
    191 !Config  Help = periode pour le pas Matsuno (en pas de temps)
    192        iperiod = 5
    193        CALL getin('iperiod',iperiod)
    194 
    195 !Config  Key  = iapp_tracvl
    196 !Config  Desc = frequence du groupement des flux
    197 !Config  Def  = iperiod
    198 !Config  Help = frequence du groupement des flux (en pas de temps)
    199        iapp_tracvl = iperiod
    200        CALL getin('iapp_tracvl',iapp_tracvl)
    201 
    202 !Config  Key  = iconser
    203 !Config  Desc = periode de sortie des variables de controle
    204 !Config  Def  = 240 
    205 !Config  Help = periode de sortie des variables de controle
    206 !Config         (En pas de temps)
    207        iconser = 240 
    208        CALL getin('iconser', iconser)
    209 
    210 !Config  Key  = iecri
    211 !Config  Desc = periode d'ecriture du fichier histoire
    212 !Config  Def  = 1
    213 !Config  Help = periode d'ecriture du fichier histoire (en jour)
    214        iecri = 1
    215        CALL getin('iecri',iecri)
    216 
    217 
    218 !Config  Key  = periodav
    219 !Config  Desc = periode de stockage fichier histmoy
    220 !Config  Def  = 1
    221 !Config  Help = periode de stockage fichier histmoy (en jour)
    222        periodav = 1.
    223        CALL getin('periodav',periodav)
    224 
    225 !Config  Key  = output_grads_dyn
    226 !Config  Desc = output dynamics diagnostics in 'dyn.dat' file
    227 !Config  Def  = n
    228 !Config  Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file
    229        output_grads_dyn=.false.
    230        CALL getin('output_grads_dyn',output_grads_dyn)
    231 
    232 !Config  Key  = dissip_period
    233 !Config  Desc = periode de la dissipation
    234 !Config  Def  = 0
    235 !Config  Help = periode de la dissipation
    236 !Config  dissip_period=0 => la valeur sera calcule dans inidissip       
    237 !Config  dissip_period>0 => on prend cette valeur
    238        dissip_period = 0
    239        CALL getin('dissip_period',dissip_period)
    240 
    241 !cc  ....   P. Le Van , modif le 29/04/97 .pour la dissipation  ...
    242 !cc
    243 
    244 !Config  Key  = lstardis
    245 !Config  Desc = choix de l'operateur de dissipation
    246 !Config  Def  = y
    247 !Config  Help = choix de l'operateur de dissipation
    248 !Config         'y' si on veut star et 'n' si on veut non-start !
    249 !Config         Moi y en a pas comprendre !
    250        lstardis = .TRUE.
    251        CALL getin('lstardis',lstardis)
    252 
    253 
    254 !Config  Key  = nitergdiv
    255 !Config  Desc = Nombre d'iteration de gradiv
    256 !Config  Def  = 1
    257 !Config  Help = nombre d'iterations de l'operateur de dissipation
    258 !Config         gradiv
    259        nitergdiv = 1
    260        CALL getin('nitergdiv',nitergdiv)
    261 
    262 !Config  Key  = nitergrot
    263 !Config  Desc = nombre d'iterations de nxgradrot
    264 !Config  Def  = 2
    265 !Config  Help = nombre d'iterations de l'operateur de dissipation 
    266 !Config         nxgradrot
    267        nitergrot = 2
    268        CALL getin('nitergrot',nitergrot)
    269 
    270 
    271 !Config  Key  = niterh
    272 !Config  Desc = nombre d'iterations de divgrad
    273 !Config  Def  = 2
    274 !Config  Help = nombre d'iterations de l'operateur de dissipation
    275 !Config         divgrad
    276        niterh = 2
    277        CALL getin('niterh',niterh)
    278 
    279 
    280 !Config  Key  = tetagdiv
    281 !Config  Desc = temps de dissipation pour div
    282 !Config  Def  = 7200
    283 !Config  Help = temps de dissipation des plus petites longeur
    284 !Config         d'ondes pour u,v (gradiv)
    285        tetagdiv = 7200.
    286        CALL getin('tetagdiv',tetagdiv)
    287 
    288 !Config  Key  = tetagrot
    289 !Config  Desc = temps de dissipation pour grad
    290 !Config  Def  = 7200
    291 !Config  Help = temps de dissipation des plus petites longeur
    292 !Config         d'ondes pour u,v (nxgradrot)
    293        tetagrot = 7200.
    294        CALL getin('tetagrot',tetagrot)
    295 
    296 !Config  Key  = tetatemp
    297 !Config  Desc = temps de dissipation pour h
    298 !Config  Def  = 7200
    299 !Config  Help =  temps de dissipation des plus petites longeur
    300 !Config         d'ondes pour h (divgrad)   
    301        tetatemp  = 7200.
    302        CALL getin('tetatemp',tetatemp )
    303 
    304 ! Parametres controlant la variation sur la verticale des constantes de
    305 ! dissipation.
    306 ! Pour le moment actifs uniquement dans la version a 39 niveaux
    307 ! avec ok_strato=y
    308 
    309        dissip_factz=4.
    310        dissip_deltaz=10.
    311        dissip_zref=30.
    312        CALL getin('dissip_factz',dissip_factz )
    313        CALL getin('dissip_deltaz',dissip_deltaz )
    314        CALL getin('dissip_zref',dissip_zref )
    315 
    316 ! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0
    317 !                   iflag_top_bound=0 for no sponge
    318 !                   iflag_top_bound=1 for sponge over 4 topmost layers
    319 !                   iflag_top_bound=2 for sponge from top to ~1% of top layer pressure
    320        iflag_top_bound=1
    321        CALL getin('iflag_top_bound',iflag_top_bound)
    322 
    323 ! mode_top_bound : fields towards which sponge relaxation will be done:
    324 !                  mode_top_bound=0: no relaxation
    325 !                  mode_top_bound=1: u and v relax towards 0
    326 !                  mode_top_bound=2: u and v relax towards their zonal mean
    327 !                  mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean
    328        mode_top_bound=3
    329        CALL getin('mode_top_bound',mode_top_bound)
    330 
    331 ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge
    332        tau_top_bound=1.e-5
    333        CALL getin('tau_top_bound',tau_top_bound)
    334 
    335 !Config  Key  = coefdis
    336 !Config  Desc = coefficient pour gamdissip
    337 !Config  Def  = 0
    338 !Config  Help = coefficient pour gamdissip 
    339        coefdis = 0.
    340        CALL getin('coefdis',coefdis)
    341 
    342 !Config  Key  = purmats
    343 !Config  Desc = Schema d'integration
    344 !Config  Def  = n
    345 !Config  Help = Choix du schema d'integration temporel.
    346 !Config         y = pure Matsuno sinon c'est du Matsuno-leapfrog
    347        purmats = .FALSE.
    348        CALL getin('purmats',purmats)
    349 
    350 !Config  Key  = ok_guide
    351 !Config  Desc = Guidage
    352 !Config  Def  = n
    353 !Config  Help = Guidage
    354        ok_guide = .FALSE.
    355        CALL getin('ok_guide',ok_guide)
    356 
    357 !Config  Key  =  read_start
    358 !Config  Desc = Initialize model using a 'start.nc' file
    359 !Config  Def  = y
    360 !Config  Help = y: intialize dynamical fields using a 'start.nc' file
    361 !               n: fields are initialized by 'iniacademic' routine
    362        read_start= .true.
    363        CALL getin('read_start',read_start)
    364 
    365 !Config  Key  = iflag_phys
    366 !Config  Desc = Avec ls physique
    367 !Config  Def  = 1
    368 !Config  Help = Permet de faire tourner le modele sans
    369 !Config         physique.
    370        iflag_phys = 1
    371        CALL getin('iflag_phys',iflag_phys)
    372 
    373 
    374 !Config  Key  =  iphysiq
    375 !Config  Desc = Periode de la physique
    376 !Config  Def  = 5
    377 !Config  Help = Periode de la physique en pas de temps de la dynamique.
    378        iphysiq = 5
    379        CALL getin('iphysiq', iphysiq)
    380 
    381        if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm",
    382      $      "iphysiq must be a multiple of iperiod", 1)
    383 
    384 !Config  Key  = ip_ebil_dyn
    385 !Config  Desc = PRINT level for energy conserv. diag.
    386 !Config  Def  = 0
    387 !Config  Help = PRINT level for energy conservation diag. ;
    388 !               les options suivantes existent :
    389 !Config         0 pas de print
    390 !Config         1 pas de print
    391 !Config         2 print,
    392        ip_ebil_dyn = 0
    393        CALL getin('ip_ebil_dyn',ip_ebil_dyn)
    394 !
    395 
    396       DO i = 1, longcles
    397        clesphy0(i) = 0.
    398       ENDDO
    399 
    400 !cc  ....   P. Le Van , ajout  le 7/03/95 .pour le zoom ...
    401 !     .........   (  modif  le 17/04/96 )   .........
    402 !
    403       IF( etatinit ) GO TO 100
    404 
    405 !Config  Key  = clon
    406 !Config  Desc = centre du zoom, longitude
    407 !Config  Def  = 0
    408 !Config  Help = longitude en degres du centre
    409 !Config         du zoom
    410        clonn = 0.
    411        CALL getin('clon',clonn)
    412 
    413 !Config  Key  = clat
    414 !Config  Desc = centre du zoom, latitude
    415 !Config  Def  = 0
    416 !Config  Help = latitude en degres du centre du zoom
    417 !Config         
    418        clatt = 0.
    419        CALL getin('clat',clatt)
    420 
    421 !
    422 !
    423       IF( ABS(clat - clatt).GE. 0.001 )  THEN
    424         write(lunout,*)'conf_gcm: La valeur de clat passee par run.def',
    425      &    ' est differente de celle lue sur le fichier  start '
     13  USE infotrac, ONLY : type_trac
     14  use assert_m, only: assert
     15
     16  IMPLICIT NONE
     17  !-----------------------------------------------------------------------
     18  !     Auteurs :   L. Fairhead , P. Le Van  .
     19
     20  !     Arguments :
     21
     22  !     tapedef   :
     23  !     etatinit  :     = TRUE   , on ne  compare pas les valeurs des para-
     24  !     -metres  du zoom  avec  celles lues sur le fichier start .
     25  !      clesphy0 :  sortie  .
     26
     27  LOGICAL etatinit
     28  INTEGER tapedef
     29
     30  INTEGER        longcles
     31  PARAMETER(     longcles = 20 )
     32  REAL clesphy0( longcles )
     33
     34  !   Declarations :
     35  !   --------------
     36  include "dimensions.h"
     37  include "paramet.h"
     38  include "logic.h"
     39  include "serre.h"
     40  include "comdissnew.h"
     41  include "temps.h"
     42  include "comconst.h"
     43
     44  ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
     45  ! include "clesphys.h"
     46  include "iniprint.h"
     47
     48  !   local:
     49  !   ------
     50
     51  CHARACTER ch1*72,ch2*72,ch3*72,ch4*12
     52  REAL clonn,clatt,grossismxx,grossismyy
     53  REAL dzoomxx,dzoomyy, tauxx,tauyy
     54  LOGICAL  fxyhypbb, ysinuss
     55  INTEGER i
     56  LOGICAL use_filtre_fft
     57
     58  !  -------------------------------------------------------------------
     59
     60  !       .........     Version  du 29/04/97       ..........
     61
     62  !   Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot,
     63  !      tetatemp   ajoutes  pour la dissipation   .
     64
     65  !   Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb **
     66
     67  !  Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb.
     68  !    Sinon , choix de fxynew  , a derivee sinusoidale  ..
     69
     70  !   ......  etatinit = . TRUE. si defrun  est appele dans ETAT0_LMD  ou
     71  !         LIMIT_LMD  pour l'initialisation de start.dat (dic) et
     72  !                de limit.dat ( dic)                        ...........
     73  !           Sinon  etatinit = . FALSE .
     74
     75  !   Donc etatinit = .F.  si on veut comparer les valeurs de  grossismx ,
     76  !    grossismy,clon,clat, fxyhypb  lues sur  le fichier  start  avec
     77  !   celles passees  par run.def ,  au debut du gcm, apres l'appel a
     78  !    lectba . 
     79  !   Ces parmetres definissant entre autres la grille et doivent etre
     80  !   pareils et coherents , sinon il y aura  divergence du gcm .
     81
     82  !-----------------------------------------------------------------------
     83  !   initialisations:
     84  !   ----------------
     85
     86  !Config  Key  = lunout
     87  !Config  Desc = unite de fichier pour les impressions
     88  !Config  Def  = 6
     89  !Config  Help = unite de fichier pour les impressions
     90  !Config         (defaut sortie standard = 6)
     91  lunout=6
     92  CALL getin('lunout', lunout)
     93  IF (lunout /= 5 .and. lunout /= 6) THEN
     94     OPEN(UNIT=lunout,FILE='lmdz.out',ACTION='write',                      &
     95          STATUS='unknown',FORM='formatted')
     96  ENDIF
     97
     98  !Config  Key  = prt_level
     99  !Config  Desc = niveau d'impressions de débogage
     100  !Config  Def  = 0
     101  !Config  Help = Niveau d'impression pour le débogage
     102  !Config         (0 = minimum d'impression)
     103  prt_level = 0
     104  CALL getin('prt_level',prt_level)
     105
     106  !-----------------------------------------------------------------------
     107  !  Parametres de controle du run:
     108  !-----------------------------------------------------------------------
     109  !Config  Key  = planet_type
     110  !Config  Desc = planet type ("earth", "mars", "venus", ...)
     111  !Config  Def  = earth
     112  !Config  Help = this flag sets the type of atymosphere that is considered
     113  planet_type="earth"
     114  CALL getin('planet_type',planet_type)
     115
     116  !Config  Key  = calend
     117  !Config  Desc = type de calendrier utilise
     118  !Config  Def  = earth_360d
     119  !Config  Help = valeur possible: earth_360d, earth_365d, earth_366d
     120  !Config         
     121  calend = 'earth_360d'
     122  CALL getin('calend', calend)
     123
     124  !Config  Key  = dayref
     125  !Config  Desc = Jour de l'etat initial
     126  !Config  Def  = 1
     127  !Config  Help = Jour de l'etat initial ( = 350  si 20 Decembre ,
     128  !Config         par expl. ,comme ici ) ... A completer
     129  dayref=1
     130  CALL getin('dayref', dayref)
     131
     132  !Config  Key  = anneeref
     133  !Config  Desc = Annee de l'etat initial
     134  !Config  Def  = 1998
     135  !Config  Help = Annee de l'etat  initial
     136  !Config         (   avec  4  chiffres   ) ... A completer
     137  anneeref = 1998
     138  CALL getin('anneeref',anneeref)
     139
     140  !Config  Key  = raz_date
     141  !Config  Desc = Remise a zero de la date initiale
     142  !Config  Def  = 0 (pas de remise a zero)
     143  !Config  Help = Remise a zero de la date initiale
     144  !Config         0 pas de remise a zero, on garde la date du fichier restart
     145  !Config         1 prise en compte de la date de gcm.def avec remise a zero
     146  !Config         des compteurs de pas de temps
     147  raz_date = 0
     148  CALL getin('raz_date', raz_date)
     149
     150  !Config  Key  = resetvarc
     151  !Config  Desc = Reinit des variables de controle
     152  !Config  Def  = n
     153  !Config  Help = Reinit des variables de controle
     154  resetvarc = .false.
     155  CALL getin('resetvarc',resetvarc)
     156
     157  !Config  Key  = nday
     158  !Config  Desc = Nombre de jours d'integration
     159  !Config  Def  = 10
     160  !Config  Help = Nombre de jours d'integration
     161  !Config         ... On pourait aussi permettre des mois ou des annees !
     162  nday = 10
     163  CALL getin('nday',nday)
     164
     165  !Config  Key  = starttime
     166  !Config  Desc = Heure de depart de la simulation
     167  !Config  Def  = 0
     168  !Config  Help = Heure de depart de la simulation
     169  !Config         en jour
     170  starttime = 0
     171  CALL getin('starttime',starttime)
     172
     173  !Config  Key  = day_step
     174  !Config  Desc = nombre de pas par jour
     175  !Config  Def  = 240
     176  !Config  Help = nombre de pas par jour (multiple de iperiod) (
     177  !Config          ici pour  dt = 1 min )
     178  day_step = 240
     179  CALL getin('day_step',day_step)
     180
     181  !Config  Key  = nsplit_phys
     182  nsplit_phys = 1
     183  CALL getin('nsplit_phys',nsplit_phys)
     184
     185  !Config  Key  = iperiod
     186  !Config  Desc = periode pour le pas Matsuno
     187  !Config  Def  = 5
     188  !Config  Help = periode pour le pas Matsuno (en pas de temps)
     189  iperiod = 5
     190  CALL getin('iperiod',iperiod)
     191
     192  !Config  Key  = iapp_tracvl
     193  !Config  Desc = frequence du groupement des flux
     194  !Config  Def  = iperiod
     195  !Config  Help = frequence du groupement des flux (en pas de temps)
     196  iapp_tracvl = iperiod
     197  CALL getin('iapp_tracvl',iapp_tracvl)
     198
     199  !Config  Key  = iconser
     200  !Config  Desc = periode de sortie des variables de controle
     201  !Config  Def  = 240 
     202  !Config  Help = periode de sortie des variables de controle
     203  !Config         (En pas de temps)
     204  iconser = 240 
     205  CALL getin('iconser', iconser)
     206
     207  !Config  Key  = iecri
     208  !Config  Desc = periode d'ecriture du fichier histoire
     209  !Config  Def  = 1
     210  !Config  Help = periode d'ecriture du fichier histoire (en jour)
     211  iecri = 1
     212  CALL getin('iecri',iecri)
     213
     214  !Config  Key  = periodav
     215  !Config  Desc = periode de stockage fichier histmoy
     216  !Config  Def  = 1
     217  !Config  Help = periode de stockage fichier histmoy (en jour)
     218  periodav = 1.
     219  CALL getin('periodav',periodav)
     220
     221  !Config  Key  = output_grads_dyn
     222  !Config  Desc = output dynamics diagnostics in 'dyn.dat' file
     223  !Config  Def  = n
     224  !Config  Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file
     225  output_grads_dyn=.false.
     226  CALL getin('output_grads_dyn',output_grads_dyn)
     227
     228  !Config  Key  = dissip_period
     229  !Config  Desc = periode de la dissipation
     230  !Config  Def  = 0
     231  !Config  Help = periode de la dissipation
     232  !Config  dissip_period=0 => la valeur sera calcule dans inidissip       
     233  !Config  dissip_period>0 => on prend cette valeur
     234  dissip_period = 0
     235  CALL getin('dissip_period',dissip_period)
     236
     237  !cc  ....   P. Le Van , modif le 29/04/97 .pour la dissipation  ...
     238  !cc
     239
     240  !Config  Key  = lstardis
     241  !Config  Desc = choix de l'operateur de dissipation
     242  !Config  Def  = y
     243  !Config  Help = choix de l'operateur de dissipation
     244  !Config         'y' si on veut star et 'n' si on veut non-start !
     245  !Config         Moi y en a pas comprendre !
     246  lstardis = .TRUE.
     247  CALL getin('lstardis',lstardis)
     248
     249  !Config  Key  = nitergdiv
     250  !Config  Desc = Nombre d'iteration de gradiv
     251  !Config  Def  = 1
     252  !Config  Help = nombre d'iterations de l'operateur de dissipation
     253  !Config         gradiv
     254  nitergdiv = 1
     255  CALL getin('nitergdiv',nitergdiv)
     256
     257  !Config  Key  = nitergrot
     258  !Config  Desc = nombre d'iterations de nxgradrot
     259  !Config  Def  = 2
     260  !Config  Help = nombre d'iterations de l'operateur de dissipation 
     261  !Config         nxgradrot
     262  nitergrot = 2
     263  CALL getin('nitergrot',nitergrot)
     264
     265  !Config  Key  = niterh
     266  !Config  Desc = nombre d'iterations de divgrad
     267  !Config  Def  = 2
     268  !Config  Help = nombre d'iterations de l'operateur de dissipation
     269  !Config         divgrad
     270  niterh = 2
     271  CALL getin('niterh',niterh)
     272
     273  !Config  Key  = tetagdiv
     274  !Config  Desc = temps de dissipation pour div
     275  !Config  Def  = 7200
     276  !Config  Help = temps de dissipation des plus petites longeur
     277  !Config         d'ondes pour u,v (gradiv)
     278  tetagdiv = 7200.
     279  CALL getin('tetagdiv',tetagdiv)
     280
     281  !Config  Key  = tetagrot
     282  !Config  Desc = temps de dissipation pour grad
     283  !Config  Def  = 7200
     284  !Config  Help = temps de dissipation des plus petites longeur
     285  !Config         d'ondes pour u,v (nxgradrot)
     286  tetagrot = 7200.
     287  CALL getin('tetagrot',tetagrot)
     288
     289  !Config  Key  = tetatemp
     290  !Config  Desc = temps de dissipation pour h
     291  !Config  Def  = 7200
     292  !Config  Help =  temps de dissipation des plus petites longeur
     293  !Config         d'ondes pour h (divgrad)   
     294  tetatemp  = 7200.
     295  CALL getin('tetatemp',tetatemp )
     296
     297  ! Parametres controlant la variation sur la verticale des constantes de
     298  ! dissipation.
     299  ! Pour le moment actifs uniquement dans la version a 39 niveaux
     300  ! avec ok_strato=y
     301
     302  dissip_factz=4.
     303  dissip_deltaz=10.
     304  dissip_zref=30.
     305  CALL getin('dissip_factz',dissip_factz )
     306  CALL getin('dissip_deltaz',dissip_deltaz )
     307  CALL getin('dissip_zref',dissip_zref )
     308
     309  ! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0
     310  !                   iflag_top_bound=0 for no sponge
     311  !                   iflag_top_bound=1 for sponge over 4 topmost layers
     312  !                   iflag_top_bound=2 for sponge from top to ~1% of top layer pressure
     313  iflag_top_bound=1
     314  CALL getin('iflag_top_bound',iflag_top_bound)
     315
     316  ! mode_top_bound : fields towards which sponge relaxation will be done:
     317  !                  mode_top_bound=0: no relaxation
     318  !                  mode_top_bound=1: u and v relax towards 0
     319  !                  mode_top_bound=2: u and v relax towards their zonal mean
     320  !                  mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean
     321  mode_top_bound=3
     322  CALL getin('mode_top_bound',mode_top_bound)
     323
     324  ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge
     325  tau_top_bound=1.e-5
     326  CALL getin('tau_top_bound',tau_top_bound)
     327
     328  !Config  Key  = coefdis
     329  !Config  Desc = coefficient pour gamdissip
     330  !Config  Def  = 0
     331  !Config  Help = coefficient pour gamdissip 
     332  coefdis = 0.
     333  CALL getin('coefdis',coefdis)
     334
     335  !Config  Key  = purmats
     336  !Config  Desc = Schema d'integration
     337  !Config  Def  = n
     338  !Config  Help = Choix du schema d'integration temporel.
     339  !Config         y = pure Matsuno sinon c'est du Matsuno-leapfrog
     340  purmats = .FALSE.
     341  CALL getin('purmats',purmats)
     342
     343  !Config  Key  = ok_guide
     344  !Config  Desc = Guidage
     345  !Config  Def  = n
     346  !Config  Help = Guidage
     347  ok_guide = .FALSE.
     348  CALL getin('ok_guide',ok_guide)
     349
     350  !Config  Key  =  read_start
     351  !Config  Desc = Initialize model using a 'start.nc' file
     352  !Config  Def  = y
     353  !Config  Help = y: intialize dynamical fields using a 'start.nc' file
     354  !               n: fields are initialized by 'iniacademic' routine
     355  read_start= .true.
     356  CALL getin('read_start',read_start)
     357
     358  !Config  Key  = iflag_phys
     359  !Config  Desc = Avec ls physique
     360  !Config  Def  = 1
     361  !Config  Help = Permet de faire tourner le modele sans
     362  !Config         physique.
     363  iflag_phys = 1
     364  CALL getin('iflag_phys',iflag_phys)
     365
     366  !Config  Key  =  iphysiq
     367  !Config  Desc = Periode de la physique
     368  !Config  Def  = 5
     369  !Config  Help = Periode de la physique en pas de temps de la dynamique.
     370  iphysiq = 5
     371  CALL getin('iphysiq', iphysiq)
     372
     373  if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm", &
     374       "iphysiq must be a multiple of iperiod", 1)
     375
     376  !Config  Key  = ip_ebil_dyn
     377  !Config  Desc = PRINT level for energy conserv. diag.
     378  !Config  Def  = 0
     379  !Config  Help = PRINT level for energy conservation diag. ;
     380  !               les options suivantes existent :
     381  !Config         0 pas de print
     382  !Config         1 pas de print
     383  !Config         2 print,
     384  ip_ebil_dyn = 0
     385  CALL getin('ip_ebil_dyn',ip_ebil_dyn)
     386
     387  DO i = 1, longcles
     388     clesphy0(i) = 0.
     389  ENDDO
     390
     391  !cc  ....   P. Le Van , ajout  le 7/03/95 .pour le zoom ...
     392  !     .........   (  modif  le 17/04/96 )   .........
     393
     394  test_etatinit: IF (.not. etatinit) then
     395     !Config  Key  = clon
     396     !Config  Desc = centre du zoom, longitude
     397     !Config  Def  = 0
     398     !Config  Help = longitude en degres du centre
     399     !Config         du zoom
     400     clonn = 0.
     401     CALL getin('clon',clonn)
     402
     403     !Config  Key  = clat
     404     !Config  Desc = centre du zoom, latitude
     405     !Config  Def  = 0
     406     !Config  Help = latitude en degres du centre du zoom
     407     !Config         
     408     clatt = 0.
     409     CALL getin('clat',clatt)
     410
     411     IF( ABS(clat - clatt).GE. 0.001 )  THEN
     412        write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', &
     413             ' est differente de celle lue sur le fichier  start '
    426414        STOP
    427       ENDIF
    428 
    429 !Config  Key  = grossismx
    430 !Config  Desc = zoom en longitude
    431 !Config  Def  = 1.0
    432 !Config  Help = facteur de grossissement du zoom,
    433 !Config         selon la longitude
    434        grossismxx = 1.0
    435        CALL getin('grossismx',grossismxx)
    436 
    437 
    438       IF( ABS(grossismx - grossismxx).GE. 0.001 )  THEN
    439         write(lunout,*)'conf_gcm: La valeur de grossismx passee par ',
    440      &  'run.def est differente de celle lue sur le fichier  start '
     415     ENDIF
     416
     417     !Config  Key  = grossismx
     418     !Config  Desc = zoom en longitude
     419     !Config  Def  = 1.0
     420     !Config  Help = facteur de grossissement du zoom,
     421     !Config         selon la longitude
     422     grossismxx = 1.0
     423     CALL getin('grossismx',grossismxx)
     424
     425     IF( ABS(grossismx - grossismxx).GE. 0.001 )  THEN
     426        write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', &
     427             'run.def est differente de celle lue sur le fichier  start '
    441428        STOP
    442       ENDIF
    443 
    444 !Config  Key  = grossismy
    445 !Config  Desc = zoom en latitude
    446 !Config  Def  = 1.0
    447 !Config  Help = facteur de grossissement du zoom,
    448 !Config         selon la latitude
    449        grossismyy = 1.0
    450        CALL getin('grossismy',grossismyy)
    451 
    452       IF( ABS(grossismy - grossismyy).GE. 0.001 )  THEN
    453         write(lunout,*)'conf_gcm: La valeur de grossismy passee par ',
    454      & 'run.def est differente de celle lue sur le fichier  start '
     429     ENDIF
     430
     431     !Config  Key  = grossismy
     432     !Config  Desc = zoom en latitude
     433     !Config  Def  = 1.0
     434     !Config  Help = facteur de grossissement du zoom,
     435     !Config         selon la latitude
     436     grossismyy = 1.0
     437     CALL getin('grossismy',grossismyy)
     438
     439     IF( ABS(grossismy - grossismyy).GE. 0.001 )  THEN
     440        write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', &
     441             'run.def est differente de celle lue sur le fichier  start '
    455442        STOP
    456       ENDIF
    457      
    458       IF( grossismx.LT.1. )  THEN
    459         write(lunout,*)
    460      &       'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
    461          STOP
    462       ELSE
    463          alphax = 1. - 1./ grossismx
    464       ENDIF
    465 
    466 
    467       IF( grossismy.LT.1. )  THEN
    468         write(lunout,*)
    469      &       'conf_gcm: ***  ATTENTION !! grossismy < 1 .   *** '
    470          STOP
    471       ELSE
    472          alphay = 1. - 1./ grossismy
    473       ENDIF
    474 
    475       write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay
    476 !
    477 !    alphax et alphay sont les anciennes formulat. des grossissements
    478 !
    479 !
    480 
    481 !Config  Key  = fxyhypb
    482 !Config  Desc = Fonction  hyperbolique
    483 !Config  Def  = y
    484 !Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
    485 !Config         sinon  sinusoidale
    486        fxyhypbb = .TRUE.
    487        CALL getin('fxyhypb',fxyhypbb)
    488 
    489       IF( .NOT.fxyhypb )  THEN
    490          IF( fxyhypbb )     THEN
    491             write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
    492             write(lunout,*)' *** fxyhypb lu sur le fichier start est ',
    493      *       'F alors  qu il est  T  sur  run.def  ***'
     443     ENDIF
     444
     445     IF( grossismx.LT.1. )  THEN
     446        write(lunout,*) &
     447             'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
     448        STOP
     449     ELSE
     450        alphax = 1. - 1./ grossismx
     451     ENDIF
     452
     453     IF( grossismy.LT.1. )  THEN
     454        write(lunout,*) &
     455             'conf_gcm: ***  ATTENTION !! grossismy < 1 .   *** '
     456        STOP
     457     ELSE
     458        alphay = 1. - 1./ grossismy
     459     ENDIF
     460
     461     write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay
     462
     463     !    alphax et alphay sont les anciennes formulat. des grossissements
     464
     465     !Config  Key  = fxyhypb
     466     !Config  Desc = Fonction  hyperbolique
     467     !Config  Def  = y
     468     !Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
     469     !Config         sinon  sinusoidale
     470     fxyhypbb = .TRUE.
     471     CALL getin('fxyhypb',fxyhypbb)
     472
     473     IF( .NOT.fxyhypb )  THEN
     474        IF( fxyhypbb )     THEN
     475           write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
     476           write(lunout,*)' *** fxyhypb lu sur le fichier start est ', &
     477                'F alors  qu il est  T  sur  run.def  ***'
     478           STOP
     479        ENDIF
     480     ELSE
     481        IF( .NOT.fxyhypbb )   THEN
     482           write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
     483           write(lunout,*)' ***  fxyhypb lu sur le fichier start est ', &
     484                'T alors  qu il est  F  sur  run.def  ****  '
     485           STOP
     486        ENDIF
     487     ENDIF
     488
     489     !Config  Key  = dzoomx
     490     !Config  Desc = extension en longitude
     491     !Config  Def  = 0
     492     !Config  Help = extension en longitude  de la zone du zoom 
     493     !Config         ( fraction de la zone totale)
     494     dzoomxx = 0.0
     495     CALL getin('dzoomx',dzoomxx)
     496
     497     IF( fxyhypb )  THEN
     498        IF( ABS(dzoomx - dzoomxx).GE. 0.001 )  THEN
     499           write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', &
     500                'run.def est differente de celle lue sur le fichier  start '
     501           STOP
     502        ENDIF
     503     ENDIF
     504
     505     !Config  Key  = dzoomy
     506     !Config  Desc = extension en latitude
     507     !Config  Def  = 0
     508     !Config  Help = extension en latitude de la zone  du zoom 
     509     !Config         ( fraction de la zone totale)
     510     dzoomyy = 0.0
     511     CALL getin('dzoomy',dzoomyy)
     512
     513     IF( fxyhypb )  THEN
     514        IF( ABS(dzoomy - dzoomyy).GE. 0.001 )  THEN
     515           write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', &
     516                'run.def est differente de celle lue sur le fichier  start '
     517           STOP
     518        ENDIF
     519     ENDIF
     520
     521     !Config  Key  = taux
     522     !Config  Desc = raideur du zoom en  X
     523     !Config  Def  = 3
     524     !Config  Help = raideur du zoom en  X
     525     tauxx = 3.0
     526     CALL getin('taux',tauxx)
     527
     528     IF( fxyhypb )  THEN
     529        IF( ABS(taux - tauxx).GE. 0.001 )  THEN
     530           write(lunout,*)'conf_gcm: La valeur de taux passee par ', &
     531                'run.def est differente de celle lue sur le fichier  start '
     532           STOP
     533        ENDIF
     534     ENDIF
     535
     536     !Config  Key  = tauyy
     537     !Config  Desc = raideur du zoom en  Y
     538     !Config  Def  = 3
     539     !Config  Help = raideur du zoom en  Y
     540     tauyy = 3.0
     541     CALL getin('tauy',tauyy)
     542
     543     IF( fxyhypb )  THEN
     544        IF( ABS(tauy - tauyy).GE. 0.001 )  THEN
     545           write(lunout,*)'conf_gcm: La valeur de tauy passee par ', &
     546                'run.def est differente de celle lue sur le fichier  start '
     547           STOP
     548        ENDIF
     549     ENDIF
     550
     551     !c
     552     IF( .NOT.fxyhypb  )  THEN
     553
     554        !Config  Key  = ysinus
     555        !Config  IF   = !fxyhypb
     556        !Config  Desc = Fonction en Sinus
     557        !Config  Def  = y
     558        !Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
     559        !Config         sinon y = latit.
     560        ysinuss = .TRUE.
     561        CALL getin('ysinus',ysinuss)
     562
     563        IF( .NOT.ysinus )  THEN
     564           IF( ysinuss )     THEN
     565              write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
     566              write(lunout,*)' *** ysinus lu sur le fichier start est F', &
     567                   ' alors  qu il est  T  sur  run.def  ***'
    494568              STOP
    495          ENDIF
    496       ELSE
    497          IF( .NOT.fxyhypbb )   THEN
    498             write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
    499             write(lunout,*)' ***  fxyhypb lu sur le fichier start est ',
    500      *        'T alors  qu il est  F  sur  run.def  ****  '
     569           ENDIF
     570        ELSE
     571           IF( .NOT.ysinuss )   THEN
     572              write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
     573              write(lunout,*)' *** ysinus lu sur le fichier start est T', &
     574                   ' alors  qu il est  F  sur  run.def  ****  '
    501575              STOP
    502          ENDIF
    503       ENDIF
    504 !
    505 !Config  Key  = dzoomx
    506 !Config  Desc = extension en longitude
    507 !Config  Def  = 0
    508 !Config  Help = extension en longitude  de la zone du zoom 
    509 !Config         ( fraction de la zone totale)
    510        dzoomxx = 0.0
    511        CALL getin('dzoomx',dzoomxx)
    512 
    513       IF( fxyhypb )  THEN
    514        IF( ABS(dzoomx - dzoomxx).GE. 0.001 )  THEN
    515         write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ',
    516      *  'run.def est differente de celle lue sur le fichier  start '
     576           ENDIF
     577        ENDIF
     578     ENDIF ! of IF( .NOT.fxyhypb  )
     579
     580     !Config  Key  = offline
     581     !Config  Desc = Nouvelle eau liquide
     582     !Config  Def  = n
     583     !Config  Help = Permet de mettre en route la
     584     !Config         nouvelle parametrisation de l'eau liquide !
     585     offline = .FALSE.
     586     CALL getin('offline',offline)
     587
     588     !Config  Key  = type_trac
     589     !Config  Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
     590     !Config  Def  = lmdz
     591     !Config  Help =
     592     !Config         'lmdz' = pas de couplage, pur LMDZ
     593     !Config         'inca' = model de chime INCA
     594     !Config         'repr' = model de chime REPROBUS
     595     type_trac = 'lmdz'
     596     CALL getin('type_trac',type_trac)
     597
     598     !Config  Key  = config_inca
     599     !Config  Desc = Choix de configuration de INCA
     600     !Config  Def  = none
     601     !Config  Help = Choix de configuration de INCA :
     602     !Config         'none' = sans INCA
     603     !Config         'chem' = INCA avec calcul de chemie
     604     !Config         'aero' = INCA avec calcul des aerosols
     605     config_inca = 'none'
     606     CALL getin('config_inca',config_inca)
     607
     608     !Config  Key  = ok_dynzon
     609     !Config  Desc = calcul et sortie des transports
     610     !Config  Def  = n
     611     !Config  Help = Permet de mettre en route le calcul des transports
     612     !Config         
     613     ok_dynzon = .FALSE.
     614     CALL getin('ok_dynzon',ok_dynzon)
     615
     616     !Config  Key  = ok_dyn_ins
     617     !Config  Desc = sorties instantanees dans la dynamique
     618     !Config  Def  = n
     619     !Config  Help =
     620     !Config         
     621     ok_dyn_ins = .FALSE.
     622     CALL getin('ok_dyn_ins',ok_dyn_ins)
     623
     624     !Config  Key  = ok_dyn_ave
     625     !Config  Desc = sorties moyennes dans la dynamique
     626     !Config  Def  = n
     627     !Config  Help =
     628     !Config         
     629     ok_dyn_ave = .FALSE.
     630     CALL getin('ok_dyn_ave',ok_dyn_ave)
     631
     632     write(lunout,*)' #########################################'
     633     write(lunout,*)' Configuration des parametres du gcm: '
     634     write(lunout,*)' planet_type = ', planet_type
     635     write(lunout,*)' calend = ', calend
     636     write(lunout,*)' dayref = ', dayref
     637     write(lunout,*)' anneeref = ', anneeref
     638     write(lunout,*)' nday = ', nday
     639     write(lunout,*)' day_step = ', day_step
     640     write(lunout,*)' iperiod = ', iperiod
     641     write(lunout,*)' nsplit_phys = ', nsplit_phys
     642     write(lunout,*)' iconser = ', iconser
     643     write(lunout,*)' iecri = ', iecri
     644     write(lunout,*)' periodav = ', periodav
     645     write(lunout,*)' output_grads_dyn = ', output_grads_dyn
     646     write(lunout,*)' dissip_period = ', dissip_period
     647     write(lunout,*)' lstardis = ', lstardis
     648     write(lunout,*)' nitergdiv = ', nitergdiv
     649     write(lunout,*)' nitergrot = ', nitergrot
     650     write(lunout,*)' niterh = ', niterh
     651     write(lunout,*)' tetagdiv = ', tetagdiv
     652     write(lunout,*)' tetagrot = ', tetagrot
     653     write(lunout,*)' tetatemp = ', tetatemp
     654     write(lunout,*)' coefdis = ', coefdis
     655     write(lunout,*)' purmats = ', purmats
     656     write(lunout,*)' read_start = ', read_start
     657     write(lunout,*)' iflag_phys = ', iflag_phys
     658     write(lunout,*)' iphysiq = ', iphysiq
     659     write(lunout,*)' clonn = ', clonn
     660     write(lunout,*)' clatt = ', clatt
     661     write(lunout,*)' grossismx = ', grossismx
     662     write(lunout,*)' grossismy = ', grossismy
     663     write(lunout,*)' fxyhypbb = ', fxyhypbb
     664     write(lunout,*)' dzoomxx = ', dzoomxx
     665     write(lunout,*)' dzoomy = ', dzoomyy
     666     write(lunout,*)' tauxx = ', tauxx
     667     write(lunout,*)' tauyy = ', tauyy
     668     write(lunout,*)' offline = ', offline
     669     write(lunout,*)' type_trac = ', type_trac
     670     write(lunout,*)' config_inca = ', config_inca
     671     write(lunout,*)' ok_dynzon = ', ok_dynzon
     672     write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
     673     write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
     674  else
     675     !Config  Key  = clon
     676     !Config  Desc = centre du zoom, longitude
     677     !Config  Def  = 0
     678     !Config  Help = longitude en degres du centre
     679     !Config         du zoom
     680     clon = 0.
     681     CALL getin('clon',clon)
     682
     683     !Config  Key  = clat
     684     !Config  Desc = centre du zoom, latitude
     685     !Config  Def  = 0
     686     !Config  Help = latitude en degres du centre du zoom
     687     !Config         
     688     clat = 0.
     689     CALL getin('clat',clat)
     690
     691     !Config  Key  = grossismx
     692     !Config  Desc = zoom en longitude
     693     !Config  Def  = 1.0
     694     !Config  Help = facteur de grossissement du zoom,
     695     !Config         selon la longitude
     696     grossismx = 1.0
     697     CALL getin('grossismx',grossismx)
     698
     699     !Config  Key  = grossismy
     700     !Config  Desc = zoom en latitude
     701     !Config  Def  = 1.0
     702     !Config  Help = facteur de grossissement du zoom,
     703     !Config         selon la latitude
     704     grossismy = 1.0
     705     CALL getin('grossismy',grossismy)
     706
     707     IF( grossismx.LT.1. )  THEN
     708        write(lunout,*) &
     709             'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
    517710        STOP
    518        ENDIF
    519       ENDIF
    520 
    521 !Config  Key  = dzoomy
    522 !Config  Desc = extension en latitude
    523 !Config  Def  = 0
    524 !Config  Help = extension en latitude de la zone  du zoom 
    525 !Config         ( fraction de la zone totale)
    526        dzoomyy = 0.0
    527        CALL getin('dzoomy',dzoomyy)
    528 
    529       IF( fxyhypb )  THEN
    530        IF( ABS(dzoomy - dzoomyy).GE. 0.001 )  THEN
    531         write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ',
    532      * 'run.def est differente de celle lue sur le fichier  start '
     711     ELSE
     712        alphax = 1. - 1./ grossismx
     713     ENDIF
     714
     715     IF( grossismy.LT.1. )  THEN
     716        write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** '
    533717        STOP
    534        ENDIF
    535       ENDIF
    536      
    537 !Config  Key  = taux
    538 !Config  Desc = raideur du zoom en  X
    539 !Config  Def  = 3
    540 !Config  Help = raideur du zoom en  X
    541        tauxx = 3.0
    542        CALL getin('taux',tauxx)
    543 
    544       IF( fxyhypb )  THEN
    545        IF( ABS(taux - tauxx).GE. 0.001 )  THEN
    546         write(lunout,*)'conf_gcm: La valeur de taux passee par ',
    547      * 'run.def est differente de celle lue sur le fichier  start '
    548         STOP
    549        ENDIF
    550       ENDIF
    551 
    552 !Config  Key  = tauyy
    553 !Config  Desc = raideur du zoom en  Y
    554 !Config  Def  = 3
    555 !Config  Help = raideur du zoom en  Y
    556        tauyy = 3.0
    557        CALL getin('tauy',tauyy)
    558 
    559       IF( fxyhypb )  THEN
    560        IF( ABS(tauy - tauyy).GE. 0.001 )  THEN
    561         write(lunout,*)'conf_gcm: La valeur de tauy passee par ',
    562      * 'run.def est differente de celle lue sur le fichier  start '
    563         STOP
    564        ENDIF
    565       ENDIF
    566 
    567 !c
    568       IF( .NOT.fxyhypb  )  THEN
    569 
    570 !Config  Key  = ysinus
    571 !Config  IF   = !fxyhypb
    572 !Config  Desc = Fonction en Sinus
    573 !Config  Def  = y
    574 !Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
    575 !Config         sinon y = latit.
    576        ysinuss = .TRUE.
    577        CALL getin('ysinus',ysinuss)
    578 
    579         IF( .NOT.ysinus )  THEN
    580           IF( ysinuss )     THEN
    581             write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
    582             write(lunout,*)' *** ysinus lu sur le fichier start est F',
    583      *       ' alors  qu il est  T  sur  run.def  ***'
    584             STOP
    585           ENDIF
    586         ELSE
    587           IF( .NOT.ysinuss )   THEN
    588             write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
    589             write(lunout,*)' *** ysinus lu sur le fichier start est T',
    590      *        ' alors  qu il est  F  sur  run.def  ****  '
    591               STOP
    592           ENDIF
    593         ENDIF
    594       ENDIF ! of IF( .NOT.fxyhypb  )
    595 !
    596 !Config  Key  = offline
    597 !Config  Desc = Nouvelle eau liquide
    598 !Config  Def  = n
    599 !Config  Help = Permet de mettre en route la
    600 !Config         nouvelle parametrisation de l'eau liquide !
    601        offline = .FALSE.
    602        CALL getin('offline',offline)
    603      
    604 !Config  Key  = type_trac
    605 !Config  Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
    606 !Config  Def  = lmdz
    607 !Config  Help =
    608 !Config         'lmdz' = pas de couplage, pur LMDZ
    609 !Config         'inca' = model de chime INCA
    610 !Config         'repr' = model de chime REPROBUS
    611       type_trac = 'lmdz'
    612       CALL getin('type_trac',type_trac)
    613 
    614 !Config  Key  = config_inca
    615 !Config  Desc = Choix de configuration de INCA
    616 !Config  Def  = none
    617 !Config  Help = Choix de configuration de INCA :
    618 !Config         'none' = sans INCA
    619 !Config         'chem' = INCA avec calcul de chemie
    620 !Config         'aero' = INCA avec calcul des aerosols
    621       config_inca = 'none'
    622       CALL getin('config_inca',config_inca)
    623 
    624 !Config  Key  = ok_dynzon
    625 !Config  Desc = calcul et sortie des transports
    626 !Config  Def  = n
    627 !Config  Help = Permet de mettre en route le calcul des transports
    628 !Config         
    629       ok_dynzon = .FALSE.
    630       CALL getin('ok_dynzon',ok_dynzon)
    631 
    632 !Config  Key  = ok_dyn_ins
    633 !Config  Desc = sorties instantanees dans la dynamique
    634 !Config  Def  = n
    635 !Config  Help =
    636 !Config         
    637       ok_dyn_ins = .FALSE.
    638       CALL getin('ok_dyn_ins',ok_dyn_ins)
    639 
    640 !Config  Key  = ok_dyn_ave
    641 !Config  Desc = sorties moyennes dans la dynamique
    642 !Config  Def  = n
    643 !Config  Help =
    644 !Config         
    645       ok_dyn_ave = .FALSE.
    646       CALL getin('ok_dyn_ave',ok_dyn_ave)
    647 
    648       write(lunout,*)' #########################################'
    649       write(lunout,*)' Configuration des parametres du gcm: '
    650       write(lunout,*)' planet_type = ', planet_type
    651       write(lunout,*)' calend = ', calend
    652       write(lunout,*)' dayref = ', dayref
    653       write(lunout,*)' anneeref = ', anneeref
    654       write(lunout,*)' nday = ', nday
    655       write(lunout,*)' day_step = ', day_step
    656       write(lunout,*)' iperiod = ', iperiod
    657       write(lunout,*)' nsplit_phys = ', nsplit_phys
    658       write(lunout,*)' iconser = ', iconser
    659       write(lunout,*)' iecri = ', iecri
    660       write(lunout,*)' periodav = ', periodav
    661       write(lunout,*)' output_grads_dyn = ', output_grads_dyn
    662       write(lunout,*)' dissip_period = ', dissip_period
    663       write(lunout,*)' lstardis = ', lstardis
    664       write(lunout,*)' nitergdiv = ', nitergdiv
    665       write(lunout,*)' nitergrot = ', nitergrot
    666       write(lunout,*)' niterh = ', niterh
    667       write(lunout,*)' tetagdiv = ', tetagdiv
    668       write(lunout,*)' tetagrot = ', tetagrot
    669       write(lunout,*)' tetatemp = ', tetatemp
    670       write(lunout,*)' coefdis = ', coefdis
    671       write(lunout,*)' purmats = ', purmats
    672       write(lunout,*)' read_start = ', read_start
    673       write(lunout,*)' iflag_phys = ', iflag_phys
    674       write(lunout,*)' iphysiq = ', iphysiq
    675       write(lunout,*)' clonn = ', clonn
    676       write(lunout,*)' clatt = ', clatt
    677       write(lunout,*)' grossismx = ', grossismx
    678       write(lunout,*)' grossismy = ', grossismy
    679       write(lunout,*)' fxyhypbb = ', fxyhypbb
    680       write(lunout,*)' dzoomxx = ', dzoomxx
    681       write(lunout,*)' dzoomy = ', dzoomyy
    682       write(lunout,*)' tauxx = ', tauxx
    683       write(lunout,*)' tauyy = ', tauyy
    684       write(lunout,*)' offline = ', offline
    685       write(lunout,*)' type_trac = ', type_trac
    686       write(lunout,*)' config_inca = ', config_inca
    687       write(lunout,*)' ok_dynzon = ', ok_dynzon
    688       write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
    689       write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
    690 
    691       RETURN
    692 !   ...............................................
    693 !
    694 100   CONTINUE
    695 !Config  Key  = clon
    696 !Config  Desc = centre du zoom, longitude
    697 !Config  Def  = 0
    698 !Config  Help = longitude en degres du centre
    699 !Config         du zoom
    700        clon = 0.
    701        CALL getin('clon',clon)
    702 
    703 !Config  Key  = clat
    704 !Config  Desc = centre du zoom, latitude
    705 !Config  Def  = 0
    706 !Config  Help = latitude en degres du centre du zoom
    707 !Config         
    708        clat = 0.
    709        CALL getin('clat',clat)
    710 
    711 !Config  Key  = grossismx
    712 !Config  Desc = zoom en longitude
    713 !Config  Def  = 1.0
    714 !Config  Help = facteur de grossissement du zoom,
    715 !Config         selon la longitude
    716        grossismx = 1.0
    717        CALL getin('grossismx',grossismx)
    718 
    719 !Config  Key  = grossismy
    720 !Config  Desc = zoom en latitude
    721 !Config  Def  = 1.0
    722 !Config  Help = facteur de grossissement du zoom,
    723 !Config         selon la latitude
    724        grossismy = 1.0
    725        CALL getin('grossismy',grossismy)
    726 
    727       IF( grossismx.LT.1. )  THEN
    728         write(lunout,*)
    729      &   'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
    730          STOP
    731       ELSE
    732          alphax = 1. - 1./ grossismx
    733       ENDIF
    734 
    735 
    736       IF( grossismy.LT.1. )  THEN
    737         write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** '
    738          STOP
    739       ELSE
    740          alphay = 1. - 1./ grossismy
    741       ENDIF
    742 
    743       write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay
    744 !
    745 !    alphax et alphay sont les anciennes formulat. des grossissements
    746 !
    747 !
    748 
    749 !Config  Key  = fxyhypb
    750 !Config  Desc = Fonction  hyperbolique
    751 !Config  Def  = y
    752 !Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
    753 !Config         sinon  sinusoidale
    754        fxyhypb = .TRUE.
    755        CALL getin('fxyhypb',fxyhypb)
    756 
    757 !Config  Key  = dzoomx
    758 !Config  Desc = extension en longitude
    759 !Config  Def  = 0
    760 !Config  Help = extension en longitude  de la zone du zoom 
    761 !Config         ( fraction de la zone totale)
    762        dzoomx = 0.0
    763        CALL getin('dzoomx',dzoomx)
    764 
    765 !Config  Key  = dzoomy
    766 !Config  Desc = extension en latitude
    767 !Config  Def  = 0
    768 !Config  Help = extension en latitude de la zone  du zoom 
    769 !Config         ( fraction de la zone totale)
    770        dzoomy = 0.0
    771        CALL getin('dzoomy',dzoomy)
    772 
    773 !Config  Key  = taux
    774 !Config  Desc = raideur du zoom en  X
    775 !Config  Def  = 3
    776 !Config  Help = raideur du zoom en  X
    777        taux = 3.0
    778        CALL getin('taux',taux)
    779 
    780 !Config  Key  = tauy
    781 !Config  Desc = raideur du zoom en  Y
    782 !Config  Def  = 3
    783 !Config  Help = raideur du zoom en  Y
    784        tauy = 3.0
    785        CALL getin('tauy',tauy)
    786 
    787 !Config  Key  = ysinus
    788 !Config  IF   = !fxyhypb
    789 !Config  Desc = Fonction en Sinus
    790 !Config  Def  = y
    791 !Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
    792 !Config         sinon y = latit.
    793        ysinus = .TRUE.
    794        CALL getin('ysinus',ysinus)
    795 !
    796 !Config  Key  = offline
    797 !Config  Desc = Nouvelle eau liquide
    798 !Config  Def  = n
    799 !Config  Help = Permet de mettre en route la
    800 !Config         nouvelle parametrisation de l'eau liquide !
    801        offline = .FALSE.
    802        CALL getin('offline',offline)
    803 
    804 !Config  Key  = type_trac
    805 !Config  Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
    806 !Config  Def  = lmdz
    807 !Config  Help =
    808 !Config         'lmdz' = pas de couplage, pur LMDZ
    809 !Config         'inca' = model de chime INCA
    810 !Config         'repr' = model de chime REPROBUS
    811       type_trac = 'lmdz'
    812       CALL getin('type_trac',type_trac)
    813 
    814 !Config  Key  = config_inca
    815 !Config  Desc = Choix de configuration de INCA
    816 !Config  Def  = none
    817 !Config  Help = Choix de configuration de INCA :
    818 !Config         'none' = sans INCA
    819 !Config         'chem' = INCA avec calcul de chemie
    820 !Config         'aero' = INCA avec calcul des aerosols
    821       config_inca = 'none'
    822       CALL getin('config_inca',config_inca)
    823 
    824 !Config  Key  = ok_dynzon
    825 !Config  Desc = sortie des transports zonaux dans la dynamique
    826 !Config  Def  = n
    827 !Config  Help = Permet de mettre en route le calcul des transports
    828 !Config         
    829       ok_dynzon = .FALSE.
    830       CALL getin('ok_dynzon',ok_dynzon)
    831 
    832 !Config  Key  = ok_dyn_ins
    833 !Config  Desc = sorties instantanees dans la dynamique
    834 !Config  Def  = n
    835 !Config  Help =
    836 !Config         
    837       ok_dyn_ins = .FALSE.
    838       CALL getin('ok_dyn_ins',ok_dyn_ins)
    839 
    840 !Config  Key  = ok_dyn_ave
    841 !Config  Desc = sorties moyennes dans la dynamique
    842 !Config  Def  = n
    843 !Config  Help =
    844 !Config         
    845       ok_dyn_ave = .FALSE.
    846       CALL getin('ok_dyn_ave',ok_dyn_ave)
    847 
    848 !Config  Key  = use_filtre_fft
    849 !Config  Desc = flag d'activation des FFT pour le filtre
    850 !Config  Def  = false
    851 !Config  Help = permet d'activer l'utilisation des FFT pour effectuer
    852 !Config         le filtrage aux poles.
    853 ! Le filtre fft n'est pas implemente dans dyn3d
    854       use_filtre_fft=.FALSE.
    855       CALL getin('use_filtre_fft',use_filtre_fft)
    856 
    857       IF (use_filtre_fft) THEN
     718     ELSE
     719        alphay = 1. - 1./ grossismy
     720     ENDIF
     721
     722     write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay
     723
     724     !    alphax et alphay sont les anciennes formulat. des grossissements
     725
     726     !Config  Key  = fxyhypb
     727     !Config  Desc = Fonction  hyperbolique
     728     !Config  Def  = y
     729     !Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
     730     !Config         sinon  sinusoidale
     731     fxyhypb = .TRUE.
     732     CALL getin('fxyhypb',fxyhypb)
     733
     734     !Config  Key  = dzoomx
     735     !Config  Desc = extension en longitude
     736     !Config  Def  = 0
     737     !Config  Help = extension en longitude  de la zone du zoom 
     738     !Config         ( fraction de la zone totale)
     739     dzoomx = 0.0
     740     CALL getin('dzoomx',dzoomx)
     741
     742     !Config  Key  = dzoomy
     743     !Config  Desc = extension en latitude
     744     !Config  Def  = 0
     745     !Config  Help = extension en latitude de la zone  du zoom 
     746     !Config         ( fraction de la zone totale)
     747     dzoomy = 0.0
     748     CALL getin('dzoomy',dzoomy)
     749
     750     !Config  Key  = taux
     751     !Config  Desc = raideur du zoom en  X
     752     !Config  Def  = 3
     753     !Config  Help = raideur du zoom en  X
     754     taux = 3.0
     755     CALL getin('taux',taux)
     756
     757     !Config  Key  = tauy
     758     !Config  Desc = raideur du zoom en  Y
     759     !Config  Def  = 3
     760     !Config  Help = raideur du zoom en  Y
     761     tauy = 3.0
     762     CALL getin('tauy',tauy)
     763
     764     !Config  Key  = ysinus
     765     !Config  IF   = !fxyhypb
     766     !Config  Desc = Fonction en Sinus
     767     !Config  Def  = y
     768     !Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
     769     !Config         sinon y = latit.
     770     ysinus = .TRUE.
     771     CALL getin('ysinus',ysinus)
     772
     773     !Config  Key  = offline
     774     !Config  Desc = Nouvelle eau liquide
     775     !Config  Def  = n
     776     !Config  Help = Permet de mettre en route la
     777     !Config         nouvelle parametrisation de l'eau liquide !
     778     offline = .FALSE.
     779     CALL getin('offline',offline)
     780
     781     !Config  Key  = type_trac
     782     !Config  Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
     783     !Config  Def  = lmdz
     784     !Config  Help =
     785     !Config         'lmdz' = pas de couplage, pur LMDZ
     786     !Config         'inca' = model de chime INCA
     787     !Config         'repr' = model de chime REPROBUS
     788     type_trac = 'lmdz'
     789     CALL getin('type_trac',type_trac)
     790
     791     !Config  Key  = config_inca
     792     !Config  Desc = Choix de configuration de INCA
     793     !Config  Def  = none
     794     !Config  Help = Choix de configuration de INCA :
     795     !Config         'none' = sans INCA
     796     !Config         'chem' = INCA avec calcul de chemie
     797     !Config         'aero' = INCA avec calcul des aerosols
     798     config_inca = 'none'
     799     CALL getin('config_inca',config_inca)
     800
     801     !Config  Key  = ok_dynzon
     802     !Config  Desc = sortie des transports zonaux dans la dynamique
     803     !Config  Def  = n
     804     !Config  Help = Permet de mettre en route le calcul des transports
     805     !Config         
     806     ok_dynzon = .FALSE.
     807     CALL getin('ok_dynzon',ok_dynzon)
     808
     809     !Config  Key  = ok_dyn_ins
     810     !Config  Desc = sorties instantanees dans la dynamique
     811     !Config  Def  = n
     812     !Config  Help =
     813     !Config         
     814     ok_dyn_ins = .FALSE.
     815     CALL getin('ok_dyn_ins',ok_dyn_ins)
     816
     817     !Config  Key  = ok_dyn_ave
     818     !Config  Desc = sorties moyennes dans la dynamique
     819     !Config  Def  = n
     820     !Config  Help =
     821     !Config         
     822     ok_dyn_ave = .FALSE.
     823     CALL getin('ok_dyn_ave',ok_dyn_ave)
     824
     825     !Config  Key  = use_filtre_fft
     826     !Config  Desc = flag d'activation des FFT pour le filtre
     827     !Config  Def  = false
     828     !Config  Help = permet d'activer l'utilisation des FFT pour effectuer
     829     !Config         le filtrage aux poles.
     830     ! Le filtre fft n'est pas implemente dans dyn3d
     831     use_filtre_fft=.FALSE.
     832     CALL getin('use_filtre_fft',use_filtre_fft)
     833
     834     IF (use_filtre_fft) THEN
    858835        write(lunout,*)'STOP !!!'
    859836        write(lunout,*)'use_filtre_fft n est pas implemente dans dyn3d'
    860837        STOP 1
    861       ENDIF
    862      
    863 !Config key = ok_strato
    864 !Config  Desc = activation de la version strato
    865 !Config  Def  = .FALSE.
    866 !Config  Help = active la version stratosphérique de LMDZ de F. Lott
    867 
    868       ok_strato=.FALSE.
    869       CALL getin('ok_strato',ok_strato)
    870 
    871       vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39)
    872       CALL getin('vert_prof_dissip', vert_prof_dissip)
    873       call assert(vert_prof_dissip == 0 .or. vert_prof_dissip ==  1,
    874      $     "bad value for vert_prof_dissip")
    875 
    876 !Config  Key  = ok_gradsfile
    877 !Config  Desc = activation des sorties grads du guidage
    878 !Config  Def  = n
    879 !Config  Help = active les sorties grads du guidage
    880 
    881        ok_gradsfile = .FALSE.
    882        CALL getin('ok_gradsfile',ok_gradsfile)
    883 
    884 !Config  Key  = ok_limit
    885 !Config  Desc = creation des fichiers limit dans create_etat0_limit
    886 !Config  Def  = y
    887 !Config  Help = production du fichier limit.nc requise
    888 
    889        ok_limit = .TRUE.
    890        CALL getin('ok_limit',ok_limit)
    891 
    892 !Config  Key  = ok_etat0
    893 !Config  Desc = creation des fichiers etat0 dans create_etat0_limit
    894 !Config  Def  = y
    895 !Config  Help = production des fichiers start.nc, startphy.nc requise
    896 
    897       ok_etat0 = .TRUE.
    898       CALL getin('ok_etat0',ok_etat0)
    899 
    900       write(lunout,*)' #########################################'
    901       write(lunout,*)' Configuration des parametres de cel0'
    902      &             //'_limit: '
    903       write(lunout,*)' planet_type = ', planet_type
    904       write(lunout,*)' calend = ', calend
    905       write(lunout,*)' dayref = ', dayref
    906       write(lunout,*)' anneeref = ', anneeref
    907       write(lunout,*)' nday = ', nday
    908       write(lunout,*)' day_step = ', day_step
    909       write(lunout,*)' iperiod = ', iperiod
    910       write(lunout,*)' iconser = ', iconser
    911       write(lunout,*)' iecri = ', iecri
    912       write(lunout,*)' periodav = ', periodav
    913       write(lunout,*)' output_grads_dyn = ', output_grads_dyn
    914       write(lunout,*)' dissip_period = ', dissip_period
    915       write(lunout,*)' lstardis = ', lstardis
    916       write(lunout,*)' nitergdiv = ', nitergdiv
    917       write(lunout,*)' nitergrot = ', nitergrot
    918       write(lunout,*)' niterh = ', niterh
    919       write(lunout,*)' tetagdiv = ', tetagdiv
    920       write(lunout,*)' tetagrot = ', tetagrot
    921       write(lunout,*)' tetatemp = ', tetatemp
    922       write(lunout,*)' coefdis = ', coefdis
    923       write(lunout,*)' purmats = ', purmats
    924       write(lunout,*)' read_start = ', read_start
    925       write(lunout,*)' iflag_phys = ', iflag_phys
    926       write(lunout,*)' iphysiq = ', iphysiq
    927       write(lunout,*)' clon = ', clon
    928       write(lunout,*)' clat = ', clat
    929       write(lunout,*)' grossismx = ', grossismx
    930       write(lunout,*)' grossismy = ', grossismy
    931       write(lunout,*)' fxyhypb = ', fxyhypb
    932       write(lunout,*)' dzoomx = ', dzoomx
    933       write(lunout,*)' dzoomy = ', dzoomy
    934       write(lunout,*)' taux = ', taux
    935       write(lunout,*)' tauy = ', tauy
    936       write(lunout,*)' offline = ', offline
    937       write(lunout,*)' type_trac = ', type_trac
    938       write(lunout,*)' config_inca = ', config_inca
    939       write(lunout,*)' ok_dynzon = ', ok_dynzon
    940       write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
    941       write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
    942       write(lunout,*)' ok_strato = ', ok_strato
    943       write(lunout,*)' ok_gradsfile = ', ok_gradsfile
    944       write(lunout,*)' ok_limit = ', ok_limit
    945       write(lunout,*)' ok_etat0 = ', ok_etat0
    946 !
    947       RETURN
    948       END
     838     ENDIF
     839
     840     !Config key = ok_strato
     841     !Config  Desc = activation de la version strato
     842     !Config  Def  = .FALSE.
     843     !Config  Help = active la version stratosphérique de LMDZ de F. Lott
     844
     845     ok_strato=.FALSE.
     846     CALL getin('ok_strato',ok_strato)
     847
     848     vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39)
     849     CALL getin('vert_prof_dissip', vert_prof_dissip)
     850     call assert(vert_prof_dissip == 0 .or. vert_prof_dissip ==  1, &
     851          "bad value for vert_prof_dissip")
     852
     853     !Config  Key  = ok_gradsfile
     854     !Config  Desc = activation des sorties grads du guidage
     855     !Config  Def  = n
     856     !Config  Help = active les sorties grads du guidage
     857
     858     ok_gradsfile = .FALSE.
     859     CALL getin('ok_gradsfile',ok_gradsfile)
     860
     861     !Config  Key  = ok_limit
     862     !Config  Desc = creation des fichiers limit dans create_etat0_limit
     863     !Config  Def  = y
     864     !Config  Help = production du fichier limit.nc requise
     865
     866     ok_limit = .TRUE.
     867     CALL getin('ok_limit',ok_limit)
     868
     869     !Config  Key  = ok_etat0
     870     !Config  Desc = creation des fichiers etat0 dans create_etat0_limit
     871     !Config  Def  = y
     872     !Config  Help = production des fichiers start.nc, startphy.nc requise
     873
     874     ok_etat0 = .TRUE.
     875     CALL getin('ok_etat0',ok_etat0)
     876
     877     write(lunout,*)' #########################################'
     878     write(lunout,*)' Configuration des parametres de cel0' &
     879          //'_limit: '
     880     write(lunout,*)' planet_type = ', planet_type
     881     write(lunout,*)' calend = ', calend
     882     write(lunout,*)' dayref = ', dayref
     883     write(lunout,*)' anneeref = ', anneeref
     884     write(lunout,*)' nday = ', nday
     885     write(lunout,*)' day_step = ', day_step
     886     write(lunout,*)' iperiod = ', iperiod
     887     write(lunout,*)' iconser = ', iconser
     888     write(lunout,*)' iecri = ', iecri
     889     write(lunout,*)' periodav = ', periodav
     890     write(lunout,*)' output_grads_dyn = ', output_grads_dyn
     891     write(lunout,*)' dissip_period = ', dissip_period
     892     write(lunout,*)' lstardis = ', lstardis
     893     write(lunout,*)' nitergdiv = ', nitergdiv
     894     write(lunout,*)' nitergrot = ', nitergrot
     895     write(lunout,*)' niterh = ', niterh
     896     write(lunout,*)' tetagdiv = ', tetagdiv
     897     write(lunout,*)' tetagrot = ', tetagrot
     898     write(lunout,*)' tetatemp = ', tetatemp
     899     write(lunout,*)' coefdis = ', coefdis
     900     write(lunout,*)' purmats = ', purmats
     901     write(lunout,*)' read_start = ', read_start
     902     write(lunout,*)' iflag_phys = ', iflag_phys
     903     write(lunout,*)' iphysiq = ', iphysiq
     904     write(lunout,*)' clon = ', clon
     905     write(lunout,*)' clat = ', clat
     906     write(lunout,*)' grossismx = ', grossismx
     907     write(lunout,*)' grossismy = ', grossismy
     908     write(lunout,*)' fxyhypb = ', fxyhypb
     909     write(lunout,*)' dzoomx = ', dzoomx
     910     write(lunout,*)' dzoomy = ', dzoomy
     911     write(lunout,*)' taux = ', taux
     912     write(lunout,*)' tauy = ', tauy
     913     write(lunout,*)' offline = ', offline
     914     write(lunout,*)' type_trac = ', type_trac
     915     write(lunout,*)' config_inca = ', config_inca
     916     write(lunout,*)' ok_dynzon = ', ok_dynzon
     917     write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
     918     write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
     919     write(lunout,*)' ok_strato = ', ok_strato
     920     write(lunout,*)' ok_gradsfile = ', ok_gradsfile
     921     write(lunout,*)' ok_limit = ', ok_limit
     922     write(lunout,*)' ok_etat0 = ', ok_etat0
     923  end IF test_etatinit
     924
     925END SUBROUTINE conf_gcm
  • LMDZ5/trunk/libf/dyn3dmem/conf_gcm.F90

    r2141 r2142  
    1 !
     1
    22! $Id$
    3 !
    4 !
    5 !
    6       SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 )
    7 !
    8       USE control_mod
     3
     4SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 )
     5
     6  USE control_mod
    97#ifdef CPP_IOIPSL
    10       use IOIPSL
     8  use IOIPSL
    119#else
    12 ! if not using IOIPSL, we still need to use (a local version of) getin
    13       use ioipsl_getincom
     10  ! if not using IOIPSL, we still need to use (a local version of) getin
     11  use ioipsl_getincom
    1412#endif
    15       use misc_mod
    16       use mod_filtre_fft, ONLY : use_filtre_fft
    17       use mod_filtre_fft_loc, ONLY : use_filtre_fft_loc=>use_filtre_fft
    18       use mod_hallo, ONLY : use_mpi_alloc
    19       USE infotrac, ONLY : type_trac
    20       use assert_m, only: assert
    21 
    22       IMPLICIT NONE
    23 !-----------------------------------------------------------------------
    24 !     Auteurs :   L. Fairhead , P. Le Van  .
    25 !
    26 !     Arguments :
    27 !
    28 !     tapedef   :
    29 !     etatinit  :     = TRUE   , on ne  compare pas les valeurs des para-
    30 !     -metres  du zoom  avec  celles lues sur le fichier start .
    31 !      clesphy0 :  sortie  .
    32 !
    33        LOGICAL etatinit
    34        INTEGER tapedef
    35 
    36        INTEGER        longcles
    37        PARAMETER(     longcles = 20 )
    38        REAL clesphy0( longcles )
    39 !
    40 !   Declarations :
    41 !   --------------
    42 #include "dimensions.h"
    43 #include "paramet.h"
    44 #include "logic.h"
    45 #include "serre.h"
    46 #include "comdissnew.h"
    47 #include "temps.h"
    48 #include "comconst.h"
    49 
    50 ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
    51 ! #include "clesphys.h"
    52 #include "iniprint.h"
    53 !
    54 !
    55 !   local:
    56 !   ------
    57 
    58       CHARACTER ch1*72,ch2*72,ch3*72,ch4*12
    59       REAL clonn,clatt,grossismxx,grossismyy
    60       REAL dzoomxx,dzoomyy, tauxx,tauyy
    61       LOGICAL  fxyhypbb, ysinuss
    62       INTEGER i
    63       character(len=*),parameter :: modname="conf_gcm"
    64       character (len=80) :: abort_message
     13  use misc_mod
     14  use mod_filtre_fft, ONLY : use_filtre_fft
     15  use mod_filtre_fft_loc, ONLY : use_filtre_fft_loc=>use_filtre_fft
     16  use mod_hallo, ONLY : use_mpi_alloc
     17  USE infotrac, ONLY : type_trac
     18  use assert_m, only: assert
     19
     20  IMPLICIT NONE
     21  !-----------------------------------------------------------------------
     22  !     Auteurs :   L. Fairhead , P. Le Van  .
     23
     24  !     Arguments :
     25
     26  !     tapedef   :
     27  !     etatinit  :     = TRUE   , on ne  compare pas les valeurs des para-
     28  !     -metres  du zoom  avec  celles lues sur le fichier start .
     29  !      clesphy0 :  sortie  .
     30
     31  LOGICAL etatinit
     32  INTEGER tapedef
     33
     34  INTEGER        longcles
     35  PARAMETER(     longcles = 20 )
     36  REAL clesphy0( longcles )
     37
     38  !   Declarations :
     39  !   --------------
     40  include "dimensions.h"
     41  include "paramet.h"
     42  include "logic.h"
     43  include "serre.h"
     44  include "comdissnew.h"
     45  include "temps.h"
     46  include "comconst.h"
     47
     48  ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
     49  ! include "clesphys.h"
     50  include "iniprint.h"
     51
     52  !   local:
     53  !   ------
     54
     55  CHARACTER ch1*72,ch2*72,ch3*72,ch4*12
     56  REAL clonn,clatt,grossismxx,grossismyy
     57  REAL dzoomxx,dzoomyy, tauxx,tauyy
     58  LOGICAL  fxyhypbb, ysinuss
     59  INTEGER i
     60  character(len=*),parameter :: modname="conf_gcm"
     61  character (len=80) :: abort_message
    6562#ifdef CPP_OMP
    66       integer,external :: OMP_GET_NUM_THREADS
     63  integer,external :: OMP_GET_NUM_THREADS
    6764#endif
    68 !
    69 !  -------------------------------------------------------------------
    70 !
    71 !       .........     Version  du 29/04/97       ..........
    72 !
    73 !   Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot,
    74 !      tetatemp   ajoutes  pour la dissipation   .
    75 !
    76 !   Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb **
    77 !
    78 !  Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb.
    79 !    Sinon , choix de fxynew  , a derivee sinusoidale  ..
    80 !
    81 !   ......  etatinit = . TRUE. si defrun  est appele dans ETAT0_LMD  ou
    82 !         LIMIT_LMD  pour l'initialisation de start.dat (dic) et
    83 !                de limit.dat ( dic)                        ...........
    84 !           Sinon  etatinit = . FALSE .
    85 !
    86 !   Donc etatinit = .F.  si on veut comparer les valeurs de  grossismx ,
    87 !    grossismy,clon,clat, fxyhypb  lues sur  le fichier  start  avec
    88 !   celles passees  par run.def ,  au debut du gcm, apres l'appel a
    89 !    lectba . 
    90 !   Ces parmetres definissant entre autres la grille et doivent etre
    91 !   pareils et coherents , sinon il y aura  divergence du gcm .
    92 !
    93 !-----------------------------------------------------------------------
    94 !   initialisations:
    95 !   ----------------
    96 
    97 !Config  Key  = lunout
    98 !Config  Desc = unite de fichier pour les impressions
    99 !Config  Def  = 6
    100 !Config  Help = unite de fichier pour les impressions
    101 !Config         (defaut sortie standard = 6)
    102       lunout=6
    103       CALL getin('lunout', lunout)
    104       IF (lunout /= 5 .and. lunout /= 6) THEN
    105         OPEN(UNIT=lunout,FILE='lmdz.out_0000',ACTION='write',
    106      &          STATUS='unknown',FORM='formatted')
    107       ENDIF
    108 
    109       adjust=.false.
    110       call getin('adjust',adjust)
     65
     66  !  -------------------------------------------------------------------
     67
     68  !       .........     Version  du 29/04/97       ..........
     69
     70  !   Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot,
     71  !      tetatemp   ajoutes  pour la dissipation   .
     72
     73  !   Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb **
     74
     75  !  Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb.
     76  !    Sinon , choix de fxynew  , a derivee sinusoidale  ..
     77
     78  !   ......  etatinit = . TRUE. si defrun  est appele dans ETAT0_LMD  ou
     79  !         LIMIT_LMD  pour l'initialisation de start.dat (dic) et
     80  !                de limit.dat ( dic)                        ...........
     81  !           Sinon  etatinit = . FALSE .
     82
     83  !   Donc etatinit = .F.  si on veut comparer les valeurs de  grossismx ,
     84  !    grossismy,clon,clat, fxyhypb  lues sur  le fichier  start  avec
     85  !   celles passees  par run.def ,  au debut du gcm, apres l'appel a
     86  !    lectba . 
     87  !   Ces parmetres definissant entre autres la grille et doivent etre
     88  !   pareils et coherents , sinon il y aura  divergence du gcm .
     89
     90  !-----------------------------------------------------------------------
     91  !   initialisations:
     92  !   ----------------
     93
     94  !Config  Key  = lunout
     95  !Config  Desc = unite de fichier pour les impressions
     96  !Config  Def  = 6
     97  !Config  Help = unite de fichier pour les impressions
     98  !Config         (defaut sortie standard = 6)
     99  lunout=6
     100  CALL getin('lunout', lunout)
     101  IF (lunout /= 5 .and. lunout /= 6) THEN
     102     OPEN(UNIT=lunout,FILE='lmdz.out_0000',ACTION='write',  &
     103          STATUS='unknown',FORM='formatted')
     104  ENDIF
     105
     106  adjust=.false.
     107  call getin('adjust',adjust)
    111108
    112109#ifdef CPP_OMP
    113       ! adjust=y not implemented in case of OpenMP threads...
    114 !$OMP PARALLEL
    115       if ((OMP_GET_NUM_THREADS()>1).and.adjust) then
    116         write(lunout,*)'conf_gcm: Error, adjust should be set to n'
    117      &,' when running with OpenMP threads'
    118         abort_message = 'Wrong value for adjust'
    119         call abort_gcm(modname,abort_message,1)
    120       endif
    121 !$OMP END PARALLEL         
     110  ! adjust=y not implemented in case of OpenMP threads...
     111  !$OMP PARALLEL
     112  if ((OMP_GET_NUM_THREADS()>1).and.adjust) then
     113     write(lunout,*)'conf_gcm: Error, adjust should be set to n' &
     114          ,' when running with OpenMP threads'
     115     abort_message = 'Wrong value for adjust'
     116     call abort_gcm(modname,abort_message,1)
     117  endif
     118  !$OMP END PARALLEL         
    122119#endif
    123120
    124       itaumax=0
    125       call getin('itaumax',itaumax);
    126       if (itaumax<=0) itaumax=HUGE(itaumax)
    127 
    128 !Config  Key  = prt_level
    129 !Config  Desc = niveau d'impressions de débogage
    130 !Config  Def  = 0
    131 !Config  Help = Niveau d'impression pour le débogage
    132 !Config         (0 = minimum d'impression)
    133       prt_level = 0
    134       CALL getin('prt_level',prt_level)
    135 
    136 !-----------------------------------------------------------------------
    137 !  Parametres de controle du run:
    138 !-----------------------------------------------------------------------
    139 !Config  Key  = planet_type
    140 !Config  Desc = planet type ("earth", "mars", "venus", ...)
    141 !Config  Def  = earth
    142 !Config  Help = this flag sets the type of atymosphere that is considered
    143       planet_type="earth"
    144       CALL getin('planet_type',planet_type)
    145 
    146 !Config  Key  = calend
    147 !Config  Desc = type de calendrier utilise
    148 !Config  Def  = earth_360d
    149 !Config  Help = valeur possible: earth_360d, earth_365d, earth_366d
    150 !Config         
    151       calend = 'earth_360d'
    152       CALL getin('calend', calend)
    153 
    154 !Config  Key  = dayref
    155 !Config  Desc = Jour de l'etat initial
    156 !Config  Def  = 1
    157 !Config  Help = Jour de l'etat initial ( = 350  si 20 Decembre ,
    158 !Config         par expl. ,comme ici ) ... A completer
    159       dayref=1
    160       CALL getin('dayref', dayref)
    161 
    162 !Config  Key  = anneeref
    163 !Config  Desc = Annee de l'etat initial
    164 !Config  Def  = 1998
    165 !Config  Help = Annee de l'etat  initial
    166 !Config         (   avec  4  chiffres   ) ... A completer
    167       anneeref = 1998
    168       CALL getin('anneeref',anneeref)
    169 
    170 !Config  Key  = raz_date
    171 !Config  Desc = Remise a zero de la date initiale
    172 !Config  Def  = 0 (pas de remise a zero)
    173 !Config  Help = Remise a zero de la date initiale
    174 !Config         0 pas de remise a zero, on garde la date du fichier restart
    175 !Config         1 prise en compte de la date de gcm.def avec remise a zero
    176 !Config         des compteurs de pas de temps
    177       raz_date = 0
    178       CALL getin('raz_date', raz_date)
    179 
    180 !Config  Key  = resetvarc
    181 !Config  Desc = Reinit des variables de controle
    182 !Config  Def  = n
    183 !Config  Help = Reinit des variables de controle
    184       resetvarc = .false.
    185       CALL getin('resetvarc',resetvarc)
    186 
    187 !Config  Key  = nday
    188 !Config  Desc = Nombre de jours d'integration
    189 !Config  Def  = 10
    190 !Config  Help = Nombre de jours d'integration
    191 !Config         ... On pourait aussi permettre des mois ou des annees !
    192       nday = 10
    193       CALL getin('nday',nday)
    194 
    195 !Config  Key  = starttime
    196 !Config  Desc = Heure de depart de la simulation
    197 !Config  Def  = 0
    198 !Config  Help = Heure de depart de la simulation
    199 !Config         en jour
    200       starttime = 0
    201       CALL getin('starttime',starttime)
    202 
    203 !Config  Key  = day_step
    204 !Config  Desc = nombre de pas par jour
    205 !Config  Def  = 240
    206 !Config  Help = nombre de pas par jour (multiple de iperiod) (
    207 !Config          ici pour  dt = 1 min )
    208        day_step = 240
    209        CALL getin('day_step',day_step)
    210 
    211 !Config  Key  = nsplit_phys
    212        nsplit_phys = 1
    213        CALL getin('nsplit_phys',nsplit_phys)
    214 
    215 !Config  Key  = iperiod
    216 !Config  Desc = periode pour le pas Matsuno
    217 !Config  Def  = 5
    218 !Config  Help = periode pour le pas Matsuno (en pas de temps)
    219        iperiod = 5
    220        CALL getin('iperiod',iperiod)
    221 
    222 !Config  Key  = iapp_tracvl
    223 !Config  Desc = frequence du groupement des flux
    224 !Config  Def  = iperiod
    225 !Config  Help = frequence du groupement des flux (en pas de temps)
    226        iapp_tracvl = iperiod
    227        CALL getin('iapp_tracvl',iapp_tracvl)
    228 
    229 !Config  Key  = iconser
    230 !Config  Desc = periode de sortie des variables de controle
    231 !Config  Def  = 240 
    232 !Config  Help = periode de sortie des variables de controle
    233 !Config         (En pas de temps)
    234        iconser = 240 
    235        CALL getin('iconser', iconser)
    236 
    237 !Config  Key  = iecri
    238 !Config  Desc = periode d'ecriture du fichier histoire
    239 !Config  Def  = 1
    240 !Config  Help = periode d'ecriture du fichier histoire (en jour)
    241        iecri = 1
    242        CALL getin('iecri',iecri)
    243 
    244 
    245 !Config  Key  = periodav
    246 !Config  Desc = periode de stockage fichier histmoy
    247 !Config  Def  = 1
    248 !Config  Help = periode de stockage fichier histmoy (en jour)
    249        periodav = 1.
    250        CALL getin('periodav',periodav)
    251 
    252 !Config  Key  = output_grads_dyn
    253 !Config  Desc = output dynamics diagnostics in 'dyn.dat' file
    254 !Config  Def  = n
    255 !Config  Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file
    256        output_grads_dyn=.false.
    257        CALL getin('output_grads_dyn',output_grads_dyn)
    258 
    259 !Config  Key  = dissip_period
    260 !Config  Desc = periode de la dissipation
    261 !Config  Def  = 0
    262 !Config  Help = periode de la dissipation
    263 !Config  dissip_period=0 => la valeur sera calcule dans inidissip       
    264 !Config  dissip_period>0 => on prend cette valeur
    265        dissip_period = 0
    266        CALL getin('dissip_period',dissip_period)
    267 
    268 !cc  ....   P. Le Van , modif le 29/04/97 .pour la dissipation  ...
    269 !cc
    270 
    271 !Config  Key  = lstardis
    272 !Config  Desc = choix de l'operateur de dissipation
    273 !Config  Def  = y
    274 !Config  Help = choix de l'operateur de dissipation
    275 !Config         'y' si on veut star et 'n' si on veut non-start !
    276 !Config         Moi y en a pas comprendre !
    277        lstardis = .TRUE.
    278        CALL getin('lstardis',lstardis)
    279 
    280 
    281 !Config  Key  = nitergdiv
    282 !Config  Desc = Nombre d'iteration de gradiv
    283 !Config  Def  = 1
    284 !Config  Help = nombre d'iterations de l'operateur de dissipation
    285 !Config         gradiv
    286        nitergdiv = 1
    287        CALL getin('nitergdiv',nitergdiv)
    288 
    289 !Config  Key  = nitergrot
    290 !Config  Desc = nombre d'iterations de nxgradrot
    291 !Config  Def  = 2
    292 !Config  Help = nombre d'iterations de l'operateur de dissipation 
    293 !Config         nxgradrot
    294        nitergrot = 2
    295        CALL getin('nitergrot',nitergrot)
    296 
    297 
    298 !Config  Key  = niterh
    299 !Config  Desc = nombre d'iterations de divgrad
    300 !Config  Def  = 2
    301 !Config  Help = nombre d'iterations de l'operateur de dissipation
    302 !Config         divgrad
    303        niterh = 2
    304        CALL getin('niterh',niterh)
    305 
    306 
    307 !Config  Key  = tetagdiv
    308 !Config  Desc = temps de dissipation pour div
    309 !Config  Def  = 7200
    310 !Config  Help = temps de dissipation des plus petites longeur
    311 !Config         d'ondes pour u,v (gradiv)
    312        tetagdiv = 7200.
    313        CALL getin('tetagdiv',tetagdiv)
    314 
    315 !Config  Key  = tetagrot
    316 !Config  Desc = temps de dissipation pour grad
    317 !Config  Def  = 7200
    318 !Config  Help = temps de dissipation des plus petites longeur
    319 !Config         d'ondes pour u,v (nxgradrot)
    320        tetagrot = 7200.
    321        CALL getin('tetagrot',tetagrot)
    322 
    323 !Config  Key  = tetatemp
    324 !Config  Desc = temps de dissipation pour h
    325 !Config  Def  = 7200
    326 !Config  Help =  temps de dissipation des plus petites longeur
    327 !Config         d'ondes pour h (divgrad)   
    328        tetatemp  = 7200.
    329        CALL getin('tetatemp',tetatemp )
    330 
    331 ! Parametres controlant la variation sur la verticale des constantes de
    332 ! dissipation.
    333 ! Pour le moment actifs uniquement dans la version a 39 niveaux
    334 ! avec ok_strato=y
    335 
    336        dissip_factz=4.
    337        dissip_deltaz=10.
    338        dissip_zref=30.
    339        CALL getin('dissip_factz',dissip_factz )
    340        CALL getin('dissip_deltaz',dissip_deltaz )
    341        CALL getin('dissip_zref',dissip_zref )
    342 
    343 ! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0
    344 !                   iflag_top_bound=0 for no sponge
    345 !                   iflag_top_bound=1 for sponge over 4 topmost layers
    346 !                   iflag_top_bound=2 for sponge from top to ~1% of top layer pressure
    347        iflag_top_bound=1
    348        CALL getin('iflag_top_bound',iflag_top_bound)
    349 
    350 ! mode_top_bound : fields towards which sponge relaxation will be done:
    351 !                  mode_top_bound=0: no relaxation
    352 !                  mode_top_bound=1: u and v relax towards 0
    353 !                  mode_top_bound=2: u and v relax towards their zonal mean
    354 !                  mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean
    355        mode_top_bound=3
    356        CALL getin('mode_top_bound',mode_top_bound)
    357 
    358 ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge
    359        tau_top_bound=1.e-5
    360        CALL getin('tau_top_bound',tau_top_bound)
    361 
    362 !Config  Key  = coefdis
    363 !Config  Desc = coefficient pour gamdissip
    364 !Config  Def  = 0
    365 !Config  Help = coefficient pour gamdissip 
    366        coefdis = 0.
    367        CALL getin('coefdis',coefdis)
    368 
    369 !Config  Key  = purmats
    370 !Config  Desc = Schema d'integration
    371 !Config  Def  = n
    372 !Config  Help = Choix du schema d'integration temporel.
    373 !Config         y = pure Matsuno sinon c'est du Matsuno-leapfrog
    374        purmats = .FALSE.
    375        CALL getin('purmats',purmats)
    376 
    377 !Config  Key  = ok_guide
    378 !Config  Desc = Guidage
    379 !Config  Def  = n
    380 !Config  Help = Guidage
    381        ok_guide = .FALSE.
    382        CALL getin('ok_guide',ok_guide)
    383 
    384        if (ok_guide .and. adjust) call abort_gcm("conf_gcm",
    385      $      "adjust does not work with ok_guide", 1)
    386 
    387 !Config  Key  =  read_start
    388 !Config  Desc = Initialize model using a 'start.nc' file
    389 !Config  Def  = y
    390 !Config  Help = y: intialize dynamical fields using a 'start.nc' file
    391 !               n: fields are initialized by 'iniacademic' routine
    392        read_start= .true.
    393        CALL getin('read_start',read_start)
    394 
    395 !Config  Key  = iflag_phys
    396 !Config  Desc = Avec ls physique
    397 !Config  Def  = 1
    398 !Config  Help = Permet de faire tourner le modele sans
    399 !Config         physique.
    400        iflag_phys = 1
    401        CALL getin('iflag_phys',iflag_phys)
    402 
    403 
    404 !Config  Key  =  iphysiq
    405 !Config  Desc = Periode de la physique
    406 !Config  Def  = 5
    407 !Config  Help = Periode de la physique en pas de temps de la dynamique.
    408        iphysiq = 5
    409        CALL getin('iphysiq', iphysiq)
    410 
    411        if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm",
    412      $      "iphysiq must be a multiple of iperiod", 1)
    413 
    414 !Config  Key  = ip_ebil_dyn
    415 !Config  Desc = PRINT level for energy conserv. diag.
    416 !Config  Def  = 0
    417 !Config  Help = PRINT level for energy conservation diag. ;
    418 !               les options suivantes existent :
    419 !Config         0 pas de print
    420 !Config         1 pas de print
    421 !Config         2 print,
    422        ip_ebil_dyn = 0
    423        CALL getin('ip_ebil_dyn',ip_ebil_dyn)
    424 !
    425 
    426 
    427 !cc  ....   P. Le Van , ajout  le 7/03/95 .pour le zoom ...
    428 !     .........   (  modif  le 17/04/96 )   .........
    429 !
    430       IF( etatinit ) GO TO 100
    431 
    432 !Config  Key  = clon
    433 !Config  Desc = centre du zoom, longitude
    434 !Config  Def  = 0
    435 !Config  Help = longitude en degres du centre
    436 !Config         du zoom
    437        clonn = 0.
    438        CALL getin('clon',clonn)
    439 
    440 !Config  Key  = clat
    441 !Config  Desc = centre du zoom, latitude
    442 !Config  Def  = 0
    443 !Config  Help = latitude en degres du centre du zoom
    444 !Config         
    445        clatt = 0.
    446        CALL getin('clat',clatt)
    447 
    448 !
    449 !
    450       IF( ABS(clat - clatt).GE. 0.001 )  THEN
    451         write(lunout,*)'conf_gcm: La valeur de clat passee par run.def',
    452      &    ' est differente de celle lue sur le fichier  start '
     121  itaumax=0
     122  call getin('itaumax',itaumax);
     123  if (itaumax<=0) itaumax=HUGE(itaumax)
     124
     125  !Config  Key  = prt_level
     126  !Config  Desc = niveau d'impressions de débogage
     127  !Config  Def  = 0
     128  !Config  Help = Niveau d'impression pour le débogage
     129  !Config         (0 = minimum d'impression)
     130  prt_level = 0
     131  CALL getin('prt_level',prt_level)
     132
     133  !-----------------------------------------------------------------------
     134  !  Parametres de controle du run:
     135  !-----------------------------------------------------------------------
     136  !Config  Key  = planet_type
     137  !Config  Desc = planet type ("earth", "mars", "venus", ...)
     138  !Config  Def  = earth
     139  !Config  Help = this flag sets the type of atymosphere that is considered
     140  planet_type="earth"
     141  CALL getin('planet_type',planet_type)
     142
     143  !Config  Key  = calend
     144  !Config  Desc = type de calendrier utilise
     145  !Config  Def  = earth_360d
     146  !Config  Help = valeur possible: earth_360d, earth_365d, earth_366d
     147  !Config         
     148  calend = 'earth_360d'
     149  CALL getin('calend', calend)
     150
     151  !Config  Key  = dayref
     152  !Config  Desc = Jour de l'etat initial
     153  !Config  Def  = 1
     154  !Config  Help = Jour de l'etat initial ( = 350  si 20 Decembre ,
     155  !Config         par expl. ,comme ici ) ... A completer
     156  dayref=1
     157  CALL getin('dayref', dayref)
     158
     159  !Config  Key  = anneeref
     160  !Config  Desc = Annee de l'etat initial
     161  !Config  Def  = 1998
     162  !Config  Help = Annee de l'etat  initial
     163  !Config         (   avec  4  chiffres   ) ... A completer
     164  anneeref = 1998
     165  CALL getin('anneeref',anneeref)
     166
     167  !Config  Key  = raz_date
     168  !Config  Desc = Remise a zero de la date initiale
     169  !Config  Def  = 0 (pas de remise a zero)
     170  !Config  Help = Remise a zero de la date initiale
     171  !Config         0 pas de remise a zero, on garde la date du fichier restart
     172  !Config         1 prise en compte de la date de gcm.def avec remise a zero
     173  !Config         des compteurs de pas de temps
     174  raz_date = 0
     175  CALL getin('raz_date', raz_date)
     176
     177  !Config  Key  = resetvarc
     178  !Config  Desc = Reinit des variables de controle
     179  !Config  Def  = n
     180  !Config  Help = Reinit des variables de controle
     181  resetvarc = .false.
     182  CALL getin('resetvarc',resetvarc)
     183
     184  !Config  Key  = nday
     185  !Config  Desc = Nombre de jours d'integration
     186  !Config  Def  = 10
     187  !Config  Help = Nombre de jours d'integration
     188  !Config         ... On pourait aussi permettre des mois ou des annees !
     189  nday = 10
     190  CALL getin('nday',nday)
     191
     192  !Config  Key  = starttime
     193  !Config  Desc = Heure de depart de la simulation
     194  !Config  Def  = 0
     195  !Config  Help = Heure de depart de la simulation
     196  !Config         en jour
     197  starttime = 0
     198  CALL getin('starttime',starttime)
     199
     200  !Config  Key  = day_step
     201  !Config  Desc = nombre de pas par jour
     202  !Config  Def  = 240
     203  !Config  Help = nombre de pas par jour (multiple de iperiod) (
     204  !Config          ici pour  dt = 1 min )
     205  day_step = 240
     206  CALL getin('day_step',day_step)
     207
     208  !Config  Key  = nsplit_phys
     209  nsplit_phys = 1
     210  CALL getin('nsplit_phys',nsplit_phys)
     211
     212  !Config  Key  = iperiod
     213  !Config  Desc = periode pour le pas Matsuno
     214  !Config  Def  = 5
     215  !Config  Help = periode pour le pas Matsuno (en pas de temps)
     216  iperiod = 5
     217  CALL getin('iperiod',iperiod)
     218
     219  !Config  Key  = iapp_tracvl
     220  !Config  Desc = frequence du groupement des flux
     221  !Config  Def  = iperiod
     222  !Config  Help = frequence du groupement des flux (en pas de temps)
     223  iapp_tracvl = iperiod
     224  CALL getin('iapp_tracvl',iapp_tracvl)
     225
     226  !Config  Key  = iconser
     227  !Config  Desc = periode de sortie des variables de controle
     228  !Config  Def  = 240 
     229  !Config  Help = periode de sortie des variables de controle
     230  !Config         (En pas de temps)
     231  iconser = 240 
     232  CALL getin('iconser', iconser)
     233
     234  !Config  Key  = iecri
     235  !Config  Desc = periode d'ecriture du fichier histoire
     236  !Config  Def  = 1
     237  !Config  Help = periode d'ecriture du fichier histoire (en jour)
     238  iecri = 1
     239  CALL getin('iecri',iecri)
     240
     241  !Config  Key  = periodav
     242  !Config  Desc = periode de stockage fichier histmoy
     243  !Config  Def  = 1
     244  !Config  Help = periode de stockage fichier histmoy (en jour)
     245  periodav = 1.
     246  CALL getin('periodav',periodav)
     247
     248  !Config  Key  = output_grads_dyn
     249  !Config  Desc = output dynamics diagnostics in 'dyn.dat' file
     250  !Config  Def  = n
     251  !Config  Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file
     252  output_grads_dyn=.false.
     253  CALL getin('output_grads_dyn',output_grads_dyn)
     254
     255  !Config  Key  = dissip_period
     256  !Config  Desc = periode de la dissipation
     257  !Config  Def  = 0
     258  !Config  Help = periode de la dissipation
     259  !Config  dissip_period=0 => la valeur sera calcule dans inidissip       
     260  !Config  dissip_period>0 => on prend cette valeur
     261  dissip_period = 0
     262  CALL getin('dissip_period',dissip_period)
     263
     264  !cc  ....   P. Le Van , modif le 29/04/97 .pour la dissipation  ...
     265  !cc
     266
     267  !Config  Key  = lstardis
     268  !Config  Desc = choix de l'operateur de dissipation
     269  !Config  Def  = y
     270  !Config  Help = choix de l'operateur de dissipation
     271  !Config         'y' si on veut star et 'n' si on veut non-start !
     272  !Config         Moi y en a pas comprendre !
     273  lstardis = .TRUE.
     274  CALL getin('lstardis',lstardis)
     275
     276  !Config  Key  = nitergdiv
     277  !Config  Desc = Nombre d'iteration de gradiv
     278  !Config  Def  = 1
     279  !Config  Help = nombre d'iterations de l'operateur de dissipation
     280  !Config         gradiv
     281  nitergdiv = 1
     282  CALL getin('nitergdiv',nitergdiv)
     283
     284  !Config  Key  = nitergrot
     285  !Config  Desc = nombre d'iterations de nxgradrot
     286  !Config  Def  = 2
     287  !Config  Help = nombre d'iterations de l'operateur de dissipation 
     288  !Config         nxgradrot
     289  nitergrot = 2
     290  CALL getin('nitergrot',nitergrot)
     291
     292  !Config  Key  = niterh
     293  !Config  Desc = nombre d'iterations de divgrad
     294  !Config  Def  = 2
     295  !Config  Help = nombre d'iterations de l'operateur de dissipation
     296  !Config         divgrad
     297  niterh = 2
     298  CALL getin('niterh',niterh)
     299
     300  !Config  Key  = tetagdiv
     301  !Config  Desc = temps de dissipation pour div
     302  !Config  Def  = 7200
     303  !Config  Help = temps de dissipation des plus petites longeur
     304  !Config         d'ondes pour u,v (gradiv)
     305  tetagdiv = 7200.
     306  CALL getin('tetagdiv',tetagdiv)
     307
     308  !Config  Key  = tetagrot
     309  !Config  Desc = temps de dissipation pour grad
     310  !Config  Def  = 7200
     311  !Config  Help = temps de dissipation des plus petites longeur
     312  !Config         d'ondes pour u,v (nxgradrot)
     313  tetagrot = 7200.
     314  CALL getin('tetagrot',tetagrot)
     315
     316  !Config  Key  = tetatemp
     317  !Config  Desc = temps de dissipation pour h
     318  !Config  Def  = 7200
     319  !Config  Help =  temps de dissipation des plus petites longeur
     320  !Config         d'ondes pour h (divgrad)   
     321  tetatemp  = 7200.
     322  CALL getin('tetatemp',tetatemp )
     323
     324  ! Parametres controlant la variation sur la verticale des constantes de
     325  ! dissipation.
     326  ! Pour le moment actifs uniquement dans la version a 39 niveaux
     327  ! avec ok_strato=y
     328
     329  dissip_factz=4.
     330  dissip_deltaz=10.
     331  dissip_zref=30.
     332  CALL getin('dissip_factz',dissip_factz )
     333  CALL getin('dissip_deltaz',dissip_deltaz )
     334  CALL getin('dissip_zref',dissip_zref )
     335
     336  ! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0
     337  !                   iflag_top_bound=0 for no sponge
     338  !                   iflag_top_bound=1 for sponge over 4 topmost layers
     339  !                   iflag_top_bound=2 for sponge from top to ~1% of top layer pressure
     340  iflag_top_bound=1
     341  CALL getin('iflag_top_bound',iflag_top_bound)
     342
     343  ! mode_top_bound : fields towards which sponge relaxation will be done:
     344  !                  mode_top_bound=0: no relaxation
     345  !                  mode_top_bound=1: u and v relax towards 0
     346  !                  mode_top_bound=2: u and v relax towards their zonal mean
     347  !                  mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean
     348  mode_top_bound=3
     349  CALL getin('mode_top_bound',mode_top_bound)
     350
     351  ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge
     352  tau_top_bound=1.e-5
     353  CALL getin('tau_top_bound',tau_top_bound)
     354
     355  !Config  Key  = coefdis
     356  !Config  Desc = coefficient pour gamdissip
     357  !Config  Def  = 0
     358  !Config  Help = coefficient pour gamdissip 
     359  coefdis = 0.
     360  CALL getin('coefdis',coefdis)
     361
     362  !Config  Key  = purmats
     363  !Config  Desc = Schema d'integration
     364  !Config  Def  = n
     365  !Config  Help = Choix du schema d'integration temporel.
     366  !Config         y = pure Matsuno sinon c'est du Matsuno-leapfrog
     367  purmats = .FALSE.
     368  CALL getin('purmats',purmats)
     369
     370  !Config  Key  = ok_guide
     371  !Config  Desc = Guidage
     372  !Config  Def  = n
     373  !Config  Help = Guidage
     374  ok_guide = .FALSE.
     375  CALL getin('ok_guide',ok_guide)
     376
     377  if (ok_guide .and. adjust) call abort_gcm("conf_gcm", &
     378       "adjust does not work with ok_guide", 1)
     379
     380  !Config  Key  =  read_start
     381  !Config  Desc = Initialize model using a 'start.nc' file
     382  !Config  Def  = y
     383  !Config  Help = y: intialize dynamical fields using a 'start.nc' file
     384  !               n: fields are initialized by 'iniacademic' routine
     385  read_start= .true.
     386  CALL getin('read_start',read_start)
     387
     388  !Config  Key  = iflag_phys
     389  !Config  Desc = Avec ls physique
     390  !Config  Def  = 1
     391  !Config  Help = Permet de faire tourner le modele sans
     392  !Config         physique.
     393  iflag_phys = 1
     394  CALL getin('iflag_phys',iflag_phys)
     395
     396  !Config  Key  =  iphysiq
     397  !Config  Desc = Periode de la physique
     398  !Config  Def  = 5
     399  !Config  Help = Periode de la physique en pas de temps de la dynamique.
     400  iphysiq = 5
     401  CALL getin('iphysiq', iphysiq)
     402
     403  if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm", &
     404       "iphysiq must be a multiple of iperiod", 1)
     405
     406  !Config  Key  = ip_ebil_dyn
     407  !Config  Desc = PRINT level for energy conserv. diag.
     408  !Config  Def  = 0
     409  !Config  Help = PRINT level for energy conservation diag. ;
     410  !               les options suivantes existent :
     411  !Config         0 pas de print
     412  !Config         1 pas de print
     413  !Config         2 print,
     414  ip_ebil_dyn = 0
     415  CALL getin('ip_ebil_dyn',ip_ebil_dyn)
     416
     417  !cc  ....   P. Le Van , ajout  le 7/03/95 .pour le zoom ...
     418  !     .........   (  modif  le 17/04/96 )   .........
     419
     420  test_etatinit: IF (.not. etatinit) then
     421     !Config  Key  = clon
     422     !Config  Desc = centre du zoom, longitude
     423     !Config  Def  = 0
     424     !Config  Help = longitude en degres du centre
     425     !Config         du zoom
     426     clonn = 0.
     427     CALL getin('clon',clonn)
     428
     429     !Config  Key  = clat
     430     !Config  Desc = centre du zoom, latitude
     431     !Config  Def  = 0
     432     !Config  Help = latitude en degres du centre du zoom
     433     !Config         
     434     clatt = 0.
     435     CALL getin('clat',clatt)
     436
     437     IF( ABS(clat - clatt).GE. 0.001 )  THEN
     438        write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', &
     439             ' est differente de celle lue sur le fichier  start '
    453440        STOP
    454       ENDIF
    455 
    456 !Config  Key  = grossismx
    457 !Config  Desc = zoom en longitude
    458 !Config  Def  = 1.0
    459 !Config  Help = facteur de grossissement du zoom,
    460 !Config         selon la longitude
    461        grossismxx = 1.0
    462        CALL getin('grossismx',grossismxx)
    463 
    464 
    465       IF( ABS(grossismx - grossismxx).GE. 0.001 )  THEN
    466         write(lunout,*)'conf_gcm: La valeur de grossismx passee par ',
    467      &  'run.def est differente de celle lue sur le fichier  start '
     441     ENDIF
     442
     443     !Config  Key  = grossismx
     444     !Config  Desc = zoom en longitude
     445     !Config  Def  = 1.0
     446     !Config  Help = facteur de grossissement du zoom,
     447     !Config         selon la longitude
     448     grossismxx = 1.0
     449     CALL getin('grossismx',grossismxx)
     450
     451     IF( ABS(grossismx - grossismxx).GE. 0.001 )  THEN
     452        write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', &
     453             'run.def est differente de celle lue sur le fichier  start '
    468454        STOP
    469       ENDIF
    470 
    471 !Config  Key  = grossismy
    472 !Config  Desc = zoom en latitude
    473 !Config  Def  = 1.0
    474 !Config  Help = facteur de grossissement du zoom,
    475 !Config         selon la latitude
    476        grossismyy = 1.0
    477        CALL getin('grossismy',grossismyy)
    478 
    479       IF( ABS(grossismy - grossismyy).GE. 0.001 )  THEN
    480         write(lunout,*)'conf_gcm: La valeur de grossismy passee par ',
    481      & 'run.def est differente de celle lue sur le fichier  start '
     455     ENDIF
     456
     457     !Config  Key  = grossismy
     458     !Config  Desc = zoom en latitude
     459     !Config  Def  = 1.0
     460     !Config  Help = facteur de grossissement du zoom,
     461     !Config         selon la latitude
     462     grossismyy = 1.0
     463     CALL getin('grossismy',grossismyy)
     464
     465     IF( ABS(grossismy - grossismyy).GE. 0.001 )  THEN
     466        write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', &
     467             'run.def est differente de celle lue sur le fichier  start '
    482468        STOP
    483       ENDIF
    484      
    485       IF( grossismx.LT.1. )  THEN
    486         write(lunout,*)
    487      &       'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
    488          STOP
    489       ELSE
    490          alphax = 1. - 1./ grossismx
    491       ENDIF
    492 
    493 
    494       IF( grossismy.LT.1. )  THEN
    495         write(lunout,*)
    496      &       'conf_gcm: ***  ATTENTION !! grossismy < 1 .   *** '
    497          STOP
    498       ELSE
    499          alphay = 1. - 1./ grossismy
    500       ENDIF
    501 
    502       write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay
    503 !
    504 !    alphax et alphay sont les anciennes formulat. des grossissements
    505 !
    506 !
    507 
    508 !Config  Key  = fxyhypb
    509 !Config  Desc = Fonction  hyperbolique
    510 !Config  Def  = y
    511 !Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
    512 !Config         sinon  sinusoidale
    513        fxyhypbb = .TRUE.
    514        CALL getin('fxyhypb',fxyhypbb)
    515 
    516       IF( .NOT.fxyhypb )  THEN
    517          IF( fxyhypbb )     THEN
    518             write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
    519             write(lunout,*)' *** fxyhypb lu sur le fichier start est ',
    520      *       'F alors  qu il est  T  sur  run.def  ***'
     469     ENDIF
     470
     471     IF( grossismx.LT.1. )  THEN
     472        write(lunout,*) &
     473             'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
     474        STOP
     475     ELSE
     476        alphax = 1. - 1./ grossismx
     477     ENDIF
     478
     479     IF( grossismy.LT.1. )  THEN
     480        write(lunout,*) &
     481             'conf_gcm: ***  ATTENTION !! grossismy < 1 .   *** '
     482        STOP
     483     ELSE
     484        alphay = 1. - 1./ grossismy
     485     ENDIF
     486
     487     write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay
     488
     489     !    alphax et alphay sont les anciennes formulat. des grossissements
     490
     491     !Config  Key  = fxyhypb
     492     !Config  Desc = Fonction  hyperbolique
     493     !Config  Def  = y
     494     !Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
     495     !Config         sinon  sinusoidale
     496     fxyhypbb = .TRUE.
     497     CALL getin('fxyhypb',fxyhypbb)
     498
     499     IF( .NOT.fxyhypb )  THEN
     500        IF( fxyhypbb )     THEN
     501           write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
     502           write(lunout,*)' *** fxyhypb lu sur le fichier start est ', &
     503                'F alors  qu il est  T  sur  run.def  ***'
     504           STOP
     505        ENDIF
     506     ELSE
     507        IF( .NOT.fxyhypbb )   THEN
     508           write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
     509           write(lunout,*)' ***  fxyhypb lu sur le fichier start est ', &
     510                'T alors  qu il est  F  sur  run.def  ****  '
     511           STOP
     512        ENDIF
     513     ENDIF
     514
     515     !Config  Key  = dzoomx
     516     !Config  Desc = extension en longitude
     517     !Config  Def  = 0
     518     !Config  Help = extension en longitude  de la zone du zoom 
     519     !Config         ( fraction de la zone totale)
     520     dzoomxx = 0.0
     521     CALL getin('dzoomx',dzoomxx)
     522
     523     IF( fxyhypb )  THEN
     524        IF( ABS(dzoomx - dzoomxx).GE. 0.001 )  THEN
     525           write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', &
     526                'run.def est differente de celle lue sur le fichier  start '
     527           STOP
     528        ENDIF
     529     ENDIF
     530
     531     !Config  Key  = dzoomy
     532     !Config  Desc = extension en latitude
     533     !Config  Def  = 0
     534     !Config  Help = extension en latitude de la zone  du zoom 
     535     !Config         ( fraction de la zone totale)
     536     dzoomyy = 0.0
     537     CALL getin('dzoomy',dzoomyy)
     538
     539     IF( fxyhypb )  THEN
     540        IF( ABS(dzoomy - dzoomyy).GE. 0.001 )  THEN
     541           write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', &
     542                'run.def est differente de celle lue sur le fichier  start '
     543           STOP
     544        ENDIF
     545     ENDIF
     546
     547     !Config  Key  = taux
     548     !Config  Desc = raideur du zoom en  X
     549     !Config  Def  = 3
     550     !Config  Help = raideur du zoom en  X
     551     tauxx = 3.0
     552     CALL getin('taux',tauxx)
     553
     554     IF( fxyhypb )  THEN
     555        IF( ABS(taux - tauxx).GE. 0.001 )  THEN
     556           write(lunout,*)'conf_gcm: La valeur de taux passee par ', &
     557                'run.def est differente de celle lue sur le fichier  start '
     558           STOP
     559        ENDIF
     560     ENDIF
     561
     562     !Config  Key  = tauyy
     563     !Config  Desc = raideur du zoom en  Y
     564     !Config  Def  = 3
     565     !Config  Help = raideur du zoom en  Y
     566     tauyy = 3.0
     567     CALL getin('tauy',tauyy)
     568
     569     IF( fxyhypb )  THEN
     570        IF( ABS(tauy - tauyy).GE. 0.001 )  THEN
     571           write(lunout,*)'conf_gcm: La valeur de tauy passee par ', &
     572                'run.def est differente de celle lue sur le fichier  start '
     573           STOP
     574        ENDIF
     575     ENDIF
     576
     577     !c
     578     IF( .NOT.fxyhypb  )  THEN
     579
     580        !Config  Key  = ysinus
     581        !Config  IF   = !fxyhypb
     582        !Config  Desc = Fonction en Sinus
     583        !Config  Def  = y
     584        !Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
     585        !Config         sinon y = latit.
     586        ysinuss = .TRUE.
     587        CALL getin('ysinus',ysinuss)
     588
     589        IF( .NOT.ysinus )  THEN
     590           IF( ysinuss )     THEN
     591              write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
     592              write(lunout,*)' *** ysinus lu sur le fichier start est F', &
     593                   ' alors  qu il est  T  sur  run.def  ***'
    521594              STOP
    522          ENDIF
    523       ELSE
    524          IF( .NOT.fxyhypbb )   THEN
    525             write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
    526             write(lunout,*)' ***  fxyhypb lu sur le fichier start est ',
    527      *        'T alors  qu il est  F  sur  run.def  ****  '
     595           ENDIF
     596        ELSE
     597           IF( .NOT.ysinuss )   THEN
     598              write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
     599              write(lunout,*)' *** ysinus lu sur le fichier start est T', &
     600                   ' alors  qu il est  F  sur  run.def  ****  '
    528601              STOP
    529          ENDIF
    530       ENDIF
    531 !
    532 !Config  Key  = dzoomx
    533 !Config  Desc = extension en longitude
    534 !Config  Def  = 0
    535 !Config  Help = extension en longitude  de la zone du zoom 
    536 !Config         ( fraction de la zone totale)
    537        dzoomxx = 0.0
    538        CALL getin('dzoomx',dzoomxx)
    539 
    540       IF( fxyhypb )  THEN
    541        IF( ABS(dzoomx - dzoomxx).GE. 0.001 )  THEN
    542         write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ',
    543      *  'run.def est differente de celle lue sur le fichier  start '
     602           ENDIF
     603        ENDIF
     604     ENDIF ! of IF( .NOT.fxyhypb  )
     605
     606     !Config  Key  = offline
     607     !Config  Desc = Nouvelle eau liquide
     608     !Config  Def  = n
     609     !Config  Help = Permet de mettre en route la
     610     !Config         nouvelle parametrisation de l'eau liquide !
     611     offline = .FALSE.
     612     CALL getin('offline',offline)
     613     IF (offline .AND. adjust) THEN
     614        WRITE(lunout,*)  &
     615             'WARNING : option offline does not work with adjust=y :'
     616        WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ',  &
     617             'and fluxstokev.nc will not be created'
     618        WRITE(lunout,*)  &
     619             'only the file phystoke.nc will still be created '
     620     END IF
     621
     622     !Config  Key  = type_trac
     623     !Config  Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
     624     !Config  Def  = lmdz
     625     !Config  Help =
     626     !Config         'lmdz' = pas de couplage, pur LMDZ
     627     !Config         'inca' = model de chime INCA
     628     !Config         'repr' = model de chime REPROBUS
     629     type_trac = 'lmdz'
     630     CALL getin('type_trac',type_trac)
     631
     632     !Config  Key  = config_inca
     633     !Config  Desc = Choix de configuration de INCA
     634     !Config  Def  = none
     635     !Config  Help = Choix de configuration de INCA :
     636     !Config         'none' = sans INCA
     637     !Config         'chem' = INCA avec calcul de chemie
     638     !Config         'aero' = INCA avec calcul des aerosols
     639     config_inca = 'none'
     640     CALL getin('config_inca',config_inca)
     641
     642     !Config  Key  = ok_dynzon
     643     !Config  Desc = calcul et sortie des transports
     644     !Config  Def  = n
     645     !Config  Help = Permet de mettre en route le calcul des transports
     646     !Config         
     647     ok_dynzon = .FALSE.
     648     CALL getin('ok_dynzon',ok_dynzon)
     649
     650     !Config  Key  = ok_dyn_ins
     651     !Config  Desc = sorties instantanees dans la dynamique
     652     !Config  Def  = n
     653     !Config  Help =
     654     !Config         
     655     ok_dyn_ins = .FALSE.
     656     CALL getin('ok_dyn_ins',ok_dyn_ins)
     657
     658     !Config  Key  = ok_dyn_ave
     659     !Config  Desc = sorties moyennes dans la dynamique
     660     !Config  Def  = n
     661     !Config  Help =
     662     !Config         
     663     ok_dyn_ave = .FALSE.
     664     CALL getin('ok_dyn_ave',ok_dyn_ave)
     665
     666     write(lunout,*)' #########################################'
     667     write(lunout,*)' Configuration des parametres du gcm: '
     668     write(lunout,*)' planet_type = ', planet_type
     669     write(lunout,*)' calend = ', calend
     670     write(lunout,*)' dayref = ', dayref
     671     write(lunout,*)' anneeref = ', anneeref
     672     write(lunout,*)' nday = ', nday
     673     write(lunout,*)' day_step = ', day_step
     674     write(lunout,*)' iperiod = ', iperiod
     675     write(lunout,*)' nsplit_phys = ', nsplit_phys
     676     write(lunout,*)' iconser = ', iconser
     677     write(lunout,*)' iecri = ', iecri
     678     write(lunout,*)' periodav = ', periodav
     679     write(lunout,*)' output_grads_dyn = ', output_grads_dyn
     680     write(lunout,*)' dissip_period = ', dissip_period
     681     write(lunout,*)' lstardis = ', lstardis
     682     write(lunout,*)' nitergdiv = ', nitergdiv
     683     write(lunout,*)' nitergrot = ', nitergrot
     684     write(lunout,*)' niterh = ', niterh
     685     write(lunout,*)' tetagdiv = ', tetagdiv
     686     write(lunout,*)' tetagrot = ', tetagrot
     687     write(lunout,*)' tetatemp = ', tetatemp
     688     write(lunout,*)' coefdis = ', coefdis
     689     write(lunout,*)' purmats = ', purmats
     690     write(lunout,*)' read_start = ', read_start
     691     write(lunout,*)' iflag_phys = ', iflag_phys
     692     write(lunout,*)' iphysiq = ', iphysiq
     693     write(lunout,*)' clonn = ', clonn
     694     write(lunout,*)' clatt = ', clatt
     695     write(lunout,*)' grossismx = ', grossismx
     696     write(lunout,*)' grossismy = ', grossismy
     697     write(lunout,*)' fxyhypbb = ', fxyhypbb
     698     write(lunout,*)' dzoomxx = ', dzoomxx
     699     write(lunout,*)' dzoomy = ', dzoomyy
     700     write(lunout,*)' tauxx = ', tauxx
     701     write(lunout,*)' tauyy = ', tauyy
     702     write(lunout,*)' offline = ', offline
     703     write(lunout,*)' type_trac = ', type_trac
     704     write(lunout,*)' config_inca = ', config_inca
     705     write(lunout,*)' ok_dynzon = ', ok_dynzon
     706     write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
     707     write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
     708  else
     709     !Config  Key  = clon
     710     !Config  Desc = centre du zoom, longitude
     711     !Config  Def  = 0
     712     !Config  Help = longitude en degres du centre
     713     !Config         du zoom
     714     clon = 0.
     715     CALL getin('clon',clon)
     716
     717     !Config  Key  = clat
     718     !Config  Desc = centre du zoom, latitude
     719     !Config  Def  = 0
     720     !Config  Help = latitude en degres du centre du zoom
     721     !Config         
     722     clat = 0.
     723     CALL getin('clat',clat)
     724
     725     !Config  Key  = grossismx
     726     !Config  Desc = zoom en longitude
     727     !Config  Def  = 1.0
     728     !Config  Help = facteur de grossissement du zoom,
     729     !Config         selon la longitude
     730     grossismx = 1.0
     731     CALL getin('grossismx',grossismx)
     732
     733     !Config  Key  = grossismy
     734     !Config  Desc = zoom en latitude
     735     !Config  Def  = 1.0
     736     !Config  Help = facteur de grossissement du zoom,
     737     !Config         selon la latitude
     738     grossismy = 1.0
     739     CALL getin('grossismy',grossismy)
     740
     741     IF( grossismx.LT.1. )  THEN
     742        write(lunout,*) &
     743             'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
    544744        STOP
    545        ENDIF
    546       ENDIF
    547 
    548 !Config  Key  = dzoomy
    549 !Config  Desc = extension en latitude
    550 !Config  Def  = 0
    551 !Config  Help = extension en latitude de la zone  du zoom 
    552 !Config         ( fraction de la zone totale)
    553        dzoomyy = 0.0
    554        CALL getin('dzoomy',dzoomyy)
    555 
    556       IF( fxyhypb )  THEN
    557        IF( ABS(dzoomy - dzoomyy).GE. 0.001 )  THEN
    558         write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ',
    559      * 'run.def est differente de celle lue sur le fichier  start '
     745     ELSE
     746        alphax = 1. - 1./ grossismx
     747     ENDIF
     748
     749     IF( grossismy.LT.1. )  THEN
     750        write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** '
    560751        STOP
    561        ENDIF
    562       ENDIF
    563      
    564 !Config  Key  = taux
    565 !Config  Desc = raideur du zoom en  X
    566 !Config  Def  = 3
    567 !Config  Help = raideur du zoom en  X
    568        tauxx = 3.0
    569        CALL getin('taux',tauxx)
    570 
    571       IF( fxyhypb )  THEN
    572        IF( ABS(taux - tauxx).GE. 0.001 )  THEN
    573         write(lunout,*)'conf_gcm: La valeur de taux passee par ',
    574      * 'run.def est differente de celle lue sur le fichier  start '
    575         STOP
    576        ENDIF
    577       ENDIF
    578 
    579 !Config  Key  = tauyy
    580 !Config  Desc = raideur du zoom en  Y
    581 !Config  Def  = 3
    582 !Config  Help = raideur du zoom en  Y
    583        tauyy = 3.0
    584        CALL getin('tauy',tauyy)
    585 
    586       IF( fxyhypb )  THEN
    587        IF( ABS(tauy - tauyy).GE. 0.001 )  THEN
    588         write(lunout,*)'conf_gcm: La valeur de tauy passee par ',
    589      * 'run.def est differente de celle lue sur le fichier  start '
    590         STOP
    591        ENDIF
    592       ENDIF
    593 
    594 !c
    595       IF( .NOT.fxyhypb  )  THEN
    596 
    597 !Config  Key  = ysinus
    598 !Config  IF   = !fxyhypb
    599 !Config  Desc = Fonction en Sinus
    600 !Config  Def  = y
    601 !Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
    602 !Config         sinon y = latit.
    603        ysinuss = .TRUE.
    604        CALL getin('ysinus',ysinuss)
    605 
    606         IF( .NOT.ysinus )  THEN
    607           IF( ysinuss )     THEN
    608             write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
    609             write(lunout,*)' *** ysinus lu sur le fichier start est F',
    610      *       ' alors  qu il est  T  sur  run.def  ***'
    611             STOP
    612           ENDIF
    613         ELSE
    614           IF( .NOT.ysinuss )   THEN
    615             write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
    616             write(lunout,*)' *** ysinus lu sur le fichier start est T',
    617      *        ' alors  qu il est  F  sur  run.def  ****  '
    618               STOP
    619           ENDIF
    620         ENDIF
    621       ENDIF ! of IF( .NOT.fxyhypb  )
    622 !
    623 !Config  Key  = offline
    624 !Config  Desc = Nouvelle eau liquide
    625 !Config  Def  = n
    626 !Config  Help = Permet de mettre en route la
    627 !Config         nouvelle parametrisation de l'eau liquide !
    628        offline = .FALSE.
    629        CALL getin('offline',offline)
    630        IF (offline .AND. adjust) THEN
    631           WRITE(lunout,*)
    632      &         'WARNING : option offline does not work with adjust=y :'
    633           WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ',
    634      &         'and fluxstokev.nc will not be created'
    635           WRITE(lunout,*)
    636      &         'only the file phystoke.nc will still be created '
    637        END IF
    638        
    639 !Config  Key  = type_trac
    640 !Config  Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
    641 !Config  Def  = lmdz
    642 !Config  Help =
    643 !Config         'lmdz' = pas de couplage, pur LMDZ
    644 !Config         'inca' = model de chime INCA
    645 !Config         'repr' = model de chime REPROBUS
    646       type_trac = 'lmdz'
    647       CALL getin('type_trac',type_trac)
    648 
    649 !Config  Key  = config_inca
    650 !Config  Desc = Choix de configuration de INCA
    651 !Config  Def  = none
    652 !Config  Help = Choix de configuration de INCA :
    653 !Config         'none' = sans INCA
    654 !Config         'chem' = INCA avec calcul de chemie
    655 !Config         'aero' = INCA avec calcul des aerosols
    656       config_inca = 'none'
    657       CALL getin('config_inca',config_inca)
    658 
    659 !Config  Key  = ok_dynzon
    660 !Config  Desc = calcul et sortie des transports
    661 !Config  Def  = n
    662 !Config  Help = Permet de mettre en route le calcul des transports
    663 !Config         
    664       ok_dynzon = .FALSE.
    665       CALL getin('ok_dynzon',ok_dynzon)
    666 
    667 !Config  Key  = ok_dyn_ins
    668 !Config  Desc = sorties instantanees dans la dynamique
    669 !Config  Def  = n
    670 !Config  Help =
    671 !Config         
    672       ok_dyn_ins = .FALSE.
    673       CALL getin('ok_dyn_ins',ok_dyn_ins)
    674 
    675 !Config  Key  = ok_dyn_ave
    676 !Config  Desc = sorties moyennes dans la dynamique
    677 !Config  Def  = n
    678 !Config  Help =
    679 !Config         
    680       ok_dyn_ave = .FALSE.
    681       CALL getin('ok_dyn_ave',ok_dyn_ave)
    682 
    683       write(lunout,*)' #########################################'
    684       write(lunout,*)' Configuration des parametres du gcm: '
    685       write(lunout,*)' planet_type = ', planet_type
    686       write(lunout,*)' calend = ', calend
    687       write(lunout,*)' dayref = ', dayref
    688       write(lunout,*)' anneeref = ', anneeref
    689       write(lunout,*)' nday = ', nday
    690       write(lunout,*)' day_step = ', day_step
    691       write(lunout,*)' iperiod = ', iperiod
    692       write(lunout,*)' nsplit_phys = ', nsplit_phys
    693       write(lunout,*)' iconser = ', iconser
    694       write(lunout,*)' iecri = ', iecri
    695       write(lunout,*)' periodav = ', periodav
    696       write(lunout,*)' output_grads_dyn = ', output_grads_dyn
    697       write(lunout,*)' dissip_period = ', dissip_period
    698       write(lunout,*)' lstardis = ', lstardis
    699       write(lunout,*)' nitergdiv = ', nitergdiv
    700       write(lunout,*)' nitergrot = ', nitergrot
    701       write(lunout,*)' niterh = ', niterh
    702       write(lunout,*)' tetagdiv = ', tetagdiv
    703       write(lunout,*)' tetagrot = ', tetagrot
    704       write(lunout,*)' tetatemp = ', tetatemp
    705       write(lunout,*)' coefdis = ', coefdis
    706       write(lunout,*)' purmats = ', purmats
    707       write(lunout,*)' read_start = ', read_start
    708       write(lunout,*)' iflag_phys = ', iflag_phys
    709       write(lunout,*)' iphysiq = ', iphysiq
    710       write(lunout,*)' clonn = ', clonn
    711       write(lunout,*)' clatt = ', clatt
    712       write(lunout,*)' grossismx = ', grossismx
    713       write(lunout,*)' grossismy = ', grossismy
    714       write(lunout,*)' fxyhypbb = ', fxyhypbb
    715       write(lunout,*)' dzoomxx = ', dzoomxx
    716       write(lunout,*)' dzoomy = ', dzoomyy
    717       write(lunout,*)' tauxx = ', tauxx
    718       write(lunout,*)' tauyy = ', tauyy
    719       write(lunout,*)' offline = ', offline
    720       write(lunout,*)' type_trac = ', type_trac
    721       write(lunout,*)' config_inca = ', config_inca
    722       write(lunout,*)' ok_dynzon = ', ok_dynzon
    723       write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
    724       write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
    725 
    726       RETURN
    727 !   ...............................................
    728 !
    729 100   CONTINUE
    730 !Config  Key  = clon
    731 !Config  Desc = centre du zoom, longitude
    732 !Config  Def  = 0
    733 !Config  Help = longitude en degres du centre
    734 !Config         du zoom
    735        clon = 0.
    736        CALL getin('clon',clon)
    737 
    738 !Config  Key  = clat
    739 !Config  Desc = centre du zoom, latitude
    740 !Config  Def  = 0
    741 !Config  Help = latitude en degres du centre du zoom
    742 !Config         
    743        clat = 0.
    744        CALL getin('clat',clat)
    745 
    746 !Config  Key  = grossismx
    747 !Config  Desc = zoom en longitude
    748 !Config  Def  = 1.0
    749 !Config  Help = facteur de grossissement du zoom,
    750 !Config         selon la longitude
    751        grossismx = 1.0
    752        CALL getin('grossismx',grossismx)
    753 
    754 !Config  Key  = grossismy
    755 !Config  Desc = zoom en latitude
    756 !Config  Def  = 1.0
    757 !Config  Help = facteur de grossissement du zoom,
    758 !Config         selon la latitude
    759        grossismy = 1.0
    760        CALL getin('grossismy',grossismy)
    761 
    762       IF( grossismx.LT.1. )  THEN
    763         write(lunout,*)
    764      &   'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
    765          STOP
    766       ELSE
    767          alphax = 1. - 1./ grossismx
    768       ENDIF
    769 
    770 
    771       IF( grossismy.LT.1. )  THEN
    772         write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** '
    773          STOP
    774       ELSE
    775          alphay = 1. - 1./ grossismy
    776       ENDIF
    777 
    778       write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay
    779 !
    780 !    alphax et alphay sont les anciennes formulat. des grossissements
    781 !
    782 !
    783 
    784 !Config  Key  = fxyhypb
    785 !Config  Desc = Fonction  hyperbolique
    786 !Config  Def  = y
    787 !Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
    788 !Config         sinon  sinusoidale
    789        fxyhypb = .TRUE.
    790        CALL getin('fxyhypb',fxyhypb)
    791 
    792 !Config  Key  = dzoomx
    793 !Config  Desc = extension en longitude
    794 !Config  Def  = 0
    795 !Config  Help = extension en longitude  de la zone du zoom 
    796 !Config         ( fraction de la zone totale)
    797        dzoomx = 0.0
    798        CALL getin('dzoomx',dzoomx)
    799 
    800 !Config  Key  = dzoomy
    801 !Config  Desc = extension en latitude
    802 !Config  Def  = 0
    803 !Config  Help = extension en latitude de la zone  du zoom 
    804 !Config         ( fraction de la zone totale)
    805        dzoomy = 0.0
    806        CALL getin('dzoomy',dzoomy)
    807 
    808 !Config  Key  = taux
    809 !Config  Desc = raideur du zoom en  X
    810 !Config  Def  = 3
    811 !Config  Help = raideur du zoom en  X
    812        taux = 3.0
    813        CALL getin('taux',taux)
    814 
    815 !Config  Key  = tauy
    816 !Config  Desc = raideur du zoom en  Y
    817 !Config  Def  = 3
    818 !Config  Help = raideur du zoom en  Y
    819        tauy = 3.0
    820        CALL getin('tauy',tauy)
    821 
    822 !Config  Key  = ysinus
    823 !Config  IF   = !fxyhypb
    824 !Config  Desc = Fonction en Sinus
    825 !Config  Def  = y
    826 !Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
    827 !Config         sinon y = latit.
    828        ysinus = .TRUE.
    829        CALL getin('ysinus',ysinus)
    830 !
    831 !Config  Key  = offline
    832 !Config  Desc = Nouvelle eau liquide
    833 !Config  Def  = n
    834 !Config  Help = Permet de mettre en route la
    835 !Config         nouvelle parametrisation de l'eau liquide !
    836        offline = .FALSE.
    837        CALL getin('offline',offline)
    838        IF (offline .AND. adjust) THEN
    839           WRITE(lunout,*)
    840      &         'WARNING : option offline does not work with adjust=y :'
    841           WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ',
    842      &         'and fluxstokev.nc will not be created'
    843           WRITE(lunout,*)
    844      &         'only the file phystoke.nc will still be created '
    845        END IF
    846 
    847 !Config  Key  = type_trac
    848 !Config  Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
    849 !Config  Def  = lmdz
    850 !Config  Help =
    851 !Config         'lmdz' = pas de couplage, pur LMDZ
    852 !Config         'inca' = model de chime INCA
    853 !Config         'repr' = model de chime REPROBUS
    854       type_trac = 'lmdz'
    855       CALL getin('type_trac',type_trac)
    856 
    857 !Config  Key  = config_inca
    858 !Config  Desc = Choix de configuration de INCA
    859 !Config  Def  = none
    860 !Config  Help = Choix de configuration de INCA :
    861 !Config         'none' = sans INCA
    862 !Config         'chem' = INCA avec calcul de chemie
    863 !Config         'aero' = INCA avec calcul des aerosols
    864       config_inca = 'none'
    865       CALL getin('config_inca',config_inca)
    866 
    867 !Config  Key  = ok_dynzon
    868 !Config  Desc = sortie des transports zonaux dans la dynamique
    869 !Config  Def  = n
    870 !Config  Help = Permet de mettre en route le calcul des transports
    871 !Config         
    872       ok_dynzon = .FALSE.
    873       CALL getin('ok_dynzon',ok_dynzon)
    874 
    875 !Config  Key  = ok_dyn_ins
    876 !Config  Desc = sorties instantanees dans la dynamique
    877 !Config  Def  = n
    878 !Config  Help =
    879 !Config         
    880       ok_dyn_ins = .FALSE.
    881       CALL getin('ok_dyn_ins',ok_dyn_ins)
    882 
    883 !Config  Key  = ok_dyn_ave
    884 !Config  Desc = sorties moyennes dans la dynamique
    885 !Config  Def  = n
    886 !Config  Help =
    887 !Config         
    888       ok_dyn_ave = .FALSE.
    889       CALL getin('ok_dyn_ave',ok_dyn_ave)
    890 
    891 !Config  Key  = use_filtre_fft
    892 !Config  Desc = flag d'activation des FFT pour le filtre
    893 !Config  Def  = false
    894 !Config  Help = permet d'activer l'utilisation des FFT pour effectuer
    895 !Config         le filtrage aux poles.
    896       use_filtre_fft=.FALSE.
    897       CALL getin('use_filtre_fft',use_filtre_fft)
    898       use_filtre_fft_loc=use_filtre_fft
    899      
    900       IF (use_filtre_fft .AND. grossismx /= 1.0) THEN
     752     ELSE
     753        alphay = 1. - 1./ grossismy
     754     ENDIF
     755
     756     write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay
     757
     758     !    alphax et alphay sont les anciennes formulat. des grossissements
     759
     760     !Config  Key  = fxyhypb
     761     !Config  Desc = Fonction  hyperbolique
     762     !Config  Def  = y
     763     !Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
     764     !Config         sinon  sinusoidale
     765     fxyhypb = .TRUE.
     766     CALL getin('fxyhypb',fxyhypb)
     767
     768     !Config  Key  = dzoomx
     769     !Config  Desc = extension en longitude
     770     !Config  Def  = 0
     771     !Config  Help = extension en longitude  de la zone du zoom 
     772     !Config         ( fraction de la zone totale)
     773     dzoomx = 0.0
     774     CALL getin('dzoomx',dzoomx)
     775
     776     !Config  Key  = dzoomy
     777     !Config  Desc = extension en latitude
     778     !Config  Def  = 0
     779     !Config  Help = extension en latitude de la zone  du zoom 
     780     !Config         ( fraction de la zone totale)
     781     dzoomy = 0.0
     782     CALL getin('dzoomy',dzoomy)
     783
     784     !Config  Key  = taux
     785     !Config  Desc = raideur du zoom en  X
     786     !Config  Def  = 3
     787     !Config  Help = raideur du zoom en  X
     788     taux = 3.0
     789     CALL getin('taux',taux)
     790
     791     !Config  Key  = tauy
     792     !Config  Desc = raideur du zoom en  Y
     793     !Config  Def  = 3
     794     !Config  Help = raideur du zoom en  Y
     795     tauy = 3.0
     796     CALL getin('tauy',tauy)
     797
     798     !Config  Key  = ysinus
     799     !Config  IF   = !fxyhypb
     800     !Config  Desc = Fonction en Sinus
     801     !Config  Def  = y
     802     !Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
     803     !Config         sinon y = latit.
     804     ysinus = .TRUE.
     805     CALL getin('ysinus',ysinus)
     806
     807     !Config  Key  = offline
     808     !Config  Desc = Nouvelle eau liquide
     809     !Config  Def  = n
     810     !Config  Help = Permet de mettre en route la
     811     !Config         nouvelle parametrisation de l'eau liquide !
     812     offline = .FALSE.
     813     CALL getin('offline',offline)
     814     IF (offline .AND. adjust) THEN
     815        WRITE(lunout,*)  &
     816             'WARNING : option offline does not work with adjust=y :'
     817        WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ',  &
     818             'and fluxstokev.nc will not be created'
     819        WRITE(lunout,*)  &
     820             'only the file phystoke.nc will still be created '
     821     END IF
     822
     823     !Config  Key  = type_trac
     824     !Config  Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
     825     !Config  Def  = lmdz
     826     !Config  Help =
     827     !Config         'lmdz' = pas de couplage, pur LMDZ
     828     !Config         'inca' = model de chime INCA
     829     !Config         'repr' = model de chime REPROBUS
     830     type_trac = 'lmdz'
     831     CALL getin('type_trac',type_trac)
     832
     833     !Config  Key  = config_inca
     834     !Config  Desc = Choix de configuration de INCA
     835     !Config  Def  = none
     836     !Config  Help = Choix de configuration de INCA :
     837     !Config         'none' = sans INCA
     838     !Config         'chem' = INCA avec calcul de chemie
     839     !Config         'aero' = INCA avec calcul des aerosols
     840     config_inca = 'none'
     841     CALL getin('config_inca',config_inca)
     842
     843     !Config  Key  = ok_dynzon
     844     !Config  Desc = sortie des transports zonaux dans la dynamique
     845     !Config  Def  = n
     846     !Config  Help = Permet de mettre en route le calcul des transports
     847     !Config         
     848     ok_dynzon = .FALSE.
     849     CALL getin('ok_dynzon',ok_dynzon)
     850
     851     !Config  Key  = ok_dyn_ins
     852     !Config  Desc = sorties instantanees dans la dynamique
     853     !Config  Def  = n
     854     !Config  Help =
     855     !Config         
     856     ok_dyn_ins = .FALSE.
     857     CALL getin('ok_dyn_ins',ok_dyn_ins)
     858
     859     !Config  Key  = ok_dyn_ave
     860     !Config  Desc = sorties moyennes dans la dynamique
     861     !Config  Def  = n
     862     !Config  Help =
     863     !Config         
     864     ok_dyn_ave = .FALSE.
     865     CALL getin('ok_dyn_ave',ok_dyn_ave)
     866
     867     !Config  Key  = use_filtre_fft
     868     !Config  Desc = flag d'activation des FFT pour le filtre
     869     !Config  Def  = false
     870     !Config  Help = permet d'activer l'utilisation des FFT pour effectuer
     871     !Config         le filtrage aux poles.
     872     use_filtre_fft=.FALSE.
     873     CALL getin('use_filtre_fft',use_filtre_fft)
     874     use_filtre_fft_loc=use_filtre_fft
     875
     876     IF (use_filtre_fft .AND. grossismx /= 1.0) THEN
    901877        write(lunout,*)'WARNING !!! '
    902         write(lunout,*)"Le zoom en longitude est incompatible",
    903      &                 " avec l'utilisation du filtre FFT ",
    904      &                 "---> FFT filter not active"
    905        use_filtre_fft=.FALSE.
    906       ENDIF
    907      
    908  
    909      
    910 !Config  Key  = use_mpi_alloc
    911 !Config  Desc = Utilise un buffer MPI en m�moire globale
    912 !Config  Def  = false
    913 !Config  Help = permet d'activer l'utilisation d'un buffer MPI
    914 !Config         en m�moire globale a l'aide de la fonction MPI_ALLOC.
    915 !Config         Cela peut am�liorer la bande passante des transferts MPI
    916 !Config         d'un facteur 2 
    917       use_mpi_alloc=.FALSE.
    918       CALL getin('use_mpi_alloc',use_mpi_alloc)
    919 
    920 !Config key = ok_strato
    921 !Config  Desc = activation de la version strato
    922 !Config  Def  = .FALSE.
    923 !Config  Help = active la version stratosphérique de LMDZ de F. Lott
    924 
    925       ok_strato=.FALSE.
    926       CALL getin('ok_strato',ok_strato)
    927 
    928       vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39)
    929       CALL getin('vert_prof_dissip', vert_prof_dissip)
    930       call assert(vert_prof_dissip == 0 .or. vert_prof_dissip ==  1,
    931      $     "bad value for vert_prof_dissip")
    932 
    933 !Config  Key  = ok_gradsfile
    934 !Config  Desc = activation des sorties grads du guidage
    935 !Config  Def  = n
    936 !Config  Help = active les sorties grads du guidage
    937 
    938        ok_gradsfile = .FALSE.
    939        CALL getin('ok_gradsfile',ok_gradsfile)
    940 
    941 !Config  Key  = ok_limit
    942 !Config  Desc = creation des fichiers limit dans create_etat0_limit
    943 !Config  Def  = y
    944 !Config  Help = production du fichier limit.nc requise
    945 
    946        ok_limit = .TRUE.
    947        CALL getin('ok_limit',ok_limit)
    948 
    949 !Config  Key  = ok_etat0
    950 !Config  Desc = creation des fichiers etat0 dans create_etat0_limit
    951 !Config  Def  = y
    952 !Config  Help = production des fichiers start.nc, startphy.nc requise
    953 
    954       ok_etat0 = .TRUE.
    955       CALL getin('ok_etat0',ok_etat0)
    956 
    957       write(lunout,*)' #########################################'
    958       write(lunout,*)' Configuration des parametres de cel0'
    959      &             //'_limit: '
    960       write(lunout,*)' planet_type = ', planet_type
    961       write(lunout,*)' calend = ', calend
    962       write(lunout,*)' dayref = ', dayref
    963       write(lunout,*)' anneeref = ', anneeref
    964       write(lunout,*)' nday = ', nday
    965       write(lunout,*)' day_step = ', day_step
    966       write(lunout,*)' iperiod = ', iperiod
    967       write(lunout,*)' iconser = ', iconser
    968       write(lunout,*)' iecri = ', iecri
    969       write(lunout,*)' periodav = ', periodav
    970       write(lunout,*)' output_grads_dyn = ', output_grads_dyn
    971       write(lunout,*)' dissip_period = ', dissip_period
    972       write(lunout,*)' lstardis = ', lstardis
    973       write(lunout,*)' nitergdiv = ', nitergdiv
    974       write(lunout,*)' nitergrot = ', nitergrot
    975       write(lunout,*)' niterh = ', niterh
    976       write(lunout,*)' tetagdiv = ', tetagdiv
    977       write(lunout,*)' tetagrot = ', tetagrot
    978       write(lunout,*)' tetatemp = ', tetatemp
    979       write(lunout,*)' coefdis = ', coefdis
    980       write(lunout,*)' purmats = ', purmats
    981       write(lunout,*)' read_start = ', read_start
    982       write(lunout,*)' iflag_phys = ', iflag_phys
    983       write(lunout,*)' iphysiq = ', iphysiq
    984       write(lunout,*)' clon = ', clon
    985       write(lunout,*)' clat = ', clat
    986       write(lunout,*)' grossismx = ', grossismx
    987       write(lunout,*)' grossismy = ', grossismy
    988       write(lunout,*)' fxyhypb = ', fxyhypb
    989       write(lunout,*)' dzoomx = ', dzoomx
    990       write(lunout,*)' dzoomy = ', dzoomy
    991       write(lunout,*)' taux = ', taux
    992       write(lunout,*)' tauy = ', tauy
    993       write(lunout,*)' offline = ', offline
    994       write(lunout,*)' type_trac = ', type_trac
    995       write(lunout,*)' config_inca = ', config_inca
    996       write(lunout,*)' ok_dynzon = ', ok_dynzon
    997       write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
    998       write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
    999       write(lunout,*)' use_filtre_fft = ', use_filtre_fft
    1000       write(lunout,*)' use_mpi_alloc = ', use_mpi_alloc
    1001       write(lunout,*)' ok_strato = ', ok_strato
    1002       write(lunout,*)' ok_gradsfile = ', ok_gradsfile
    1003       write(lunout,*)' ok_limit = ', ok_limit
    1004       write(lunout,*)' ok_etat0 = ', ok_etat0
    1005 !
    1006       RETURN
    1007       END
     878        write(lunout,*)"Le zoom en longitude est incompatible", &
     879             " avec l'utilisation du filtre FFT ", &
     880             "---> FFT filter not active"
     881        use_filtre_fft=.FALSE.
     882     ENDIF
     883
     884     !Config  Key  = use_mpi_alloc
     885     !Config  Desc = Utilise un buffer MPI en m�moire globale
     886     !Config  Def  = false
     887     !Config  Help = permet d'activer l'utilisation d'un buffer MPI
     888     !Config         en m�moire globale a l'aide de la fonction MPI_ALLOC.
     889     !Config         Cela peut am�liorer la bande passante des transferts MPI
     890     !Config         d'un facteur 2 
     891     use_mpi_alloc=.FALSE.
     892     CALL getin('use_mpi_alloc',use_mpi_alloc)
     893
     894     !Config key = ok_strato
     895     !Config  Desc = activation de la version strato
     896     !Config  Def  = .FALSE.
     897     !Config  Help = active la version stratosphérique de LMDZ de F. Lott
     898
     899     ok_strato=.FALSE.
     900     CALL getin('ok_strato',ok_strato)
     901
     902     vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39)
     903     CALL getin('vert_prof_dissip', vert_prof_dissip)
     904     call assert(vert_prof_dissip == 0 .or. vert_prof_dissip ==  1, &
     905          "bad value for vert_prof_dissip")
     906
     907     !Config  Key  = ok_gradsfile
     908     !Config  Desc = activation des sorties grads du guidage
     909     !Config  Def  = n
     910     !Config  Help = active les sorties grads du guidage
     911
     912     ok_gradsfile = .FALSE.
     913     CALL getin('ok_gradsfile',ok_gradsfile)
     914
     915     !Config  Key  = ok_limit
     916     !Config  Desc = creation des fichiers limit dans create_etat0_limit
     917     !Config  Def  = y
     918     !Config  Help = production du fichier limit.nc requise
     919
     920     ok_limit = .TRUE.
     921     CALL getin('ok_limit',ok_limit)
     922
     923     !Config  Key  = ok_etat0
     924     !Config  Desc = creation des fichiers etat0 dans create_etat0_limit
     925     !Config  Def  = y
     926     !Config  Help = production des fichiers start.nc, startphy.nc requise
     927
     928     ok_etat0 = .TRUE.
     929     CALL getin('ok_etat0',ok_etat0)
     930
     931     write(lunout,*)' #########################################'
     932     write(lunout,*)' Configuration des parametres de cel0' &
     933          //'_limit: '
     934     write(lunout,*)' planet_type = ', planet_type
     935     write(lunout,*)' calend = ', calend
     936     write(lunout,*)' dayref = ', dayref
     937     write(lunout,*)' anneeref = ', anneeref
     938     write(lunout,*)' nday = ', nday
     939     write(lunout,*)' day_step = ', day_step
     940     write(lunout,*)' iperiod = ', iperiod
     941     write(lunout,*)' iconser = ', iconser
     942     write(lunout,*)' iecri = ', iecri
     943     write(lunout,*)' periodav = ', periodav
     944     write(lunout,*)' output_grads_dyn = ', output_grads_dyn
     945     write(lunout,*)' dissip_period = ', dissip_period
     946     write(lunout,*)' lstardis = ', lstardis
     947     write(lunout,*)' nitergdiv = ', nitergdiv
     948     write(lunout,*)' nitergrot = ', nitergrot
     949     write(lunout,*)' niterh = ', niterh
     950     write(lunout,*)' tetagdiv = ', tetagdiv
     951     write(lunout,*)' tetagrot = ', tetagrot
     952     write(lunout,*)' tetatemp = ', tetatemp
     953     write(lunout,*)' coefdis = ', coefdis
     954     write(lunout,*)' purmats = ', purmats
     955     write(lunout,*)' read_start = ', read_start
     956     write(lunout,*)' iflag_phys = ', iflag_phys
     957     write(lunout,*)' iphysiq = ', iphysiq
     958     write(lunout,*)' clon = ', clon
     959     write(lunout,*)' clat = ', clat
     960     write(lunout,*)' grossismx = ', grossismx
     961     write(lunout,*)' grossismy = ', grossismy
     962     write(lunout,*)' fxyhypb = ', fxyhypb
     963     write(lunout,*)' dzoomx = ', dzoomx
     964     write(lunout,*)' dzoomy = ', dzoomy
     965     write(lunout,*)' taux = ', taux
     966     write(lunout,*)' tauy = ', tauy
     967     write(lunout,*)' offline = ', offline
     968     write(lunout,*)' type_trac = ', type_trac
     969     write(lunout,*)' config_inca = ', config_inca
     970     write(lunout,*)' ok_dynzon = ', ok_dynzon
     971     write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
     972     write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
     973     write(lunout,*)' use_filtre_fft = ', use_filtre_fft
     974     write(lunout,*)' use_mpi_alloc = ', use_mpi_alloc
     975     write(lunout,*)' ok_strato = ', ok_strato
     976     write(lunout,*)' ok_gradsfile = ', ok_gradsfile
     977     write(lunout,*)' ok_limit = ', ok_limit
     978     write(lunout,*)' ok_etat0 = ', ok_etat0
     979  end IF test_etatinit
     980
     981END SUBROUTINE conf_gcm
  • LMDZ5/trunk/libf/dyn3dpar/conf_gcm.F90

    r2141 r2142  
    1 !
     1
    22! $Id$
    3 !
    4 !
    5 !
    6       SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 )
    7 !
    8       USE control_mod
     3
     4SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 )
     5
     6  USE control_mod
    97#ifdef CPP_IOIPSL
    10       use IOIPSL
     8  use IOIPSL
    119#else
    12 ! if not using IOIPSL, we still need to use (a local version of) getin
    13       use ioipsl_getincom
     10  ! if not using IOIPSL, we still need to use (a local version of) getin
     11  use ioipsl_getincom
    1412#endif
    15       use misc_mod
    16       use mod_filtre_fft, ONLY : use_filtre_fft
    17       use mod_hallo, ONLY : use_mpi_alloc
    18       USE infotrac, ONLY : type_trac
    19       use assert_m, only: assert
    20 
    21       IMPLICIT NONE
    22 !-----------------------------------------------------------------------
    23 !     Auteurs :   L. Fairhead , P. Le Van  .
    24 !
    25 !     Arguments :
    26 !
    27 !     tapedef   :
    28 !     etatinit  :     = TRUE   , on ne  compare pas les valeurs des para-
    29 !     -metres  du zoom  avec  celles lues sur le fichier start .
    30 !      clesphy0 :  sortie  .
    31 !
    32        LOGICAL etatinit
    33        INTEGER tapedef
    34 
    35        INTEGER        longcles
    36        PARAMETER(     longcles = 20 )
    37        REAL clesphy0( longcles )
    38 !
    39 !   Declarations :
    40 !   --------------
    41 #include "dimensions.h"
    42 #include "paramet.h"
    43 #include "logic.h"
    44 #include "serre.h"
    45 #include "comdissnew.h"
    46 #include "temps.h"
    47 #include "comconst.h"
    48 
    49 ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
    50 ! #include "clesphys.h"
    51 #include "iniprint.h"
    52 !
    53 !
    54 !   local:
    55 !   ------
    56 
    57       CHARACTER ch1*72,ch2*72,ch3*72,ch4*12
    58       REAL clonn,clatt,grossismxx,grossismyy
    59       REAL dzoomxx,dzoomyy, tauxx,tauyy
    60       LOGICAL  fxyhypbb, ysinuss
    61       INTEGER i
    62       character(len=*),parameter :: modname="conf_gcm"
    63       character (len=80) :: abort_message
     13  use misc_mod
     14  use mod_filtre_fft, ONLY : use_filtre_fft
     15  use mod_hallo, ONLY : use_mpi_alloc
     16  USE infotrac, ONLY : type_trac
     17  use assert_m, only: assert
     18
     19  IMPLICIT NONE
     20  !-----------------------------------------------------------------------
     21  !     Auteurs :   L. Fairhead , P. Le Van  .
     22
     23  !     Arguments :
     24
     25  !     tapedef   :
     26  !     etatinit  :     = TRUE   , on ne  compare pas les valeurs des para-
     27  !     -metres  du zoom  avec  celles lues sur le fichier start .
     28  !      clesphy0 :  sortie  .
     29
     30  LOGICAL etatinit
     31  INTEGER tapedef
     32
     33  INTEGER        longcles
     34  PARAMETER(     longcles = 20 )
     35  REAL clesphy0( longcles )
     36
     37  !   Declarations :
     38  !   --------------
     39  include "dimensions.h"
     40  include "paramet.h"
     41  include "logic.h"
     42  include "serre.h"
     43  include "comdissnew.h"
     44  include "temps.h"
     45  include "comconst.h"
     46
     47  ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
     48  ! include "clesphys.h"
     49  include "iniprint.h"
     50
     51  !   local:
     52  !   ------
     53
     54  CHARACTER ch1*72,ch2*72,ch3*72,ch4*12
     55  REAL clonn,clatt,grossismxx,grossismyy
     56  REAL dzoomxx,dzoomyy, tauxx,tauyy
     57  LOGICAL  fxyhypbb, ysinuss
     58  INTEGER i
     59  character(len=*),parameter :: modname="conf_gcm"
     60  character (len=80) :: abort_message
    6461#ifdef CPP_OMP
    65       integer,external :: OMP_GET_NUM_THREADS
     62  integer,external :: OMP_GET_NUM_THREADS
    6663#endif
    67 !
    68 !  -------------------------------------------------------------------
    69 !
    70 !       .........     Version  du 29/04/97       ..........
    71 !
    72 !   Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot,
    73 !      tetatemp   ajoutes  pour la dissipation   .
    74 !
    75 !   Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb **
    76 !
    77 !  Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb.
    78 !    Sinon , choix de fxynew  , a derivee sinusoidale  ..
    79 !
    80 !   ......  etatinit = . TRUE. si defrun  est appele dans ETAT0_LMD  ou
    81 !         LIMIT_LMD  pour l'initialisation de start.dat (dic) et
    82 !                de limit.dat ( dic)                        ...........
    83 !           Sinon  etatinit = . FALSE .
    84 !
    85 !   Donc etatinit = .F.  si on veut comparer les valeurs de  grossismx ,
    86 !    grossismy,clon,clat, fxyhypb  lues sur  le fichier  start  avec
    87 !   celles passees  par run.def ,  au debut du gcm, apres l'appel a
    88 !    lectba . 
    89 !   Ces parmetres definissant entre autres la grille et doivent etre
    90 !   pareils et coherents , sinon il y aura  divergence du gcm .
    91 !
    92 !-----------------------------------------------------------------------
    93 !   initialisations:
    94 !   ----------------
    95 
    96 !Config  Key  = lunout
    97 !Config  Desc = unite de fichier pour les impressions
    98 !Config  Def  = 6
    99 !Config  Help = unite de fichier pour les impressions
    100 !Config         (defaut sortie standard = 6)
    101       lunout=6
    102       CALL getin('lunout', lunout)
    103       IF (lunout /= 5 .and. lunout /= 6) THEN
    104         OPEN(UNIT=lunout,FILE='lmdz.out_0000',ACTION='write',
    105      &          STATUS='unknown',FORM='formatted')
    106       ENDIF
    107 
    108       adjust=.false.
    109       call getin('adjust',adjust)
     64
     65  !  -------------------------------------------------------------------
     66
     67  !       .........     Version  du 29/04/97       ..........
     68
     69  !   Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot,
     70  !      tetatemp   ajoutes  pour la dissipation   .
     71
     72  !   Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb **
     73
     74  !  Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb.
     75  !    Sinon , choix de fxynew  , a derivee sinusoidale  ..
     76
     77  !   ......  etatinit = . TRUE. si defrun  est appele dans ETAT0_LMD  ou
     78  !         LIMIT_LMD  pour l'initialisation de start.dat (dic) et
     79  !                de limit.dat ( dic)                        ...........
     80  !           Sinon  etatinit = . FALSE .
     81
     82  !   Donc etatinit = .F.  si on veut comparer les valeurs de  grossismx ,
     83  !    grossismy,clon,clat, fxyhypb  lues sur  le fichier  start  avec
     84  !   celles passees  par run.def ,  au debut du gcm, apres l'appel a
     85  !    lectba . 
     86  !   Ces parmetres definissant entre autres la grille et doivent etre
     87  !   pareils et coherents , sinon il y aura  divergence du gcm .
     88
     89  !-----------------------------------------------------------------------
     90  !   initialisations:
     91  !   ----------------
     92
     93  !Config  Key  = lunout
     94  !Config  Desc = unite de fichier pour les impressions
     95  !Config  Def  = 6
     96  !Config  Help = unite de fichier pour les impressions
     97  !Config         (defaut sortie standard = 6)
     98  lunout=6
     99  CALL getin('lunout', lunout)
     100  IF (lunout /= 5 .and. lunout /= 6) THEN
     101     OPEN(UNIT=lunout,FILE='lmdz.out_0000',ACTION='write',  &
     102          STATUS='unknown',FORM='formatted')
     103  ENDIF
     104
     105  adjust=.false.
     106  call getin('adjust',adjust)
    110107
    111108#ifdef CPP_OMP
    112       ! adjust=y not implemented in case of OpenMP threads...
    113 !$OMP PARALLEL
    114       if ((OMP_GET_NUM_THREADS()>1).and.adjust) then
    115         write(lunout,*)'conf_gcm: Error, adjust should be set to n'
    116      &,' when running with OpenMP threads'
    117         abort_message = 'Wrong value for adjust'
    118         call abort_gcm(modname,abort_message,1)
    119       endif
    120 !$OMP END PARALLEL         
     109  ! adjust=y not implemented in case of OpenMP threads...
     110  !$OMP PARALLEL
     111  if ((OMP_GET_NUM_THREADS()>1).and.adjust) then
     112     write(lunout,*)'conf_gcm: Error, adjust should be set to n' &
     113          ,' when running with OpenMP threads'
     114     abort_message = 'Wrong value for adjust'
     115     call abort_gcm(modname,abort_message,1)
     116  endif
     117  !$OMP END PARALLEL         
    121118#endif
    122119
    123       itaumax=0
    124       call getin('itaumax',itaumax);
    125       if (itaumax<=0) itaumax=HUGE(itaumax)
    126 
    127 !Config  Key  = prt_level
    128 !Config  Desc = niveau d'impressions de débogage
    129 !Config  Def  = 0
    130 !Config  Help = Niveau d'impression pour le débogage
    131 !Config         (0 = minimum d'impression)
    132       prt_level = 0
    133       CALL getin('prt_level',prt_level)
    134 
    135 !-----------------------------------------------------------------------
    136 !  Parametres de controle du run:
    137 !-----------------------------------------------------------------------
    138 !Config  Key  = planet_type
    139 !Config  Desc = planet type ("earth", "mars", "venus", ...)
    140 !Config  Def  = earth
    141 !Config  Help = this flag sets the type of atymosphere that is considered
    142       planet_type="earth"
    143       CALL getin('planet_type',planet_type)
    144 
    145 !Config  Key  = calend
    146 !Config  Desc = type de calendrier utilise
    147 !Config  Def  = earth_360d
    148 !Config  Help = valeur possible: earth_360d, earth_365d, earth_366d
    149 !Config         
    150       calend = 'earth_360d'
    151       CALL getin('calend', calend)
    152 
    153 !Config  Key  = dayref
    154 !Config  Desc = Jour de l'etat initial
    155 !Config  Def  = 1
    156 !Config  Help = Jour de l'etat initial ( = 350  si 20 Decembre ,
    157 !Config         par expl. ,comme ici ) ... A completer
    158       dayref=1
    159       CALL getin('dayref', dayref)
    160 
    161 !Config  Key  = anneeref
    162 !Config  Desc = Annee de l'etat initial
    163 !Config  Def  = 1998
    164 !Config  Help = Annee de l'etat  initial
    165 !Config         (   avec  4  chiffres   ) ... A completer
    166       anneeref = 1998
    167       CALL getin('anneeref',anneeref)
    168 
    169 !Config  Key  = raz_date
    170 !Config  Desc = Remise a zero de la date initiale
    171 !Config  Def  = 0 (pas de remise a zero)
    172 !Config  Help = Remise a zero de la date initiale
    173 !Config         0 pas de remise a zero, on garde la date du fichier restart
    174 !Config         1 prise en compte de la date de gcm.def avec remise a zero
    175 !Config         des compteurs de pas de temps
    176       raz_date = 0
    177       CALL getin('raz_date', raz_date)
    178 
    179 !Config  Key  = resetvarc
    180 !Config  Desc = Reinit des variables de controle
    181 !Config  Def  = n
    182 !Config  Help = Reinit des variables de controle
    183       resetvarc = .false.
    184       CALL getin('resetvarc',resetvarc)
    185 
    186 !Config  Key  = nday
    187 !Config  Desc = Nombre de jours d'integration
    188 !Config  Def  = 10
    189 !Config  Help = Nombre de jours d'integration
    190 !Config         ... On pourait aussi permettre des mois ou des annees !
    191       nday = 10
    192       CALL getin('nday',nday)
    193 
    194 !Config  Key  = starttime
    195 !Config  Desc = Heure de depart de la simulation
    196 !Config  Def  = 0
    197 !Config  Help = Heure de depart de la simulation
    198 !Config         en jour
    199       starttime = 0
    200       CALL getin('starttime',starttime)
    201 
    202 !Config  Key  = day_step
    203 !Config  Desc = nombre de pas par jour
    204 !Config  Def  = 240
    205 !Config  Help = nombre de pas par jour (multiple de iperiod) (
    206 !Config          ici pour  dt = 1 min )
    207        day_step = 240
    208        CALL getin('day_step',day_step)
    209 
    210 !Config  Key  = nsplit_phys
    211        nsplit_phys = 1
    212        CALL getin('nsplit_phys',nsplit_phys)
    213 
    214 !Config  Key  = iperiod
    215 !Config  Desc = periode pour le pas Matsuno
    216 !Config  Def  = 5
    217 !Config  Help = periode pour le pas Matsuno (en pas de temps)
    218        iperiod = 5
    219        CALL getin('iperiod',iperiod)
    220 
    221 !Config  Key  = iapp_tracvl
    222 !Config  Desc = frequence du groupement des flux
    223 !Config  Def  = iperiod
    224 !Config  Help = frequence du groupement des flux (en pas de temps)
    225        iapp_tracvl = iperiod
    226        CALL getin('iapp_tracvl',iapp_tracvl)
    227 
    228 !Config  Key  = iconser
    229 !Config  Desc = periode de sortie des variables de controle
    230 !Config  Def  = 240 
    231 !Config  Help = periode de sortie des variables de controle
    232 !Config         (En pas de temps)
    233        iconser = 240 
    234        CALL getin('iconser', iconser)
    235 
    236 !Config  Key  = iecri
    237 !Config  Desc = periode d'ecriture du fichier histoire
    238 !Config  Def  = 1
    239 !Config  Help = periode d'ecriture du fichier histoire (en jour)
    240        iecri = 1
    241        CALL getin('iecri',iecri)
    242 
    243 
    244 !Config  Key  = periodav
    245 !Config  Desc = periode de stockage fichier histmoy
    246 !Config  Def  = 1
    247 !Config  Help = periode de stockage fichier histmoy (en jour)
    248        periodav = 1.
    249        CALL getin('periodav',periodav)
    250 
    251 !Config  Key  = output_grads_dyn
    252 !Config  Desc = output dynamics diagnostics in 'dyn.dat' file
    253 !Config  Def  = n
    254 !Config  Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file
    255        output_grads_dyn=.false.
    256        CALL getin('output_grads_dyn',output_grads_dyn)
    257 
    258 !Config  Key  = dissip_period
    259 !Config  Desc = periode de la dissipation
    260 !Config  Def  = 0
    261 !Config  Help = periode de la dissipation
    262 !Config  dissip_period=0 => la valeur sera calcule dans inidissip       
    263 !Config  dissip_period>0 => on prend cette valeur
    264        dissip_period = 0
    265        CALL getin('dissip_period',dissip_period)
    266 
    267 !cc  ....   P. Le Van , modif le 29/04/97 .pour la dissipation  ...
    268 !cc
    269 
    270 !Config  Key  = lstardis
    271 !Config  Desc = choix de l'operateur de dissipation
    272 !Config  Def  = y
    273 !Config  Help = choix de l'operateur de dissipation
    274 !Config         'y' si on veut star et 'n' si on veut non-start !
    275 !Config         Moi y en a pas comprendre !
    276        lstardis = .TRUE.
    277        CALL getin('lstardis',lstardis)
    278 
    279 
    280 !Config  Key  = nitergdiv
    281 !Config  Desc = Nombre d'iteration de gradiv
    282 !Config  Def  = 1
    283 !Config  Help = nombre d'iterations de l'operateur de dissipation
    284 !Config         gradiv
    285        nitergdiv = 1
    286        CALL getin('nitergdiv',nitergdiv)
    287 
    288 !Config  Key  = nitergrot
    289 !Config  Desc = nombre d'iterations de nxgradrot
    290 !Config  Def  = 2
    291 !Config  Help = nombre d'iterations de l'operateur de dissipation 
    292 !Config         nxgradrot
    293        nitergrot = 2
    294        CALL getin('nitergrot',nitergrot)
    295 
    296 
    297 !Config  Key  = niterh
    298 !Config  Desc = nombre d'iterations de divgrad
    299 !Config  Def  = 2
    300 !Config  Help = nombre d'iterations de l'operateur de dissipation
    301 !Config         divgrad
    302        niterh = 2
    303        CALL getin('niterh',niterh)
    304 
    305 
    306 !Config  Key  = tetagdiv
    307 !Config  Desc = temps de dissipation pour div
    308 !Config  Def  = 7200
    309 !Config  Help = temps de dissipation des plus petites longeur
    310 !Config         d'ondes pour u,v (gradiv)
    311        tetagdiv = 7200.
    312        CALL getin('tetagdiv',tetagdiv)
    313 
    314 !Config  Key  = tetagrot
    315 !Config  Desc = temps de dissipation pour grad
    316 !Config  Def  = 7200
    317 !Config  Help = temps de dissipation des plus petites longeur
    318 !Config         d'ondes pour u,v (nxgradrot)
    319        tetagrot = 7200.
    320        CALL getin('tetagrot',tetagrot)
    321 
    322 !Config  Key  = tetatemp
    323 !Config  Desc = temps de dissipation pour h
    324 !Config  Def  = 7200
    325 !Config  Help =  temps de dissipation des plus petites longeur
    326 !Config         d'ondes pour h (divgrad)   
    327        tetatemp  = 7200.
    328        CALL getin('tetatemp',tetatemp )
    329 
    330 ! Parametres controlant la variation sur la verticale des constantes de
    331 ! dissipation.
    332 ! Pour le moment actifs uniquement dans la version a 39 niveaux
    333 ! avec ok_strato=y
    334 
    335        dissip_factz=4.
    336        dissip_deltaz=10.
    337        dissip_zref=30.
    338        CALL getin('dissip_factz',dissip_factz )
    339        CALL getin('dissip_deltaz',dissip_deltaz )
    340        CALL getin('dissip_zref',dissip_zref )
    341 
    342 ! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0
    343 !                   iflag_top_bound=0 for no sponge
    344 !                   iflag_top_bound=1 for sponge over 4 topmost layers
    345 !                   iflag_top_bound=2 for sponge from top to ~1% of top layer pressure
    346        iflag_top_bound=1
    347        CALL getin('iflag_top_bound',iflag_top_bound)
    348 
    349 ! mode_top_bound : fields towards which sponge relaxation will be done:
    350 !                  mode_top_bound=0: no relaxation
    351 !                  mode_top_bound=1: u and v relax towards 0
    352 !                  mode_top_bound=2: u and v relax towards their zonal mean
    353 !                  mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean
    354        mode_top_bound=3
    355        CALL getin('mode_top_bound',mode_top_bound)
    356 
    357 ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge
    358        tau_top_bound=1.e-5
    359        CALL getin('tau_top_bound',tau_top_bound)
    360 
    361 !Config  Key  = coefdis
    362 !Config  Desc = coefficient pour gamdissip
    363 !Config  Def  = 0
    364 !Config  Help = coefficient pour gamdissip 
    365        coefdis = 0.
    366        CALL getin('coefdis',coefdis)
    367 
    368 !Config  Key  = purmats
    369 !Config  Desc = Schema d'integration
    370 !Config  Def  = n
    371 !Config  Help = Choix du schema d'integration temporel.
    372 !Config         y = pure Matsuno sinon c'est du Matsuno-leapfrog
    373        purmats = .FALSE.
    374        CALL getin('purmats',purmats)
    375 
    376 !Config  Key  = ok_guide
    377 !Config  Desc = Guidage
    378 !Config  Def  = n
    379 !Config  Help = Guidage
    380        ok_guide = .FALSE.
    381        CALL getin('ok_guide',ok_guide)
    382 
    383        if (ok_guide .and. adjust) call abort_gcm("conf_gcm",
    384      $      "adjust does not work with ok_guide", 1)
    385 
    386 !Config  Key  =  read_start
    387 !Config  Desc = Initialize model using a 'start.nc' file
    388 !Config  Def  = y
    389 !Config  Help = y: intialize dynamical fields using a 'start.nc' file
    390 !               n: fields are initialized by 'iniacademic' routine
    391        read_start= .true.
    392        CALL getin('read_start',read_start)
    393 
    394 !Config  Key  = iflag_phys
    395 !Config  Desc = Avec ls physique
    396 !Config  Def  = 1
    397 !Config  Help = Permet de faire tourner le modele sans
    398 !Config         physique.
    399        iflag_phys = 1
    400        CALL getin('iflag_phys',iflag_phys)
    401 
    402 
    403 !Config  Key  =  iphysiq
    404 !Config  Desc = Periode de la physique
    405 !Config  Def  = 5
    406 !Config  Help = Periode de la physique en pas de temps de la dynamique.
    407        iphysiq = 5
    408        CALL getin('iphysiq', iphysiq)
    409 
    410        if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm",
    411      $      "iphysiq must be a multiple of iperiod", 1)
    412 
    413 !Config  Key  = ip_ebil_dyn
    414 !Config  Desc = PRINT level for energy conserv. diag.
    415 !Config  Def  = 0
    416 !Config  Help = PRINT level for energy conservation diag. ;
    417 !               les options suivantes existent :
    418 !Config         0 pas de print
    419 !Config         1 pas de print
    420 !Config         2 print,
    421        ip_ebil_dyn = 0
    422        CALL getin('ip_ebil_dyn',ip_ebil_dyn)
    423 !
    424 
    425 
    426 !cc  ....   P. Le Van , ajout  le 7/03/95 .pour le zoom ...
    427 !     .........   (  modif  le 17/04/96 )   .........
    428 !
    429       IF( etatinit ) GO TO 100
    430 
    431 !Config  Key  = clon
    432 !Config  Desc = centre du zoom, longitude
    433 !Config  Def  = 0
    434 !Config  Help = longitude en degres du centre
    435 !Config         du zoom
    436        clonn = 0.
    437        CALL getin('clon',clonn)
    438 
    439 !Config  Key  = clat
    440 !Config  Desc = centre du zoom, latitude
    441 !Config  Def  = 0
    442 !Config  Help = latitude en degres du centre du zoom
    443 !Config         
    444        clatt = 0.
    445        CALL getin('clat',clatt)
    446 
    447 !
    448 !
    449       IF( ABS(clat - clatt).GE. 0.001 )  THEN
    450         write(lunout,*)'conf_gcm: La valeur de clat passee par run.def',
    451      &    ' est differente de celle lue sur le fichier  start '
     120  itaumax=0
     121  call getin('itaumax',itaumax);
     122  if (itaumax<=0) itaumax=HUGE(itaumax)
     123
     124  !Config  Key  = prt_level
     125  !Config  Desc = niveau d'impressions de débogage
     126  !Config  Def  = 0
     127  !Config  Help = Niveau d'impression pour le débogage
     128  !Config         (0 = minimum d'impression)
     129  prt_level = 0
     130  CALL getin('prt_level',prt_level)
     131
     132  !-----------------------------------------------------------------------
     133  !  Parametres de controle du run:
     134  !-----------------------------------------------------------------------
     135  !Config  Key  = planet_type
     136  !Config  Desc = planet type ("earth", "mars", "venus", ...)
     137  !Config  Def  = earth
     138  !Config  Help = this flag sets the type of atymosphere that is considered
     139  planet_type="earth"
     140  CALL getin('planet_type',planet_type)
     141
     142  !Config  Key  = calend
     143  !Config  Desc = type de calendrier utilise
     144  !Config  Def  = earth_360d
     145  !Config  Help = valeur possible: earth_360d, earth_365d, earth_366d
     146  !Config         
     147  calend = 'earth_360d'
     148  CALL getin('calend', calend)
     149
     150  !Config  Key  = dayref
     151  !Config  Desc = Jour de l'etat initial
     152  !Config  Def  = 1
     153  !Config  Help = Jour de l'etat initial ( = 350  si 20 Decembre ,
     154  !Config         par expl. ,comme ici ) ... A completer
     155  dayref=1
     156  CALL getin('dayref', dayref)
     157
     158  !Config  Key  = anneeref
     159  !Config  Desc = Annee de l'etat initial
     160  !Config  Def  = 1998
     161  !Config  Help = Annee de l'etat  initial
     162  !Config         (   avec  4  chiffres   ) ... A completer
     163  anneeref = 1998
     164  CALL getin('anneeref',anneeref)
     165
     166  !Config  Key  = raz_date
     167  !Config  Desc = Remise a zero de la date initiale
     168  !Config  Def  = 0 (pas de remise a zero)
     169  !Config  Help = Remise a zero de la date initiale
     170  !Config         0 pas de remise a zero, on garde la date du fichier restart
     171  !Config         1 prise en compte de la date de gcm.def avec remise a zero
     172  !Config         des compteurs de pas de temps
     173  raz_date = 0
     174  CALL getin('raz_date', raz_date)
     175
     176  !Config  Key  = resetvarc
     177  !Config  Desc = Reinit des variables de controle
     178  !Config  Def  = n
     179  !Config  Help = Reinit des variables de controle
     180  resetvarc = .false.
     181  CALL getin('resetvarc',resetvarc)
     182
     183  !Config  Key  = nday
     184  !Config  Desc = Nombre de jours d'integration
     185  !Config  Def  = 10
     186  !Config  Help = Nombre de jours d'integration
     187  !Config         ... On pourait aussi permettre des mois ou des annees !
     188  nday = 10
     189  CALL getin('nday',nday)
     190
     191  !Config  Key  = starttime
     192  !Config  Desc = Heure de depart de la simulation
     193  !Config  Def  = 0
     194  !Config  Help = Heure de depart de la simulation
     195  !Config         en jour
     196  starttime = 0
     197  CALL getin('starttime',starttime)
     198
     199  !Config  Key  = day_step
     200  !Config  Desc = nombre de pas par jour
     201  !Config  Def  = 240
     202  !Config  Help = nombre de pas par jour (multiple de iperiod) (
     203  !Config          ici pour  dt = 1 min )
     204  day_step = 240
     205  CALL getin('day_step',day_step)
     206
     207  !Config  Key  = nsplit_phys
     208  nsplit_phys = 1
     209  CALL getin('nsplit_phys',nsplit_phys)
     210
     211  !Config  Key  = iperiod
     212  !Config  Desc = periode pour le pas Matsuno
     213  !Config  Def  = 5
     214  !Config  Help = periode pour le pas Matsuno (en pas de temps)
     215  iperiod = 5
     216  CALL getin('iperiod',iperiod)
     217
     218  !Config  Key  = iapp_tracvl
     219  !Config  Desc = frequence du groupement des flux
     220  !Config  Def  = iperiod
     221  !Config  Help = frequence du groupement des flux (en pas de temps)
     222  iapp_tracvl = iperiod
     223  CALL getin('iapp_tracvl',iapp_tracvl)
     224
     225  !Config  Key  = iconser
     226  !Config  Desc = periode de sortie des variables de controle
     227  !Config  Def  = 240 
     228  !Config  Help = periode de sortie des variables de controle
     229  !Config         (En pas de temps)
     230  iconser = 240 
     231  CALL getin('iconser', iconser)
     232
     233  !Config  Key  = iecri
     234  !Config  Desc = periode d'ecriture du fichier histoire
     235  !Config  Def  = 1
     236  !Config  Help = periode d'ecriture du fichier histoire (en jour)
     237  iecri = 1
     238  CALL getin('iecri',iecri)
     239
     240  !Config  Key  = periodav
     241  !Config  Desc = periode de stockage fichier histmoy
     242  !Config  Def  = 1
     243  !Config  Help = periode de stockage fichier histmoy (en jour)
     244  periodav = 1.
     245  CALL getin('periodav',periodav)
     246
     247  !Config  Key  = output_grads_dyn
     248  !Config  Desc = output dynamics diagnostics in 'dyn.dat' file
     249  !Config  Def  = n
     250  !Config  Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file
     251  output_grads_dyn=.false.
     252  CALL getin('output_grads_dyn',output_grads_dyn)
     253
     254  !Config  Key  = dissip_period
     255  !Config  Desc = periode de la dissipation
     256  !Config  Def  = 0
     257  !Config  Help = periode de la dissipation
     258  !Config  dissip_period=0 => la valeur sera calcule dans inidissip       
     259  !Config  dissip_period>0 => on prend cette valeur
     260  dissip_period = 0
     261  CALL getin('dissip_period',dissip_period)
     262
     263  !cc  ....   P. Le Van , modif le 29/04/97 .pour la dissipation  ...
     264  !cc
     265
     266  !Config  Key  = lstardis
     267  !Config  Desc = choix de l'operateur de dissipation
     268  !Config  Def  = y
     269  !Config  Help = choix de l'operateur de dissipation
     270  !Config         'y' si on veut star et 'n' si on veut non-start !
     271  !Config         Moi y en a pas comprendre !
     272  lstardis = .TRUE.
     273  CALL getin('lstardis',lstardis)
     274
     275  !Config  Key  = nitergdiv
     276  !Config  Desc = Nombre d'iteration de gradiv
     277  !Config  Def  = 1
     278  !Config  Help = nombre d'iterations de l'operateur de dissipation
     279  !Config         gradiv
     280  nitergdiv = 1
     281  CALL getin('nitergdiv',nitergdiv)
     282
     283  !Config  Key  = nitergrot
     284  !Config  Desc = nombre d'iterations de nxgradrot
     285  !Config  Def  = 2
     286  !Config  Help = nombre d'iterations de l'operateur de dissipation 
     287  !Config         nxgradrot
     288  nitergrot = 2
     289  CALL getin('nitergrot',nitergrot)
     290
     291  !Config  Key  = niterh
     292  !Config  Desc = nombre d'iterations de divgrad
     293  !Config  Def  = 2
     294  !Config  Help = nombre d'iterations de l'operateur de dissipation
     295  !Config         divgrad
     296  niterh = 2
     297  CALL getin('niterh',niterh)
     298
     299  !Config  Key  = tetagdiv
     300  !Config  Desc = temps de dissipation pour div
     301  !Config  Def  = 7200
     302  !Config  Help = temps de dissipation des plus petites longeur
     303  !Config         d'ondes pour u,v (gradiv)
     304  tetagdiv = 7200.
     305  CALL getin('tetagdiv',tetagdiv)
     306
     307  !Config  Key  = tetagrot
     308  !Config  Desc = temps de dissipation pour grad
     309  !Config  Def  = 7200
     310  !Config  Help = temps de dissipation des plus petites longeur
     311  !Config         d'ondes pour u,v (nxgradrot)
     312  tetagrot = 7200.
     313  CALL getin('tetagrot',tetagrot)
     314
     315  !Config  Key  = tetatemp
     316  !Config  Desc = temps de dissipation pour h
     317  !Config  Def  = 7200
     318  !Config  Help =  temps de dissipation des plus petites longeur
     319  !Config         d'ondes pour h (divgrad)   
     320  tetatemp  = 7200.
     321  CALL getin('tetatemp',tetatemp )
     322
     323  ! Parametres controlant la variation sur la verticale des constantes de
     324  ! dissipation.
     325  ! Pour le moment actifs uniquement dans la version a 39 niveaux
     326  ! avec ok_strato=y
     327
     328  dissip_factz=4.
     329  dissip_deltaz=10.
     330  dissip_zref=30.
     331  CALL getin('dissip_factz',dissip_factz )
     332  CALL getin('dissip_deltaz',dissip_deltaz )
     333  CALL getin('dissip_zref',dissip_zref )
     334
     335  ! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0
     336  !                   iflag_top_bound=0 for no sponge
     337  !                   iflag_top_bound=1 for sponge over 4 topmost layers
     338  !                   iflag_top_bound=2 for sponge from top to ~1% of top layer pressure
     339  iflag_top_bound=1
     340  CALL getin('iflag_top_bound',iflag_top_bound)
     341
     342  ! mode_top_bound : fields towards which sponge relaxation will be done:
     343  !                  mode_top_bound=0: no relaxation
     344  !                  mode_top_bound=1: u and v relax towards 0
     345  !                  mode_top_bound=2: u and v relax towards their zonal mean
     346  !                  mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean
     347  mode_top_bound=3
     348  CALL getin('mode_top_bound',mode_top_bound)
     349
     350  ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge
     351  tau_top_bound=1.e-5
     352  CALL getin('tau_top_bound',tau_top_bound)
     353
     354  !Config  Key  = coefdis
     355  !Config  Desc = coefficient pour gamdissip
     356  !Config  Def  = 0
     357  !Config  Help = coefficient pour gamdissip 
     358  coefdis = 0.
     359  CALL getin('coefdis',coefdis)
     360
     361  !Config  Key  = purmats
     362  !Config  Desc = Schema d'integration
     363  !Config  Def  = n
     364  !Config  Help = Choix du schema d'integration temporel.
     365  !Config         y = pure Matsuno sinon c'est du Matsuno-leapfrog
     366  purmats = .FALSE.
     367  CALL getin('purmats',purmats)
     368
     369  !Config  Key  = ok_guide
     370  !Config  Desc = Guidage
     371  !Config  Def  = n
     372  !Config  Help = Guidage
     373  ok_guide = .FALSE.
     374  CALL getin('ok_guide',ok_guide)
     375
     376  if (ok_guide .and. adjust) call abort_gcm("conf_gcm", &
     377       "adjust does not work with ok_guide", 1)
     378
     379  !Config  Key  =  read_start
     380  !Config  Desc = Initialize model using a 'start.nc' file
     381  !Config  Def  = y
     382  !Config  Help = y: intialize dynamical fields using a 'start.nc' file
     383  !               n: fields are initialized by 'iniacademic' routine
     384  read_start= .true.
     385  CALL getin('read_start',read_start)
     386
     387  !Config  Key  = iflag_phys
     388  !Config  Desc = Avec ls physique
     389  !Config  Def  = 1
     390  !Config  Help = Permet de faire tourner le modele sans
     391  !Config         physique.
     392  iflag_phys = 1
     393  CALL getin('iflag_phys',iflag_phys)
     394
     395  !Config  Key  =  iphysiq
     396  !Config  Desc = Periode de la physique
     397  !Config  Def  = 5
     398  !Config  Help = Periode de la physique en pas de temps de la dynamique.
     399  iphysiq = 5
     400  CALL getin('iphysiq', iphysiq)
     401
     402  if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm", &
     403       "iphysiq must be a multiple of iperiod", 1)
     404
     405  !Config  Key  = ip_ebil_dyn
     406  !Config  Desc = PRINT level for energy conserv. diag.
     407  !Config  Def  = 0
     408  !Config  Help = PRINT level for energy conservation diag. ;
     409  !               les options suivantes existent :
     410  !Config         0 pas de print
     411  !Config         1 pas de print
     412  !Config         2 print,
     413  ip_ebil_dyn = 0
     414  CALL getin('ip_ebil_dyn',ip_ebil_dyn)
     415
     416  !cc  ....   P. Le Van , ajout  le 7/03/95 .pour le zoom ...
     417  !     .........   (  modif  le 17/04/96 )   .........
     418
     419  test_etatinit: IF (.not. etatinit) then
     420     !Config  Key  = clon
     421     !Config  Desc = centre du zoom, longitude
     422     !Config  Def  = 0
     423     !Config  Help = longitude en degres du centre
     424     !Config         du zoom
     425     clonn = 0.
     426     CALL getin('clon',clonn)
     427
     428     !Config  Key  = clat
     429     !Config  Desc = centre du zoom, latitude
     430     !Config  Def  = 0
     431     !Config  Help = latitude en degres du centre du zoom
     432     !Config         
     433     clatt = 0.
     434     CALL getin('clat',clatt)
     435
     436     IF( ABS(clat - clatt).GE. 0.001 )  THEN
     437        write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', &
     438             ' est differente de celle lue sur le fichier  start '
    452439        STOP
    453       ENDIF
    454 
    455 !Config  Key  = grossismx
    456 !Config  Desc = zoom en longitude
    457 !Config  Def  = 1.0
    458 !Config  Help = facteur de grossissement du zoom,
    459 !Config         selon la longitude
    460        grossismxx = 1.0
    461        CALL getin('grossismx',grossismxx)
    462 
    463 
    464       IF( ABS(grossismx - grossismxx).GE. 0.001 )  THEN
    465         write(lunout,*)'conf_gcm: La valeur de grossismx passee par ',
    466      &  'run.def est differente de celle lue sur le fichier  start '
     440     ENDIF
     441
     442     !Config  Key  = grossismx
     443     !Config  Desc = zoom en longitude
     444     !Config  Def  = 1.0
     445     !Config  Help = facteur de grossissement du zoom,
     446     !Config         selon la longitude
     447     grossismxx = 1.0
     448     CALL getin('grossismx',grossismxx)
     449
     450     IF( ABS(grossismx - grossismxx).GE. 0.001 )  THEN
     451        write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', &
     452             'run.def est differente de celle lue sur le fichier  start '
    467453        STOP
    468       ENDIF
    469 
    470 !Config  Key  = grossismy
    471 !Config  Desc = zoom en latitude
    472 !Config  Def  = 1.0
    473 !Config  Help = facteur de grossissement du zoom,
    474 !Config         selon la latitude
    475        grossismyy = 1.0
    476        CALL getin('grossismy',grossismyy)
    477 
    478       IF( ABS(grossismy - grossismyy).GE. 0.001 )  THEN
    479         write(lunout,*)'conf_gcm: La valeur de grossismy passee par ',
    480      & 'run.def est differente de celle lue sur le fichier  start '
     454     ENDIF
     455
     456     !Config  Key  = grossismy
     457     !Config  Desc = zoom en latitude
     458     !Config  Def  = 1.0
     459     !Config  Help = facteur de grossissement du zoom,
     460     !Config         selon la latitude
     461     grossismyy = 1.0
     462     CALL getin('grossismy',grossismyy)
     463
     464     IF( ABS(grossismy - grossismyy).GE. 0.001 )  THEN
     465        write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', &
     466             'run.def est differente de celle lue sur le fichier  start '
    481467        STOP
    482       ENDIF
    483      
    484       IF( grossismx.LT.1. )  THEN
    485         write(lunout,*)
    486      &       'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
    487          STOP
    488       ELSE
    489          alphax = 1. - 1./ grossismx
    490       ENDIF
    491 
    492 
    493       IF( grossismy.LT.1. )  THEN
    494         write(lunout,*)
    495      &       'conf_gcm: ***  ATTENTION !! grossismy < 1 .   *** '
    496          STOP
    497       ELSE
    498          alphay = 1. - 1./ grossismy
    499       ENDIF
    500 
    501       write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay
    502 !
    503 !    alphax et alphay sont les anciennes formulat. des grossissements
    504 !
    505 !
    506 
    507 !Config  Key  = fxyhypb
    508 !Config  Desc = Fonction  hyperbolique
    509 !Config  Def  = y
    510 !Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
    511 !Config         sinon  sinusoidale
    512        fxyhypbb = .TRUE.
    513        CALL getin('fxyhypb',fxyhypbb)
    514 
    515       IF( .NOT.fxyhypb )  THEN
    516          IF( fxyhypbb )     THEN
    517             write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
    518             write(lunout,*)' *** fxyhypb lu sur le fichier start est ',
    519      *       'F alors  qu il est  T  sur  run.def  ***'
     468     ENDIF
     469
     470     IF( grossismx.LT.1. )  THEN
     471        write(lunout,*) &
     472             'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
     473        STOP
     474     ELSE
     475        alphax = 1. - 1./ grossismx
     476     ENDIF
     477
     478     IF( grossismy.LT.1. )  THEN
     479        write(lunout,*) &
     480             'conf_gcm: ***  ATTENTION !! grossismy < 1 .   *** '
     481        STOP
     482     ELSE
     483        alphay = 1. - 1./ grossismy
     484     ENDIF
     485
     486     write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay
     487
     488     !    alphax et alphay sont les anciennes formulat. des grossissements
     489
     490     !Config  Key  = fxyhypb
     491     !Config  Desc = Fonction  hyperbolique
     492     !Config  Def  = y
     493     !Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
     494     !Config         sinon  sinusoidale
     495     fxyhypbb = .TRUE.
     496     CALL getin('fxyhypb',fxyhypbb)
     497
     498     IF( .NOT.fxyhypb )  THEN
     499        IF( fxyhypbb )     THEN
     500           write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
     501           write(lunout,*)' *** fxyhypb lu sur le fichier start est ', &
     502                'F alors  qu il est  T  sur  run.def  ***'
     503           STOP
     504        ENDIF
     505     ELSE
     506        IF( .NOT.fxyhypbb )   THEN
     507           write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
     508           write(lunout,*)' ***  fxyhypb lu sur le fichier start est ', &
     509                'T alors  qu il est  F  sur  run.def  ****  '
     510           STOP
     511        ENDIF
     512     ENDIF
     513
     514     !Config  Key  = dzoomx
     515     !Config  Desc = extension en longitude
     516     !Config  Def  = 0
     517     !Config  Help = extension en longitude  de la zone du zoom 
     518     !Config         ( fraction de la zone totale)
     519     dzoomxx = 0.0
     520     CALL getin('dzoomx',dzoomxx)
     521
     522     IF( fxyhypb )  THEN
     523        IF( ABS(dzoomx - dzoomxx).GE. 0.001 )  THEN
     524           write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', &
     525                'run.def est differente de celle lue sur le fichier  start '
     526           STOP
     527        ENDIF
     528     ENDIF
     529
     530     !Config  Key  = dzoomy
     531     !Config  Desc = extension en latitude
     532     !Config  Def  = 0
     533     !Config  Help = extension en latitude de la zone  du zoom 
     534     !Config         ( fraction de la zone totale)
     535     dzoomyy = 0.0
     536     CALL getin('dzoomy',dzoomyy)
     537
     538     IF( fxyhypb )  THEN
     539        IF( ABS(dzoomy - dzoomyy).GE. 0.001 )  THEN
     540           write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', &
     541                'run.def est differente de celle lue sur le fichier  start '
     542           STOP
     543        ENDIF
     544     ENDIF
     545
     546     !Config  Key  = taux
     547     !Config  Desc = raideur du zoom en  X
     548     !Config  Def  = 3
     549     !Config  Help = raideur du zoom en  X
     550     tauxx = 3.0
     551     CALL getin('taux',tauxx)
     552
     553     IF( fxyhypb )  THEN
     554        IF( ABS(taux - tauxx).GE. 0.001 )  THEN
     555           write(lunout,*)'conf_gcm: La valeur de taux passee par ', &
     556                'run.def est differente de celle lue sur le fichier  start '
     557           STOP
     558        ENDIF
     559     ENDIF
     560
     561     !Config  Key  = tauyy
     562     !Config  Desc = raideur du zoom en  Y
     563     !Config  Def  = 3
     564     !Config  Help = raideur du zoom en  Y
     565     tauyy = 3.0
     566     CALL getin('tauy',tauyy)
     567
     568     IF( fxyhypb )  THEN
     569        IF( ABS(tauy - tauyy).GE. 0.001 )  THEN
     570           write(lunout,*)'conf_gcm: La valeur de tauy passee par ', &
     571                'run.def est differente de celle lue sur le fichier  start '
     572           STOP
     573        ENDIF
     574     ENDIF
     575
     576     !c
     577     IF( .NOT.fxyhypb  )  THEN
     578
     579        !Config  Key  = ysinus
     580        !Config  IF   = !fxyhypb
     581        !Config  Desc = Fonction en Sinus
     582        !Config  Def  = y
     583        !Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
     584        !Config         sinon y = latit.
     585        ysinuss = .TRUE.
     586        CALL getin('ysinus',ysinuss)
     587
     588        IF( .NOT.ysinus )  THEN
     589           IF( ysinuss )     THEN
     590              write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
     591              write(lunout,*)' *** ysinus lu sur le fichier start est F', &
     592                   ' alors  qu il est  T  sur  run.def  ***'
    520593              STOP
    521          ENDIF
    522       ELSE
    523          IF( .NOT.fxyhypbb )   THEN
    524             write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
    525             write(lunout,*)' ***  fxyhypb lu sur le fichier start est ',
    526      *        'T alors  qu il est  F  sur  run.def  ****  '
     594           ENDIF
     595        ELSE
     596           IF( .NOT.ysinuss )   THEN
     597              write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
     598              write(lunout,*)' *** ysinus lu sur le fichier start est T', &
     599                   ' alors  qu il est  F  sur  run.def  ****  '
    527600              STOP
    528          ENDIF
    529       ENDIF
    530 !
    531 !Config  Key  = dzoomx
    532 !Config  Desc = extension en longitude
    533 !Config  Def  = 0
    534 !Config  Help = extension en longitude  de la zone du zoom 
    535 !Config         ( fraction de la zone totale)
    536        dzoomxx = 0.0
    537        CALL getin('dzoomx',dzoomxx)
    538 
    539       IF( fxyhypb )  THEN
    540        IF( ABS(dzoomx - dzoomxx).GE. 0.001 )  THEN
    541         write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ',
    542      *  'run.def est differente de celle lue sur le fichier  start '
     601           ENDIF
     602        ENDIF
     603     ENDIF ! of IF( .NOT.fxyhypb  )
     604
     605     !Config  Key  = offline
     606     !Config  Desc = Nouvelle eau liquide
     607     !Config  Def  = n
     608     !Config  Help = Permet de mettre en route la
     609     !Config         nouvelle parametrisation de l'eau liquide !
     610     offline = .FALSE.
     611     CALL getin('offline',offline)
     612     IF (offline .AND. adjust) THEN
     613        WRITE(lunout,*)  &
     614             'WARNING : option offline does not work with adjust=y :'
     615        WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ',  &
     616             'and fluxstokev.nc will not be created'
     617        WRITE(lunout,*)  &
     618             'only the file phystoke.nc will still be created '
     619     END IF
     620
     621     !Config  Key  = type_trac
     622     !Config  Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
     623     !Config  Def  = lmdz
     624     !Config  Help =
     625     !Config         'lmdz' = pas de couplage, pur LMDZ
     626     !Config         'inca' = model de chime INCA
     627     !Config         'repr' = model de chime REPROBUS
     628     type_trac = 'lmdz'
     629     CALL getin('type_trac',type_trac)
     630
     631     !Config  Key  = config_inca
     632     !Config  Desc = Choix de configuration de INCA
     633     !Config  Def  = none
     634     !Config  Help = Choix de configuration de INCA :
     635     !Config         'none' = sans INCA
     636     !Config         'chem' = INCA avec calcul de chemie
     637     !Config         'aero' = INCA avec calcul des aerosols
     638     config_inca = 'none'
     639     CALL getin('config_inca',config_inca)
     640
     641     !Config  Key  = ok_dynzon
     642     !Config  Desc = calcul et sortie des transports
     643     !Config  Def  = n
     644     !Config  Help = Permet de mettre en route le calcul des transports
     645     !Config         
     646     ok_dynzon = .FALSE.
     647     CALL getin('ok_dynzon',ok_dynzon)
     648
     649     !Config  Key  = ok_dyn_ins
     650     !Config  Desc = sorties instantanees dans la dynamique
     651     !Config  Def  = n
     652     !Config  Help =
     653     !Config         
     654     ok_dyn_ins = .FALSE.
     655     CALL getin('ok_dyn_ins',ok_dyn_ins)
     656
     657     !Config  Key  = ok_dyn_ave
     658     !Config  Desc = sorties moyennes dans la dynamique
     659     !Config  Def  = n
     660     !Config  Help =
     661     !Config         
     662     ok_dyn_ave = .FALSE.
     663     CALL getin('ok_dyn_ave',ok_dyn_ave)
     664
     665     write(lunout,*)' #########################################'
     666     write(lunout,*)' Configuration des parametres du gcm: '
     667     write(lunout,*)' planet_type = ', planet_type
     668     write(lunout,*)' calend = ', calend
     669     write(lunout,*)' dayref = ', dayref
     670     write(lunout,*)' anneeref = ', anneeref
     671     write(lunout,*)' nday = ', nday
     672     write(lunout,*)' day_step = ', day_step
     673     write(lunout,*)' iperiod = ', iperiod
     674     write(lunout,*)' nsplit_phys = ', nsplit_phys
     675     write(lunout,*)' iconser = ', iconser
     676     write(lunout,*)' iecri = ', iecri
     677     write(lunout,*)' periodav = ', periodav
     678     write(lunout,*)' output_grads_dyn = ', output_grads_dyn
     679     write(lunout,*)' dissip_period = ', dissip_period
     680     write(lunout,*)' lstardis = ', lstardis
     681     write(lunout,*)' nitergdiv = ', nitergdiv
     682     write(lunout,*)' nitergrot = ', nitergrot
     683     write(lunout,*)' niterh = ', niterh
     684     write(lunout,*)' tetagdiv = ', tetagdiv
     685     write(lunout,*)' tetagrot = ', tetagrot
     686     write(lunout,*)' tetatemp = ', tetatemp
     687     write(lunout,*)' coefdis = ', coefdis
     688     write(lunout,*)' purmats = ', purmats
     689     write(lunout,*)' read_start = ', read_start
     690     write(lunout,*)' iflag_phys = ', iflag_phys
     691     write(lunout,*)' iphysiq = ', iphysiq
     692     write(lunout,*)' clonn = ', clonn
     693     write(lunout,*)' clatt = ', clatt
     694     write(lunout,*)' grossismx = ', grossismx
     695     write(lunout,*)' grossismy = ', grossismy
     696     write(lunout,*)' fxyhypbb = ', fxyhypbb
     697     write(lunout,*)' dzoomxx = ', dzoomxx
     698     write(lunout,*)' dzoomy = ', dzoomyy
     699     write(lunout,*)' tauxx = ', tauxx
     700     write(lunout,*)' tauyy = ', tauyy
     701     write(lunout,*)' offline = ', offline
     702     write(lunout,*)' type_trac = ', type_trac
     703     write(lunout,*)' config_inca = ', config_inca
     704     write(lunout,*)' ok_dynzon = ', ok_dynzon
     705     write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
     706     write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
     707  else
     708     !Config  Key  = clon
     709     !Config  Desc = centre du zoom, longitude
     710     !Config  Def  = 0
     711     !Config  Help = longitude en degres du centre
     712     !Config         du zoom
     713     clon = 0.
     714     CALL getin('clon',clon)
     715
     716     !Config  Key  = clat
     717     !Config  Desc = centre du zoom, latitude
     718     !Config  Def  = 0
     719     !Config  Help = latitude en degres du centre du zoom
     720     !Config         
     721     clat = 0.
     722     CALL getin('clat',clat)
     723
     724     !Config  Key  = grossismx
     725     !Config  Desc = zoom en longitude
     726     !Config  Def  = 1.0
     727     !Config  Help = facteur de grossissement du zoom,
     728     !Config         selon la longitude
     729     grossismx = 1.0
     730     CALL getin('grossismx',grossismx)
     731
     732     !Config  Key  = grossismy
     733     !Config  Desc = zoom en latitude
     734     !Config  Def  = 1.0
     735     !Config  Help = facteur de grossissement du zoom,
     736     !Config         selon la latitude
     737     grossismy = 1.0
     738     CALL getin('grossismy',grossismy)
     739
     740     IF( grossismx.LT.1. )  THEN
     741        write(lunout,*) &
     742             'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
    543743        STOP
    544        ENDIF
    545       ENDIF
    546 
    547 !Config  Key  = dzoomy
    548 !Config  Desc = extension en latitude
    549 !Config  Def  = 0
    550 !Config  Help = extension en latitude de la zone  du zoom 
    551 !Config         ( fraction de la zone totale)
    552        dzoomyy = 0.0
    553        CALL getin('dzoomy',dzoomyy)
    554 
    555       IF( fxyhypb )  THEN
    556        IF( ABS(dzoomy - dzoomyy).GE. 0.001 )  THEN
    557         write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ',
    558      * 'run.def est differente de celle lue sur le fichier  start '
     744     ELSE
     745        alphax = 1. - 1./ grossismx
     746     ENDIF
     747
     748     IF( grossismy.LT.1. )  THEN
     749        write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** '
    559750        STOP
    560        ENDIF
    561       ENDIF
    562      
    563 !Config  Key  = taux
    564 !Config  Desc = raideur du zoom en  X
    565 !Config  Def  = 3
    566 !Config  Help = raideur du zoom en  X
    567        tauxx = 3.0
    568        CALL getin('taux',tauxx)
    569 
    570       IF( fxyhypb )  THEN
    571        IF( ABS(taux - tauxx).GE. 0.001 )  THEN
    572         write(lunout,*)'conf_gcm: La valeur de taux passee par ',
    573      * 'run.def est differente de celle lue sur le fichier  start '
    574         STOP
    575        ENDIF
    576       ENDIF
    577 
    578 !Config  Key  = tauyy
    579 !Config  Desc = raideur du zoom en  Y
    580 !Config  Def  = 3
    581 !Config  Help = raideur du zoom en  Y
    582        tauyy = 3.0
    583        CALL getin('tauy',tauyy)
    584 
    585       IF( fxyhypb )  THEN
    586        IF( ABS(tauy - tauyy).GE. 0.001 )  THEN
    587         write(lunout,*)'conf_gcm: La valeur de tauy passee par ',
    588      * 'run.def est differente de celle lue sur le fichier  start '
    589         STOP
    590        ENDIF
    591       ENDIF
    592 
    593 !c
    594       IF( .NOT.fxyhypb  )  THEN
    595 
    596 !Config  Key  = ysinus
    597 !Config  IF   = !fxyhypb
    598 !Config  Desc = Fonction en Sinus
    599 !Config  Def  = y
    600 !Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
    601 !Config         sinon y = latit.
    602        ysinuss = .TRUE.
    603        CALL getin('ysinus',ysinuss)
    604 
    605         IF( .NOT.ysinus )  THEN
    606           IF( ysinuss )     THEN
    607             write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
    608             write(lunout,*)' *** ysinus lu sur le fichier start est F',
    609      *       ' alors  qu il est  T  sur  run.def  ***'
    610             STOP
    611           ENDIF
    612         ELSE
    613           IF( .NOT.ysinuss )   THEN
    614             write(lunout,*)' ********  PBS DANS  CONF_GCM  ******** '
    615             write(lunout,*)' *** ysinus lu sur le fichier start est T',
    616      *        ' alors  qu il est  F  sur  run.def  ****  '
    617               STOP
    618           ENDIF
    619         ENDIF
    620       ENDIF ! of IF( .NOT.fxyhypb  )
    621 !
    622 !Config  Key  = offline
    623 !Config  Desc = Nouvelle eau liquide
    624 !Config  Def  = n
    625 !Config  Help = Permet de mettre en route la
    626 !Config         nouvelle parametrisation de l'eau liquide !
    627        offline = .FALSE.
    628        CALL getin('offline',offline)
    629        IF (offline .AND. adjust) THEN
    630           WRITE(lunout,*)
    631      &         'WARNING : option offline does not work with adjust=y :'
    632           WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ',
    633      &         'and fluxstokev.nc will not be created'
    634           WRITE(lunout,*)
    635      &         'only the file phystoke.nc will still be created '
    636        END IF
    637        
    638 !Config  Key  = type_trac
    639 !Config  Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
    640 !Config  Def  = lmdz
    641 !Config  Help =
    642 !Config         'lmdz' = pas de couplage, pur LMDZ
    643 !Config         'inca' = model de chime INCA
    644 !Config         'repr' = model de chime REPROBUS
    645       type_trac = 'lmdz'
    646       CALL getin('type_trac',type_trac)
    647 
    648 !Config  Key  = config_inca
    649 !Config  Desc = Choix de configuration de INCA
    650 !Config  Def  = none
    651 !Config  Help = Choix de configuration de INCA :
    652 !Config         'none' = sans INCA
    653 !Config         'chem' = INCA avec calcul de chemie
    654 !Config         'aero' = INCA avec calcul des aerosols
    655       config_inca = 'none'
    656       CALL getin('config_inca',config_inca)
    657 
    658 !Config  Key  = ok_dynzon
    659 !Config  Desc = calcul et sortie des transports
    660 !Config  Def  = n
    661 !Config  Help = Permet de mettre en route le calcul des transports
    662 !Config         
    663       ok_dynzon = .FALSE.
    664       CALL getin('ok_dynzon',ok_dynzon)
    665 
    666 !Config  Key  = ok_dyn_ins
    667 !Config  Desc = sorties instantanees dans la dynamique
    668 !Config  Def  = n
    669 !Config  Help =
    670 !Config         
    671       ok_dyn_ins = .FALSE.
    672       CALL getin('ok_dyn_ins',ok_dyn_ins)
    673 
    674 !Config  Key  = ok_dyn_ave
    675 !Config  Desc = sorties moyennes dans la dynamique
    676 !Config  Def  = n
    677 !Config  Help =
    678 !Config         
    679       ok_dyn_ave = .FALSE.
    680       CALL getin('ok_dyn_ave',ok_dyn_ave)
    681 
    682       write(lunout,*)' #########################################'
    683       write(lunout,*)' Configuration des parametres du gcm: '
    684       write(lunout,*)' planet_type = ', planet_type
    685       write(lunout,*)' calend = ', calend
    686       write(lunout,*)' dayref = ', dayref
    687       write(lunout,*)' anneeref = ', anneeref
    688       write(lunout,*)' nday = ', nday
    689       write(lunout,*)' day_step = ', day_step
    690       write(lunout,*)' iperiod = ', iperiod
    691       write(lunout,*)' nsplit_phys = ', nsplit_phys
    692       write(lunout,*)' iconser = ', iconser
    693       write(lunout,*)' iecri = ', iecri
    694       write(lunout,*)' periodav = ', periodav
    695       write(lunout,*)' output_grads_dyn = ', output_grads_dyn
    696       write(lunout,*)' dissip_period = ', dissip_period
    697       write(lunout,*)' lstardis = ', lstardis
    698       write(lunout,*)' nitergdiv = ', nitergdiv
    699       write(lunout,*)' nitergrot = ', nitergrot
    700       write(lunout,*)' niterh = ', niterh
    701       write(lunout,*)' tetagdiv = ', tetagdiv
    702       write(lunout,*)' tetagrot = ', tetagrot
    703       write(lunout,*)' tetatemp = ', tetatemp
    704       write(lunout,*)' coefdis = ', coefdis
    705       write(lunout,*)' purmats = ', purmats
    706       write(lunout,*)' read_start = ', read_start
    707       write(lunout,*)' iflag_phys = ', iflag_phys
    708       write(lunout,*)' iphysiq = ', iphysiq
    709       write(lunout,*)' clonn = ', clonn
    710       write(lunout,*)' clatt = ', clatt
    711       write(lunout,*)' grossismx = ', grossismx
    712       write(lunout,*)' grossismy = ', grossismy
    713       write(lunout,*)' fxyhypbb = ', fxyhypbb
    714       write(lunout,*)' dzoomxx = ', dzoomxx
    715       write(lunout,*)' dzoomy = ', dzoomyy
    716       write(lunout,*)' tauxx = ', tauxx
    717       write(lunout,*)' tauyy = ', tauyy
    718       write(lunout,*)' offline = ', offline
    719       write(lunout,*)' type_trac = ', type_trac
    720       write(lunout,*)' config_inca = ', config_inca
    721       write(lunout,*)' ok_dynzon = ', ok_dynzon
    722       write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
    723       write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
    724 
    725       RETURN
    726 !   ...............................................
    727 !
    728 100   CONTINUE
    729 !Config  Key  = clon
    730 !Config  Desc = centre du zoom, longitude
    731 !Config  Def  = 0
    732 !Config  Help = longitude en degres du centre
    733 !Config         du zoom
    734        clon = 0.
    735        CALL getin('clon',clon)
    736 
    737 !Config  Key  = clat
    738 !Config  Desc = centre du zoom, latitude
    739 !Config  Def  = 0
    740 !Config  Help = latitude en degres du centre du zoom
    741 !Config         
    742        clat = 0.
    743        CALL getin('clat',clat)
    744 
    745 !Config  Key  = grossismx
    746 !Config  Desc = zoom en longitude
    747 !Config  Def  = 1.0
    748 !Config  Help = facteur de grossissement du zoom,
    749 !Config         selon la longitude
    750        grossismx = 1.0
    751        CALL getin('grossismx',grossismx)
    752 
    753 !Config  Key  = grossismy
    754 !Config  Desc = zoom en latitude
    755 !Config  Def  = 1.0
    756 !Config  Help = facteur de grossissement du zoom,
    757 !Config         selon la latitude
    758        grossismy = 1.0
    759        CALL getin('grossismy',grossismy)
    760 
    761       IF( grossismx.LT.1. )  THEN
    762         write(lunout,*)
    763      &   'conf_gcm: ***  ATTENTION !! grossismx < 1 .   *** '
    764          STOP
    765       ELSE
    766          alphax = 1. - 1./ grossismx
    767       ENDIF
    768 
    769 
    770       IF( grossismy.LT.1. )  THEN
    771         write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** '
    772          STOP
    773       ELSE
    774          alphay = 1. - 1./ grossismy
    775       ENDIF
    776 
    777       write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay
    778 !
    779 !    alphax et alphay sont les anciennes formulat. des grossissements
    780 !
    781 !
    782 
    783 !Config  Key  = fxyhypb
    784 !Config  Desc = Fonction  hyperbolique
    785 !Config  Def  = y
    786 !Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
    787 !Config         sinon  sinusoidale
    788        fxyhypb = .TRUE.
    789        CALL getin('fxyhypb',fxyhypb)
    790 
    791 !Config  Key  = dzoomx
    792 !Config  Desc = extension en longitude
    793 !Config  Def  = 0
    794 !Config  Help = extension en longitude  de la zone du zoom 
    795 !Config         ( fraction de la zone totale)
    796        dzoomx = 0.0
    797        CALL getin('dzoomx',dzoomx)
    798 
    799 !Config  Key  = dzoomy
    800 !Config  Desc = extension en latitude
    801 !Config  Def  = 0
    802 !Config  Help = extension en latitude de la zone  du zoom 
    803 !Config         ( fraction de la zone totale)
    804        dzoomy = 0.0
    805        CALL getin('dzoomy',dzoomy)
    806 
    807 !Config  Key  = taux
    808 !Config  Desc = raideur du zoom en  X
    809 !Config  Def  = 3
    810 !Config  Help = raideur du zoom en  X
    811        taux = 3.0
    812        CALL getin('taux',taux)
    813 
    814 !Config  Key  = tauy
    815 !Config  Desc = raideur du zoom en  Y
    816 !Config  Def  = 3
    817 !Config  Help = raideur du zoom en  Y
    818        tauy = 3.0
    819        CALL getin('tauy',tauy)
    820 
    821 !Config  Key  = ysinus
    822 !Config  IF   = !fxyhypb
    823 !Config  Desc = Fonction en Sinus
    824 !Config  Def  = y
    825 !Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
    826 !Config         sinon y = latit.
    827        ysinus = .TRUE.
    828        CALL getin('ysinus',ysinus)
    829 !
    830 !Config  Key  = offline
    831 !Config  Desc = Nouvelle eau liquide
    832 !Config  Def  = n
    833 !Config  Help = Permet de mettre en route la
    834 !Config         nouvelle parametrisation de l'eau liquide !
    835        offline = .FALSE.
    836        CALL getin('offline',offline)
    837        IF (offline .AND. adjust) THEN
    838           WRITE(lunout,*)
    839      &         'WARNING : option offline does not work with adjust=y :'
    840           WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ',
    841      &         'and fluxstokev.nc will not be created'
    842           WRITE(lunout,*)
    843      &         'only the file phystoke.nc will still be created '
    844        END IF
    845 
    846 !Config  Key  = type_trac
    847 !Config  Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
    848 !Config  Def  = lmdz
    849 !Config  Help =
    850 !Config         'lmdz' = pas de couplage, pur LMDZ
    851 !Config         'inca' = model de chime INCA
    852 !Config         'repr' = model de chime REPROBUS
    853       type_trac = 'lmdz'
    854       CALL getin('type_trac',type_trac)
    855 
    856 !Config  Key  = config_inca
    857 !Config  Desc = Choix de configuration de INCA
    858 !Config  Def  = none
    859 !Config  Help = Choix de configuration de INCA :
    860 !Config         'none' = sans INCA
    861 !Config         'chem' = INCA avec calcul de chemie
    862 !Config         'aero' = INCA avec calcul des aerosols
    863       config_inca = 'none'
    864       CALL getin('config_inca',config_inca)
    865 
    866 !Config  Key  = ok_dynzon
    867 !Config  Desc = sortie des transports zonaux dans la dynamique
    868 !Config  Def  = n
    869 !Config  Help = Permet de mettre en route le calcul des transports
    870 !Config         
    871       ok_dynzon = .FALSE.
    872       CALL getin('ok_dynzon',ok_dynzon)
    873 
    874 !Config  Key  = ok_dyn_ins
    875 !Config  Desc = sorties instantanees dans la dynamique
    876 !Config  Def  = n
    877 !Config  Help =
    878 !Config         
    879       ok_dyn_ins = .FALSE.
    880       CALL getin('ok_dyn_ins',ok_dyn_ins)
    881 
    882 !Config  Key  = ok_dyn_ave
    883 !Config  Desc = sorties moyennes dans la dynamique
    884 !Config  Def  = n
    885 !Config  Help =
    886 !Config         
    887       ok_dyn_ave = .FALSE.
    888       CALL getin('ok_dyn_ave',ok_dyn_ave)
    889 
    890 !Config  Key  = use_filtre_fft
    891 !Config  Desc = flag d'activation des FFT pour le filtre
    892 !Config  Def  = false
    893 !Config  Help = permet d'activer l'utilisation des FFT pour effectuer
    894 !Config         le filtrage aux poles.
    895       use_filtre_fft=.FALSE.
    896       CALL getin('use_filtre_fft',use_filtre_fft)
    897 
    898       IF (use_filtre_fft .AND. grossismx /= 1.0) THEN
     751     ELSE
     752        alphay = 1. - 1./ grossismy
     753     ENDIF
     754
     755     write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay
     756
     757     !    alphax et alphay sont les anciennes formulat. des grossissements
     758
     759     !Config  Key  = fxyhypb
     760     !Config  Desc = Fonction  hyperbolique
     761     !Config  Def  = y
     762     !Config  Help = Fonction  f(y)  hyperbolique  si = .true. 
     763     !Config         sinon  sinusoidale
     764     fxyhypb = .TRUE.
     765     CALL getin('fxyhypb',fxyhypb)
     766
     767     !Config  Key  = dzoomx
     768     !Config  Desc = extension en longitude
     769     !Config  Def  = 0
     770     !Config  Help = extension en longitude  de la zone du zoom 
     771     !Config         ( fraction de la zone totale)
     772     dzoomx = 0.0
     773     CALL getin('dzoomx',dzoomx)
     774
     775     !Config  Key  = dzoomy
     776     !Config  Desc = extension en latitude
     777     !Config  Def  = 0
     778     !Config  Help = extension en latitude de la zone  du zoom 
     779     !Config         ( fraction de la zone totale)
     780     dzoomy = 0.0
     781     CALL getin('dzoomy',dzoomy)
     782
     783     !Config  Key  = taux
     784     !Config  Desc = raideur du zoom en  X
     785     !Config  Def  = 3
     786     !Config  Help = raideur du zoom en  X
     787     taux = 3.0
     788     CALL getin('taux',taux)
     789
     790     !Config  Key  = tauy
     791     !Config  Desc = raideur du zoom en  Y
     792     !Config  Def  = 3
     793     !Config  Help = raideur du zoom en  Y
     794     tauy = 3.0
     795     CALL getin('tauy',tauy)
     796
     797     !Config  Key  = ysinus
     798     !Config  IF   = !fxyhypb
     799     !Config  Desc = Fonction en Sinus
     800     !Config  Def  = y
     801     !Config  Help = Fonction  f(y) avec y = Sin(latit.) si = .true.
     802     !Config         sinon y = latit.
     803     ysinus = .TRUE.
     804     CALL getin('ysinus',ysinus)
     805
     806     !Config  Key  = offline
     807     !Config  Desc = Nouvelle eau liquide
     808     !Config  Def  = n
     809     !Config  Help = Permet de mettre en route la
     810     !Config         nouvelle parametrisation de l'eau liquide !
     811     offline = .FALSE.
     812     CALL getin('offline',offline)
     813     IF (offline .AND. adjust) THEN
     814        WRITE(lunout,*)  &
     815             'WARNING : option offline does not work with adjust=y :'
     816        WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ',  &
     817             'and fluxstokev.nc will not be created'
     818        WRITE(lunout,*)  &
     819             'only the file phystoke.nc will still be created '
     820     END IF
     821
     822     !Config  Key  = type_trac
     823     !Config  Desc = Choix de couplage avec model de chimie INCA ou REPROBUS
     824     !Config  Def  = lmdz
     825     !Config  Help =
     826     !Config         'lmdz' = pas de couplage, pur LMDZ
     827     !Config         'inca' = model de chime INCA
     828     !Config         'repr' = model de chime REPROBUS
     829     type_trac = 'lmdz'
     830     CALL getin('type_trac',type_trac)
     831
     832     !Config  Key  = config_inca
     833     !Config  Desc = Choix de configuration de INCA
     834     !Config  Def  = none
     835     !Config  Help = Choix de configuration de INCA :
     836     !Config         'none' = sans INCA
     837     !Config         'chem' = INCA avec calcul de chemie
     838     !Config         'aero' = INCA avec calcul des aerosols
     839     config_inca = 'none'
     840     CALL getin('config_inca',config_inca)
     841
     842     !Config  Key  = ok_dynzon
     843     !Config  Desc = sortie des transports zonaux dans la dynamique
     844     !Config  Def  = n
     845     !Config  Help = Permet de mettre en route le calcul des transports
     846     !Config         
     847     ok_dynzon = .FALSE.
     848     CALL getin('ok_dynzon',ok_dynzon)
     849
     850     !Config  Key  = ok_dyn_ins
     851     !Config  Desc = sorties instantanees dans la dynamique
     852     !Config  Def  = n
     853     !Config  Help =
     854     !Config         
     855     ok_dyn_ins = .FALSE.
     856     CALL getin('ok_dyn_ins',ok_dyn_ins)
     857
     858     !Config  Key  = ok_dyn_ave
     859     !Config  Desc = sorties moyennes dans la dynamique
     860     !Config  Def  = n
     861     !Config  Help =
     862     !Config         
     863     ok_dyn_ave = .FALSE.
     864     CALL getin('ok_dyn_ave',ok_dyn_ave)
     865
     866     !Config  Key  = use_filtre_fft
     867     !Config  Desc = flag d'activation des FFT pour le filtre
     868     !Config  Def  = false
     869     !Config  Help = permet d'activer l'utilisation des FFT pour effectuer
     870     !Config         le filtrage aux poles.
     871     use_filtre_fft=.FALSE.
     872     CALL getin('use_filtre_fft',use_filtre_fft)
     873
     874     IF (use_filtre_fft .AND. grossismx /= 1.0) THEN
    899875        write(lunout,*)'WARNING !!! '
    900         write(lunout,*)"Le zoom en longitude est incompatible",
    901      &                 " avec l'utilisation du filtre FFT ",
    902      &                 "---> FFT filter not active"
    903        use_filtre_fft=.FALSE.
    904       ENDIF
    905      
    906  
    907      
    908 !Config  Key  = use_mpi_alloc
    909 !Config  Desc = Utilise un buffer MPI en m�moire globale
    910 !Config  Def  = false
    911 !Config  Help = permet d'activer l'utilisation d'un buffer MPI
    912 !Config         en m�moire globale a l'aide de la fonction MPI_ALLOC.
    913 !Config         Cela peut am�liorer la bande passante des transferts MPI
    914 !Config         d'un facteur 2 
    915       use_mpi_alloc=.FALSE.
    916       CALL getin('use_mpi_alloc',use_mpi_alloc)
    917 
    918 !Config key = ok_strato
    919 !Config  Desc = activation de la version strato
    920 !Config  Def  = .FALSE.
    921 !Config  Help = active la version stratosphérique de LMDZ de F. Lott
    922 
    923       ok_strato=.FALSE.
    924       CALL getin('ok_strato',ok_strato)
    925 
    926       vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39)
    927       CALL getin('vert_prof_dissip', vert_prof_dissip)
    928       call assert(vert_prof_dissip == 0 .or. vert_prof_dissip ==  1,
    929      $     "bad value for vert_prof_dissip")
    930 
    931 !Config  Key  = ok_gradsfile
    932 !Config  Desc = activation des sorties grads du guidage
    933 !Config  Def  = n
    934 !Config  Help = active les sorties grads du guidage
    935 
    936        ok_gradsfile = .FALSE.
    937        CALL getin('ok_gradsfile',ok_gradsfile)
    938 
    939 !Config  Key  = ok_limit
    940 !Config  Desc = creation des fichiers limit dans create_etat0_limit
    941 !Config  Def  = y
    942 !Config  Help = production du fichier limit.nc requise
    943 
    944        ok_limit = .TRUE.
    945        CALL getin('ok_limit',ok_limit)
    946 
    947 !Config  Key  = ok_etat0
    948 !Config  Desc = creation des fichiers etat0 dans create_etat0_limit
    949 !Config  Def  = y
    950 !Config  Help = production des fichiers start.nc, startphy.nc requise
    951 
    952       ok_etat0 = .TRUE.
    953       CALL getin('ok_etat0',ok_etat0)
    954 
    955       write(lunout,*)' #########################################'
    956       write(lunout,*)' Configuration des parametres de cel0'
    957      &             //'_limit: '
    958       write(lunout,*)' planet_type = ', planet_type
    959       write(lunout,*)' calend = ', calend
    960       write(lunout,*)' dayref = ', dayref
    961       write(lunout,*)' anneeref = ', anneeref
    962       write(lunout,*)' nday = ', nday
    963       write(lunout,*)' day_step = ', day_step
    964       write(lunout,*)' iperiod = ', iperiod
    965       write(lunout,*)' iconser = ', iconser
    966       write(lunout,*)' iecri = ', iecri
    967       write(lunout,*)' periodav = ', periodav
    968       write(lunout,*)' output_grads_dyn = ', output_grads_dyn
    969       write(lunout,*)' dissip_period = ', dissip_period
    970       write(lunout,*)' lstardis = ', lstardis
    971       write(lunout,*)' nitergdiv = ', nitergdiv
    972       write(lunout,*)' nitergrot = ', nitergrot
    973       write(lunout,*)' niterh = ', niterh
    974       write(lunout,*)' tetagdiv = ', tetagdiv
    975       write(lunout,*)' tetagrot = ', tetagrot
    976       write(lunout,*)' tetatemp = ', tetatemp
    977       write(lunout,*)' coefdis = ', coefdis
    978       write(lunout,*)' purmats = ', purmats
    979       write(lunout,*)' read_start = ', read_start
    980       write(lunout,*)' iflag_phys = ', iflag_phys
    981       write(lunout,*)' iphysiq = ', iphysiq
    982       write(lunout,*)' clon = ', clon
    983       write(lunout,*)' clat = ', clat
    984       write(lunout,*)' grossismx = ', grossismx
    985       write(lunout,*)' grossismy = ', grossismy
    986       write(lunout,*)' fxyhypb = ', fxyhypb
    987       write(lunout,*)' dzoomx = ', dzoomx
    988       write(lunout,*)' dzoomy = ', dzoomy
    989       write(lunout,*)' taux = ', taux
    990       write(lunout,*)' tauy = ', tauy
    991       write(lunout,*)' offline = ', offline
    992       write(lunout,*)' type_trac = ', type_trac
    993       write(lunout,*)' config_inca = ', config_inca
    994       write(lunout,*)' ok_dynzon = ', ok_dynzon
    995       write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
    996       write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
    997       write(lunout,*)' use_filtre_fft = ', use_filtre_fft
    998       write(lunout,*)' use_mpi_alloc = ', use_mpi_alloc
    999       write(lunout,*)' ok_strato = ', ok_strato
    1000       write(lunout,*)' ok_gradsfile = ', ok_gradsfile
    1001       write(lunout,*)' ok_limit = ', ok_limit
    1002       write(lunout,*)' ok_etat0 = ', ok_etat0
    1003 !
    1004       RETURN
    1005       END
     876        write(lunout,*)"Le zoom en longitude est incompatible", &
     877             " avec l'utilisation du filtre FFT ", &
     878             "---> FFT filter not active"
     879        use_filtre_fft=.FALSE.
     880     ENDIF
     881
     882     !Config  Key  = use_mpi_alloc
     883     !Config  Desc = Utilise un buffer MPI en m�moire globale
     884     !Config  Def  = false
     885     !Config  Help = permet d'activer l'utilisation d'un buffer MPI
     886     !Config         en m�moire globale a l'aide de la fonction MPI_ALLOC.
     887     !Config         Cela peut am�liorer la bande passante des transferts MPI
     888     !Config         d'un facteur 2 
     889     use_mpi_alloc=.FALSE.
     890     CALL getin('use_mpi_alloc',use_mpi_alloc)
     891
     892     !Config key = ok_strato
     893     !Config  Desc = activation de la version strato
     894     !Config  Def  = .FALSE.
     895     !Config  Help = active la version stratosphérique de LMDZ de F. Lott
     896
     897     ok_strato=.FALSE.
     898     CALL getin('ok_strato',ok_strato)
     899
     900     vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39)
     901     CALL getin('vert_prof_dissip', vert_prof_dissip)
     902     call assert(vert_prof_dissip == 0 .or. vert_prof_dissip ==  1, &
     903          "bad value for vert_prof_dissip")
     904
     905     !Config  Key  = ok_gradsfile
     906     !Config  Desc = activation des sorties grads du guidage
     907     !Config  Def  = n
     908     !Config  Help = active les sorties grads du guidage
     909
     910     ok_gradsfile = .FALSE.
     911     CALL getin('ok_gradsfile',ok_gradsfile)
     912
     913     !Config  Key  = ok_limit
     914     !Config  Desc = creation des fichiers limit dans create_etat0_limit
     915     !Config  Def  = y
     916     !Config  Help = production du fichier limit.nc requise
     917
     918     ok_limit = .TRUE.
     919     CALL getin('ok_limit',ok_limit)
     920
     921     !Config  Key  = ok_etat0
     922     !Config  Desc = creation des fichiers etat0 dans create_etat0_limit
     923     !Config  Def  = y
     924     !Config  Help = production des fichiers start.nc, startphy.nc requise
     925
     926     ok_etat0 = .TRUE.
     927     CALL getin('ok_etat0',ok_etat0)
     928
     929     write(lunout,*)' #########################################'
     930     write(lunout,*)' Configuration des parametres de cel0' &
     931          //'_limit: '
     932     write(lunout,*)' planet_type = ', planet_type
     933     write(lunout,*)' calend = ', calend
     934     write(lunout,*)' dayref = ', dayref
     935     write(lunout,*)' anneeref = ', anneeref
     936     write(lunout,*)' nday = ', nday
     937     write(lunout,*)' day_step = ', day_step
     938     write(lunout,*)' iperiod = ', iperiod
     939     write(lunout,*)' iconser = ', iconser
     940     write(lunout,*)' iecri = ', iecri
     941     write(lunout,*)' periodav = ', periodav
     942     write(lunout,*)' output_grads_dyn = ', output_grads_dyn
     943     write(lunout,*)' dissip_period = ', dissip_period
     944     write(lunout,*)' lstardis = ', lstardis
     945     write(lunout,*)' nitergdiv = ', nitergdiv
     946     write(lunout,*)' nitergrot = ', nitergrot
     947     write(lunout,*)' niterh = ', niterh
     948     write(lunout,*)' tetagdiv = ', tetagdiv
     949     write(lunout,*)' tetagrot = ', tetagrot
     950     write(lunout,*)' tetatemp = ', tetatemp
     951     write(lunout,*)' coefdis = ', coefdis
     952     write(lunout,*)' purmats = ', purmats
     953     write(lunout,*)' read_start = ', read_start
     954     write(lunout,*)' iflag_phys = ', iflag_phys
     955     write(lunout,*)' iphysiq = ', iphysiq
     956     write(lunout,*)' clon = ', clon
     957     write(lunout,*)' clat = ', clat
     958     write(lunout,*)' grossismx = ', grossismx
     959     write(lunout,*)' grossismy = ', grossismy
     960     write(lunout,*)' fxyhypb = ', fxyhypb
     961     write(lunout,*)' dzoomx = ', dzoomx
     962     write(lunout,*)' dzoomy = ', dzoomy
     963     write(lunout,*)' taux = ', taux
     964     write(lunout,*)' tauy = ', tauy
     965     write(lunout,*)' offline = ', offline
     966     write(lunout,*)' type_trac = ', type_trac
     967     write(lunout,*)' config_inca = ', config_inca
     968     write(lunout,*)' ok_dynzon = ', ok_dynzon
     969     write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins
     970     write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave
     971     write(lunout,*)' use_filtre_fft = ', use_filtre_fft
     972     write(lunout,*)' use_mpi_alloc = ', use_mpi_alloc
     973     write(lunout,*)' ok_strato = ', ok_strato
     974     write(lunout,*)' ok_gradsfile = ', ok_gradsfile
     975     write(lunout,*)' ok_limit = ', ok_limit
     976     write(lunout,*)' ok_etat0 = ', ok_etat0
     977  end IF test_etatinit
     978
     979END SUBROUTINE conf_gcm
Note: See TracChangeset for help on using the changeset viewer.