Changeset 1572


Ignore:
Timestamp:
Jul 11, 2016, 9:35:35 AM (8 years ago)
Author:
emillour
Message:

All GCMs:
Further adaptations to keep up with changes in LMDZ5 concerning
physics/dynamics separation (up to rev r2500 of LMDZ5)

  • arch:
  • remove ifort debug option '-check all', replace it with '-check bounds,format,output_conversion,pointers,uninit' (i.e. get it to stop complaining about copying into temporary arrays)
  • dyn3d_common:
  • comconst_mod.F90 : add ngroup
  • dyn3d:
  • gcm.F90 : minor bug fix (arguments to a call_abort())
  • leapfrog.F90 : recompute geopotential for bilan_dyn outputs
  • conf_gcm.F90 : read "ngroup" from run.def
  • groupe.F , groupeun.F : ngroup no longer a local parameter
  • dyn3d_par:
  • conf_gcm.F90 : read "ngroup" from run.def
  • groupe_p.F , groupeun_p.F : ngroup no longer a local parameter
  • misc:
  • regr1_step_av_m.F90 : removed (not used)
  • phy_common:
  • mod_phys_lmdz_mpi_transfert.F90 , mod_phys_lmdz_mpi_data.F90 : change is_north_pole and is_south_pole to is_north_pole_dyn and is_south_pole_dyn
  • mod_phys_lmdz_omp_data.F90 : introduce is_nort_pole_phy and is_south_pole_phy
  • dynphy_lonlat:
  • mod_interface_dyn_phys.F90 : use is_north_pole_dyn and is_south_pole_dyn
  • calfis_p.F : use is_north_pole_dyn and is_south_pole_dyn
  • phyvenus:
  • physiq_mod , write_hist*.h : use is_north_pole_phy and is_south_pole_phy to correctly compute mesh area at poles to send to hist*nc files.
  • phytitan:
  • physiq_mod , write_hist*.h : use is_north_pole_phy and is_south_pole_phy to correctly compute mesh area at poles to send to hist*nc files.

EM

Location:
trunk
Files:
1 deleted
27 edited

Legend:

Unmodified
Added
Removed
  • trunk/DOC/chantiers/commit_importants.log

    r1564 r1572  
    17891789it paves the path for a similar (and, now, easy) counterpart for mesoscale
    17901790models
     1791
     1792**********************
     1793**** commit_v1572 ****
     1794**********************
     1795Ehouarn: Further adaptations to keep up with changes in LMDZ5 concerning
     1796physics/dynamics separation (up to rev r2500 of LMDZ5)
     1797
     1798* arch:
     1799- remove ifort debug option '-check all', replace it with
     1800  '-check bounds,format,output_conversion,pointers,uninit' (i.e.
     1801  get it to stop complaining about copying into temporary arrays)
     1802
     1803* dyn3d_common:
     1804- comconst_mod.F90 : add ngroup
     1805
     1806* dyn3d:
     1807- gcm.F90 : minor bug fix (arguments to a call_abort())
     1808- leapfrog.F90 : recompute geopotential for bilan_dyn outputs
     1809- conf_gcm.F90 : read "ngroup" from run.def
     1810- groupe.F , groupeun.F : ngroup no longer a local parameter
     1811
     1812* dyn3d_par:
     1813- conf_gcm.F90 : read "ngroup" from run.def
     1814- groupe_p.F , groupeun_p.F : ngroup no longer a local parameter
     1815
     1816* misc:
     1817- regr1_step_av_m.F90 : removed (not used)
     1818
     1819* phy_common:
     1820- mod_phys_lmdz_mpi_transfert.F90 , mod_phys_lmdz_mpi_data.F90 : change
     1821  is_north_pole and is_south_pole to is_north_pole_dyn and is_south_pole_dyn
     1822- mod_phys_lmdz_omp_data.F90 : introduce is_nort_pole_phy and is_south_pole_phy
     1823
     1824* dynphy_lonlat:
     1825- mod_interface_dyn_phys.F90 : use is_north_pole_dyn and is_south_pole_dyn
     1826- calfis_p.F : use is_north_pole_dyn and is_south_pole_dyn
     1827
     1828* phyvenus:
     1829- physiq_mod , write_hist*.h : use is_north_pole_phy and is_south_pole_phy
     1830  to correctly compute mesh area at poles to send to hist*nc files.
     1831
     1832* phytitan:
     1833- physiq_mod , write_hist*.h : use is_north_pole_phy and is_south_pole_phy
     1834  to correctly compute mesh area at poles to send to hist*nc files.
  • trunk/LMDZ.COMMON/arch/arch-X64_ADA.fcm

    r1501 r1572  
    99%PROD_FFLAGS         -O2 -ip -fp-model strict -axAVX,SSE4.2
    1010%DEV_FFLAGS          -p -g -O1 -fpe0 -traceback
    11 %DEBUG_FFLAGS        -p -g -O0 -fpe-all=0 -traceback -ftrapuv -fp-stack-check -check all -debug
     11%DEBUG_FFLAGS        -p -g -O0 -fpe-all=0 -traceback -ftrapuv -fp-stack-check -check bounds,format,output_conversion,pointers,uninit -debug
    1212%C_COMPILER          gcc
    1313%C_OPTIM             -O3
  • trunk/LMDZ.COMMON/arch/arch-X64_MESU.fcm

    r1506 r1572  
    88%PROD_FFLAGS         -O2
    99%DEV_FFLAGS          -p -g -O1 -fpe0 -traceback
    10 %DEBUG_FFLAGS        -p -g -O0 -fpe-all=0 -traceback -ftrapuv -fp-stack-check -check all -debug
     10%DEBUG_FFLAGS        -p -g -O0 -fpe-all=0 -traceback -ftrapuv -fp-stack-check -check bounds,format,output_conversion,pointers,uninit -debug
    1111%MPI_FFLAGS
    1212%OMP_FFLAGS          -openmp
  • trunk/LMDZ.COMMON/arch/arch-X64_OCCIGEN.fcm

    r1511 r1572  
    88%PROD_FFLAGS         -O2 -ip -xCORE-AVX2
    99%DEV_FFLAGS          -p -g -O1 -fpe0 -traceback
    10 %DEBUG_FFLAGS        -p -g -O0 -fpe0 -ftrapuv -fp-stack-check -check all -debug -traceback
     10%DEBUG_FFLAGS        -p -g -O0 -fpe0 -ftrapuv -fp-stack-check -check bounds,format,output_conversion,pointers,uninit -debug -traceback
    1111%MPI_FFLAGS
    1212%OMP_FFLAGS          -openmp -openmp-threadprivate compat
  • trunk/LMDZ.COMMON/libf/dyn3d/conf_gcm.F90

    r1441 r1572  
    1616  USE comconst_mod, ONLY: dissip_factz,dissip_deltaz,dissip_zref,               &
    1717                dissip_fac_mid,dissip_fac_up,dissip_hdelta,dissip_pupstart,     &
    18                 mode_top_bound,tau_top_bound,iflag_top_bound
     18                mode_top_bound,tau_top_bound,iflag_top_bound,ngroup
    1919  USE logic_mod, ONLY: tidal,purmats,ok_guide,read_start,iflag_phys,            &
    2020                iflag_trac,ok_strato,ok_gradsfile,ok_limit,ok_etat0,            &
     
    402402  tetasponge=50000.0
    403403  call getin("tetasponge",tetasponge)
     404
     405! ngroup: to group longitudinaly near the pole (groupe/groupeun routines)
     406!        (implies that iim has to be a multiple of 2**ngroup)
     407  ngroup=3
     408  CALL getin('ngroup',ngroup)
    404409
    405410! FOR TITAN: tidal forces
  • trunk/LMDZ.COMMON/libf/dyn3d/gcm.F90

    r1549 r1572  
    159159  use_filtre_fft=.FALSE.
    160160  CALL getin('use_filtre_fft',use_filtre_fft)
    161   IF (use_filtre_fft) call abort_gcm('FFT filter is not available in the ' &
     161  IF (use_filtre_fft) call abort_gcm("gcm",'FFT filter is not available in the ' &
    162162          // 'sequential version of the dynamics.', 1)
    163163
  • trunk/LMDZ.COMMON/libf/dyn3d/groupe.F

    r1422 r1572  
    33!
    44      subroutine groupe(pext,pbaru,pbarv,pbarum,pbarvm,wm)
     5     
     6      use comconst_mod, only: ngroup
    57      implicit none
    68
     
    2022#include "comgeom2.h"
    2123
    22       integer ngroup
    23       parameter (ngroup=3)
     24!      integer ngroup
     25!      parameter (ngroup=3)
    2426
    2527
  • trunk/LMDZ.COMMON/libf/dyn3d/groupeun.F

    r1422 r1572  
    33!
    44      SUBROUTINE groupeun(jjmax,llmax,q)
     5     
     6      USE comconst_mod, ONLY: ngroup
    57      IMPLICIT NONE
    68
     
    1214      REAL q(iip1,jjmax,llmax)
    1315
    14       INTEGER ngroup
    15       PARAMETER (ngroup=3)
     16!      INTEGER ngroup
     17!      PARAMETER (ngroup=3)
    1618
    1719      REAL airecn,qn
     
    3638
    3739      LOGICAL, SAVE :: first = .TRUE.
    38       INTEGER,SAVE :: i_index(iim,ngroup)
     40!      INTEGER,SAVE :: i_index(iim,ngroup)
    3941      INTEGER      :: offset
    40       REAL         :: qsum(iim/ngroup)
     42!      REAL         :: qsum(iim/ngroup)
    4143
    4244      IF (first) THEN
     
    134136     
    135137      SUBROUTINE INIT_GROUPEUN(airen_tab, aires_tab)
     138
     139      USE comconst_mod, ONLY: ngroup
    136140      IMPLICIT NONE
    137141
     
    140144#include "comgeom2.h"
    141145
    142       INTEGER ngroup
    143       PARAMETER (ngroup=3)
     146!      INTEGER ngroup
     147!      PARAMETER (ngroup=3)
    144148
    145149      REAL airen,airecn
  • trunk/LMDZ.COMMON/libf/dyn3d/leapfrog.F

    r1564 r1572  
    9898      REAL tsurpk(ip1jmp1,llm)               ! cpp*T/pk 
    9999
    100       real zqmin,zqmax
     100!      real zqmin,zqmax
    101101
    102102c variables dynamiques intermediaire pour le transport
     
    130130
    131131c   variables pour le fichier histoire
    132       REAL dtav      ! intervalle de temps elementaire
     132!      REAL dtav      ! intervalle de temps elementaire
    133133
    134134      REAL tppn(iim),tpps(iim),tpn,tps
     
    144144      LOGICAL :: lafin=.false.
    145145      INTEGER ij,iq,l
    146       INTEGER ik
    147 
    148       real time_step, t_wrt, t_ops
     146!      INTEGER ik
     147
     148!      real time_step, t_wrt, t_ops
    149149
    150150      REAL rdaym_ini
     
    152152! jH_cur: heure julienne courante
    153153      REAL :: jD_cur, jH_cur
    154       INTEGER :: an, mois, jour
    155       REAL :: secondes
     154!      INTEGER :: an, mois, jour
     155!      REAL :: secondes
    156156
    157157      LOGICAL first,callinigrads
     
    159159      save first
    160160      data first/.true./
    161       real dt_cum
    162       character*10 infile
    163       integer zan, tau0, thoriid
    164       integer nid_ctesGCM
    165       save nid_ctesGCM
    166       real degres
    167       real rlong(iip1), rlatg(jjp1)
    168       real zx_tmp_2d(iip1,jjp1)
    169       integer ndex2d(iip1*jjp1)
     161!      real dt_cum
     162!      character*10 infile
     163!      integer zan, tau0, thoriid
     164!      integer nid_ctesGCM
     165!      save nid_ctesGCM
     166!      real degres
     167!      real rlong(iip1), rlatg(jjp1)
     168!      real zx_tmp_2d(iip1,jjp1)
     169!      integer ndex2d(iip1*jjp1)
    170170      logical ok_sync
    171171      parameter (ok_sync = .true.)
     
    175175      character*10 string10
    176176
    177       REAL alpha(ip1jmp1,llm),beta(ip1jmp1,llm)
     177!      REAL alpha(ip1jmp1,llm),beta(ip1jmp1,llm)
    178178      REAL :: flxw(ip1jmp1,llm)  ! flux de masse verticale
    179179
     
    186186      REAL vcont(ip1jm,llm),ucont(ip1jmp1,llm)
    187187      REAL vnat(ip1jm,llm),unat(ip1jmp1,llm)
    188       REAL      d_h_vcol, d_qt, d_qw, d_ql, d_ec
     188!      REAL      d_h_vcol, d_qt, d_qw, d_ql, d_ec
    189189      CHARACTER*15 ztit
    190190!IM   INTEGER   ip_ebil_dyn  ! PRINT level for energy conserv. diag.
     
    193193c-jld
    194194
    195       integer :: itau_w ! for write_paramLMDZ_dyn.h
    196 
    197       character*80 dynhist_file, dynhistave_file
     195!      integer :: itau_w ! for write_paramLMDZ_dyn.h
     196
     197!      character*80 dynhist_file, dynhistave_file
    198198      character(len=*),parameter :: modname="leapfrog"
    199199      character*80 abort_message
     
    802802               ENDIF
    803803               
     804!              ! Ehouarn: re-compute geopotential for outputs
     805               CALL geopot(ip1jmp1,teta,pk,pks,phis,phi)
     806
    804807               IF (ok_dynzon) THEN
    805808#ifdef CPP_IOIPSL
     
    943946               ENDIF
    944947
     948!              ! Ehouarn: re-compute geopotential for outputs
     949               CALL geopot(ip1jmp1,teta,pk,pks,phis,phi)
     950
    945951               IF (ok_dynzon) THEN
    946952#ifdef CPP_IOIPSL
  • trunk/LMDZ.COMMON/libf/dyn3d_common/comconst_mod.F90

    r1422 r1572  
    2424      REAL dissip_pupstart
    2525      INTEGER iflag_top_bound,mode_top_bound
     26      INTEGER ngroup ! parameter to group points (along longitude) near poles
    2627      REAL tau_top_bound
    2728      REAL daylen ! length of solar day, in 'standard' day length
  • trunk/LMDZ.COMMON/libf/dyn3dpar/conf_gcm.F90

    r1441 r1572  
    2121  USE comconst_mod, ONLY: dissip_factz,dissip_deltaz,dissip_zref,               &
    2222                dissip_fac_mid,dissip_fac_up,dissip_hdelta,dissip_pupstart,     &
    23                 mode_top_bound,tau_top_bound,iflag_top_bound
     23                mode_top_bound,tau_top_bound,iflag_top_bound,ngroup
    2424  USE logic_mod, ONLY: tidal,purmats,ok_guide,read_start,iflag_phys,iflag_trac, &
    2525                ok_strato,ok_gradsfile,ok_limit,ok_etat0,moyzon_mu,moyzon_ch,   &
     
    428428  tetasponge=50000.0
    429429  call getin("tetasponge",tetasponge)
     430
     431! ngroup: to group longitudinaly near the pole (groupe/groupeun routines)
     432!        (implies that iim has to be a multiple of 2**ngroup)
     433  ngroup=3
     434  CALL getin('ngroup',ngroup)
    430435
    431436! FOR TITAN: tidal forces
  • trunk/LMDZ.COMMON/libf/dyn3dpar/groupe_p.F

    r1422 r1572  
    11      subroutine groupe_p(pext,pbaru,pbarv,pbarum,pbarvm,wm)
    22      USE parallel_lmdz
     3      USE comconst_mod, ONLY: ngroup
    34      implicit none
    45
     
    1819#include "comgeom2.h"
    1920
    20       integer ngroup
    21       parameter (ngroup=3)
     21!      integer ngroup
     22!      parameter (ngroup=3)
    2223
    2324
  • trunk/LMDZ.COMMON/libf/dyn3dpar/groupeun_p.F

    r1422 r1572  
    11      SUBROUTINE groupeun_p(jjmax,llmax,jjb,jje,q)
    22      USE parallel_lmdz
     3      USE comconst_mod, ONLY: ngroup
    34      USE Write_Field_p
    45      IMPLICIT NONE
     
    1112      REAL q(iip1,jjmax,llmax)
    1213
    13       INTEGER ngroup
    14       PARAMETER (ngroup=3)
     14!      INTEGER ngroup
     15!      PARAMETER (ngroup=3)
    1516
    1617      REAL airecn,qn
     
    3738      LOGICAL, SAVE :: first = .TRUE.
    3839!$OMP THREADPRIVATE(first)
    39       INTEGER,SAVE :: i_index(iim,ngroup)
     40!      INTEGER,SAVE :: i_index(iim,ngroup)
    4041      INTEGER      :: offset
    41       REAL         :: qsum(iim/ngroup)
     42!      REAL         :: qsum(iim/ngroup)
    4243
    4344      IF (first) THEN
     
    135136
    136137      USE parallel_lmdz
     138      USE comconst_mod, ONLY: ngroup
    137139      IMPLICIT NONE
    138140
     
    141143#include "comgeom2.h"
    142144
    143       INTEGER ngroup
    144       PARAMETER (ngroup=3)
     145!      INTEGER ngroup
     146!      PARAMETER (ngroup=3)
    145147
    146148      REAL airen,airecn
  • trunk/LMDZ.COMMON/libf/dynphy_lonlat/calfis_p.F

    r1549 r1572  
    597597      kend=klon
    598598     
    599       if (is_north_pole) kstart=2
    600       if (is_south_pole) kend=klon-1
     599      if (is_north_pole_dyn) kstart=2
     600      if (is_south_pole_dyn) kend=klon-1
    601601     
    602602c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     
    626626      jjb=jj_begin_dyn-1
    627627      jje=jj_end_dyn+1
    628       if (is_north_pole) jjb=1
    629       if (is_south_pole) jje=jjm
     628      if (is_north_pole_dyn) jjb=1
     629      if (is_south_pole_dyn) jje=jjm
    630630
    631631c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     
    678678c        V = 1 / pi  *  integrale [ v * sin(long) * d long ]
    679679
    680       if (is_north_pole) then
     680      if (is_north_pole_dyn) then
    681681c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    682682        DO l=1,llm
     
    706706c        V = 1 / pi  *  integrale [ v * sin(long) * d long ]
    707707
    708       if (is_south_pole) then
     708      if (is_south_pole_dyn) then
    709709c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    710710        DO l=1,llm
     
    12481248         pdvfi(:,jj_begin,l)=0
    12491249         
    1250          if (.not. is_south_pole) then
     1250         if (.not. is_south_pole_dyn) then
    12511251           pdhfi(:,jj_end,l)=0
    12521252           pdqfi(:,jj_end,l,:)=0
     
    12601260c$OMP MASTER
    12611261       pdpsfi(:,jj_begin)=0   
    1262        if (.not. is_south_pole) then
     1262       if (.not. is_south_pole_dyn) then
    12631263         pdpsfi(:,jj_end)=0
    12641264       endif
     
    12781278      kend=klon
    12791279
    1280       if (is_north_pole) kstart=2
    1281       if (is_south_pole)  kend=klon-1
     1280      if (is_north_pole_dyn) kstart=2
     1281      if (is_south_pole_dyn)  kend=klon-1
    12821282     
    12831283! ADAPTATION GCM POUR CP(T)
     
    13011301         enddo         
    13021302
    1303         if (is_north_pole) then
     1303        if (is_north_pole_dyn) then
    13041304            DO i=1,iip1
    13051305!              pdhfi(i,1,l)    = cpp *  zdtfi(1,l)      / ppk(i, 1  ,l)
     
    13081308        endif
    13091309       
    1310         if (is_south_pole) then
     1310        if (is_south_pole_dyn) then
    13111311            DO i=1,iip1
    13121312!              pdhfi(i,jjp1,l) = cpp *  zdtfi(klon,l)/ ppk(i,jjp1,l)
     
    13311331!           enddo
    13321332!           
    1333 !           if (is_north_pole) then
     1333!           if (is_north_pole_dyn) then
    13341334!             do i=1,iip1
    13351335!               pdqfi(i,1,l,iq)    = zdqfi(1,l,iq)             
     
    13371337!           endif
    13381338!           
    1339 !           if (is_south_pole) then
     1339!           if (is_south_pole_dyn) then
    13401340!             do i=1,iip1
    13411341!               pdqfi(i,jjp1,l,iq) = zdqfi(klon,l,iq)
     
    13711371            ENDDO
    13721372           
    1373             IF (is_north_pole) then
     1373            IF (is_north_pole_dyn) then
    13741374              DO i=1,iip1
    13751375                pdqfi(i,1,l,iq)    = zdqfi(1,l,iq)
     
    13771377            ENDIF
    13781378           
    1379             IF (is_south_pole) then
     1379            IF (is_south_pole_dyn) then
    13801380              DO i=1,iip1
    13811381                pdqfi(i,jjp1,l,iq) = zdqfi(klon,l,iq)
     
    14101410         enddo
    14111411         
    1412          if (is_north_pole) then
     1412         if (is_north_pole_dyn) then
    14131413           DO i=1,iip1
    14141414            pdufi(i,1,l)    = 0.
     
    14161416         endif
    14171417         
    1418          if (is_south_pole) then
     1418         if (is_south_pole_dyn) then
    14191419           DO i=1,iip1
    14201420            pdufi(i,jjp1,l) = 0.
     
    14311431      kend=klon
    14321432
    1433       if (is_north_pole) kstart=2
    1434       if (is_south_pole)  kend=klon-1-iim
     1433      if (is_north_pole_dyn) kstart=2
     1434      if (is_south_pole_dyn)  kend=klon-1-iim
    14351435     
    14361436c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     
    14561456c      v = U * cos(long) + V * SIN(long)
    14571457
    1458       if (is_north_pole) then
     1458      if (is_north_pole_dyn) then
    14591459
    14601460c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     
    14761476      endif   
    14771477     
    1478       if (is_south_pole) then
     1478      if (is_south_pole_dyn) then
    14791479
    14801480c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
  • trunk/LMDZ.COMMON/libf/dynphy_lonlat/mod_interface_dyn_phys.F90

    r1543 r1572  
    2222   
    2323    k=1
    24     IF (is_north_pole) THEN
     24    IF (is_north_pole_dyn) THEN
    2525      index_i(k)=1
    2626      index_j(k)=1
     
    4242    ENDDO
    4343   
    44     IF (is_south_pole) THEN
     44    IF (is_south_pole_dyn) THEN
    4545      index_i(k)=1
    4646      index_j(k)=jj_end
  • trunk/LMDZ.COMMON/libf/phy_common/mod_phys_lmdz_mpi_data.F90

    r1543 r1572  
    11!
    2 !$Header$
     2!$Id$
    33!
    44MODULE mod_phys_lmdz_mpi_data
     
    4141 
    4242 
    43   LOGICAL,SAVE :: is_north_pole
    44   LOGICAL,SAVE :: is_south_pole
     43  LOGICAL,SAVE :: is_north_pole_dyn
     44  LOGICAL,SAVE :: is_south_pole_dyn
    4545  INTEGER,SAVE :: COMM_LMDZ_PHY
    4646  INTEGER,SAVE :: MPI_REAL_LMDZ   ! MPI_REAL8
     
    109109   
    110110    IF (mpi_rank == 0) THEN
    111       is_north_pole = .TRUE.
    112     ELSE
    113       is_north_pole = .FALSE.
     111      is_north_pole_dyn = .TRUE.
     112    ELSE
     113      is_north_pole_dyn = .FALSE.
    114114    ENDIF
    115115   
    116116    IF (mpi_rank == mpi_size-1) THEN
    117       is_south_pole = .TRUE.
    118     ELSE
    119       is_south_pole = .FALSE.
     117      is_south_pole_dyn = .TRUE.
     118    ELSE
     119      is_south_pole_dyn = .FALSE.
    120120    ENDIF
    121121   
     
    217217    WRITE(lunout,*) 'mpi_master =', mpi_master
    218218    WRITE(lunout,*) 'is_mpi_root =', is_mpi_root
    219     WRITE(lunout,*) 'is_north_pole =', is_north_pole
    220     WRITE(lunout,*) 'is_south_pole =', is_south_pole
     219    WRITE(lunout,*) 'is_north_pole_dyn =', is_north_pole_dyn
     220    WRITE(lunout,*) 'is_south_pole_dyn =', is_south_pole_dyn
    221221    WRITE(lunout,*) 'COMM_LMDZ_PHY =', COMM_LMDZ_PHY
    222222 
  • trunk/LMDZ.COMMON/libf/phy_common/mod_phys_lmdz_mpi_transfert.F90

    r1543 r1572  
    11!
    2 !$Header$
     2!$Id$
    33!
    44MODULE mod_phys_lmdz_mpi_transfert
     
    16931693   
    16941694    offset=ii_begin
    1695     IF (is_north_pole) Offset=nbp_lon
     1695    IF (is_north_pole_dyn) Offset=nbp_lon
    16961696   
    16971697   
     
    17031703   
    17041704   
    1705     IF (is_north_pole) THEN
     1705    IF (is_north_pole_dyn) THEN
    17061706      DO i=1,dimsize
    17071707        DO ij=1,nbp_lon
     
    17111711    ENDIF
    17121712   
    1713     IF (is_south_pole) THEN
     1713    IF (is_south_pole_dyn) THEN
    17141714      DO i=1,dimsize
    17151715        DO ij=nbp_lon*(jj_nb-1)+1,nbp_lon*jj_nb
     
    17371737   
    17381738    offset=ii_begin
    1739     IF (is_north_pole) Offset=nbp_lon
     1739    IF (is_north_pole_dyn) Offset=nbp_lon
    17401740   
    17411741   
     
    17471747   
    17481748   
    1749     IF (is_north_pole) THEN
     1749    IF (is_north_pole_dyn) THEN
    17501750      DO i=1,dimsize
    17511751        DO ij=1,nbp_lon
     
    17551755    ENDIF
    17561756   
    1757     IF (is_south_pole) THEN
     1757    IF (is_south_pole_dyn) THEN
    17581758      DO i=1,dimsize
    17591759        DO ij=nbp_lon*(jj_nb-1)+1,nbp_lon*jj_nb
     
    17821782   
    17831783    offset=ii_begin
    1784     IF (is_north_pole) Offset=nbp_lon
     1784    IF (is_north_pole_dyn) Offset=nbp_lon
    17851785   
    17861786   
     
    17921792   
    17931793   
    1794     IF (is_north_pole) THEN
     1794    IF (is_north_pole_dyn) THEN
    17951795      DO i=1,dimsize
    17961796        DO ij=1,nbp_lon
     
    18001800    ENDIF
    18011801   
    1802     IF (is_south_pole) THEN
     1802    IF (is_south_pole_dyn) THEN
    18031803      DO i=1,dimsize
    18041804        DO ij=nbp_lon*(jj_nb-1)+1,nbp_lon*jj_nb
     
    18241824
    18251825    offset=ii_begin
    1826     IF (is_north_pole) offset=nbp_lon
     1826    IF (is_north_pole_dyn) offset=nbp_lon
    18271827
    18281828    DO i=1,dimsize
     
    18321832    ENDDO
    18331833
    1834     IF (is_north_pole) THEN
     1834    IF (is_north_pole_dyn) THEN
    18351835      DO i=1,dimsize
    18361836        VarOut(1,i)=VarIn(1,i)
     
    18541854
    18551855    offset=ii_begin
    1856     IF (is_north_pole) offset=nbp_lon
     1856    IF (is_north_pole_dyn) offset=nbp_lon
    18571857
    18581858    DO i=1,dimsize
     
    18621862    ENDDO
    18631863
    1864     IF (is_north_pole) THEN
     1864    IF (is_north_pole_dyn) THEN
    18651865      DO i=1,dimsize
    18661866         VarOut(1,i)=VarIn(1,i)
     
    18831883
    18841884    offset=ii_begin
    1885     IF (is_north_pole) offset=nbp_lon
     1885    IF (is_north_pole_dyn) offset=nbp_lon
    18861886
    18871887    DO i=1,dimsize
     
    18911891    ENDDO
    18921892
    1893     IF (is_north_pole) THEN
     1893    IF (is_north_pole_dyn) THEN
    18941894      DO i=1,dimsize
    18951895        VarOut(1,i)=VarIn(1,i)
  • trunk/LMDZ.COMMON/libf/phy_common/mod_phys_lmdz_omp_data.F90

    r1543 r1572  
    11!
    2 !$Id: mod_phys_lmdz_omp_data.F90 2326 2015-07-10 12:24:29Z emillour $
     2!$Id: mod_phys_lmdz_omp_data.F90 2429 2016-01-27 12:43:09Z fairhead $
    33!
    44MODULE mod_phys_lmdz_omp_data
     
    88  LOGICAL,SAVE :: is_omp_root
    99  LOGICAL,SAVE :: is_using_omp
     10  LOGICAL,SAVE :: is_north_pole_phy, is_south_pole_phy
    1011 
    1112  INTEGER,SAVE,DIMENSION(:),ALLOCATABLE :: klon_omp_para_nb
     
    1718  INTEGER,SAVE :: klon_omp_end
    1819!$OMP  THREADPRIVATE(omp_rank,klon_omp,is_omp_root,klon_omp_begin,klon_omp_end)
     20!$OMP  THREADPRIVATE(is_north_pole_phy, is_south_pole_phy)
    1921
    2022CONTAINS
    2123 
    2224  SUBROUTINE Init_phys_lmdz_omp_data(klon_mpi)
    23     USE dimphy
     25    USE dimphy
     26    USE mod_phys_lmdz_mpi_data, ONLY : is_north_pole_dyn, is_south_pole_dyn
    2427    IMPLICIT NONE
    2528    INTEGER, INTENT(in) :: klon_mpi
     
    4346        omp_size=OMP_GET_NUM_THREADS()
    4447!$OMP END MASTER
     48!$OMP BARRIER
    4549        omp_rank=OMP_GET_THREAD_NUM()   
    4650#else   
     
    6266
    6367!$OMP MASTER
     68
    6469    ALLOCATE(klon_omp_para_nb(0:omp_size-1))
    6570    ALLOCATE(klon_omp_para_begin(0:omp_size-1))
     
    8085!$OMP END MASTER
    8186!$OMP BARRIER
     87
     88   if ((is_north_pole_dyn) .AND. (omp_rank == 0 )) then
     89      is_north_pole_phy = .TRUE.
     90    else
     91      is_north_pole_phy = .FALSE.
     92    endif
     93    if ((is_south_pole_dyn) .AND. (omp_rank == omp_size-1)) then
     94      is_south_pole_phy = .TRUE.
     95    else
     96      is_south_pole_phy = .FALSE.
     97    endif
    8298   
    8399    klon_omp=klon_omp_para_nb(omp_rank)
  • trunk/LMDZ.COMMON/libf/phy_common/mod_phys_lmdz_para.F90

    r1543 r1572  
    11!
    2 !$Header$
     2! $Id: mod_phys_lmdz_para.F90 2429 2016-01-27 12:43:09Z fairhead $
    33!
    44MODULE mod_phys_lmdz_para
     
    1111  LOGICAL,SAVE :: is_parallel
    1212  LOGICAL,SAVE :: is_master
     13
    1314 
    1415!$OMP THREADPRIVATE(klon_loc,is_master)
     
    4142       is_parallel=.FALSE.
    4243     ENDIF
     44
     45
    4346     
    4447  END SUBROUTINE Init_phys_lmdz_para
  • trunk/LMDZ.TITAN/libf/phytitan/physiq_mod.F

    r1549 r1572  
    6767     &                        cell_area, dx, dy
    6868      use cpdet_mod, only: cpdet, t2tpot
    69       USE mod_phys_lmdz_para, only : is_parallel,jj_nb
     69      USE mod_phys_lmdz_para, only : is_parallel,jj_nb,
     70     &                               is_north_pole_phy,
     71     &                               is_south_pole_phy
    7072      USE phys_state_var_mod ! Variables sauvegardees de la physique
    7173      USE iophy
     
    372374c     reservoir de surface
    373375      REAL,save,allocatable :: reservoir(:)
     376
     377c cell_area for outputs in hist*
     378      REAL cell_area_out(klon)
    374379
    375380c Declaration des constantes et des fonctions thermodynamiques
  • trunk/LMDZ.TITAN/libf/phytitan/write_histday.h

    r1543 r1572  
    1414
    1515      call histwrite_phy(nid_day,.false.,"phis",itau_w,pphis)
    16       call histwrite_phy(nid_day,.false.,"aire",itau_w,cell_area)
     16c      call histwrite_phy(nid_day,.false.,"aire",itau_w,cell_area)
     17      cell_area_out(:)=cell_area(:)
     18      if (is_north_pole_phy) cell_area_out(1)=cell_area(1)/nbp_lon
     19      if (is_south_pole_phy) cell_area_out(klon)=cell_area(klon)/nbp_lon
     20      call histwrite_phy(nid_day,.false.,"aire",itau_w,cell_area_out)
    1721
    1822ccccccc axe Ls ... Faudrait le reduire a axe temporel seulement...
  • trunk/LMDZ.TITAN/libf/phytitan/write_histins.h

    r1543 r1572  
    1414
    1515      call histwrite_phy(nid_ins,.false.,"phis",itau_w,pphis)
    16       call histwrite_phy(nid_ins,.false.,"aire",itau_w,cell_area)
     16c      call histwrite_phy(nid_ins,.false.,"aire",itau_w,cell_area)
     17      cell_area_out(:)=cell_area(:)
     18      if (is_north_pole_phy) cell_area_out(1)=cell_area(1)/nbp_lon
     19      if (is_south_pole_phy) cell_area_out(klon)=cell_area(klon)/nbp_lon
     20      call histwrite_phy(nid_ins,.false.,"aire",itau_w,cell_area_out)
    1721
    1822ccccccc axe Ls ... Faudrait le reduire a axe temporel seulement...
  • trunk/LMDZ.TITAN/libf/phytitan/write_histmth.h

    r1543 r1572  
    1111
    1212      call histwrite_phy(nid_mth,.false.,"phis",itau_w,pphis)
    13       call histwrite_phy(nid_mth,.false.,"aire",itau_w,cell_area)
     13c      call histwrite_phy(nid_mth,.false.,"aire",itau_w,cell_area)
     14      cell_area_out(:)=cell_area(:)
     15      if (is_north_pole_phy) cell_area_out(1)=cell_area(1)/nbp_lon
     16      if (is_south_pole_phy) cell_area_out(klon)=cell_area(klon)/nbp_lon
     17      call histwrite_phy(nid_mth,.false.,"aire",itau_w,cell_area_out)
    1418
    1519ccccccc axe Ls ... Faudrait le reduire a axe temporel seulement...
  • trunk/LMDZ.VENUS/libf/phyvenus/physiq_mod.F

    r1549 r1572  
    6666     &                       longitude_deg,latitude_deg, ! in degrees
    6767     &                       cell_area,dx,dy
    68       USE mod_phys_lmdz_para, only : is_parallel,jj_nb
     68      USE mod_phys_lmdz_para, only : is_parallel,jj_nb,
     69     &                               is_north_pole_phy,
     70     &                               is_south_pole_phy
    6971      USE phys_state_var_mod ! Variables sauvegardees de la physique
    7072      USE write_field_phy
     
    385387      REAL mangtot            ! moment cinetique total
    386388
     389c cell_area for outputs in hist*
     390      REAL cell_area_out(klon)
     391     
    387392c Declaration des constantes et des fonctions thermodynamiques
    388393c
  • trunk/LMDZ.VENUS/libf/phyvenus/write_histday.h

    r1543 r1572  
    1212
    1313      call histwrite_phy(nid_day,.false.,"phis",itau_w,pphis)
    14       call histwrite_phy(nid_day,.false.,"aire",itau_w,cell_area)
     14c      call histwrite_phy(nid_day,.false.,"aire",itau_w,cell_area)
     15      cell_area_out(:)=cell_area(:)
     16      if (is_north_pole_phy) cell_area_out(1)=cell_area(1)/nbp_lon
     17      if (is_south_pole_phy) cell_area_out(klon)=cell_area(klon)/nbp_lon
     18      call histwrite_phy(nid_day,.false.,"aire",itau_w,cell_area_out)
     19
    1520      call histwrite_phy(nid_day,.false.,"tsol",itau_w,ftsol)
    1621      call histwrite_phy(nid_day,.false.,"psol",itau_w,paprs(:,1))
  • trunk/LMDZ.VENUS/libf/phyvenus/write_histins.h

    r1543 r1572  
    1212
    1313      call histwrite_phy(nid_ins,.false.,"phis",itau_w,pphis)
    14       call histwrite_phy(nid_ins,.false.,"aire",itau_w,cell_area)
     14c      call histwrite_phy(nid_ins,.false.,"aire",itau_w,cell_area)
     15      cell_area_out(:)=cell_area(:)
     16      if (is_north_pole_phy) cell_area_out(1)=cell_area(1)/nbp_lon
     17      if (is_south_pole_phy) cell_area_out(klon)=cell_area(klon)/nbp_lon
     18      call histwrite_phy(nid_ins,.false.,"aire",itau_w,cell_area_out)
     19
    1520      call histwrite_phy(nid_ins,.false.,"tsol",itau_w,ftsol)
    1621      call histwrite_phy(nid_ins,.false.,"psol",itau_w,paprs(:,1))
  • trunk/LMDZ.VENUS/libf/phyvenus/write_histmth.h

    r1543 r1572  
    1212
    1313      call histwrite_phy(nid_mth,.false.,"phis",itau_w,pphis)
    14       call histwrite_phy(nid_mth,.false.,"aire",itau_w,cell_area)
     14c      call histwrite_phy(nid_mth,.false.,"aire",itau_w,cell_area)
     15      cell_area_out(:)=cell_area(:)
     16      if (is_north_pole_phy) cell_area_out(1)=cell_area(1)/nbp_lon
     17      if (is_south_pole_phy) cell_area_out(klon)=cell_area(klon)/nbp_lon
     18      call histwrite_phy(nid_mth,.false.,"aire",itau_w,cell_area_out)
     19
    1520      call histwrite_phy(nid_mth,.false.,"tsol",itau_w,ftsol)
    1621      call histwrite_phy(nid_mth,.false.,"psol",itau_w,paprs(:,1))
Note: See TracChangeset for help on using the changeset viewer.