Changeset 909 for LMDZ4/trunk


Ignore:
Timestamp:
Feb 14, 2008, 5:27:13 PM (17 years ago)
Author:
lmdzadmin
Message:

Ajout/modif module physiq contenant variables sauvegardees/ou pas FH/IM
IM

Location:
LMDZ4/trunk/libf/phylmd
Files:
1 added
2 edited

Legend:

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

    r904 r909  
    77! Declaration des variables
    88
    9       REAL,ALLOCATABLE :: t_seri(:,:), q_seri(:,:)
    10       REAL,ALLOCATABLE :: ql_seri(:,:),qs_seri(:,:)
    11       REAL,ALLOCATABLE :: u_seri(:,:), v_seri(:,:)
     9      REAL, ALLOCATABLE :: t_seri(:,:), q_seri(:,:)
     10      REAL, ALLOCATABLE :: ql_seri(:,:),qs_seri(:,:)
     11      REAL, ALLOCATABLE :: u_seri(:,:), v_seri(:,:)
    1212
    13 
     13      REAL, ALLOCATABLE :: tr_seri(:,:,:)
     14      REAL, ALLOCATABLE :: d_t_dyn(:,:), d_q_dyn(:,:)
     15      REAL, ALLOCATABLE :: d_t_con(:,:),d_q_con(:,:)
     16      REAL, ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:)
     17      REAL, ALLOCATABLE :: d_t_wake(:,:),d_q_wake(:,:)
     18      REAL, ALLOCATABLE :: d_t_lsc(:,:),d_q_lsc(:,:),d_ql_lsc(:,:)
     19      REAL, ALLOCATABLE :: d_t_ajsb(:,:), d_q_ajsb(:,:)
     20      REAL, ALLOCATABLE :: d_t_ajs(:,:), d_q_ajs(:,:)
     21      REAL, ALLOCATABLE :: d_u_ajs(:,:), d_v_ajs(:,:)
     22      REAL, ALLOCATABLE :: d_t_eva(:,:),d_q_eva(:,:)
     23!tendances dues a oro et lif
     24      REAL, ALLOCATABLE :: d_t_oli(:,:)
     25      REAL, ALLOCATABLE :: d_u_oli(:,:), d_v_oli(:,:)
     26      REAL, ALLOCATABLE :: d_t_vdf(:,:), d_q_vdf(:,:)
     27      REAL, ALLOCATABLE :: d_u_vdf(:,:), d_v_vdf(:,:)
     28      REAL, ALLOCATABLE :: d_t_oro(:,:)
     29      REAL, ALLOCATABLE :: d_u_oro(:,:), d_v_oro(:,:)
     30      REAL, ALLOCATABLE :: d_t_lif(:,:)
     31      REAL, ALLOCATABLE :: d_u_lif(:,:), d_v_lif(:,:)
     32! tendance du a la conersion Ec -> E thermique
     33      REAL, ALLOCATABLE :: d_t_ec(:,:)
     34      REAL, ALLOCATABLE :: d_ts(:,:), d_tr(:,:,:)
    1435CONTAINS
    1536
     
    1839use dimphy
    1940IMPLICIT NONE
     41#include "indicesol.h"
    2042      allocate(t_seri(klon,klev),q_seri(klon,klev),ql_seri(klon,klev),qs_seri(klon,klev))
    2143      allocate(u_seri(klon,klev),v_seri(klon,klev))
     44
     45      allocate(tr_seri(klon,klev,nbtr))
     46      allocate(d_t_dyn(klon,klev),d_q_dyn(klon,klev))
     47      allocate(d_t_con(klon,klev),d_q_con(klon,klev))
     48      allocate(d_u_con(klon,klev),d_v_con(klon,klev))
     49      allocate(d_t_wake(klon,klev),d_q_wake(klon,klev))
     50      allocate(d_t_lsc(klon,klev),d_q_lsc(klon,klev))
     51      allocate(d_ql_lsc(klon,klev))
     52      allocate(d_t_ajsb(klon,klev),d_q_ajsb(klon,klev))
     53      allocate(d_t_ajs(klon,klev),d_q_ajs(klon,klev))
     54      allocate(d_u_ajs(klon,klev),d_v_ajs(klon,klev))
     55      allocate(d_t_eva(klon,klev),d_q_eva(klon,klev))
     56      allocate(d_t_vdf(klon,klev),d_q_vdf(klon,klev))
     57      allocate(d_u_vdf(klon,klev),d_v_vdf(klon,klev))
     58      allocate(d_t_oli(klon,klev),d_t_oro(klon,klev))
     59      allocate(d_u_oli(klon,klev),d_v_oli(klon,klev))
     60      allocate(d_u_oro(klon,klev),d_v_oro(klon,klev))
     61      allocate(d_t_lif(klon,klev),d_t_ec(klon,klev))
     62      allocate(d_u_lif(klon,klev),d_v_lif(klon,klev))
     63      allocate(d_ts(klon,klev), d_tr(klon,klev,nbtr))
    2264END SUBROUTINE phys_local_var_init
    2365
     
    2668use dimphy
    2769IMPLICIT NONE
     70#include "indicesol.h"
    2871      deallocate(t_seri,q_seri,ql_seri,qs_seri)
    2972      deallocate(u_seri,v_seri)
     73
     74      deallocate(tr_seri)
     75      deallocate(d_t_dyn,d_q_dyn)
     76      deallocate(d_t_con,d_q_con)
     77      deallocate(d_u_con,d_v_con)
     78      deallocate(d_t_wake,d_q_wake)
     79      deallocate(d_t_lsc,d_q_lsc)
     80      deallocate(d_ql_lsc)
     81      deallocate(d_t_ajsb,d_q_ajsb)
     82      deallocate(d_t_ajs,d_q_ajs)
     83      deallocate(d_u_ajs,d_v_ajs)
     84      deallocate(d_t_eva,d_q_eva)
     85      deallocate(d_t_vdf,d_q_vdf)
     86      deallocate(d_u_vdf,d_v_vdf)
     87      deallocate(d_t_oli,d_t_oro)
     88      deallocate(d_u_oli,d_v_oli)
     89      deallocate(d_u_oro,d_v_oro)
     90      deallocate(d_t_lif,d_t_ec)
     91      deallocate(d_u_lif,d_v_lif)
     92      deallocate(d_ts, d_tr)
    3093END SUBROUTINE phys_local_var_end
    3194
  • LMDZ4/trunk/libf/phylmd/physiq.F

    r904 r909  
    2828      USE pbl_surface_mod, ONLY : pbl_surface
    2929      USE phys_local_var_mod ! Variables internes non sauvegardees de la physique
     30      USE phys_state_var_mod, klon_glo=>klon ! Variables sauvegardees de la physique
    3031
    3132
     
    3435      USE ocean_forced_mod, ONLY : ocean_forced_get_vars
    3536      USE fonte_neige_mod, ONLY  : fonte_neige_get_vars
     37      USE phys_output_mod
    3638
    3739      IMPLICIT none
     
    123125      parameter(rnpb=.true.)
    124126#endif
    125 c      ocean = type de modele ocean a utiliser: force, slab, couple
    126       character*6 ocean
    127       SAVE ocean
    128 c$OMP THREADPRIVATE(ocean)
    129127
    130128cIM "slab" ocean
     
    143141ccc      LOGICAL soil_model
    144142ccc      PARAMETER (soil_model=.FALSE.)
    145       logical ok_veget
    146       save ok_veget
    147 c$OMP THREADPRIVATE(ok_veget)
    148 c     parameter (ok_veget = .true.)
    149 c      parameter (ok_veget = .false.)
    150143c======================================================================
    151144c Dans les versions precedentes, l'eau liquide nuageuse utilisee dans
     
    228221      REAL t(klon,klev),theta(klon,klev)
    229222      REAL qx(klon,klev,nqmax)
    230 
    231       REAL,allocatable,save :: t_ancien(:,:), q_ancien(:,:)
    232 c$OMP THREADPRIVATE(t_ancien, q_ancien)
    233       LOGICAL ancien_ok
    234       SAVE ancien_ok
    235 c$OMP THREADPRIVATE(ancien_ok)
    236       REAL d_t_dyn(klon,klev)
    237       REAL d_q_dyn(klon,klev)
    238223
    239224      REAL omega(klon,klev)
     
    635620c Variables propres a la physique
    636621c
    637       REAL dtime
    638       SAVE dtime                  ! pas temporel de la physique
    639 c$OMP THREADPRIVATE(dtime)
    640 c
    641622      INTEGER radpas
    642623      SAVE radpas                 ! frequence d'appel rayonnement
    643624c$OMP THREADPRIVATE(radpas)
    644625c
    645       REAL,allocatable,save :: radsol(:)
    646 c$OMP THREADPRIVATE(radsol)
    647 cym      SAVE radsol               ! bilan radiatif au sol calcule par code radiatif
    648 c
    649       REAL,allocatable,save :: rlat(:)
    650 c$OMP THREADPRIVATE(rlat)
    651 cym      SAVE rlat                   ! latitude pour chaque point
    652 c
    653       REAL,allocatable,save :: rlon(:)
    654 c$OMP THREADPRIVATE(rlon)
    655 cym      SAVE rlon                   ! longitude pour chaque point
    656 
    657626      REAL,SAVE,ALLOCATABLE :: rlonPOS(:)
    658627c$OMP THREADPRIVATE(rlonPOS)   
     
    666635c$OMP THREADPRIVATE(itap)
    667636c
    668       REAL co2_ppm_etat0
    669 c
    670       REAL solaire_etat0
    671 c
    672637      real slp(klon) ! sea level pressure
    673 
    674       REAL,allocatable,save :: ftsol(:,:)
    675 c$OMP THREADPRIVATE(ftsol)       ! temperature du sol
    676638
    677639cIM
     
    690652      REAL,save ::  solarlong0
    691653c
    692       REAL,allocatable,save :: falb1(:,:)
    693 c$OMP THREADPRIVATE(falb1)       ! albedo par type de surface pour SW visible
    694 c
    695       REAL,allocatable,save :: falb2(:,:)
    696 c$OMP THREADPRIVATE(falb2)       ! albedo par type de surface pour SW proche IR
    697 
    698 c
    699 c
    700654c  Parametres de l'Orographie a l'Echelle Sous-Maille (OESM):
    701 c
    702       REAL,allocatable,save :: zmea(:)
    703 c$OMP THREADPRIVATE(zmea)
    704 cym      SAVE zmea                   ! orographie moyenne
    705 c
    706       REAL,allocatable,save :: zstd(:)
    707 c$OMP THREADPRIVATE(zstd)
    708 cym      SAVE zstd                   ! deviation standard de l'OESM
    709 c
    710       REAL,allocatable,save :: zsig(:)
    711 c$OMP THREADPRIVATE(zsig)
    712 cym      SAVE zsig                   ! pente de l'OESM
    713 c
    714       REAL,allocatable,save :: zgam(:)
    715 c$OMP THREADPRIVATE(zgam)
    716 cym      save zgam                   ! anisotropie de l'OESM
    717 c
    718       REAL,allocatable,save :: zthe(:)
    719 c$OMP THREADPRIVATE(zthe)     
    720 cym      SAVE zthe                   ! orientation de l'OESM
    721 c
    722       REAL,allocatable,save :: zpic(:)
    723 c$OMP THREADPRIVATE(zpic)
    724 cym      SAVE zpic                   ! Maximum de l'OESM
    725 c
    726       REAL,allocatable,save :: zval(:)
    727 c$OMP THREADPRIVATE(zval)
    728 cym      SAVE zval                   ! Minimum de l'OESM
    729 c
    730       REAL,allocatable,save :: rugoro(:)
    731 c$OMP THREADPRIVATE(rugoro)
    732 cym      SAVE rugoro                 ! longueur de rugosite de l'OESM
    733655c
    734656cIM 141004     REAL zulow(klon),zvlow(klon),zustr(klon), zvstr(klon)
     
    919841#endif
    920842
    921 cAA
    922       REAL,allocatable,save :: rain_fall(:) ! pluie
    923 c$OMP THREADPRIVATE(rain_fall)
    924       REAL,allocatable,save :: snow_fall(:) ! neige
    925 c$OMP THREADPRIVATE(snow_fall)
    926 cym      save snow_fall, rain_fall
    927 
    928843cIM cf FH pour Tiedtke 080604
    929844      REAL rain_tiedtke(klon),snow_tiedtke(klon)
     
    958873      SAVE lmt_pas                ! frequence de mise a jour
    959874c$OMP THREADPRIVATE(lmt_pas)
    960       REAL,allocatable,save :: pctsrf(:,:)
    961 c$OMP THREADPRIVATE(pctsrf)
    962875cIM
    963876      REAL pctsrf_new(klon,nbsrf) !pourcentage surfaces issus d'ORCHIDEE
     
    1024937c Variables locales
    1025938c
    1026       real,allocatable,save :: clwcon(:,:),rnebcon(:,:)
    1027 c$OMP THREADPRIVATE(clwcon,rnebcon)
    1028939      real,allocatable,save :: clwcon0(:,:),rnebcon0(:,:)
    1029940cym      save rnebcon, clwcon
     
    1042953      REAL fluxu(klon,klev, nbsrf)   ! flux turbulent de vitesse u
    1043954      REAL fluxv(klon,klev, nbsrf)   ! flux turbulent de vitesse v
    1044 
    1045       REAL, DIMENSION(:,:,:), ALLOCATABLE, SAVE :: pbl_tke ! turb kinetic energy
    1046 c   !$OMP THREADPRIVATE(pbl_tke)
    1047 
    1048955c
    1049956      REAL zxfluxt(klon, klev)
     
    1060967      REAL,allocatable,save :: cool0(:,:)   ! refroidissement infrarouge ciel clair
    1061968c$OMP THREADPRIVATE(cool0)
    1062       REAL,allocatable,save :: topsw(:), toplw(:), solsw(:), sollw(:)
    1063 c$OMP THREADPRIVATE(topsw,toplw,solsw,sollw)
     969      REAL,allocatable,save :: topsw(:), toplw(:)
     970c$OMP THREADPRIVATE(topsw,toplw)
    1064971      real,allocatable,save :: sollwdown(:)    ! downward LW flux at surface
    1065972c$OMP THREADPRIVATE(sollwdown)
     
    11101017      REAL zx_t, zx_qs, zdelta, zcor, zfra, zlvdcp, zlsdcp
    11111018      real zqsat(klon,klev)
    1112       INTEGER i, k, iq, ig, j, nsrf, ll, l, iiq
     1019      INTEGER i, k, iq, ig, j, nsrf, ll, l, iiq, iff
    11131020      REAL t_coup
    11141021      PARAMETER (t_coup=234.0)
     
    11631070c eva: evaporation de l'eau liquide nuageuse
    11641071c vdf: couche limite (Vertical DiFfusion)
    1165       REAL d_t_con(klon,klev),d_q_con(klon,klev)
    1166       REAL d_t_wake(klon,klev),d_q_wake(klon,klev)
    1167       REAL,SAVE,ALLOCATABLE :: d_u_con(:,:),d_v_con(:,:)
    1168 c$OMP THREADPRIVATE(d_u_con,d_v_con)
    1169       REAL d_t_lsc(klon,klev),d_q_lsc(klon,klev),d_ql_lsc(klon,klev)
    1170       REAL d_t_ajsb(klon,klev), d_q_ajsb(klon,klev)
    1171       REAL d_t_ajs(klon,klev), d_q_ajs(klon,klev)
    1172       REAL d_u_ajs(klon,klev), d_v_ajs(klon,klev)
    1173       REAL d_t_eva(klon,klev),d_q_eva(klon,klev)
    1174       REAL d_t_oli(klon,klev) !tendances dues a oro et lif
    11751072      REAL rneb(klon,klev)
    11761073
     
    12061103c$OMP THREADPRIVATE(snow_con)
    12071104      REAL snow_lsc(klon)
    1208       REAL d_ts(klon,nbsrf)
    1209 c
    1210       REAL d_u_vdf(klon,klev), d_v_vdf(klon,klev)
    1211       REAL d_t_vdf(klon,klev), d_q_vdf(klon,klev)
    1212 c
    1213       REAL d_u_oro(klon,klev), d_v_oro(klon,klev)
    1214       REAL d_t_oro(klon,klev)
    1215       REAL d_u_lif(klon,klev), d_v_lif(klon,klev)
    1216       REAL d_t_lif(klon,klev)
    1217       REAL d_u_oli(klon,klev), d_v_oli(klon,klev) !tendances dues a oro et lif
    1218 
    1219       REAL,allocatable,save :: ratqs(:,:)
    1220 c$OMP THREADPRIVATE(ratqs)
     1105c
    12211106      REAL ratqss(klon,klev),ratqsc(klon,klev)
    12221107      real ratqsbas,ratqshaut
     
    12691154c Variables locales pour effectuer les appels en serie
    12701155c
    1271       REAL tr_seri(klon,klev,nbtr)
    1272       REAL d_tr(klon,klev,nbtr)
    1273 
    12741156      REAL zx_rh(klon,klev)
    12751157cIM RH a 2m (la surface)
     
    13921274c$OMP THREADPRIVATE(if_ebil)
    13931275c+jld ec_conser
    1394       REAL d_t_ec(klon,klev)    ! tendance du a la conersion Ec -> E thermique
    13951276      REAL ZRCPD
    13961277c-jld ec_conser
     
    15121393      if (first) then
    15131394     
    1514       allocate( t_ancien(klon,klev), q_ancien(klon,klev))
    15151395      allocate( swdn0(klon,klevp1), swdn(klon,klevp1))
    15161396      allocate( swup0(klon,klevp1), swup(klon,klevp1))
     
    15221402      allocate( LWup200clr(klon), LWup200(klon))
    15231403      allocate( LWdnTOA(klon), LWdnTOAclr(klon))
    1524       allocate( radsol(klon))
    1525       allocate( rlat(klon))
    1526       allocate( rlon(klon))
    1527       allocate( ftsol(klon,nbsrf))
    15281404      allocate( deltat(klon))
    1529       allocate( falb1(klon,nbsrf))
    1530       allocate( falb2(klon,nbsrf))
    1531       allocate( zmea(klon))
    1532       allocate( zstd(klon))
    1533       allocate( zsig(klon))
    1534       allocate( zgam(klon))
    1535       allocate( zthe(klon))
    1536       allocate( zpic(klon))
    1537       allocate( zval(klon))
    1538       allocate( rugoro(klon))
    15391405      allocate( zuthe(klon),zvthe(klon))
    15401406      allocate( alb_neig(klon))
     
    15691435      allocate( pfrac_nucl(klon,klev))
    15701436      allocate( pfrac_1nucl(klon,klev))
    1571       allocate( rain_fall(klon) )
    1572       allocate( snow_fall(klon) )
    15731437      allocate( total_rain(klon), nday_rain(klon))
    1574       allocate( pctsrf(klon,nbsrf))
    15751438      allocate( albsol1(klon))
    15761439      allocate( albsol2(klon))
    15771440      allocate( wo(klon,klev))
    1578       allocate( clwcon(klon,klev),rnebcon(klon,klev))
    15791441      allocate( heat(klon,klev)    )
    15801442      allocate( heat0(klon,klev)  )
    15811443      allocate( cool(klon,klev)    )
    15821444      allocate( cool0(klon,klev)   )
    1583       allocate( topsw(klon), toplw(klon), solsw(klon), sollw(klon))
     1445      allocate( topsw(klon), toplw(klon))
    15841446      allocate( sollwdown(klon)    )
    15851447      allocate( sollwdownclr(klon)  )
     
    15921454      allocate( bbase(klon)    )     
    15931455      allocate( ibas_con(klon), itop_con(klon))
    1594       allocate( ratqs(klon,klev))
    15951456      allocate( sulfate_pi(klon, klev))
    15961457      allocate( paire_ter(klon))
     
    16391500      allocate( snow_con(klon))
    16401501      allocate( tnondef(klon,nlevSTD,nout))
    1641       allocate( d_u_con(klon,klev),d_v_con(klon,klev))           
    16421502     
    1643      
     1503      print*, '================================================='
     1504      print*, 'Allocation des variables locales et sauvegardees'
     1505      call phys_local_var_init
     1506      call phys_state_var_init
     1507      print*, '================================================='
     1508                 
    16441509        paire_ter(:)=0.   
    16451510        clwcon(:,:)=0.
     
    16541519        first=.false.
    16551520
    1656       print*, '================================================='
    1657       print*, 'Allocation des variables locales non sauvegardees'
    1658       call phys_local_var_init
    1659       print*, '================================================='
    1660                  
    16611521      endif  ! fisrt
    16621522
     
    17271587!rv
    17281588!ACo
    1729          d_u_con(:,:) = 0.0
    1730          d_v_con(:,:) = 0.0
    17311589         rnebcon0(:,:) = 0.0
    17321590         clwcon0(:,:) = 0.0
     
    17711629             PRINT*, "Using method MELLOR&YAMADA"
    17721630         endif
    1773           ! NB! pbl_tke could/should be read and written from (re)startphy.nc
    1774           ALLOCATE(pbl_tke(klon,klev+1,nbsrf)) 
    17751631          pbl_tke(:,:,:) = 1.e-8
    17761632
     
    20001856#ifdef CPP_IOIPSL
    20011857
    2002 #ifdef histhf
    2003 #include "ini_histhf.h"
    2004 #endif
    2005 
    2006 #ifdef histday
    2007 #include "ini_histday.h"
     1858c Commente par abderrahmane 11 2 08
     1859c#ifdef histhf
     1860c#include "ini_histhf.h"
     1861c#endif
     1862
     1863c#ifdef histday
     1864c#include "ini_histday.h"
    20081865cIM rajout diagnostiques bilan KP pour analyse MJO par Jun-Ichi Yano
    20091866c#include "ini_bilKP_ins.h"
    20101867c#include "ini_bilKP_ave.h"
    2011 #endif
    2012 
    2013 #ifdef histmth
    2014 #include "ini_histmth.h"
    2015 #endif
    2016 
    2017 #ifdef histins
    2018 #include "ini_histins.h"
    2019 #endif
     1868c#endif
     1869
     1870c#ifdef histmth
     1871c#include "ini_histmth.h"
     1872c#endif
     1873
     1874c#ifdef histins
     1875c#include "ini_histins.h"
     1876c#endif
     1877
     1878      call phys_output_open ( jj_nb, jjmp1, nqmax,
     1879     &               nlevSTD, clevSTD, nbteta, ctetaSTD,
     1880     &      dtime, presnivs, ok_veget, ocean, iflag_pbl,
     1881     &               ok_mensuel,ok_journe,ok_hf,ok_instan,
     1882     &               rlon, rlat, nid_files)
     1883
    20201884
    20211885#ifdef histISCCP
     
    38413705      ENDIF
    38423706
    3843 #ifdef histhf
    3844 #include "write_histhf.h"
    3845 #endif
    3846 
    3847 #ifdef histday
    3848 #include "write_histday.h"
    3849 #endif
    3850 
    3851 #ifdef histmth
    3852 #include "write_histmth.h"
    3853 #endif
    3854 
    3855 #ifdef histins
    3856 #include "write_histins.h"
    3857 #endif
     3707
     3708c Commente par abderrahmane le 11 2 08
     3709c#ifdef histhf
     3710c#include "write_histhf.h"
     3711c#endif
     3712
     3713c#ifdef histday
     3714c#include "write_histday.h"
     3715c#endif
     3716
     3717c#ifdef histmth
     3718c#include "write_histmth.h"
     3719c#endif
     3720
     3721c#ifdef histins
     3722c#include "write_histins.h"
     3723c#endif
     3724
     3725#include "phys_output_write.h"
    38583726
    38593727#ifdef histISCCP
Note: See TracChangeset for help on using the changeset viewer.