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/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
Note: See TracChangeset for help on using the changeset viewer.