Ignore:
Timestamp:
Nov 28, 2014, 4:36:29 PM (10 years ago)
Author:
Laurent Fairhead
Message:

Merged trunk changes -r2070:2158 into testing branch. Compilation problems introduced by revision r2155 have been corrected by hand

Location:
LMDZ5/branches/testing
Files:
1 deleted
8 edited
1 copied

Legend:

Unmodified
Added
Removed
  • LMDZ5/branches/testing

  • LMDZ5/branches/testing/libf/dyn3dmem/abort_gcm.F

    r1910 r2160  
    2323C         ierr    = severity of situation ( = 0 normal )
    2424
    25       character(len=*) modname
     25      character(len=*), intent(in):: modname
    2626      integer ierr, ierror_mpi
    27       character(len=*) message
     27      character(len=*), intent(in):: message
    2828
    2929      write(lunout,*) 'in abort_gcm'
     
    4646        write(lunout,*) 'Everything is cool'
    4747      else
    48         write(lunout,*) 'Houston, we have a problem ', ierr
     48        write(lunout,*) 'Houston, we have a problem, ierr = ', ierr
    4949#ifdef CPP_MPI
    5050C$OMP CRITICAL (MPI_ABORT_GCM)
  • LMDZ5/branches/testing/libf/dyn3dmem/gcm.F

    r2056 r2160  
    174174!#ifdef CPP_IOIPSL
    175175      CALL conf_gcm( 99, .TRUE. , clesphy0 )
     176      if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm",
     177     s "iphysiq must be a multiple of iperiod", 1)
    176178!#else
    177179!      CALL defrun( 99, .TRUE. , clesphy0 )
  • LMDZ5/branches/testing/libf/dyn3dmem/getparam.F90

    r1910 r2160  
    1111
    1212   INTERFACE getpar
    13      MODULE PROCEDURE ini_getparam,fin_getparam,getparamr,getparami,getparaml
     13     MODULE PROCEDURE getparamr,getparami,getparaml
    1414   END INTERFACE
     15   private getparamr,getparami,getparaml
    1516
    1617   INTEGER, PARAMETER :: out_eff=99
  • LMDZ5/branches/testing/libf/dyn3dmem/guide_loc_mod.F90

    r2056 r2160  
    6868
    6969  SUBROUTINE guide_init
    70    
     70
    7171    USE control_mod
     72
    7273    IMPLICIT NONE
    7374 
     
    7576    INCLUDE "paramet.h"
    7677    INCLUDE "netcdf.inc"
     78
     79    ! For grossismx:
     80    include "serre.h"
    7781
    7882    INTEGER                :: error,ncidpl,rid,rcod
     
    9498    CALL getpar('guide_add',.false.,guide_add,'for�age constant?')
    9599    CALL getpar('guide_zon',.false.,guide_zon,'guidage moy zonale')
     100    if (guide_zon .and. abs(grossismx - 1.) > 0.01) &
     101         call abort_gcm("guide_init", &
     102         "zonal nudging requires grid regular in longitude", 1)
    96103
    97104!   Constantes de rappel. Unite : fraction de jour
     
    114121    ! frequences f>0: fx/jour; f<0: tous les f jours; f=0: 1 seule fois.
    115122    IF (iguide_sav.GT.0) THEN
    116         iguide_sav=day_step/iguide_sav
     123       iguide_sav=day_step/iguide_sav
     124    ELSE if (iguide_sav == 0) then
     125       iguide_sav = huge(0)
    117126    ELSE
    118         iguide_sav=day_step*iguide_sav
     127       iguide_sav=day_step*iguide_sav
    119128    ENDIF
    120129
     
    15171526            enddo
    15181527        enddo
    1519    
    15201528    ENDIF ! guide_reg
     1529
     1530    if (.not. guide_add) alpha = 1. - exp(- alpha)
    15211531
    15221532  END SUBROUTINE tau2alpha
  • LMDZ5/branches/testing/libf/dyn3dmem/iniacademic_loc.F90

    r2056 r2160  
    44SUBROUTINE iniacademic_loc(vcov,ucov,teta,q,masse,ps,phis,time_0)
    55
     6  USE filtreg_mod, ONLY: inifilr
    67  use exner_hyb_m, only: exner_hyb
    78  use exner_milieu_m, only: exner_milieu
    8   USE filtreg_mod
    99  USE infotrac, ONLY : nqtot
    1010  USE control_mod, ONLY: day_step,planet_type
    11   USE parallel_lmdz
     11  USE parallel_lmdz, ONLY: ijb_u, ije_u, ijb_v, ije_v
    1212#ifdef CPP_IOIPSL
    13   USE IOIPSL
     13  USE IOIPSL, ONLY: getin
    1414#else
    1515  ! if not using IOIPSL, we still need to use (a local version of) getin
    16   USE ioipsl_getincom
     16  USE ioipsl_getincom, ONLY: getin
    1717#endif
    1818  USE Write_Field
     
    4141  !   ----------
    4242
    43   real time_0
    44 
    45   !   variables dynamiques
    46   REAL vcov(ijb_v:ije_v,llm),ucov(ijb_u:ije_u,llm) ! vents covariants
    47   REAL teta(ijb_u:ije_u,llm)                 ! temperature potentielle
    48   REAL q(ijb_u:ije_u,llm,nqtot)               ! champs advectes
    49   REAL ps(ijb_u:ije_u)                       ! pression  au sol
    50   REAL masse(ijb_u:ije_u,llm)                ! masse d'air
    51   REAL phis(ijb_u:ije_u)                     ! geopotentiel au sol
     43  REAL,INTENT(OUT) :: time_0
     44
     45  !   fields
     46  REAL,INTENT(OUT) :: vcov(ijb_v:ije_v,llm) ! meridional covariant wind
     47  REAL,INTENT(OUT) :: ucov(ijb_u:ije_u,llm) ! zonal covariant wind
     48  REAL,INTENT(OUT) :: teta(ijb_u:ije_u,llm) ! potential temperature (K)
     49  REAL,INTENT(OUT) :: q(ijb_u:ije_u,llm,nqtot) ! advected tracers (.../kg_of_air)
     50  REAL,INTENT(OUT) :: ps(ijb_u:ije_u) ! surface pressure (Pa)
     51  REAL,INTENT(OUT) :: masse(ijb_u:ije_u,llm) ! air mass in grid cell (kg)
     52  REAL,INTENT(OUT) :: phis(ijb_u:ije_u) ! surface geopotential
    5253
    5354  !   Local:
     
    8081  character(len=80) :: abort_message
    8182
     83  ! Sanity check: verify that options selected by user are not incompatible
     84  if ((iflag_phys==1).and. .not. read_start) then
     85    write(lunout,*) trim(modname)," error: if read_start is set to ", &
     86    " false then iflag_phys should not be 1"
     87    write(lunout,*) "You most likely want an aquaplanet initialisation", &
     88    " (iflag_phys >= 100)"
     89    call abort_gcm(modname,"incompatible iflag_phys==1 and read_start==.false.",1)
     90  endif
     91 
    8292  !-----------------------------------------------------------------------
    8393  ! 1. Initializations for Earth-like case
  • LMDZ5/branches/testing/libf/dyn3dmem/integrd_loc.F

    r1910 r2160  
    147147!     &                   MPI_LOGICAL,MPI_LOR,COMM_LMDZ,ierr)
    148148      IF( .NOT. checksum ) THEN
    149           write(lunout,*) "integrd: negative surface pressure ",
    150      &                                                ps(stop_it)
     149         write(lunout,*) "integrd: ps = ", ps(stop_it)
    151150         write(lunout,*) " at node ij =", stop_it
    152151         ! since ij=j+(i-1)*jjp1 , we have
     
    155154!         write(lunout,*) " lon = ",rlonv(i)*180./pi, " deg",
    156155!     &                   " lat = ",rlatu(j)*180./pi, " deg"
     156         call abort_gcm("integrd_loc", "negative surface pressure", 1)
    157157      ENDIF
    158158
     
    183183     .                dq(:,:,j))
    184184        enddo
    185       STOP
     185        call abort_gcm("integrd_loc", "", 1)
    186186      ENDIF
    187187   
  • LMDZ5/branches/testing/libf/dyn3dmem/mod_filtreg_p.F

    r1910 r2160  
    66     &     ifiltre, iaire, griscal ,iter)
    77      USE parallel_lmdz, only : OMP_CHUNK
    8       USE mod_filtre_fft_loc
    9       USE timer_filtre
    10      
    11       USE filtreg_mod
     8      USE mod_filtre_fft_loc, ONLY: use_filtre_fft, filtre_u_fft,
     9     &                              filtre_v_fft, filtre_inv_fft
     10      USE timer_filtre, ONLY: init_timer, start_timer, stop_timer
     11     
     12      USE filtreg_mod, ONLY: matrinvn, matrinvs, matriceun, matriceus,
     13     &                       matricevn, matricevs
    1214     
    1315      IMPLICIT NONE
     
    5759#include "coefils.h"
    5860c
    59       INTEGER jjb,jje,ibeg,iend,nlat,nbniv,ifiltre,iter
     61      INTEGER,INTENT(IN) :: jjb,jje,ibeg,iend,nlat,nbniv,ifiltre,iter
     62      INTEGER,INTENT(IN) :: iaire
     63      LOGICAL,INTENT(IN) :: griscal
     64      REAL,INTENT(INOUT) ::  champ( iip1,jjb:jje,nbniv)
     65     
    6066      INTEGER i,j,l,k
    6167      INTEGER iim2,immjm
    6268      INTEGER jdfil1,jdfil2,jffil1,jffil2,jdfil,jffil
    63      
    64       REAL  champ( iip1,jjb:jje,nbniv)
    65      
    66       LOGICAL    griscal
    67       INTEGER    hemisph, iaire
    68      
     69      INTEGER    hemisph
    6970      REAL :: champ_fft(iip1,jjb:jje,nbniv)
    70       REAL :: champ_in(iip1,jjb:jje,nbniv)
     71!      REAL :: champ_in(iip1,jjb:jje,nbniv)
    7172     
    7273      LOGICAL,SAVE     :: first=.TRUE.
     
    216217     &                    champ_fft(1,j,1), iip1*(jje-jjb+1))
    217218#else
    218                      champ_fft(:,j,1:nbniv_loc)=
    219      &                    matmul(matrinvn(:,:,j),
    220      &                    champ_loc(:iim,j,1:nbniv_loc))
     219                     champ_fft(1:iim,j,1:nbniv_loc)=
     220     &                    matmul(matrinvn(1:iim,1:iim,j),
     221     &                    champ_loc(1:iim,j,1:nbniv_loc))
    221222#endif
    222223                  ENDDO
     
    230231     &                    champ_fft(1,j,1), iip1*(jje-jjb+1))
    231232#else
    232                      champ_fft(:,j,1:nbniv_loc)=
    233      &                    matmul(matriceun(:,:,j),
    234      &                           champ_loc(:iim,j,1:nbniv_loc))
     233                     champ_fft(1:iim,j,1:nbniv_loc)=
     234     &                    matmul(matriceun(1:iim,1:iim,j),
     235     &                           champ_loc(1:iim,j,1:nbniv_loc))
    235236#endif
    236237                  ENDDO
     
    244245     &                    champ_fft(1,j,1), iip1*(jje-jjb+1))
    245246#else
    246                      champ_fft(:,j,1:nbniv_loc)=
    247      &                    matmul(matricevn(:,:,j),           
    248      &                           champ_loc(:iim,j,1:nbniv_loc))
     247                     champ_fft(1:iim,j,1:nbniv_loc)=
     248     &                    matmul(matricevn(1:iim,1:iim,j),           
     249     &                           champ_loc(1:iim,j,1:nbniv_loc))
    249250#endif
    250251                  ENDDO
     
    262263     &                    champ_fft(1,j,1), iip1*(jje-jjb+1))
    263264#else
    264                      champ_fft(:,j,1:nbniv_loc)=
    265      &                    matmul(matrinvs(:,:,j-jfiltsu+1),
    266      &                           champ_loc(:iim,j,1:nbniv_loc))
     265                     champ_fft(1:iim,j,1:nbniv_loc)=
     266     &                    matmul(matrinvs(1:iim,1:iim,j-jfiltsu+1),
     267     &                           champ_loc(1:iim,j,1:nbniv_loc))
    267268#endif
    268269                  ENDDO
     
    277278     &                    champ_fft(1,j,1), iip1*(jje-jjb+1))
    278279#else
    279                      champ_fft(:,j,1:nbniv_loc)=
    280      &                    matmul(matriceus(:,:,j-jfiltsu+1),
    281      &                           champ_loc(:iim,j,1:nbniv_loc))
     280                     champ_fft(1:iim,j,1:nbniv_loc)=
     281     &                    matmul(matriceus(1:iim,1:iim,j-jfiltsu+1),
     282     &                           champ_loc(1:iim,j,1:nbniv_loc))
    282283#endif
    283284                  ENDDO
     
    292293     &                    champ_fft(1,j,1), iip1*(jje-jjb+1))
    293294#else
    294                      champ_fft(:,j,1:nbniv_loc)=
    295      &                    matmul(matricevs(:,:,j-jfiltsv+1),
    296      &                           champ_loc(:iim,j,1:nbniv_loc))
     295                     champ_fft(1:iim,j,1:nbniv_loc)=
     296     &                    matmul(matricevs(1:iim,1:iim,j-jfiltsv+1),
     297     &                           champ_loc(1:iim,j,1:nbniv_loc))
    297298#endif
    298299                  ENDDO
     
    344345            DO l = 1, nbniv
    345346               DO j = jdfil,jffil
     347                  ! add redundant longitude
    346348                  champ( iip1,j,l ) = champ( 1,j,l )
    347349               ENDDO
     
    406408               DO j=jdfil,jffil
    407409!            champ_FFT( iip1,j,l ) = champ_FFT( 1,j,l )
     410                  ! add redundant longitude
    408411                  champ( iip1,j,l ) = champ( 1,j,l )
    409412               ENDDO
Note: See TracChangeset for help on using the changeset viewer.