Changeset 1797 for LMDZ5/trunk


Ignore:
Timestamp:
Jul 18, 2013, 3:32:27 PM (11 years ago)
Author:
Ehouarn Millour
Message:

Déplacement de nombreuses variables de physiq.F vers phys_local_var_mod.
UG
................................
Moving of numerous vars from physiq.F to phys_local_var_mod.
UG

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

Legend:

Unmodified
Added
Removed
  • LMDZ5/trunk/libf/phylmd/declare_STDlev.h

    r1694 r1797  
    11cIM for NMC files
    2       real twriteSTD(klon,nlevSTD,nfiles)
    3       real qwriteSTD(klon,nlevSTD,nfiles)
     2!      real twriteSTD(klon,nlevSTD,nfiles)
     3!      real qwriteSTD(klon,nlevSTD,nfiles)
    44      real rhwriteSTD(klon,nlevSTD,nfiles)
    5       real phiwriteSTD(klon,nlevSTD,nfiles)
    6       real uwriteSTD(klon,nlevSTD,nfiles)
    7       real vwriteSTD(klon,nlevSTD,nfiles)
    8       real wwriteSTD(klon,nlevSTD,nfiles)
     5!      real phiwriteSTD(klon,nlevSTD,nfiles)
     6!      real uwriteSTD(klon,nlevSTD,nfiles)
     7!      real vwriteSTD(klon,nlevSTD,nfiles)
     8!      real wwriteSTD(klon,nlevSTD,nfiles)
    99
    1010      real twriteSTD3(klon,nlevSTD3)
  • LMDZ5/trunk/libf/phylmd/iophy.F90

    r1791 r1797  
    44module iophy
    55 
    6 ! abd  REAL,private,allocatable,dimension(:),save :: io_lat
    7 ! abd  REAL,private,allocatable,dimension(:),save :: io_lon
     6! abd  REAL,private,allocatable,DIMENSION(:),save :: io_lat
     7! abd  REAL,private,allocatable,DIMENSION(:),save :: io_lon
    88  REAL,ALLOCATABLE,DIMENSION(:),SAVE :: io_lat
    99  REAL,ALLOCATABLE,DIMENSION(:),SAVE :: io_lon
     
    2424
    2525
    26 contains
    27 
    28   subroutine init_iophy_new(rlat,rlon)
     26CONTAINS
     27
     28! ug Routine pour définir itau_iophy depuis phys_output_write_mod:
     29  SUBROUTINE set_itau_iophy(ito)
     30      IMPLICIT NONE
     31      INTEGER, INTENT(IN) :: ito
     32      itau_iophy = ito
     33  END SUBROUTINE
     34
     35  SUBROUTINE init_iophy_new(rlat,rlon)
    2936  USE dimphy
    3037  USE mod_phys_lmdz_para
    3138  USE mod_grid_phy_lmdz
    3239  USE ioipsl
    33   implicit none
    34   include 'dimensions.h'   
    35     real,dimension(klon),intent(in) :: rlon
    36     real,dimension(klon),intent(in) :: rlat
    37 
    38     REAL,dimension(klon_glo)        :: rlat_glo
    39     REAL,dimension(klon_glo)        :: rlon_glo
     40  IMPLICIT NONE
     41  INCLUDE 'dimensions.h'   
     42    REAL,DIMENSION(klon),INTENT(IN) :: rlon
     43    REAL,DIMENSION(klon),INTENT(IN) :: rlat
     44
     45    REAL,DIMENSION(klon_glo)        :: rlat_glo
     46    REAL,DIMENSION(klon_glo)        :: rlon_glo
    4047   
    4148    INTEGER,DIMENSION(2) :: ddid
     
    7279    dpl=(/ iim, jj_end /)
    7380    dhs=(/ ii_begin-1,0 /)
    74     if (mpi_rank==mpi_size-1) then
     81    IF (mpi_rank==mpi_size-1) THEN
    7582      dhe=(/0,0/)
    76     else
     83    ELSE
    7784      dhe=(/ iim-ii_end,0 /) 
    78     endif
    79    
    80     call flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, &
     85    ENDIF
     86   
     87    CALL flio_dom_set(mpi_size,mpi_rank,ddid,dsg,dsl,dpf,dpl,dhs,dhe, &
    8188                      'APPLE',phys_domain_id)
    8289
    8390!$OMP END MASTER
    8491     
    85   end subroutine init_iophy_new
    86 
    87   subroutine init_iophy(lat,lon)
    88   USE dimphy
    89   USE mod_phys_lmdz_para
    90   use ioipsl
    91   implicit none
    92   include 'dimensions.h'   
    93     real,dimension(iim),intent(in) :: lon
    94     real,dimension(jjm+1-1/(iim*jjm)),intent(in) :: lat
     92  END SUBROUTINE init_iophy_new
     93
     94  SUBROUTINE init_iophy(lat,lon)
     95  USE dimphy
     96  USE mod_phys_lmdz_para
     97  USE ioipsl
     98  IMPLICIT NONE
     99  INCLUDE 'dimensions.h'   
     100    REAL,DIMENSION(iim),INTENT(IN) :: lon
     101    REAL,DIMENSION(jjm+1-1/(iim*jjm)),INTENT(IN) :: lat
    95102
    96103    INTEGER,DIMENSION(2) :: ddid
     
    125132!$OMP END MASTER
    126133     
    127   end subroutine init_iophy
    128  
    129   subroutine histbeg_phy(name,itau0,zjulian,dtime,nhori,nid_day)
     134  end SUBROUTINE init_iophy
     135 
     136  SUBROUTINE histbeg_phy(name,itau0,zjulian,dtime,nhori,nid_day)
    130137  USE dimphy
    131138  USE mod_phys_lmdz_para
    132139  use ioipsl
    133140  use write_field
    134   implicit none
     141  IMPLICIT NONE
    135142  include 'dimensions.h'
    136143   
    137     character*(*), intent(IN) :: name
    138     integer, intent(in) :: itau0
    139     real,intent(in) :: zjulian
    140     real,intent(in) :: dtime
     144    character*(*), INTENT(IN) :: name
     145    integer, INTENT(IN) :: itau0
     146    REAL,INTENT(IN) :: zjulian
     147    REAL,INTENT(IN) :: dtime
    141148    integer,intent(out) :: nhori
    142149    integer,intent(out) :: nid_day
     
    152159!$OMP END MASTER
    153160 
    154   end subroutine histbeg_phy
    155 
    156   subroutine histbeg_phy_points(rlon,rlat,pim,tabij,ipt,jpt, &
     161  END SUBROUTINE histbeg_phy
     162
     163  SUBROUTINE histbeg_phy_points(rlon,rlat,pim,tabij,ipt,jpt, &
    157164             plon,plat,plon_bounds,plat_bounds, &
    158165             nname,itau0,zjulian,dtime,nnhori,nnid_day)
     
    162169  use ioipsl
    163170  use write_field
    164   implicit none
     171  IMPLICIT NONE
    165172  include 'dimensions.h'
    166173
    167     real,dimension(klon),intent(in) :: rlon
    168     real,dimension(klon),intent(in) :: rlat
    169     integer, intent(in) :: itau0
    170     real,intent(in) :: zjulian
    171     real,intent(in) :: dtime
    172     integer, intent(in) :: pim
     174    REAL,DIMENSION(klon),INTENT(IN) :: rlon
     175    REAL,DIMENSION(klon),INTENT(IN) :: rlat
     176    integer, INTENT(IN) :: itau0
     177    REAL,INTENT(IN) :: zjulian
     178    REAL,INTENT(IN) :: dtime
     179    integer, INTENT(IN) :: pim
    173180    integer, intent(out) :: nnhori
    174     character(len=20), intent(in) :: nname
     181    character(len=20), INTENT(IN) :: nname
    175182    INTEGER, intent(out) :: nnid_day
    176183    integer :: i
    177     REAL,dimension(klon_glo)        :: rlat_glo
    178     REAL,dimension(klon_glo)        :: rlon_glo
    179     INTEGER, DIMENSION(pim), intent(in)  :: tabij
    180     REAL,dimension(pim), intent(in) :: plat, plon
    181     INTEGER,dimension(pim), intent(in) :: ipt, jpt
    182     REAL,dimension(pim,2), intent(out) :: plat_bounds, plon_bounds
     184    REAL,DIMENSION(klon_glo)        :: rlat_glo
     185    REAL,DIMENSION(klon_glo)        :: rlon_glo
     186    INTEGER, DIMENSION(pim), INTENT(IN)  :: tabij
     187    REAL,DIMENSION(pim), INTENT(IN) :: plat, plon
     188    INTEGER,DIMENSION(pim), INTENT(IN) :: ipt, jpt
     189    REAL,DIMENSION(pim,2), intent(out) :: plat_bounds, plon_bounds
    183190
    184191    INTEGER, SAVE :: tabprocbeg, tabprocend
     
    187194    INTEGER, PARAMETER :: nip=1
    188195    INTEGER :: npproc
    189     REAL, allocatable, dimension(:) :: npplat, npplon
    190     REAL, allocatable, dimension(:,:) :: npplat_bounds, npplon_bounds
     196    REAL, allocatable, DIMENSION(:) :: npplat, npplon
     197    REAL, allocatable, DIMENSION(:,:) :: npplat_bounds, npplon_bounds
    191198    INTEGER, PARAMETER :: jjmp1=jjm+1-1/jjm
    192     REAL, dimension(iim,jjmp1) :: zx_lon, zx_lat
     199    REAL, DIMENSION(iim,jjmp1) :: zx_lon, zx_lat
    193200
    194201    CALL gather(rlat,rlat_glo)
     
    323330!$OMP END MASTER
    324331
    325   end subroutine histbeg_phy_points
     332  end SUBROUTINE histbeg_phy_points
    326333 
    327334  SUBROUTINE histwrite2d_phy_old(nid,lpoint,name,itau,field)
     
    334341  include 'iniprint.h'
    335342   
    336     integer,intent(in) :: nid
    337     logical,intent(in) :: lpoint
    338     character*(*), intent(IN) :: name
    339     integer, intent(in) :: itau
    340     real,dimension(:),intent(in) :: field
    341     REAL,dimension(klon_mpi) :: buffer_omp
    342     INTEGER, allocatable, dimension(:) :: index2d
     343    integer,INTENT(IN) :: nid
     344    logical,INTENT(IN) :: lpoint
     345    character*(*), INTENT(IN) :: name
     346    integer, INTENT(IN) :: itau
     347    REAL,DIMENSION(:),INTENT(IN) :: field
     348    REAL,DIMENSION(klon_mpi) :: buffer_omp
     349    INTEGER, allocatable, DIMENSION(:) :: index2d
    343350    REAL :: Field2d(iim,jj_nb)
    344351
    345352    integer :: ip
    346     real,allocatable,dimension(:) :: fieldok
    347 
    348 
    349     IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first dimension not equal to klon',1)
     353    REAL,allocatable,DIMENSION(:) :: fieldok
     354
     355
     356    IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first DIMENSION not equal to klon',1)
    350357   
    351358    CALL Gather_omp(field,buffer_omp)   
     
    387394
    388395 
    389   end subroutine histwrite2d_phy_old
    390 
    391   subroutine histwrite3d_phy_old(nid,lpoint,name,itau,field)
     396  end SUBROUTINE histwrite2d_phy_old
     397
     398  SUBROUTINE histwrite3d_phy_old(nid,lpoint,name,itau,field)
    392399  USE dimphy
    393400  USE mod_phys_lmdz_para
     
    395402
    396403  use ioipsl
    397   implicit none
     404  IMPLICIT NONE
    398405  include 'dimensions.h'
    399406  include 'iniprint.h'
    400407   
    401     integer,intent(in) :: nid
    402     logical,intent(in) :: lpoint
    403     character*(*), intent(IN) :: name
    404     integer, intent(in) :: itau
    405     real,dimension(:,:),intent(in) :: field  ! --> field(klon,:)
    406     REAL,dimension(klon_mpi,size(field,2)) :: buffer_omp
     408    integer,INTENT(IN) :: nid
     409    logical,INTENT(IN) :: lpoint
     410    character*(*), INTENT(IN) :: name
     411    integer, INTENT(IN) :: itau
     412    REAL,DIMENSION(:,:),INTENT(IN) :: field  ! --> field(klon,:)
     413    REAL,DIMENSION(klon_mpi,size(field,2)) :: buffer_omp
    407414    REAL :: Field3d(iim,jj_nb,size(field,2))
    408415    INTEGER :: ip, n, nlev
    409     INTEGER, ALLOCATABLE, dimension(:) :: index3d
    410     real,allocatable, dimension(:,:) :: fieldok
    411 
    412 
    413     IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first dimension not equal to klon',1)
     416    INTEGER, ALLOCATABLE, DIMENSION(:) :: index3d
     417    REAL,allocatable, DIMENSION(:,:) :: fieldok
     418
     419
     420    IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1)
    414421    nlev=size(field,2)
    415422
     
    460467!$OMP END MASTER   
    461468
    462   end subroutine histwrite3d_phy_old
     469  end SUBROUTINE histwrite3d_phy_old
    463470
    464471
     
    480487  include 'dimensions.h'
    481488   
    482 !    integer,intent(in) :: nid
    483 !    logical,intent(in) :: lpoint
    484 !    character*(*), intent(IN) :: name
    485 !    integer, intent(in) :: itau
    486 !    real,dimension(:),intent(in) :: field
     489!    integer,INTENT(IN) :: nid
     490!    logical,INTENT(IN) :: lpoint
     491!    character*(*), INTENT(IN) :: name
     492!    integer, INTENT(IN) :: itau
     493!    REAL,DIMENSION(:),INTENT(IN) :: field
    487494
    488495      TYPE(ctrl_out), INTENT(IN) :: var
     
    492499      INTEGER :: iff, iff_beg, iff_end
    493500     
    494     REAL,dimension(klon_mpi) :: buffer_omp
    495     INTEGER, allocatable, dimension(:) :: index2d
     501    REAL,DIMENSION(klon_mpi) :: buffer_omp
     502    INTEGER, allocatable, DIMENSION(:) :: index2d
    496503    REAL :: Field2d(iim,jj_nb)
    497504
     
    508515      END IF
    509516
    510     IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first dimension not equal to klon',1)
     517    IF (size(field)/=klon) CALL abort_gcm('iophy::histwrite2d','Field first DIMENSION not equal to klon',1)
    511518   
    512519    CALL Gather_omp(field,buffer_omp)   
     
    578585  include 'dimensions.h'
    579586   
    580 !    integer,intent(in) :: nid
    581 !    logical,intent(in) :: lpoint
    582 !    character*(*), intent(IN) :: name
    583 !    integer, intent(in) :: itau
    584 !    real,dimension(:,:),intent(in) :: field  ! --> field(klon,:)
     587!    integer,INTENT(IN) :: nid
     588!    logical,INTENT(IN) :: lpoint
     589!    character*(*), INTENT(IN) :: name
     590!    integer, INTENT(IN) :: itau
     591!    REAL,DIMENSION(:,:),INTENT(IN) :: field  ! --> field(klon,:)
    585592
    586593      TYPE(ctrl_out), INTENT(IN) :: var
     
    594601    REAL,ALLOCATABLE, DIMENSION(:,:) :: fieldok
    595602
    596     IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first dimension not equal to klon',1)
     603    IF (size(field,1)/=klon) CALL abort_gcm('iophy::histwrite3d','Field first DIMENSION not equal to klon',1)
    597604    nlev=size(field,2)
    598605
  • LMDZ5/trunk/libf/phylmd/phys_local_var_mod.F90

    r1785 r1797  
    33!
    44      MODULE phys_local_var_mod
    5 
    65! Variables locales pour effectuer les appels en serie
    76!======================================================================
     
    187186!$OMP THREADPRIVATE(topswcf_aerop, solswcf_aerop)
    188187
     188
     189!Ajout de celles nécessaires au phys_output_write_mod
     190      REAL, SAVE, ALLOCATABLE :: slp(:)
     191!$OMP THREADPRIVATE(slp)
     192      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: sens, flwp, fiwp
     193!$OMP THREADPRIVATE(sens, flwp, fiwp)
     194      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_wake, alp_wake, bils
     195!$OMP THREADPRIVATE(ale_wake, alp_wake, bils)
     196      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cdragm, cdragh
     197!$OMP THREADPRIVATE(cdragm, cdragh)
     198      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cldh, cldl, cldm, cldq, cldt, qsat2m, qsol
     199!$OMP THREADPRIVATE(cldh, cldl, cldm, cldq, cldt, qsat2m, qsol)
     200      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: dthmin, evap, fder, plcl, plfc, prw
     201!$OMP THREADPRIVATE(dthmin, evap, fder, plcl, plfc, prw)
     202      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zustar, zu10m, zv10m, rh2m
     203!$OMP THREADPRIVATE(zustar, zu10m, zv10m, rh2m)
     204      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: s_lcl, s_pblh, s_pblt, s_therm
     205!$OMP THREADPRIVATE(s_lcl, s_pblh, s_pblt, s_therm)
     206      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: slab_wfbils
     207!$OMP THREADPRIVATE(slab_wfbils)
     208      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: tpot, tpote, ue, uq, ve, vq, zxffonte
     209!$OMP THREADPRIVATE(tpot, tpote, ue, uq, ve, vq, zxffonte)
     210      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfqcalving
     211!$OMP THREADPRIVATE(zxfqcalving)
     212      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxfluxlat, zxrugs, zxtsol, snow_lsc, zxfqfonte
     213!$OMP THREADPRIVATE(zxfluxlat, zxrugs, zxtsol, snow_lsc, zxfqfonte)
     214      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: zxqsurf, rain_lsc
     215!$OMP THREADPRIVATE(zxqsurf, rain_lsc)
     216      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: wake_h, wbeff, zmax_th, zq2m, zt2m
     217!$OMP THREADPRIVATE(wake_h, wbeff, zmax_th, zq2m, zt2m)
     218      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: weak_inversion
     219!$OMP THREADPRIVATE(weak_inversion)
     220      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: ale_bl_stat,alp_bl_conv,alp_bl_det
     221!$OMP THREADPRIVATE(ale_bl_stat,alp_bl_conv,alp_bl_det)
     222      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_fluct_m,alp_bl_fluct_tke
     223!$OMP THREADPRIVATE(alp_bl_fluct_m,alp_bl_fluct_tke)
     224      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: alp_bl_stat, n2, s2
     225!$OMP THREADPRIVATE(alp_bl_stat, n2, s2)
     226      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: proba_notrig, random_notrig
     227!$OMP THREADPRIVATE(proba_notrig, random_notrig)
     228      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: fsolsw, wfbils, wfbilo
     229!$OMP THREADPRIVATE(fsolsw, wfbils, wfbilo)
     230      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:)  :: t2m, fevap, fluxlat, fsollw,evap_pot
     231!$OMP THREADPRIVATE(t2m, fevap, fluxlat, fsollw,evap_pot)
     232      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: dnwd, dnwd0, upwd, omega
     233!$OMP THREADPRIVATE(dnwd, dnwd0, upwd, omega)
     234!      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: coefh, coefm, lambda_th
     235      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: lambda_th
     236!$OMP THREADPRIVATE(lambda_th)
     237      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: cldemi, cldfra, cldtau, fiwc, fl, re, flwc
     238!$OMP THREADPRIVATE(cldemi, cldfra, cldtau, fiwc, fl, re, flwc)
     239      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: ref_liq, ref_ice, theta, zphi
     240!$OMP THREADPRIVATE(ref_liq, ref_ice, theta, zphi)
     241      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wake_omg, zx_rh
     242!$OMP THREADPRIVATE(wake_omg, zx_rh)
     243      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: frugs, agesno
     244!$OMP THREADPRIVATE(frugs, agesno)
     245      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmflxr, pmflxs, prfl, psfl, fraca
     246!$OMP THREADPRIVATE(pmflxr, pmflxs, prfl, psfl, fraca)
     247      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: Vprecip, zw2
     248!$OMP THREADPRIVATE(Vprecip, zw2)
     249      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: pmfd, pmfu
     250!$OMP THREADPRIVATE(pmfd, pmfu)
     251      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: fluxt, fluxu, fluxv
     252!$OMP THREADPRIVATE(fluxt, fluxu, fluxv)
     253      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: uwriteSTD, vwriteSTD, wwriteSTD
     254!$OMP THREADPRIVATE(uwriteSTD, vwriteSTD, wwriteSTD)
     255      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:,:) :: phiwriteSTD, qwriteSTD, twriteSTD
     256!$OMP THREADPRIVATE(phiwriteSTD, qwriteSTD, twriteSTD)
     257
     258! ug et d'autres encore:
     259      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: wdtrainA, wdtrainM
     260!$OMP THREADPRIVATE(wdtrainA, wdtrainM)
     261      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: beta_prec
     262!$OMP THREADPRIVATE(beta_prec)
     263      REAL, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rneb
     264!$OMP THREADPRIVATE(rneb)
     265
    189266CONTAINS
    190267
     
    195272USE aero_mod
    196273USE indice_sol_mod
     274USE phys_output_var_mod
     275USE phys_state_var_mod
    197276
    198277IMPLICIT NONE
     
    279358      ALLOCATE(topswcf_aerop(klon,naero_grp), solswcf_aerop(klon,naero_grp))
    280359
     360! FH Ajout de celles nécessaires au phys_output_write_mod
     361
     362      ALLOCATE(slp(klon))
     363      ALLOCATE(ale_wake(klon), alp_wake(klon), bils(klon))
     364      ALLOCATE(cdragm(klon), cdragh(klon), cldh(klon), cldl(klon))
     365      ALLOCATE(cldm(klon), cldq(klon), cldt(klon), qsat2m(klon), qsol(klon))
     366      ALLOCATE(dthmin(klon), evap(klon), fder(klon), plcl(klon), plfc(klon))
     367      ALLOCATE(prw(klon), zustar(klon), zu10m(klon), zv10m(klon), rh2m(klon))
     368      ALLOCATE(s_lcl(klon))
     369      ALLOCATE(s_pblh(klon), s_pblt(klon), s_therm(klon))
     370      ALLOCATE(slab_wfbils(klon), tpot(klon), tpote(klon), ue(klon))
     371      ALLOCATE(uq(klon), ve(klon), vq(klon), zxffonte(klon))
     372      ALLOCATE(zxfqcalving(klon), zxfluxlat(klon), zxrugs(klon))
     373      ALLOCATE(zxtsol(klon), snow_lsc(klon), zxfqfonte(klon), zxqsurf(klon))
     374      ALLOCATE(rain_lsc(klon), wake_h(klon), wbeff(klon), zmax_th(klon))
     375      ALLOCATE(zq2m(klon), zt2m(klon), weak_inversion(klon))
     376      ALLOCATE(sens(klon), flwp(klon), fiwp(klon))
     377      ALLOCATE(ale_bl_stat(klon), alp_bl_conv(klon), alp_bl_det(klon))
     378      ALLOCATE(alp_bl_fluct_m(klon), alp_bl_fluct_tke(klon))
     379      ALLOCATE(alp_bl_stat(klon), n2(klon), s2(klon))
     380      ALLOCATE(proba_notrig(klon), random_notrig(klon))
     381
     382      ALLOCATE(dnwd(klon, klev), dnwd0(klon, klev))
     383!      ALLOCATE(upwd(klon, klev), omega(klon, klev), coefh(klon, klev))
     384      ALLOCATE(upwd(klon, klev), omega(klon, klev))
     385!      ALLOCATE(coefm(klon, klev), lambda_th(klon, klev), cldemi(klon, klev))
     386      ALLOCATE(lambda_th(klon, klev), cldemi(klon, klev))
     387      ALLOCATE(cldfra(klon, klev), cldtau(klon, klev), fiwc(klon, klev))
     388      ALLOCATE(fl(klon, klev), re(klon, klev), flwc(klon, klev))
     389      ALLOCATE(ref_liq(klon, klev), ref_ice(klon, klev), theta(klon, klev))
     390      ALLOCATE(zphi(klon, klev), wake_omg(klon, klev), zx_rh(klon, klev))
     391      ALLOCATE(pmfd(klon, klev), pmfu(klon, klev))
     392
     393      ALLOCATE(t2m(klon, nbsrf), fevap(klon, nbsrf), fluxlat(klon, nbsrf))
     394      ALLOCATE(frugs(klon, nbsrf), agesno(klon, nbsrf), fsollw(klon, nbsrf))
     395      ALLOCATE(fsolsw(klon, nbsrf), wfbils(klon, nbsrf), wfbilo(klon, nbsrf))
     396      ALLOCATE(evap_pot(klon, nbsrf))
     397
     398      ALLOCATE(pmflxr(klon, klev+1), pmflxs(klon, klev+1), prfl(klon, klev+1))
     399      ALLOCATE(psfl(klon, klev+1), fraca(klon, klev+1), Vprecip(klon, klev+1))
     400      ALLOCATE(zw2(klon, klev+1))
     401
     402      ALLOCATE(fluxu(klon, klev, nbsrf), fluxv(klon, klev, nbsrf))
     403      ALLOCATE(fluxt(klon, klev, nbsrf))
     404
     405      ALLOCATE(uwriteSTD(klon,nlevSTD,nfiles), vwriteSTD(klon,nlevSTD,nfiles))
     406      ALLOCATE(wwriteSTD(klon,nlevSTD,nfiles), phiwriteSTD(klon,nlevSTD,nfiles))
     407      ALLOCATE(qwriteSTD(klon,nlevSTD,nfiles), twriteSTD(klon,nlevSTD,nfiles))
     408
     409! ug et d'autres encore:
     410      ALLOCATE(wdtrainA(klon,klev),wdtrainM(klon,klev))
     411      ALLOCATE(beta_prec(klon,klev))
     412      ALLOCATE(rneb(klon,klev))
     413
     414
    281415END SUBROUTINE phys_local_var_init
    282416
     
    368502      deallocate(topswcf_aerop, solswcf_aerop)
    369503
     504
     505! FH Ajout de celles nécessaires au phys_output_write_mod
     506      DEALLOCATE(slp)
     507      DEALLOCATE(ale_wake, alp_wake, bils)
     508      DEALLOCATE(cdragm, cdragh, cldh, cldl)
     509      DEALLOCATE(cldm, cldq, cldt, qsat2m, qsol)
     510      DEALLOCATE(dthmin, evap, fder, plcl, plfc)
     511      DEALLOCATE(prw, zustar, zu10m, zv10m, rh2m, s_lcl)
     512      DEALLOCATE(s_pblh, s_pblt, s_therm)
     513      DEALLOCATE(slab_wfbils, tpot, tpote, ue)
     514      DEALLOCATE(uq, ve, vq, zxffonte)
     515      DEALLOCATE(zxfqcalving, zxfluxlat, zxrugs)
     516      DEALLOCATE(zxtsol, snow_lsc, zxfqfonte, zxqsurf)
     517      DEALLOCATE(rain_lsc, wake_h, wbeff, zmax_th)
     518      DEALLOCATE(zq2m, zt2m, weak_inversion)
     519      DEALLOCATE(sens, flwp, fiwp)
     520      DEALLOCATE(ale_bl_stat,alp_bl_conv,alp_bl_det)
     521      DEALLOCATE(alp_bl_fluct_m,alp_bl_fluct_tke)
     522      DEALLOCATE(alp_bl_stat, n2, s2)
     523      DEALLOCATE(proba_notrig, random_notrig)
     524
     525      DEALLOCATE(dnwd, dnwd0)
     526!      DEALLOCATE(upwd, omega, coefh)
     527      DEALLOCATE(upwd, omega)
     528!      DEALLOCATE(coefm, lambda_th, cldemi)
     529      DEALLOCATE(lambda_th, cldemi)
     530      DEALLOCATE(cldfra, cldtau, fiwc)
     531      DEALLOCATE(fl, re, flwc)
     532      DEALLOCATE(ref_liq, ref_ice, theta)
     533      DEALLOCATE(zphi, wake_omg, zx_rh)
     534      DEALLOCATE(pmfd, pmfu)
     535
     536      DEALLOCATE(t2m, fevap, fluxlat)
     537      DEALLOCATE(frugs, agesno, fsollw, evap_pot)
     538      DEALLOCATE(fsolsw, wfbils, wfbilo)
     539
     540      DEALLOCATE(pmflxr, pmflxs, prfl)
     541      DEALLOCATE(psfl, fraca, Vprecip)
     542      DEALLOCATE(zw2)
     543
     544      DEALLOCATE(fluxu, fluxv)
     545      DEALLOCATE(fluxt)
     546
     547      DEALLOCATE(uwriteSTD, vwriteSTD)
     548      DEALLOCATE(wwriteSTD, phiwriteSTD)
     549      DEALLOCATE(qwriteSTD, twriteSTD)
     550
     551! ug et d'autres encore:
     552      DEALLOCATE(wdtrainA, wdtrainM)
     553      DEALLOCATE(beta_prec)
     554      DEALLOCATE(rneb)
     555
    370556END SUBROUTINE phys_local_var_end
    371557
  • LMDZ5/trunk/libf/phylmd/phys_output_var_mod.F90

    r1791 r1797  
    5050!$OMP THREADPRIVATE(levmin, levmax)
    5151
     52      LOGICAL, SAVE :: vars_defined = .TRUE.
     53!$OMP THREADPRIVATE(vars_defined)
     54
    5255  TYPE ctrl_out
    5356     INTEGER,DIMENSION(nfiles)            :: flag
  • LMDZ5/trunk/libf/phylmd/phys_output_write_new.h

    r1792 r1797  
    11      itau_w = itau_phy + itap + start_time * day_step / iphysiq
    22      ! ug On transmet le pas de temps à iophy pour que les méthodes histwrite y aient accès:
    3       itau_iophy = itau_w
     3      CALL set_itau_iophy(itau_w)
    44
    55             ndex2d = 0
  • LMDZ5/trunk/libf/phylmd/physiq.F

    r1791 r1797  
    173173      PARAMETER (ok_region=.FALSE.)
    174174c======================================================================
    175       real weak_inversion(klon),dthmin(klon)
    176175      real seuil_inversion
    177176      save seuil_inversion
     
    184183      REAL zz,znum,zden
    185184      REAL wmax_th(klon)
    186       REAL zmax_th(klon)
    187185      REAL tau_overturning_th(klon)
    188186
     
    220218      REAL u(klon,klev)
    221219      REAL v(klon,klev)
    222       REAL t(klon,klev),theta(klon,klev),thetal(klon,klev)
     220      REAL t(klon,klev),thetal(klon,klev)
    223221c thetal: ligne suivante a decommenter si vous avez les fichiers     MPL 20130625
    224222c fth_fonctions.F90 et parkind1.F90
     
    227225      REAL qx(klon,klev,nqtot)
    228226      REAL flxmass_w(klon,klev)
    229       REAL omega(klon,klev) ! vitesse verticale en Pa/s
    230227      REAL d_u(klon,klev)
    231228      REAL d_v(klon,klev)
     
    242239      real clw(klon,klev),elij(klon,klev,klev)
    243240      real epmlmMm(klon,klev,klev),eplaMm(klon,klev)
    244       real wdtrainA(klon,klev),wdtrainM(klon,klev)
    245241! RomP <<<
    246242!IM definition dynamique o_trac dans phys_output_open
     
    281277c
    282278c
    283 c prw: precipitable water
    284       real prw(klon)
    285279
    286280      REAL convliq(klon,klev)  ! eau liquide nuageuse convective
     
    295289c flwp, fiwp = Liquid Water Path & Ice Water Path (kg/m2)
    296290c flwc, fiwc = Liquid Water Content & Ice Water Content (kg/kg)
    297       REAL flwp(klon), fiwp(klon)
    298       REAL flwc(klon,klev), fiwc(klon,klev)
    299291      REAL flwp_c(klon), fiwp_c(klon)
    300292      REAL flwc_c(klon,klev), fiwc_c(klon,klev)
     
    302294      REAL flwc_s(klon,klev), fiwc_s(klon,klev)
    303295
    304       REAL evap_pot(klon,nbsrf)
    305296
    306297cIM ISCCP simulator v3.4
     
    528519c$OMP THREADPRIVATE(itap)
    529520c
    530       real slp(klon) ! sea level pressure
    531 c
    532       REAL fevap(klon,nbsrf)
    533       REAL fluxlat(klon,nbsrf)
    534 c
    535       REAL qsol(klon)
    536521      REAL,save ::  solarlong0
    537522c$OMP THREADPRIVATE(solarlong0)
     
    544529c
    545530      INTEGER igwd,idx(klon),itest(klon)
    546 c
    547       REAL agesno(klon,nbsrf)
    548531c
    549532c      REAL,allocatable,save :: run_off_lic_0(:)
     
    565548
    566549      REAL mip(klon,klev)  ! mass flux shed by the adiab ascent at each level
    567       REAL Vprecip(klon,klev+1)   ! precipitation vertical profile
    568550c
    569551      REAL wape_prescr, fip_prescr
     
    589571c$OMP THREADPRIVATE(wake_s_min_lsp)
    590572
    591       real ale_wake(klon)
    592       real alp_wake(klon)
    593573
    594574      real ok_wk_lsp(klon)
     
    609589      REAL wake_dtPBL(klon,klev)      ! Wake : differential heating (wake - unpertubed) PBL
    610590      REAL wake_dqPBL(klon,klev)      ! Wake : differential moistening (wake - unpertubed) PBL
    611       REAL wake_omg(klon,klev)        ! Wake : velocity difference (wake - unpertubed)
    612591      REAL wake_ddeltat(klon,klev),wake_ddeltaq(klon,klev)
    613592      REAL wake_dp_deltomg(klon,klev) ! Wake : gradient vertical de wake_omg
     
    615594c
    616595cpourquoi y'a pas de save??
    617       REAL wake_h(klon)               ! Wake : hauteur de la poche froide
    618596c
    619597      INTEGER wake_k(klon)            ! Wake sommet
     
    645623cRR:fin declarations poches froides
    646624c=======================================================================================================
    647 
    648       REAL zw2(klon,klev+1)
    649       REAL fraca(klon,klev+1)       
     625       
    650626      REAL ztv(klon,klev),ztva(klon,klev)
    651627      REAL zpspsk(klon,klev)
     
    665641      real env_tke_max0(klon)                                ! TKE dans l'environnement au LCL
    666642
    667 c---Spectre de thermiques de type 2 au LCL
    668       real n2(klon),s2(klon)
    669       real ale_bl_stat(klon)
    670 
    671643c---D\'eclenchement stochastique
    672644      integer :: tau_trig(klon)
    673       real proba_notrig(klon)
    674       real random_notrig(klon)
    675645
    676646c--------Statistical Boundary Layer Closure: ALP_BL--------
     
    680650      real env_tke_max(klon,klev)                            ! Profil de TKE dans l'environnement
    681651
    682 c---Fermeture statistique
    683       real alp_bl_det(klon)                                     ! ALP d\'terministe du thermique unique
    684       real alp_bl_fluct_m(klon)                                 ! ALP li\'ee aux fluctuations de flux de masse sous-nuageux
    685       real alp_bl_fluct_tke(klon)                               ! ALP li\'ee aux fluctuations d'\'energie cin\'etique sous-nuageuse
    686       real alp_bl_conv(klon)                                    ! ALP li\'ee \`a grande \'echelle
    687       real alp_bl_stat(klon)                                    ! ALP totale
    688652
    689653ccc fin nrlmd le 10/04/2012
     
    697661c Variables locales:
    698662c
    699       REAL cdragh(klon) ! drag coefficient pour T and Q
    700       REAL cdragm(klon) ! drag coefficient pour vent
    701663cAA
    702664cAA  Pour phytrac
    703665      REAL u1(klon)             ! vents dans la premiere couche U
    704666      REAL v1(klon)             ! vents dans la premiere couche V
    705 
    706       REAL zxffonte(klon), zxfqcalving(klon),zxfqfonte(klon)
    707667
    708668c@$$      LOGICAL offline           ! Controle du stockage ds "physique"
     
    713673! RomP >>>
    714674      REAL beta_prec_fisrt(klon,klev) ! taux de conv de l'eau cond (fisrt)
    715       REAL beta_prec(klon,klev)       ! taux de conv de l'eau cond (utilise)
    716675! RomP <<<
    717676      INTEGER       :: iii
     
    722681c
    723682cIM 050204 END
    724       REAL evap(klon), devap(klon) ! evaporation et sa derivee
    725       REAL sens(klon), dsens(klon) ! chaleur sensible et sa derivee
    726 
    727       REAL bils(klon) ! bilan de chaleur au sol
    728 
    729       REAL wfbilo(klon,nbsrf) ! bilan d'eau, pour chaque
    730 C                             ! type de sous-surface et pondere par la fraction
    731       REAL wfbils(klon,nbsrf) ! bilan de chaleur au sol, pour chaque
    732 C                             ! type de sous-surface et pondere par la fraction
    733       REAL slab_wfbils(klon)  ! bilan de chaleur au sol pour le cas de slab, sur les points d'ocean
    734 
    735       REAL fder(klon)         
    736       REAL ve(klon) ! integr. verticale du transport meri. de l'energie
    737       REAL vq(klon) ! integr. verticale du transport meri. de l'eau
    738       REAL ue(klon) ! integr. verticale du transport zonal de l'energie
    739       REAL uq(klon) ! integr. verticale du transport zonal de l'eau
    740 c
    741       REAL frugs(klon,nbsrf)
    742       REAL zxrugs(klon) ! longueur de rugosite
     683      REAL devap(klon) ! evaporation et sa derivee
     684      REAL dsens(klon) ! chaleur sensible et sa derivee
     685
    743686c
    744687c Conditions aux limites
     
    804747      REAL diafra(klon,klev)  ! fraction nuageuse
    805748      REAL cldliq(klon,klev)  ! eau liquide nuageuse
    806       REAL cldfra(klon,klev)  ! fraction nuageuse
    807       REAL cldtau(klon,klev)  ! epaisseur optique
    808       REAL cldemi(klon,klev)  ! emissivite infrarouge
    809749c
    810750CXXX PB
    811751      REAL fluxq(klon,klev, nbsrf)   ! flux turbulent d'humidite
    812       REAL fluxt(klon,klev, nbsrf)   ! flux turbulent de chaleur
    813       REAL fluxu(klon,klev, nbsrf)   ! flux turbulent de vitesse u
    814       REAL fluxv(klon,klev, nbsrf)   ! flux turbulent de vitesse v
    815752c
    816753      REAL zxfluxt(klon, klev)
     
    818755      REAL zxfluxu(klon, klev)
    819756      REAL zxfluxv(klon, klev)
    820 CXXX
    821 c
    822       REAL fsollw(klon, nbsrf)   ! bilan flux IR pour chaque sous surface
    823       REAL fsolsw(klon, nbsrf)   ! flux solaire absorb. pour chaque sous surface
     757
    824758c Le rayonnement n'est pas calcule tous les pas, il faut donc
    825759c                      sauvegarder les sorties du rayonnement
     
    834768      REAL conv_q(klon,klev) ! convergence de l'humidite (kg/kg/s)
    835769      REAL conv_t(klon,klev) ! convergence de la temperature(K/s)
    836 c
    837       REAL cldl(klon),cldm(klon),cldh(klon) !nuages bas, moyen et haut
    838       REAL cldt(klon),cldq(klon) !nuage total, eau liquide integree
    839 c
    840       REAL zxtsol(klon), zxqsurf(klon), zxsnow(klon), zxfluxlat(klon)
     770
     771c
     772      REAL zxsnow(klon)
    841773      REAL zxsnow_dummy(klon)
    842774c
     
    857789      REAL t_coup
    858790      PARAMETER (t_coup=234.0)
    859 c
    860       REAL zphi(klon,klev)
     791
    861792cym A voir plus tard !!
    862793cym      REAL zx_relief(iim,jjmp1)
     
    864795c
    865796c Grandeurs de sorties
    866       REAL s_pblh(klon), s_lcl(klon), s_capCL(klon)
    867       REAL s_oliqCL(klon), s_cteiCL(klon), s_pblt(klon)
    868       REAL s_therm(klon), s_trmb1(klon), s_trmb2(klon)
     797      REAL s_capCL(klon)
     798      REAL s_oliqCL(klon), s_cteiCL(klon)
     799      REAL s_trmb1(klon), s_trmb2(klon)
    869800      REAL s_trmb3(klon)
    870801cKE43
    871802c Variables locales pour la convection de K. Emanuel (sb):
    872 c
    873       REAL upwd(klon,klev)      ! saturated updraft mass flux
    874       REAL dnwd(klon,klev)      ! saturated downdraft mass flux
    875       REAL dnwd0(klon,klev)     ! unsaturated downdraft mass flux
     803
    876804      REAL tvp(klon,klev)       ! virtual temp of lifted parcel
    877       REAL plcl(klon)           ! Lifting Condensation Level
    878       REAL plfc(klon)           ! Level of Free Convection
    879       REAL wbeff(klon)          ! saturated updraft velocity at LFC
    880805      CHARACTER*40 capemaxcels  !max(CAPE)
    881806
     
    902827c eva: evaporation de l'eau liquide nuageuse
    903828c vdf: couche limite (Vertical DiFfusion)
    904       REAL rneb(klon,klev)
    905829
    906830! tendance nulles
     
    914838cIM 081204 END
    915839c
    916       REAL pmfu(klon,klev), pmfd(klon,klev)
    917840      REAL pen_u(klon,klev), pen_d(klon,klev)
    918841      REAL pde_u(klon,klev), pde_d(klon,klev)
    919842      INTEGER kcbot(klon), kctop(klon), kdtop(klon)
    920       REAL pmflxr(klon,klev+1), pmflxs(klon,klev+1)
    921       REAL prfl(klon,klev+1), psfl(klon,klev+1)
    922 c
    923       REAL rain_lsc(klon)
    924       REAL snow_lsc(klon)
    925843c
    926844      REAL ratqsc(klon,klev)
     
    935853      logical ok_newmicro
    936854      save ok_newmicro
    937       real ref_liq(klon,klev), ref_ice(klon,klev)
    938855c$OMP THREADPRIVATE(ok_newmicro)
    939856      save fact_cldcon,facttemps
     
    973890c Variables locales pour effectuer les appels en serie
    974891c
    975       REAL zx_rh(klon,klev)
    976892cIM RH a 2m (la surface)
    977       REAL rh2m(klon), qsat2m(klon)
    978       REAL tpot(klon), tpote(klon)
    979893      REAL Lheat
    980894
     
    10911005      REAL ZRCPD
    10921006c-jld ec_conser
    1093       REAL t2m(klon,nbsrf)  ! temperature a 2m
    10941007      REAL q2m(klon,nbsrf)  ! humidite a 2m
    10951008
    10961009cIM: t2m, q2m, ustar, u10m, v10m et t2mincels, t2maxcels
    1097       REAL zt2m(klon), zq2m(klon)             !temp., hum. 2m moyenne s/ 1 maille
    1098       REAL zustar(klon),zu10m(klon), zv10m(klon)  ! u* et vents a 10m moyennes s/1 maille
    10991010      CHARACTER*40 t2mincels, t2maxcels       !t2m min., t2m max
    11001011      CHARACTER*40 tinst, tave, typeval
    11011012      REAL cldtaupi(klon,klev)  ! Cloud optical thickness for pre-industrial (pi) aerosols
    11021013
    1103       REAL re(klon, klev)       ! Cloud droplet effective radius
    1104       REAL fl(klon, klev)  ! denominator of re
    11051014
    11061015      REAL re_top(klon), fl_top(klon) ! CDR at top of liquid water clouds
     
    12281137! Utilise notamment en 1D mais peut etre active egalement en 3D
    12291138! en imposant la valeur de igout.
    1230 c======================================================================
    1231 
     1139c======================================================================d
    12321140      if (prt_level.ge.1) then
    12331141          igout=klon/2+1/klon
     
    12501158
    12511159c======================================================================
    1252 
    1253 cym => necessaire pour iflag_con != 2   
    1254       pmfd(:,:) = 0.
    1255       pen_u(:,:) = 0.
    1256       pen_d(:,:) = 0.
    1257       pde_d(:,:) = 0.
    1258       pde_u(:,:) = 0.
    1259       aam=0.
    1260 
    1261       torsfc=0.
    1262       forall (k=1: llm) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) / rg
    12631160
    12641161      if (first) then
     
    13011198
    13021199      endif  ! first
     1200
     1201cym => necessaire pour iflag_con != 2   
     1202      pmfd(:,:) = 0.
     1203      pen_u(:,:) = 0.
     1204      pen_d(:,:) = 0.
     1205      pde_d(:,:) = 0.
     1206      pde_u(:,:) = 0.
     1207      aam=0.
     1208
     1209      torsfc=0.
     1210      forall (k=1: llm) zmasse(:, k) = (paprs(:, k)-paprs(:, k+1)) / rg
     1211
     1212
    13031213
    13041214       modname = 'physiq'
Note: See TracChangeset for help on using the changeset viewer.