Ignore:
Timestamp:
May 9, 2008, 6:17:59 PM (17 years ago)
Author:
lmdzadmin
Message:

Nettoyage du controle des parametres physiques. FH

Les parametres cycle_diurne, soil_model, new_oliq, ok_orodr, ok_orolf, ok_limitvrai, nbapp_rad et iflag_con
sont maintenant geres par la physique uniquement.
ecritphy est elimine.
dimphy.F90 et clesphys.h ne sont plus utilises par le code dynamique.
Le test academique obtenu en compilant avec
makegcm -p nophys gcm
fonctionne. FH
IM

Location:
LMDZ4/trunk/libf/phylmd
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/trunk/libf/phylmd/conf_phys.F90

    r955 r956  
    113113!
    114114!
     115    LOGICAL,SAVE :: cycle_diurne_omp,soil_model_omp,new_oliq_omp
     116    LOGICAL,SAVE :: ok_orodr_omp, ok_orolf_omp, ok_limitvrai_omp
     117    INTEGER, SAVE :: nbapp_rad_omp, iflag_con_omp
    115118!
    116119
     
    373376! RCFC12 = 2.020102726958923E-09
    374377!OK call getin('RCFC12', RCFC12)
     378
     379
     380
     381!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     382! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
     383! Constantes precedemment dans dyn3d/conf_gcm
     384
     385!Config  Key  = cycle_diurne
     386!Config  Desc = Cycle ddiurne
     387!Config  Def  = y
     388!Config  Help = Cette option permet d'eteidre le cycle diurne.
     389!Config         Peut etre util pour accelerer le code !
     390       cycle_diurne_omp = .TRUE.
     391       CALL getin('cycle_diurne',cycle_diurne_omp)
     392
     393!Config  Key  = soil_model
     394!Config  Desc = Modele de sol
     395!Config  Def  = y
     396!Config  Help = Choix du modele de sol (Thermique ?)
     397!Config         Option qui pourait un string afin de pouvoir
     398!Config         plus de choix ! Ou meme une liste d'options !
     399       soil_model_omp = .TRUE.
     400       CALL getin('soil_model',soil_model_omp)
     401
     402!Config  Key  = new_oliq
     403!Config  Desc = Nouvelle eau liquide
     404!Config  Def  = y
     405!Config  Help = Permet de mettre en route la
     406!Config         nouvelle parametrisation de l'eau liquide !
     407       new_oliq_omp = .TRUE.
     408       CALL getin('new_oliq',new_oliq_omp)
     409
     410!Config  Key  = ok_orodr
     411!Config  Desc = Orodr ???
     412!Config  Def  = y
     413!Config  Help = Y en a pas comprendre !
     414!Config         
     415       ok_orodr_omp = .TRUE.
     416       CALL getin('ok_orodr',ok_orodr_omp)
     417
     418!Config  Key  =  ok_orolf
     419!Config  Desc = Orolf ??
     420!Config  Def  = y
     421!Config  Help = Connais pas !
     422       ok_orolf_omp = .TRUE.
     423       CALL getin('ok_orolf_omp', ok_orolf_omp)
     424
     425!Config  Key  = ok_limitvrai
     426!Config  Desc = Force la lecture de la bonne annee
     427!Config  Def  = n
     428!Config  Help = On peut forcer le modele a lire le
     429!Config         fichier SST de la bonne annee. C'est une tres bonne
     430!Config         idee, pourquoi ne pas mettre toujours a y ???
     431       ok_limitvrai_omp = .FALSE.
     432       CALL getin('ok_limitvrai',ok_limitvrai_omp)
     433
     434!Config  Key  = nbapp_rad
     435!Config  Desc = Frequence d'appel au rayonnement
     436!Config  Def  = 12
     437!Config  Help = Nombre  d'appels des routines de rayonnements
     438!Config         par jour.
     439       nbapp_rad_omp = 12
     440       CALL getin('nbapp_rad',nbapp_rad_omp)
     441
     442!Config  Key  = iflag_con
     443!Config  Desc = Flag de convection
     444!Config  Def  = 2
     445!Config  Help = Flag  pour la convection les options suivantes existent :
     446!Config         1 pour LMD,
     447!Config         2 pour Tiedtke,
     448!Config         3 pour CCM(NCAR) 
     449       iflag_con_omp = 2
     450       CALL getin('iflag_con',iflag_con_omp)
     451
     452!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    375453!!
    376454!! Constante solaire & Parametres orbitaux & taux gaz effet de serre END
     
    9321010    CFC12_ppt = CFC12_ppt_omp
    9331011    RCFC12 = RCFC12_omp
     1012
     1013    cycle_diurne = cycle_diurne_omp
     1014    soil_model = soil_model_omp
     1015    new_oliq = new_oliq_omp
     1016    ok_orodr = ok_orodr_omp
     1017    ok_orolf = ok_orolf_omp
     1018    ok_limitvrai = ok_limitvrai_omp
     1019    nbapp_rad = nbapp_rad_omp
     1020    iflag_con = iflag_con_omp
     1021
    9341022    epmax = epmax_omp
    9351023    ok_adj_ema = ok_adj_ema_omp
     
    10351123  write(numout,*)' cvl_corr=', cvl_corr
    10361124  write(numout,*)'ok_lic_melt=', ok_lic_melt
     1125  write(numout,*)'cycle_diurne=',cycle_diurne
     1126  write(numout,*)'soil_model=',soil_model
     1127  write(numout,*)'new_oliq=',new_oliq
     1128  write(numout,*)'ok_orodr=',ok_orodr
     1129  write(numout,*)'ok_orolf=',ok_orolf
     1130  write(numout,*)'ok_limitvrai=',ok_limitvrai
     1131  write(numout,*)'nbapp_rad=',nbapp_rad
     1132  write(numout,*)'iflag_con=',iflag_con
    10371133  write(numout,*)' epmax = ', epmax
    10381134  write(numout,*)' ok_adj_ema = ', ok_adj_ema
  • LMDZ4/trunk/libf/phylmd/ini_histrac.h

    r782 r956  
    2323
    2424         zsto = pdtphys
    25          zout = pdtphys * ecrit_tra
     25         zout = ecrit_tra
    2626c
    2727         CALL histdef(nid_tra, "phis", "Surface geop. height", "-",
  • LMDZ4/trunk/libf/phylmd/phyetat0.F

    r937 r956  
    191191       
    192192c
    193        
     193!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     194! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
     195! Les constantes de la physiques sont lues dans la physique seulement.
     196! Les egalites du type
     197!             tab_cntrl( 5 )=clesphy0(1)
     198! sont remplacees par
     199!             clesphy0(1)=tab_cntrl( 5 )
     200! On inverse aussi la logique.
     201! On remplit les tab_cntrl avec les parametres lus dans les .def
     202!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     203
    194204         DO i = 1, length
    195205           tabcntr0( i ) = tab_cntrl( i )
    196206         ENDDO
    197207c
    198          cycle_diurne   = .FALSE.
    199          soil_model     = .FALSE.
    200          new_oliq       = .FALSE.
    201          ok_orodr       = .FALSE.
    202          ok_orolf       = .FALSE.
    203          ok_limitvrai   = .FALSE.
    204 
    205 
    206          IF( clesphy0(1).NE.tab_cntrl( 5 ) )  THEN
    207              tab_cntrl( 5 ) = clesphy0(1)
    208          ENDIF
    209 
    210          IF( clesphy0(2).NE.tab_cntrl( 6 ) )  THEN
    211              tab_cntrl( 6 ) = clesphy0(2)
    212          ENDIF
    213 
    214          IF( clesphy0(3).NE.tab_cntrl( 7 ) )  THEN
    215              tab_cntrl( 7 ) = clesphy0(3)
    216          ENDIF
    217 
    218          IF( clesphy0(4).NE.tab_cntrl( 8 ) )  THEN
    219              tab_cntrl( 8 ) = clesphy0(4)
    220          ENDIF
    221 
    222          IF( clesphy0(5).NE.tab_cntrl( 9 ) )  THEN
    223              tab_cntrl( 9 ) = clesphy0( 5 )
    224          ENDIF
    225 
    226          IF( clesphy0(6).NE.tab_cntrl( 10 ) )  THEN
    227              tab_cntrl( 10 ) = clesphy0( 6 )
    228          ENDIF
    229 
    230          IF( clesphy0(7).NE.tab_cntrl( 11 ) )  THEN
    231              tab_cntrl( 11 ) = clesphy0( 7 )
    232          ENDIF
    233 
    234          IF( clesphy0(8).NE.tab_cntrl( 12 ) )  THEN
    235              tab_cntrl( 12 ) = clesphy0( 8 )
    236          ENDIF
    237 
    238 
    239          dtime        = tab_cntrl(1)
    240          radpas       = tab_cntrl(2)
     208         tab_cntrl(1)=dtime
     209         tab_cntrl(2)=radpas
    241210         co2_ppm_etat0      = tab_cntrl(3)
    242211         solaire_etat0      = tab_cntrl(4)
    243          iflag_con    = tab_cntrl(5)
    244          nbapp_rad    = tab_cntrl(6)
    245 
    246 
    247          cycle_diurne    = .FALSE.
    248          soil_model      = .FALSE.
    249          new_oliq        = .FALSE.
    250          ok_orodr        = .FALSE.
    251          ok_orolf        = .FALSE.
    252          ok_limitvrai    = .FALSE.
    253 
    254          IF( tab_cntrl( 7) .EQ. 1. )    cycle_diurne  = .TRUE.
    255          IF( tab_cntrl( 8) .EQ. 1. )       soil_model = .TRUE.
    256          IF( tab_cntrl( 9) .EQ. 1. )         new_oliq = .TRUE.
    257          IF( tab_cntrl(10) .EQ. 1. )         ok_orodr = .TRUE.
    258          IF( tab_cntrl(11) .EQ. 1. )         ok_orolf = .TRUE.
    259          IF( tab_cntrl(12) .EQ. 1. )     ok_limitvrai = .TRUE.
     212         tab_cntrl(5)=iflag_con
     213         tab_cntrl(6)=nbapp_rad
     214
     215         if (cycle_diurne) tab_cntrl( 7) =1.
     216         if (soil_model) tab_cntrl( 8) =1.
     217         if (new_oliq) tab_cntrl( 9) =1.
     218         if (ok_orodr) tab_cntrl(10) =1.
     219         if (ok_orolf) tab_cntrl(11) =1.
     220         if (ok_limitvrai) tab_cntrl(12) =1.
    260221
    261222
    262223      itau_phy = tab_cntrl(15)
     224
     225       
     226
     227         IF( clesphy0(1).NE.tab_cntrl( 5 ) )  THEN
     228             clesphy0(1)=tab_cntrl( 5 )
     229         ENDIF
     230
     231         IF( clesphy0(2).NE.tab_cntrl( 6 ) )  THEN
     232             clesphy0(2)=tab_cntrl( 6 )
     233         ENDIF
     234
     235         IF( clesphy0(3).NE.tab_cntrl( 7 ) )  THEN
     236             clesphy0(3)=tab_cntrl( 7 )
     237         ENDIF
     238
     239         IF( clesphy0(4).NE.tab_cntrl( 8 ) )  THEN
     240             clesphy0(4)=tab_cntrl( 8 )
     241         ENDIF
     242
     243         IF( clesphy0(5).NE.tab_cntrl( 9 ) )  THEN
     244             clesphy0(5)=tab_cntrl( 9 )
     245         ENDIF
     246
     247         IF( clesphy0(6).NE.tab_cntrl( 10 ) )  THEN
     248             clesphy0(6)=tab_cntrl( 10 )
     249         ENDIF
     250
     251         IF( clesphy0(7).NE.tab_cntrl( 11 ) )  THEN
     252             clesphy0(7)=tab_cntrl( 11 )
     253         ENDIF
     254
     255         IF( clesphy0(8).NE.tab_cntrl( 12 ) )  THEN
     256             clesphy0(8)=tab_cntrl( 12 )
     257         ENDIF
     258
    263259
    264260c
  • LMDZ4/trunk/libf/phylmd/physiq.F

    r955 r956  
    12511251      print*,'iflag_coupl,iflag_clos,iflag_wake',
    12521252     .   iflag_coupl,iflag_clos,iflag_wake
     1253      print*,'CYCLE_DIURNE', cycle_diurne
    12531254
    12541255c
     
    12661267             PRINT*, "Using method MELLOR&YAMADA"
    12671268         endif
     1269
     1270!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     1271! FH 2008/05/02 changement lie a la lecture de nbapp_rad dans phylmd plutot que
     1272! dyn3d
     1273! Attention : la version precedente n'etait pas tres propre.
     1274! Il se peut qu'il faille prendre une valeur differente de nbapp_rad
     1275! pour obtenir le meme resultat.
     1276         dtime=pdtphys
     1277         radpas = NINT( 86400./dtime/nbapp_rad)
     1278!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     1279
    12681280
    12691281         CALL phyetat0 ("startphy.nc",dtime,co2_ppm_etat0,solaire_etat0,
     
    12931305      ENDDO
    12941306
    1295          radpas = NINT( 86400./dtime/nbapp_rad)
    12961307c
    12971308C on remet le calendrier a zero
  • LMDZ4/trunk/libf/phylmd/phytrac.F

    r955 r956  
    273273
    274274C
    275 C Variables liees a l'ecriture de la bande histoire : phytrac.nc
    276 c
    277 c      INTEGER ecrit_tra
    278 c      SAVE ecrit_tra
    279 
    280275      logical ok_sync
    281276      parameter (ok_sync = .true.)
     
    425420
    426421c jg: c'est ca qu'on veut?????           
    427           ecrit_tra = FLOAT(NINT(86400./pdtphys *ecritphy))
    428           print*,'dans phytrac ',pdtphys,ecritphy,ecrit_tra
     422! FH 2008/05/09 correction de la frequence d'ecriture des traceurs
     423!         ecrit_tra = FLOAT(NINT(86400./pdtphys *ecritphy))
     424          print*,'dans phytrac ',pdtphys,ecrit_tra
    429425
    430426         if(nbtr.lt.nqmax) then
  • LMDZ4/trunk/libf/phylmd/write_paramLMDZ_phy.h

    r828 r956  
    139139     .               zx_tmp_2d,iim*jjmp1,ndex2d)
    140140c
     141!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     142! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique
     143! Mais est-il bien raisonable de stoker ces fichiers comme des
     144! champs 2D...
     145! WARNING :
     146! Il faudrait ici ajoute l'ecriture des champs
     147!      cycle_diurne = cycle_diurne_omp
     148!   soil_model = soil_model_omp
     149!   new_oliq = new_oliq_omp
     150!   ok_orodr = ok_orodr_omp
     151!   ok_orolf = ok_orolf_omp
     152!   ok_limitvrai = ok_limitvrai_omp
     153!   nbapp_rad = nbapp_rad_omp
     154!   iflag_con = iflag_con_omp
     155! qui se trouvaient auparavant dans gcm.def et maintenant dans
     156! physiq.def.
     157! Mais regarder d'abord a quoi ca sert ...
     158!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     159
     160
     161c
    141162      IF(ok_adj_ema) THEN
    142163       zx_tmp_2d(1:iim,1:jjmp1)=1.
Note: See TracChangeset for help on using the changeset viewer.