Ignore:
Timestamp:
Jun 11, 2009, 10:54:10 AM (16 years ago)
Author:
Laurent Fairhead
Message:

Modif pour la compilation avec fcm sur Vargas SD
Corrections relatives au controle de histins et de l'utilisation des
options INST(X) pour l'appel au routines de IOIPSL FH
Mise en place de diagnostics sur les critères CFL pour l'advection
de traceurs. FH
Controle dans les .def de la dépendance verticale de l'efficacite
de la diffusion. Actif pour le moment uniquement avec ok_strato=y et llm=39. FH
LF

Location:
LMDZ4/branches/LMDZ4-dev/libf/phylmd
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4-dev/libf/phylmd/clesphys.h

    r1168 r1176  
    11!
    2 !
     2! $Id$
    33!
    44!  ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
  • LMDZ4/branches/LMDZ4-dev/libf/phylmd/conf_phys.F90

    r1168 r1176  
    11
    22!
    3 ! $Header$
     3! $Id$
    44!
    55!
     
    133133  REAL,SAVE :: lonmin_ins_omp, lonmax_ins_omp, latmin_ins_omp, latmax_ins_omp
    134134  REAL,SAVE :: ecrit_hf_omp, ecrit_day_omp, ecrit_mth_omp, ecrit_reg_omp
     135  REAL,SAVE :: ecrit_ins_omp
    135136  REAL,SAVE :: ecrit_LES_omp
    136137  REAL,SAVE :: ecrit_tra_omp
     
    10701071  ecrit_hf_omp = 1./8.
    10711072  call getin('ecrit_hf',ecrit_hf_omp)
     1073!
     1074!Config Key  = ecrit_ins
     1075!Config Desc =
     1076!Config Def  = 1./48. ! toutes les 1/2 h
     1077!Config Help =
     1078!
     1079  ecrit_ins_omp = 1./48.
     1080  call getin('ecrit_ins',ecrit_ins_omp)
    10721081!
    10731082!Config Key  = ecrit_day
     
    13691378    latmax_ins = latmax_ins_omp
    13701379    ecrit_hf   = ecrit_hf_omp
     1380    ecrit_ins   = ecrit_ins_omp
    13711381    ecrit_day = ecrit_day_omp
    13721382    ecrit_mth = ecrit_mth_omp
     
    15181528  write(numout,*)' lonmin lonmax latmin latmax bilKP_ins =',&
    15191529   lonmin_ins, lonmax_ins, latmin_ins, latmax_ins
    1520   write(numout,*)' ecrit_ hf, day, mth, reg, tra, ISCCP, LES',&
    1521    ecrit_hf, ecrit_day, ecrit_mth, ecrit_reg, ecrit_tra, ecrit_ISCCP, ecrit_LES
     1530  write(numout,*)' ecrit_ hf, ins, day, mth, reg, tra, ISCCP, LES',&
     1531   ecrit_hf, ecrit_ins, ecrit_day, ecrit_mth, ecrit_reg, ecrit_tra, ecrit_ISCCP, ecrit_LES
    15221532
    15231533  write(numout,*) 'ok_strato = ', ok_strato
  • LMDZ4/branches/LMDZ4-dev/libf/phylmd/phys_output_mod.F90

    r1168 r1176  
     1!
     2! $Id$
     3!
    14! Abderrahmane 12 2007
    25!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    1922   integer, dimension(nfiles), save             :: lev_files
    2023   integer, dimension(nfiles), save             :: nid_files
    21 
     24!$OMP THREADPRIVATE(clef_files, lev_files,nid_files)
     25 
    2226   integer, dimension(nfiles), private, save :: nhorim, nvertm
    23    real, dimension(nfiles), private, save                :: zstophym, zoutm
     27   real, dimension(nfiles), private, save                :: zoutm
     28   real,                    private, save                :: zdtime
    2429   CHARACTER(len=20), dimension(nfiles), private, save   :: type_ecri
     30!$OMP THREADPRIVATE(nhorim, nvertm, zoutm,zdtime,type_ecri)
    2531
    2632!   integer, save                     :: nid_hf3d
     
    473479  integer                               :: imin_ins, imax_ins
    474480  integer                               :: jmin_ins, jmax_ins
     481  CHARACTER(len=20), dimension(nfiles)  :: type_ecri_files
    475482
    476483!!!!!!!!!! stockage dans une region limitee pour chaque fichier !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    491498   name_files(5) = 'histLES'
    492499
    493    type_ecri(1) = 'ave(X)'
    494    type_ecri(2) = 'ave(X)'
    495    type_ecri(3) = 'ave(X)'
    496    type_ecri(4) = 'inst(X)'
    497    type_ecri(5) = 'ave(X)'
     500   type_ecri_files(1) = 'ave(X)'
     501   type_ecri_files(2) = 'ave(X)'
     502   type_ecri_files(3) = 'inst(X)'
     503   type_ecri_files(4) = 'inst(X)'
     504   type_ecri_files(5) = 'ave(X)'
    498505
    499506   clef_files(1) = ok_mensuel
     
    524531   call getin('phys_out_levmax',levmax)
    525532   call getin('phys_out_filenames',name_files)
    526    call getin('phys_out_filetypes',type_ecri)
     533   call getin('phys_out_filetypes',type_ecri_files)
    527534   call getin('phys_out_filekeys',clef_files)
    528535   call getin('phys_out_filelevels',lev_files)
    529536   call getin('phys_out_filetimesteps',ecrit_files)
     537
     538   type_ecri(:) = type_ecri_files(:)
    530539
    531540!!!!!!!!!!!!!!!!!!!!!!! Boucle sur les fichiers !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    534543!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    535544
     545 zdtime = dtime         ! Frequence ou l on moyenne
     546
    536547 DO iff=1,nfiles
    537548
    538549    IF (clef_files(iff)) THEN
    539550     
    540       zstophym(iff) = dtime         ! Frequence ou l on moyenne
    541551      zoutm(iff) = ecrit_files(iff) ! Frequence ou l on ecrit
    542552
     
    606616 CALL histdef2d(iff,o_aire%flag,o_aire%name,"Grid area", "-")
    607617 CALL histdef2d(iff,o_contfracATM%flag,o_contfracATM%name,"% sfce ter+lic", "-")
    608    type_ecri(1) = 'ave(X)'
    609    type_ecri(2) = 'ave(X)'
    610    type_ecri(3) = 'ave(X)'
    611    type_ecri(4) = 'inst(X)'
    612    type_ecri(5) = 'ave(X)'
     618   type_ecri(:) = type_ecri_files(:)
    613619
    614620!!! Champs 2D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    631637   type_ecri(5) = 't_max(X)'
    632638 CALL histdef2d(iff,o_t2m_max%flag,o_t2m_max%name, "Temp 2m max", "K" )
    633    type_ecri(1) = 'ave(X)'
    634    type_ecri(2) = 'ave(X)'
    635    type_ecri(3) = 'ave(X)'
    636    type_ecri(4) = 'inst(X)'
    637    type_ecri(5) = 'ave(X)'
     639   type_ecri(:) = type_ecri_files(:)
    638640 CALL histdef2d(iff,o_wind10m%flag,o_wind10m%name, "10-m wind speed", "m/s")
    639641 CALL histdef2d(iff,o_wind10max%flag,o_wind10max%name, "10m wind speed max", "m/s")
     
    714716   type_ecri(5) = 't_max(X)'
    715717 CALL histdef2d(iff,o_tke_max_srf(nsrf)%flag,o_tke_max_srf(nsrf)%name,"Max Turb. Kinetic Energy "//clnsurf(nsrf),"-")
    716    type_ecri(1) = 'ave(X)'
    717    type_ecri(2) = 'ave(X)'
    718    type_ecri(3) = 'ave(X)'
    719    type_ecri(4) = 'inst(X)'
    720    type_ecri(5) = 'ave(X)'
     718   type_ecri(:) = type_ecri_files(:)
    721719  endif
    722720 CALL histdef2d(iff,o_albe_srf(nsrf)%flag,o_albe_srf(nsrf)%name,"Albedo surf. "//clnsurf(nsrf),"-")
     
    764762   type_ecri(5) = 't_max(X)'
    765763 CALL histdef2d(iff,o_cape_max%flag,o_cape_max%name, "CAPE max.", "J/kg")
    766    type_ecri(1) = 'ave(X)'
    767    type_ecri(2) = 'ave(X)'
    768    type_ecri(3) = 'ave(X)'
    769    type_ecri(4) = 'inst(X)'
    770    type_ecri(5) = 'ave(X)'
     764   type_ecri(:) = type_ecri_files(:)
    771765 CALL histdef3d(iff,o_upwd%flag,o_upwd%name, "saturated updraft", "kg/m2/s")
    772766 CALL histdef3d(iff,o_Ma%flag,o_Ma%name, "undilute adiab updraft", "kg/m2/s")
     
    793787!      on ecrit u v t q a 850 700 500 200 au niv 3
    794788
    795    zstophym(iff) = ecrit_files(iff)
    796789   type_ecri(1) = 'inst(X)'
    797790   type_ecri(2) = 'inst(X)'
     
    817810     ENDIF !(bb2.EQ."850".OR.bb2.EQ."700".OR."500".OR.bb2.EQ."200")
    818811       ENDDO
    819    zstophym(iff) = dtime
    820    type_ecri(1) = 'ave(X)'
    821    type_ecri(2) = 'ave(X)'
    822    type_ecri(3) = 'ave(X)'
    823    type_ecri(4) = 'inst(X)'
    824    type_ecri(5) = 'ave(X)'
     812   type_ecri(:) = type_ecri_files(:)
    825813
    826814 CALL histdef2d(iff,o_t_oce_sic%flag,o_t_oce_sic%name, "Temp mixte oce-sic", "K")
     
    890878   type_ecri(5) = 't_max(X)'
    891879 CALL histdef3d(iff,o_tke_max%flag,o_tke_max%name, "TKE max", "m2/s2")
    892    type_ecri(1) = 'ave(X)'
    893    type_ecri(2) = 'ave(X)'
    894    type_ecri(3) = 'ave(X)'
    895    type_ecri(4) = 'inst(X)'
    896    type_ecri(5) = 'ave(X)'
     880   type_ecri(:) = type_ecri_files(:)
    897881     endif
    898882
     
    904888   type_ecri(5) = 't_max(X)'
    905889 CALL histdef3d(iff,o_kz_max%flag,o_kz_max%name, "Kz melange max", "m2/s" )
    906    type_ecri(1) = 'ave(X)'
    907    type_ecri(2) = 'ave(X)'
    908    type_ecri(3) = 'ave(X)'
    909    type_ecri(4) = 'inst(X)'
    910    type_ecri(5) = 'ave(X)'
     890   type_ecri(:) = type_ecri_files(:)
    911891 CALL histdef3d(iff,o_clwcon%flag,o_clwcon%name, "Convective Cloud Liquid water content", "kg/kg")
    912892 CALL histdef3d(iff,o_dtdyn%flag,o_dtdyn%name, "Dynamics dT", "K/s")
     
    10211001       character(len=*)                 :: unitvar
    10221002
     1003       real zstophym
     1004
     1005       if (type_ecri(iff)=='inst(X)') then
     1006         zstophym=zoutm(iff)
     1007       else
     1008         zstophym=zdtime
     1009       endif
     1010
    10231011! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def
    10241012       call conf_physoutputs(nomvar,flag_var)
     
    10271015 call histdef (nid_files(iff),nomvar,titrevar,unitvar, &
    10281016               iim,jj_nb,nhorim(iff), 1,1,1, -99, 32, &
    1029                type_ecri(iff), zstophym(iff),zoutm(iff))               
     1017               type_ecri(iff), zstophym,zoutm(iff))               
    10301018       endif                     
    10311019      end subroutine histdef2d
     
    10501038       character(len=*)                 :: unitvar
    10511039
     1040       real zstophym
     1041
    10521042! Appel a la lecture des noms et niveau d'ecriture des variables dans output.def
    10531043       call conf_physoutputs(nomvar,flag_var)
     1044
     1045       if (type_ecri(iff)=='inst(X)') then
     1046         zstophym=zoutm(iff)
     1047       else
     1048         zstophym=zdtime
     1049       endif
    10541050
    10551051       if ( flag_var(iff)<=lev_files(iff) ) then
     
    10571053               iim, jj_nb, nhorim(iff), klev, levmin(iff), &
    10581054               levmax(iff)-levmin(iff)+1, nvertm(iff), 32, type_ecri(iff), &
    1059                zstophym(iff), zoutm(iff))
     1055               zstophym, zoutm(iff))
    10601056       endif
    10611057      end subroutine histdef3d
  • LMDZ4/branches/LMDZ4-dev/libf/phylmd/physiq.F

    r1168 r1176  
     1!
     2! $Id$
     3!
    14c#define IO_DEBUG
    25
     
    14201423     .                   lmt_pas
    14211424c
    1422 cIM200505        ecrit_mth = NINT(86400./dtime *ecritphy)  ! tous les ecritphy jours
    1423 c        IF (ok_mensuel) THEN
    1424 c        WRITE(lunout,*)'La frequence de sortie mensuelle est de ',
    1425 c    .                   ecrit_mth
    1426 c        ENDIF
    1427 c        ecrit_day = NINT(86400./dtime *1.0)  ! tous les jours
    1428 c        IF (ok_journe) THEN
    1429 c        WRITE(lunout,*)'La frequence de sortie journaliere est de ',
    1430 c    .                   ecrit_day
    1431 c        ENDIF
    1432 cIM 130904 BEG
    1433 cIM 080205      ecrit_hf = 86400./dtime *0.25  ! toutes les 6h
    1434 cIM 170305     
    1435 c        ecrit_hf = 86400./dtime/12.  ! toutes les 2h
    1436 cIM 230305     
    1437 cIM200505        ecrit_hf = 86400./dtime *0.25  ! toutes les 6h
    1438 c
    1439 cIM200505        ecrit_hf2mth = ecrit_day/ecrit_hf*30
    1440 c
    1441 cIM200505        IF (ok_journe) THEN
    1442 cIM200505        WRITE(lunout,*)'La frequence de sortie hf est de ',
    1443 cIM200505    .                   ecrit_hf
    1444 cIM200505        ENDIF
    1445 cIM 130904 END
    1446 ccc         ecrit_ins = NINT(86400./dtime *0.5)  ! 2 fois par jour
    1447 ccc         ecrit_ins = NINT(86400./dtime *0.25)  ! 4 fois par jour
    1448 c        ecrit_ins = NINT(86400./dtime/48.)  ! a chaque pas de temps ==> PB. dans time_counter pour 1mois
    1449 c        ecrit_ins = NINT(86400./dtime/12.)  ! toutes les deux heures
    1450 cIM200505        ecrit_ins = NINT(86400./dtime/8.)  ! toutes les trois heures
    1451 cIM200505        IF (ok_instan) THEN
    1452 cIM200505        WRITE(lunout,*)'La frequence de sortie instant. est de ',
    1453 cIM200505    .                   ecrit_ins
    1454 cIM200505        ENDIF
    1455 cIM200505        ecrit_reg = NINT(86400./dtime *0.25)  ! 4 fois par jour
    1456 cIM200505        IF (ok_region) THEN
    1457 cIM200505        WRITE(lunout,*)'La frequence de sortie region est de ',
    1458 cIM200505    .                   ecrit_reg
    1459 cIM200505        ENDIF
    1460 cIM 030306 BEG
    1461 cIM ecrit_hf2mth = nombre de pas de temps de calcul de hf par mois apres lequel on ecrit
    1462 cIM : ne pas modifier ecrit_hf2mth
    1463 c
    14641425cIM 250308bad guide        ecrit_hf2mth = 30*1/ecrit_hf
    14651426         ecrit_hf2mth = ecrit_mth/ecrit_hf
    1466 c ecrit_ins en secondes, chaque pas de temps de la physique
    1467          ecrit_ins = dtime
    1468 cIM on passe les frequences de jours en secondes : ecrit_ins, ecrit_hf, ecrit_day, ecrit_mth, ecrit_tra, ecrit_reg
     1427
    14691428         ecrit_hf = ecrit_hf * un_jour
    14701429!IM
     
    14741433!IM
    14751434         ecrit_mth = ecrit_mth * un_jour
     1435         ecrit_ins = ecrit_ins * un_jour
    14761436         ecrit_reg = ecrit_reg * un_jour
    14771437         ecrit_tra = ecrit_tra * un_jour
Note: See TracChangeset for help on using the changeset viewer.