Ignore:
Timestamp:
Aug 25, 2015, 5:14:59 PM (10 years ago)
Author:
Ehouarn Millour
Message:

More on physics/dynamics separation and cleanup:

  • Set things up so that all physics-related initializations are done via iniphysiq.
  • Created a "geometry_mod.F90" module in phy_common to store information on the loacl grid (i.e. replaces comgeomphy) and moreover give these variables more obvious names (e.g.: rlond => longitude, rlatd => latitude, airephy => cell_area).
  • removed obsolete comgeomphy.h and comgeomphy.F90

EM

Location:
LMDZ5/trunk/libf/phylmd
Files:
1 added
2 deleted
19 edited

Legend:

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

    r2103 r2351  
    88         DO i=1, klon
    99            IF(pctsrf(i,is_ter).GT.0.) THEN
    10                paire_ter(i)=airephy(i)*pctsrf(i,is_ter)
     10               paire_ter(i)=cell_area(i)*pctsrf(i,is_ter)
    1111            ENDIF
    1212         ENDDO
  • LMDZ5/trunk/libf/phylmd/carbon_cycle_mod.F90

    r2320 r2351  
    8686
    8787    USE dimphy
    88     USE comgeomphy
     88    USE geometry_mod, ONLY : cell_area
    8989    USE mod_phys_lmdz_transfert_para
    9090    USE infotrac_phy, ONLY: nbtr, nqo, niadv, tname
     
    290290! 5) Calculate total area of the earth surface
    291291! --------------------------------------------
    292     CALL reduce_sum(SUM(airephy),airetot)
     292    CALL reduce_sum(SUM(cell_area),airetot)
    293293    CALL bcast(airetot)
    294294
     
    309309    USE phys_cal_mod, ONLY : mth_cur, mth_len
    310310    USE phys_cal_mod, ONLY : day_cur
    311     USE comgeomphy
    312311    USE indice_sol_mod
    313312    USE print_control_mod, ONLY: lunout
     313    USE geometry_mod, ONLY : cell_area
    314314
    315315    IMPLICIT NONE
     
    444444
    445445          ! Calculate a global mean value of delta CO2 flux
    446           fco2_tmp(1:klon) = fco2_tmp(1:klon) * airephy(1:klon)
     446          fco2_tmp(1:klon) = fco2_tmp(1:klon) * cell_area(1:klon)
    447447          CALL reduce_sum(SUM(fco2_tmp),sumtmp)
    448448          CALL bcast(sumtmp)
  • LMDZ5/trunk/libf/phylmd/dyn1d/lmdz1d.F90

    r2347 r2351  
    2424      USE print_control_mod, ONLY: prt_level
    2525      USE iniphysiq_mod, ONLY: iniphysiq
     26      USE mod_const_mpi, ONLY: comm_lmdz
    2627
    2728      implicit none
     
    486487! Initialization of dimensions, geometry and initial state
    487488!---------------------------------------------------------------------
    488       call init_phys_lmdz(1,1,llm,1,(/1/))
     489!      call init_phys_lmdz(1,1,llm,1,(/1/)) ! job now done via iniphysiq
    489490      call suphel
    490491      call infotrac_init
     
    626627     ! e.g. for cell boundaries, which are meaningless in 1D; so pad these
    627628     ! with '0.' when necessary
    628       call iniphysiq(iim,jjm,llm,rday,day_ini,timestep,  &
     629      call iniphysiq(iim,jjm,llm, &
     630           1,comm_lmdz, &
     631           rday,day_ini,timestep,  &
    629632           (/rlat_rad(1),0./),(/0./), &
    630633           (/0.,0./),(/rlon_rad(1),0./),  &
  • LMDZ5/trunk/libf/phylmd/init_be.F90

    r2320 r2351  
    55
    66  USE dimphy
    7   USE comgeomphy
    87  USE infotrac_phy, ONLY : nbtr
    98  USE indice_sol_mod
     9  USE geometry_mod, ONLY : longitude, latitude
    1010   
    1111  IMPLICIT NONE
     
    114114
    115115  DO i = 1,klon
    116      qcos=sin(glt)*sin(rlatd(i))
     116     qcos=sin(glt)*sin(latitude(i))
    117117!!jyg
    118 !!     qcos=qcos+cos(glt)*cos(rlatd(i))*cos(rlond(i)+glg)
    119      qcos=qcos+cos(glt)*cos(rlatd(i))*cos(rlond(i)-glg)
     118!!     qcos=qcos+cos(glt)*cos(latitude(i))*cos(longitude(i)+glg)
     119     qcos=qcos+cos(glt)*cos(latitude(i))*cos(longitude(i)-glg)
    120120!!jyg end
    121121     IF ( qcos .LT. -1.) qcos = -1.
  • LMDZ5/trunk/libf/phylmd/lsc_scav.F90

    r2346 r2351  
    1414  USE traclmdz_mod
    1515  USE infotrac_phy,ONLY : nbtr
    16   USE comgeomphy
    1716  USE iophy
    1817  IMPLICIT NONE
  • LMDZ5/trunk/libf/phylmd/mod_surf_para.F90

    r1907 r2351  
    4949
    5050  SUBROUTINE Init_surf_para(knon)
    51   USE mod_phys_lmdz_para, mpi_rank_root=>mpi_root
     51  USE mod_phys_lmdz_para
    5252#ifdef CPP_MPI
    5353  INCLUDE 'mpif.h'
     
    168168     
    169169  SUBROUTINE gather_surf_mpi_i(FieldIn,FieldOut)
    170   USE mod_phys_lmdz_para, mpi_rank_root => mpi_root
     170  USE mod_phys_lmdz_para
    171171#ifdef CPP_MPI
    172172  INCLUDE 'mpif.h'
     
    180180      CALL MPI_Gatherv(FieldIn,knon_mpi,MPI_INTEGER,                                &
    181181                       FieldOut,knon_mpi_para,knon_mpi_begin_para(:)-1,MPI_INTEGER, &
    182                        mpi_rank_root,COMM_LMDZ_PHY,ierr)
     182                       mpi_master,COMM_LMDZ_PHY,ierr)
    183183#endif
    184184    ELSE
     
    223223     
    224224  SUBROUTINE gather_surf_mpi_r(FieldIn,FieldOut)
    225   USE mod_phys_lmdz_para, mpi_rank_root => mpi_root
     225  USE mod_phys_lmdz_para
    226226#ifdef CPP_MPI
    227227  INCLUDE 'mpif.h'
     
    235235      CALL MPI_Gatherv(FieldIn,knon_mpi,MPI_REAL_LMDZ,                                 &
    236236                       FieldOut,knon_mpi_para,knon_mpi_begin_para(:)-1,MPI_REAL_LMDZ,  &
    237                        mpi_rank_root,COMM_LMDZ_PHY,ierr)           
     237                       mpi_master,COMM_LMDZ_PHY,ierr)           
    238238#endif
    239239    ELSE
     
    276276     
    277277  SUBROUTINE scatter_surf_mpi_i(FieldIn,FieldOut)
    278   USE mod_phys_lmdz_para, mpi_rank_root => mpi_root
     278  USE mod_phys_lmdz_para
    279279#ifdef CPP_MPI
    280280  INCLUDE 'mpif.h'
     
    288288      CALL MPI_Scatterv(FieldIn,knon_mpi_para,knon_mpi_begin_para(:)-1,MPI_INTEGER,   &
    289289                        FieldOut,knon_mpi,MPI_INTEGER,                                &
    290                         mpi_rank_root,COMM_LMDZ_PHY,ierr)
     290                        mpi_master,COMM_LMDZ_PHY,ierr)
    291291#endif
    292292    ELSE
     
    328328     
    329329  SUBROUTINE scatter_surf_mpi_r(FieldIn,FieldOut)
    330   USE mod_phys_lmdz_para, mpi_rank_root => mpi_root
     330  USE mod_phys_lmdz_para
    331331#ifdef CPP_MPI
    332332  INCLUDE 'mpif.h'
     
    340340      CALL MPI_Scatterv(FieldIn,knon_mpi_para,knon_mpi_begin_para(:)-1,MPI_INTEGER,   &
    341341                        FieldOut,knon_mpi,MPI_INTEGER,                                &
    342                         mpi_rank_root,COMM_LMDZ_PHY,ierr)
     342                        mpi_master,COMM_LMDZ_PHY,ierr)
    343343#endif
    344344    ELSE
     
    349349
    350350END MODULE mod_surf_para
     351
  • LMDZ5/trunk/libf/phylmd/phyaqua_mod.F90

    r2346 r2351  
    55CONTAINS
    66
    7   SUBROUTINE iniaqua(nlon, latfi, lonfi, iflag_phys)
     7  SUBROUTINE iniaqua(nlon, iflag_phys)
    88
    99    ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    1919    ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    2020
    21     USE comgeomphy, ONLY: rlatd, rlond
    2221    USE dimphy, ONLY: klon
     22    USE geometry_mod, ONLY : latitude
    2323    USE surface_data, ONLY: type_ocean, ok_veget
    2424    USE pbl_surface_mod, ONLY: pbl_surface_init
     
    3838    INTEGER, INTENT (IN) :: nlon, iflag_phys
    3939    ! IM ajout latfi, lonfi
    40     REAL, INTENT (IN) :: lonfi(nlon), latfi(nlon)
     40!    REAL, INTENT (IN) :: lonfi(nlon), latfi(nlon)
    4141
    4242    INTEGER type_profil, type_aqua
     
    117117    INTEGER l, ierr, aslun
    118118
    119     REAL longitude, latitude
     119!    REAL longitude, latitude
    120120    REAL paire
    121121
    122     DATA latitude, longitude/48., 0./
     122!    DATA latitude, longitude/48., 0./
    123123
    124124    ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    149149
    150150    ! IM ajout latfi, lonfi
    151     rlatd = latfi
    152     rlond = lonfi
    153     rlat = rlatd*180./pi
    154     rlon = rlond*180./pi
     151!    rlatd = latfi
     152!    rlond = lonfi
     153!    rlat = rlatd*180./pi
     154!    rlon = rlond*180./pi
    155155
    156156    ! -----------------------------------------------------------------------
     
    160160    day_ini = day_ref
    161161    day_end = day_ini + ndays
    162     airefi = 1.
    163     zcufi = 1.
    164     zcvfi = 1.
     162!    airefi = 1.
     163!    zcufi = 1.
     164!    zcvfi = 1.
    165165    !$OMP MASTER
    166166    nbapp_rad_omp = 24
     
    260260    END DO
    261261    ! IM calcul profil sst
    262     CALL profil_sst(nlon, rlatd, type_profil, phy_sst)
     262    CALL profil_sst(nlon, latitude, type_profil, phy_sst)
    263263
    264264    CALL writelim(klon, phy_nat, phy_alb, phy_sst, phy_bil, phy_rug, phy_ice, &
  • LMDZ5/trunk/libf/phylmd/phys_output_mod.F90

    r2344 r2351  
    531531    real                :: ttt,xxx,timestep,dayseconde,dtime
    532532    parameter (dayseconde=86400.)
    533     include "comconst.h"
    534533
    535534    ipos=scan(str,'0123456789.',.TRUE.)
  • LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90

    r2344 r2351  
    248248    USE indice_sol_mod, only: nbsrf
    249249    USE infotrac_phy, only: nqtot, nqo, type_trac
    250     USE comgeomphy, only: airephy
     250    USE geometry_mod, only: cell_area
    251251    USE surface_data, only: type_ocean, version_ocean, ok_veget, ok_snow
    252252!    USE aero_mod, only: naero_spc
     
    337337!!! Champs 1D !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    338338       CALL histwrite_phy(o_phis, pphis)
    339        CALL histwrite_phy(o_aire, airephy)
     339       CALL histwrite_phy(o_aire, cell_area)
    340340
    341341       IF (vars_defined) THEN
  • LMDZ5/trunk/libf/phylmd/physiq.F90

    r2345 r2351  
    1212  USE ioipsl, only: histbeg, histvert, histdef, histend, histsync, &
    1313       histwrite, ju2ymds, ymds2ju, getin
    14   USE comgeomphy
     14  USE geometry_mod, ONLY: cell_area, latitude_deg, longitude_deg
    1515  USE phys_cal_mod, only: year_len, mth_len, days_elapsed, jh_1jan, year_cur, &
    1616       mth_cur,jD_cur, jH_cur, jD_ref, phys_cal_update
     
    923923     igout=klon/2+1/klon
    924924     write(lunout,*) 'DEBUT DE PHYSIQ !!!!!!!!!!!!!!!!!!!!'
    925      write(lunout,*) 'igout, rlat, rlon ',igout, rlatd(igout)*180./3.141593, rlond(igout)*180./3.141593
     925     write(lunout,*) 'igout, rlat, rlon ',igout, latitude_deg(igout), longitude_deg(igout)
    926926     write(lunout,*) &
    927927          'nlon,klev,nqtot,debut,lafin, jD_cur, jH_cur,pdtphys'
     
    13561356             rg, &
    13571357             ra, &
    1358              airephy, &
     1358             cell_area, &
    13591359             rlat, &
    13601360             rlon, &
     
    15631563  IF (ip_ebil_phy.ge.1) THEN
    15641564     ztit='after dynamic'
    1565      CALL diagetpq(airephy,ztit,ip_ebil_phy,1,1,dtime &
     1565     CALL diagetpq(cell_area,ztit,ip_ebil_phy,1,1,dtime &
    15661566          , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
    15671567          , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     
    15701570     !     est egale a la variation de la physique au pas de temps precedent.
    15711571     !     Donc la somme de ces 2 variations devrait etre nulle.
    1572      call diagphy(airephy,ztit,ip_ebil_phy &
     1572     call diagphy(cell_area,ztit,ip_ebil_phy &
    15731573          , zero_v, zero_v, zero_v, zero_v, zero_v &
    15741574          , zero_v, zero_v, zero_v, ztsol &
     
    17741774  IF (ip_ebil_phy.ge.2) THEN
    17751775     ztit='after reevap'
    1776      CALL diagetpq(airephy,ztit,ip_ebil_phy,2,1,dtime &
     1776     CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,1,dtime &
    17771777          , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
    17781778          , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    1779      call diagphy(airephy,ztit,ip_ebil_phy &
     1779     call diagphy(cell_area,ztit,ip_ebil_phy &
    17801780          , zero_v, zero_v, zero_v, zero_v, zero_v &
    17811781          , zero_v, zero_v, zero_v, ztsol &
     
    20322032     IF (ip_ebil_phy.ge.2) THEN
    20332033        ztit='after surface_main'
    2034         CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     2034        CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime &
    20352035             , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
    20362036             , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    2037         call diagphy(airephy,ztit,ip_ebil_phy &
     2037        call diagphy(cell_area,ztit,ip_ebil_phy &
    20382038             , zero_v, zero_v, zero_v, zero_v, sens &
    20392039             , evap  , zero_v, zero_v, ztsol &
     
    20822082  ENDDO
    20832083  IF (check) THEN
    2084      za = qcheck(klon,klev,paprs,q_seri,ql_seri,airephy)
     2084     za = qcheck(klon,klev,paprs,q_seri,ql_seri,cell_area)
    20852085     WRITE(lunout,*) "avantcon=", za
    20862086  ENDIF
     
    21022102  DO k = 1, klev
    21032103     DO i = 1, klon
    2104         omega(i,k) = RG*flxmass_w(i,k) / airephy(i)
     2104        omega(i,k) = RG*flxmass_w(i,k) / cell_area(i)
    21052105     END DO
    21062106  END DO
     
    24882488  IF (ip_ebil_phy.ge.2) THEN
    24892489     ztit='after convect'
    2490      CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     2490     CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime &
    24912491          , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
    24922492          , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    2493      call diagphy(airephy,ztit,ip_ebil_phy &
     2493     call diagphy(cell_area,ztit,ip_ebil_phy &
    24942494          , zero_v, zero_v, zero_v, zero_v, zero_v &
    24952495          , zero_v, rain_con, snow_con, ztsol &
     
    24992499  !
    25002500  IF (check) THEN
    2501      za = qcheck(klon,klev,paprs,q_seri,ql_seri,airephy)
     2501     za = qcheck(klon,klev,paprs,q_seri,ql_seri,cell_area)
    25022502     WRITE(lunout,*)"aprescon=", za
    25032503     zx_t = 0.0
    25042504     za = 0.0
    25052505     DO i = 1, klon
    2506         za = za + airephy(i)/REAL(klon)
     2506        za = za + cell_area(i)/REAL(klon)
    25072507        zx_t = zx_t + (rain_con(i)+ &
    2508              snow_con(i))*airephy(i)/REAL(klon)
     2508             snow_con(i))*cell_area(i)/REAL(klon)
    25092509     ENDDO
    25102510     zx_t = zx_t/za*dtime
     
    26532653  IF (ip_ebil_phy.ge.2) THEN
    26542654     ztit='after wake'
    2655      CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     2655     CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime &
    26562656          , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
    26572657          , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    2658      call diagphy(airephy,ztit,ip_ebil_phy &
     2658     call diagphy(cell_area,ztit,ip_ebil_phy &
    26592659          , zero_v, zero_v, zero_v, zero_v, zero_v &
    26602660          , zero_v, zero_v, zero_v, ztsol &
     
    27462746             ,ztv,zpspsk,ztla,zthl &
    27472747             !cc nrlmd le 10/04/2012
    2748              ,pbl_tke_input,pctsrf,omega,airephy &
     2748             ,pbl_tke_input,pctsrf,omega,cell_area &
    27492749             ,zlcl_th,fraca0,w0,w_conv,therm_tke_max0,env_tke_max0 &
    27502750             ,n2,s2,ale_bl_stat &
     
    29702970  IF (ip_ebil_phy.ge.2) THEN
    29712971     ztit='after dry_adjust'
    2972      CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     2972     CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime &
    29732973          , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
    29742974          , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    2975      call diagphy(airephy,ztit,ip_ebil_phy &
     2975     call diagphy(cell_area,ztit,ip_ebil_phy &
    29762976          , zero_v, zero_v, zero_v, zero_v, zero_v &
    29772977          , zero_v, zero_v, zero_v, ztsol &
     
    30233023  ENDDO
    30243024  IF (check) THEN
    3025      za = qcheck(klon,klev,paprs,q_seri,ql_seri,airephy)
     3025     za = qcheck(klon,klev,paprs,q_seri,ql_seri,cell_area)
    30263026     WRITE(lunout,*)"apresilp=", za
    30273027     zx_t = 0.0
    30283028     za = 0.0
    30293029     DO i = 1, klon
    3030         za = za + airephy(i)/REAL(klon)
     3030        za = za + cell_area(i)/REAL(klon)
    30313031        zx_t = zx_t + (rain_lsc(i) &
    3032              + snow_lsc(i))*airephy(i)/REAL(klon)
     3032             + snow_lsc(i))*cell_area(i)/REAL(klon)
    30333033     ENDDO
    30343034     zx_t = zx_t/za*dtime
     
    30383038  IF (ip_ebil_phy.ge.2) THEN
    30393039     ztit='after fisrt'
    3040      CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     3040     CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime &
    30413041          , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
    30423042          , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    3043      call diagphy(airephy,ztit,ip_ebil_phy &
     3043     call diagphy(cell_area,ztit,ip_ebil_phy &
    30443044          , zero_v, zero_v, zero_v, zero_v, zero_v &
    30453045          , zero_v, rain_lsc, snow_lsc, ztsol &
     
    33083308  IF (ip_ebil_phy.ge.2) THEN
    33093309     ztit="after diagcld"
    3310      CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     3310     CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime &
    33113311          , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
    33123312          , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    3313      call diagphy(airephy,ztit,ip_ebil_phy &
     3313     call diagphy(cell_area,ztit,ip_ebil_phy &
    33143314          , zero_v, zero_v, zero_v, zero_v, zero_v &
    33153315          , zero_v, zero_v, zero_v, ztsol &
     
    33773377        CALL AEROSOL_METEO_CALC( &
    33783378             calday,pdtphys,pplay,paprs,t,pmflxr,pmflxs, &
    3379              prfl,psfl,pctsrf,airephy,rlat,rlon,u10m,v10m)
     3379             prfl,psfl,pctsrf,cell_area,rlat,rlon,u10m,v10m)
    33803380     END IF
    33813381
     
    33883388          rlat, &
    33893389          rlon, &
    3390           airephy, &
     3390          cell_area, &
    33913391          paprs, &
    33923392          pplay, &
     
    37353735  IF (ip_ebil_phy.ge.2) THEN
    37363736     ztit='after rad'
    3737      CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     3737     CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime &
    37383738          , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
    37393739          , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    3740      call diagphy(airephy,ztit,ip_ebil_phy &
     3740     call diagphy(cell_area,ztit,ip_ebil_phy &
    37413741          , topsw, toplw, solsw, sollw, zero_v &
    37423742          , zero_v, zero_v, zero_v, ztsol &
     
    39533953  IF (ip_ebil_phy.ge.2) THEN
    39543954     ztit='after orography'
    3955      CALL diagetpq(airephy,ztit,ip_ebil_phy,2,2,dtime &
     3955     CALL diagetpq(cell_area,ztit,ip_ebil_phy,2,2,dtime &
    39563956          , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
    39573957          , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
    3958      call diagphy(airephy,ztit,ip_ebil_phy &
     3958     call diagphy(cell_area,ztit,ip_ebil_phy &
    39593959          , zero_v, zero_v, zero_v, zero_v, zero_v &
    39603960          , zero_v, zero_v, zero_v, ztsol &
     
    40614061          cdragh,coefh(1:klon,1:klev,is_ave),u1,v1,ftsol,pctsrf, &
    40624062          frac_impa, frac_nucl, &
    4063           pphis,airephy,dtime,itap, &
     4063          pphis,cell_area,dtime,itap, &
    40644064          qx(:,:,ivap),da,phi,mp,upwd,dnwd)
    40654065
     
    41014101  IF (ip_ebil_phy.ge.1) THEN
    41024102     ztit='after physic'
    4103      CALL diagetpq(airephy,ztit,ip_ebil_phy,1,1,dtime &
     4103     CALL diagetpq(cell_area,ztit,ip_ebil_phy,1,1,dtime &
    41044104          , t_seri,q_seri,ql_seri,qs_seri,u_seri,v_seri,paprs,pplay &
    41054105          , d_h_vcol, d_qt, d_qw, d_ql, d_qs, d_ec)
     
    41094109     !     Donc la somme de ces 2 variations devrait etre nulle.
    41104110
    4111      call diagphy(airephy,ztit,ip_ebil_phy &
     4111     call diagphy(cell_area,ztit,ip_ebil_phy &
    41124112          , topsw, toplw, solsw, sollw, sens &
    41134113          , evap, rain_fall, snow_fall, ztsol &
     
    41694169          paprs, &
    41704170          q_seri, &
    4171           airephy, &
     4171          cell_area, &
    41724172          pphi, &
    41734173          pphis, &
  • LMDZ5/trunk/libf/phylmd/phytrac_mod.F90

    r2345 r2351  
    9292    USE mod_grid_phy_lmdz
    9393    USE mod_phys_lmdz_para
    94     USE comgeomphy
    9594    USE iophy
    9695    USE traclmdz_mod
  • LMDZ5/trunk/libf/phylmd/surf_land_bucket_mod.F90

    r2254 r2351  
    2424    USE cpl_mod
    2525    USE dimphy
    26     USE comgeomphy
     26    USE geometry_mod, ONLY: latitude
    2727    USE mod_grid_phy_lmdz
    2828    USE mod_phys_lmdz_para
     
    9999    CALL calbeta(dtime, is_ter, knon, snow, qsol, beta, capsol, dif_grnd)
    100100    if (type_veget=='betaclim') then
    101        CALL calbeta_clim(knon,jour,rlatd(knindex(1:knon)),beta)
     101       CALL calbeta_clim(knon,jour,latitude(knindex(1:knon)),beta)
    102102    endif
    103103       
  • LMDZ5/trunk/libf/phylmd/surf_land_orchidee_mod.F90

    r2348 r2351  
    1616  USE cpl_mod,      ONLY : cpl_send_land_fields
    1717  USE surface_data, ONLY : type_ocean
    18   USE comgeomphy,   ONLY : cuphy, cvphy
     18  USE geometry_mod, ONLY : dx, dy
    1919  USE mod_grid_phy_lmdz
    20   USE mod_phys_lmdz_para, mpi_root_rank=>mpi_root
     20  USE mod_phys_lmdz_para, mpi_root_rank=>mpi_master
    2121
    2222  IMPLICIT NONE
     
    330330       DO igrid = 1, knon
    331331          ij = knindex(igrid)
    332           resolution(igrid,1) = cuphy(ij)
    333           resolution(igrid,2) = cvphy(ij)
     332          resolution(igrid,1) = dx(ij)
     333          resolution(igrid,2) = dy(ij)
    334334       ENDDO
    335335     
  • LMDZ5/trunk/libf/phylmd/surf_land_orchidee_noopenmp_mod.F90

    r2348 r2351  
    2121  USE cpl_mod,      ONLY : cpl_send_land_fields
    2222  USE surface_data, ONLY : type_ocean
    23   USE comgeomphy,   ONLY : cuphy, cvphy
     23  USE geometry_mod, ONLY : dx, dy
    2424  USE mod_grid_phy_lmdz
    2525  USE mod_phys_lmdz_para
     
    334334       DO igrid = 1, knon
    335335          ij = knindex(igrid)
    336           resolution(igrid,1) = cuphy(ij)
    337           resolution(igrid,2) = cvphy(ij)
     336          resolution(igrid,1) = dx(ij)
     337          resolution(igrid,2) = dy(ij)
    338338       ENDDO
    339339     
  • LMDZ5/trunk/libf/phylmd/thermcellV0_main.F90

    r2346 r2351  
    1313
    1414      USE dimphy
    15       USE comgeomphy , ONLY:rlond,rlatd
    1615      USE print_control_mod, ONLY: prt_level,lunout
    1716      IMPLICIT NONE
  • LMDZ5/trunk/libf/phylmd/thermcell_main.F90

    r2346 r2351  
    2323      USE dimphy
    2424      USE ioipsl
    25       USE comgeomphy , ONLY:rlond,rlatd
    2625      USE indice_sol_mod
    2726      USE print_control_mod, ONLY: lunout,prt_level
  • LMDZ5/trunk/libf/phylmd/tracinca_mod.F90

    r2345 r2351  
    5454    USE infotrac_phy, ONLY: nbtr
    5555    USE vampir
    56     USE comgeomphy
    5756    USE indice_sol_mod
    5857
  • LMDZ5/trunk/libf/phylmd/write_histday_seri.h

    r2344 r2351  
    2020      ok_msk=.FALSE.
    2121      msk(1:klon)=pctsrf(1:klon,is_ter)
    22       CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,  &
     22      CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area,  &
    2323           ok_msk, msk, moyglo)
    2424      zx_tmp_fi2d(1:klon)=moyglo
     
    2929!
    3030      ok_msk=.FALSE.
    31       CALL moyglo_pondaire(klon, bils, airephy,  &
     31      CALL moyglo_pondaire(klon, bils, cell_area,  &
    3232           ok_msk, msk, moyglo)
    3333      zx_tmp_fi2d(1:klon)=moyglo
     
    4545!
    4646      CALL moyglo_pondaima(klon, klev, zx_tmp_fi3d,  &
    47            airephy, paprs, moyglo)
     47           cell_area, paprs, moyglo)
    4848      zx_tmp_fi2d(1:klon)=moyglo
    4949!
     
    6262!
    6363      CALL moyglo_pondaima(klon, klev, zx_tmp_fi3d,  &
    64            airephy, paprs, moyglo)
     64           cell_area, paprs, moyglo)
    6565      zx_tmp_fi2d(1:klon)=moyglo
    6666!
     
    7676!
    7777      ok_msk=.FALSE.
    78       CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,  &
     78      CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area,  &
    7979           ok_msk, msk, moyglo)
    8080      zx_tmp_fi2d(1:klon)=moyglo
     
    8787!
    8888!IM 190504 BEG
    89       CALL gr_fi_dyn(1,klon,nbp_lon+1,nbp_lat,airephy,airedyn)
     89      CALL gr_fi_dyn(1,klon,nbp_lon+1,nbp_lat,cell_area,airedyn)
    9090      CALL gr_fi_dyn(klev+1,klon,nbp_lon+1,nbp_lat,paprs,padyn)
    9191      CALL gr_fi_dyn(1,klon,nbp_lon+1,nbp_lat,rlat,rlatdyn)
     
    120120!
    121121!
    122       CALL gr_fi_dyn(1,klon,nbp_lon+1,nbp_lat,airephy,airedyn)
    123       CALL gr_fi_ecrit(1,klon,nbp_lon,nbp_lat,airephy,zx_tmp_2d)
     122      CALL gr_fi_dyn(1,klon,nbp_lon+1,nbp_lat,cell_area,airedyn)
     123      CALL gr_fi_ecrit(1,klon,nbp_lon,nbp_lat,cell_area,zx_tmp_2d)
    124124      airetot=0.
    125125!     DO j = 1, nbp_lat
     
    134134!
    135135      DO i=1, klon
    136        airetot=airetot+airephy(i)
     136       airetot=airetot+cell_area(i)
    137137      ENDDO
    138138!     IF(itap.EQ.1) PRINT*,'airetotphy=',airetot
     
    161161!
    162162      CALL moyglo_pondmass(klon, klev, t_seri, &
    163            airephy, paprs, moyglo)
     163           cell_area, paprs, moyglo)
    164164      zx_tmp_fi2d(1:klon)=moyglo
    165165!
     
    169169!
    170170      ok_msk=.FALSE.
    171       CALL moyglo_pondaire(klon, paprs(:,1), airephy,  &
     171      CALL moyglo_pondaire(klon, paprs(:,1), cell_area,  &
    172172           ok_msk, msk, moyglo)
    173173      zx_tmp_fi2d(1:klon)=moyglo
     
    178178!
    179179      ok_msk=.FALSE.
    180       CALL moyglo_pondaire(klon, evap, airephy,  &
     180      CALL moyglo_pondaire(klon, evap, cell_area,  &
    181181           ok_msk, msk, moyglo)
    182182      zx_tmp_fi2d(1:klon)=moyglo
     
    192192!     ok_msk=.TRUE.
    193193!     msk(1:klon)=pctsrf(1:klon,is_ter)
    194 !     CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
     194!     CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area,
    195195!    .                     ok_msk, msk, moyglo)
    196196!     zx_tmp_fi2d(1:klon)=moyglo
     
    208208!     ok_msk=.TRUE.
    209209!     msk(1:klon)=pctsrf(1:klon,is_ter)
    210 !     CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,
     210!     CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area,
    211211!    .     ok_msk, msk, moyglo)
    212212!     zx_tmp_fi2d(1:klon)=moyglo
     
    222222      ok_msk=.TRUE.
    223223      msk(1:klon)=pctsrf(1:klon,is_oce)
    224       CALL moyglo_pondaire(klon, zx_tmp_fi2d, airephy,  &
     224      CALL moyglo_pondaire(klon, zx_tmp_fi2d, cell_area,  &
    225225           ok_msk, msk, moyglo)
    226226      zx_tmp_fi2d(1:klon)=moyglo
  • LMDZ5/trunk/libf/phylmd/write_paramLMDZ_phy.h

    r2343 r2351  
    22! calcul moyennes globales
    33!
    4        zx_tmp_fi2d=bils*airephy
    5        CALL global_mean(zx_tmp_fi2d,airephy,.TRUE.,gbils)
    6        zx_tmp_fi2d=evap*airephy
    7        CALL global_mean(zx_tmp_fi2d,airephy,.TRUE.,gevap)
    8        zx_tmp_fi2d(:)=fevap(:, is_ter)*airephy(:)
    9        CALL global_mean(zx_tmp_fi2d,airephy,.TRUE.,gevapt)
    10        zx_tmp_fi2d=zxfluxlat*airephy
    11        CALL global_mean(zx_tmp_fi2d,airephy,.TRUE.,glat)
    12        zx_tmp_fi2d=(topsw0-toplw0)*airephy
    13        CALL global_mean(zx_tmp_fi2d,airephy,.TRUE.,gnet0)
    14        zx_tmp_fi2d=(topsw-toplw)*airephy
    15        CALL global_mean(zx_tmp_fi2d,airephy,.TRUE.,gnet)
    16        zx_tmp_fi2d=(rain_fall+snow_fall)*airephy
    17        CALL global_mean(zx_tmp_fi2d,airephy,.TRUE.,grain)
    18        zx_tmp_fi2d=zxtsol*airephy
    19        CALL global_mean(zx_tmp_fi2d,airephy,.TRUE.,gtsol)
    20        zx_tmp_fi2d=zt2m*airephy
    21        CALL global_mean(zx_tmp_fi2d,airephy,.TRUE.,gt2m)
    22        zx_tmp_fi2d=prw*airephy
    23        CALL global_mean(zx_tmp_fi2d,airephy,.TRUE.,gprw)
     4       zx_tmp_fi2d=bils*cell_area
     5       CALL global_mean(zx_tmp_fi2d,cell_area,.TRUE.,gbils)
     6       zx_tmp_fi2d=evap*cell_area
     7       CALL global_mean(zx_tmp_fi2d,cell_area,.TRUE.,gevap)
     8       zx_tmp_fi2d(:)=fevap(:, is_ter)*cell_area(:)
     9       CALL global_mean(zx_tmp_fi2d,cell_area,.TRUE.,gevapt)
     10       zx_tmp_fi2d=zxfluxlat*cell_area
     11       CALL global_mean(zx_tmp_fi2d,cell_area,.TRUE.,glat)
     12       zx_tmp_fi2d=(topsw0-toplw0)*cell_area
     13       CALL global_mean(zx_tmp_fi2d,cell_area,.TRUE.,gnet0)
     14       zx_tmp_fi2d=(topsw-toplw)*cell_area
     15       CALL global_mean(zx_tmp_fi2d,cell_area,.TRUE.,gnet)
     16       zx_tmp_fi2d=(rain_fall+snow_fall)*cell_area
     17       CALL global_mean(zx_tmp_fi2d,cell_area,.TRUE.,grain)
     18       zx_tmp_fi2d=zxtsol*cell_area
     19       CALL global_mean(zx_tmp_fi2d,cell_area,.TRUE.,gtsol)
     20       zx_tmp_fi2d=zt2m*cell_area
     21       CALL global_mean(zx_tmp_fi2d,cell_area,.TRUE.,gt2m)
     22       zx_tmp_fi2d=prw*cell_area
     23       CALL global_mean(zx_tmp_fi2d,cell_area,.TRUE.,gprw)
    2424!
    2525!$OMP MASTER
Note: See TracChangeset for help on using the changeset viewer.