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.

File:
1 copied

Legend:

Unmodified
Added
Removed
  • 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.