Changeset 2626


Ignore:
Timestamp:
Feb 23, 2022, 2:22:42 PM (3 years ago)
Author:
emillour
Message:

Common dynamics:
Some rather harmless OpenMP fixes in the filtering identified by recent versions of ifort.
EM

Location:
trunk/LMDZ.COMMON/libf
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.COMMON/libf/dyn3dpar/filtreg_p.F

    r1019 r2626  
    44     &     ifiltre, iaire, griscal ,iter)
    55      USE parallel_lmdz, only : OMP_CHUNK
    6       USE mod_filtre_fft
    7       USE timer_filtre
    8      
    9       USE filtreg_mod
     6      USE mod_filtre_fft, only: use_filtre_fft, filtre_u_fft
     7      USE mod_filtre_fft, only: filtre_v_fft, filtre_inv_fft
     8      USE timer_filtre, only: init_timer, start_timer, stop_timer
     9      USE filtreg_mod, only: matriceun, matricevn, matrinvn, matrinvs
     10      USE filtreg_mod, only: matriceus, matricevs
    1011     
    1112      IMPLICIT NONE
     
    5152c
    5253c
    53 #include "dimensions.h"
    54 #include "paramet.h"
    55 #include "coefils.h"
    56 c
    57       INTEGER ibeg,iend,nlat,nbniv,ifiltre,iter
     54      include "dimensions.h"
     55      include "paramet.h"
     56      include "coefils.h"
     57c
     58      REAL,INTENT(INOUT) :: champ( iip1,nlat,nbniv)
     59      INTEGER,INTENT(IN) :: ibeg,iend,nlat,nbniv,ifiltre,iter
     60      LOGICAL,INTENT(IN) :: griscal
     61      INTEGER,INTENT(IN) :: iaire
     62
    5863      INTEGER i,j,l,k
    5964      INTEGER iim2,immjm
    6065      INTEGER jdfil1,jdfil2,jffil1,jffil2,jdfil,jffil
    6166     
    62       REAL  champ( iip1,nlat,nbniv)
    63      
    64       LOGICAL    griscal
    65       INTEGER    hemisph, iaire
     67      INTEGER    hemisph
    6668     
    6769      REAL :: champ_fft(iip1,nlat,nbniv)
     
    201203            ENDDO
    202204c$OMP END DO NOWAIT
    203 
    204205            nbniv_loc = ll_nb
    205206
     
    214215     &                    champ_fft(1,j-jdfil+1,1), iip1*nlat)
    215216#else
    216                      champ_fft(:iim,j-jdfil+1,:)
    217      &                    =matmul(matrinvn(:,:,j),champ_loc(:iim,j,:))
     217                     champ_fft(:iim,j-jdfil+1,:nbniv_loc)
     218     &                    =matmul(matrinvn(:,:,j),
     219     &                            champ_loc(:iim,j,:nbniv_loc))
    218220#endif
    219221                  ENDDO
     
    227229     &                    champ_fft(1,j-jdfil+1,1), iip1*nlat)
    228230#else
    229                      champ_fft(:iim,j-jdfil+1,:)
    230      &                    =matmul(matriceun(:,:,j),champ_loc(:iim,j,:))
     231                     champ_fft(:iim,j-jdfil+1,:nbniv_loc)
     232     &                    =matmul(matriceun(:,:,j),
     233     &                            champ_loc(:iim,j,:nbniv_loc))
    231234#endif
    232235                  ENDDO
     
    240243     &                    champ_fft(1,j-jdfil+1,1), iip1*nlat)
    241244#else
    242                      champ_fft(:iim,j-jdfil+1,:)
    243      &                    =matmul(matricevn(:,:,j),champ_loc(:iim,j,:))
    244 #endif
    245                   ENDDO
    246                  
    247                ENDIF
    248                
    249             ELSE
     245                     champ_fft(:iim,j-jdfil+1,:nbniv_loc)
     246     &                    =matmul(matricevn(:,:,j),
     247     &                            champ_loc(:iim,j,:nbniv_loc))
     248#endif
     249                  ENDDO
     250                 
     251               ENDIF ! of IF( ifiltre.EQ.-2 ) ... ELSE IF ( griscal ) ... ELSE
     252               
     253            ELSE ! of IF( hemisph.EQ.1 )
    250254               
    251255               IF( ifiltre.EQ.-2 )   THEN
     
    257261     &                    champ_fft(1,j-jdfil+1,1), iip1*nlat)
    258262#else
    259                      champ_fft(:iim,j-jdfil+1,:)
     263                     champ_fft(:iim,j-jdfil+1,:nbniv_loc)
    260264     &                    =matmul(matrinvs(:,:,j-jfiltsu+1),
    261      &                            champ_loc(:iim,j,:))
     265     &                            champ_loc(:iim,j,:nbniv_loc))
    262266#endif
    263267                  ENDDO
     
    272276     &                    champ_fft(1,j-jdfil+1,1), iip1*nlat)
    273277#else
    274                      champ_fft(:iim,j-jdfil+1,:)
     278                     champ_fft(:iim,j-jdfil+1,:nbniv_loc)
    275279     &                    =matmul(matriceus(:,:,j-jfiltsu+1),
    276      &                            champ_loc(:iim,j,:))
     280     &                            champ_loc(:iim,j,:nbniv_loc))
    277281#endif
    278282                  ENDDO
     
    287291     &                    champ_fft(1,j-jdfil+1,1), iip1*nlat)
    288292#else
    289                      champ_fft(:iim,j-jdfil+1,:)
     293                     champ_fft(:iim,j-jdfil+1,:nbniv_loc)
    290294     &                    =matmul(matricevs(:,:,j-jfiltsv+1),
    291      &                            champ_loc(:iim,j,:))
    292 #endif
    293                   ENDDO
    294                  
    295                ENDIF
    296                
    297             ENDIF
     295     &                            champ_loc(:iim,j,:nbniv_loc))
     296#endif
     297                  ENDDO
     298                 
     299               ENDIF ! of IF( ifiltre.EQ.-2 ) ... ELSE IF ( griscal ) ... ELSE
     300               
     301            ENDIF ! of IF( hemisph.EQ.1 ) ... ELSE
    298302!     c     
    299303            IF( ifiltre.EQ.2 )  THEN
     
    334338c$OMP END DO NOWAIT
    335339               
    336             ENDIF
     340            ENDIF ! of IF( ifiltre.EQ.2 ) ... ELSE
    337341           
    338342c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     
    348352ccccccccccccccccccccccccccccccccccccccccccccc
    349353       
    350          ELSE
     354         ELSE ! of IF (.NOT. use_filtre_fft)
    351355       
    352356c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     
    405409            ENDDO
    406410c$OMP END DO NOWAIT             
    407          ENDIF
     411         ENDIF ! of IF (.NOT. use_filtre_fft) ... ELSE
    408412c Fin de la zone de filtrage
    409413
    410414       
    411       ENDDO
     415      ENDDO ! of DO hemisph = 1, 2
    412416
    413417!      DO j=1,nlat
     
    430434      CALL stop_timer
    431435c$OMP END MASTER
    432       RETURN
     436
    433437      END
  • trunk/LMDZ.COMMON/libf/filtrez/filtreg.F

    r979 r2626  
    55     &     griscal ,iter)
    66     
    7       USE filtreg_mod
     7      USE filtreg_mod, only: matriceun, matricevn, matrinvn, matrinvs
     8      USE filtreg_mod, only: matriceus, matricevs
    89     
    910      IMPLICIT NONE
     
    4647c
    4748c
    48 #include "dimensions.h"
    49 #include "paramet.h"
    50 #include "coefils.h"
    51 
    52       INTEGER    nlat,nbniv,ifiltre,iter
     49      include "dimensions.h"
     50      include "paramet.h"
     51      include "coefils.h"
     52
     53      REAL,INTENT(INOUT) :: champ( iip1,nlat,nbniv)
     54      INTEGER,INTENT(IN) :: nlat,nbniv,ifiltre,iter
     55      INTEGER,INTENT(IN) :: iaire
     56
    5357      INTEGER    i,j,l,k
    5458      INTEGER    iim2,immjm
    5559      INTEGER    jdfil1,jdfil2,jffil1,jffil2,jdfil,jffil
    5660
    57       REAL       champ( iip1,nlat,nbniv)
    5861
    5962      REAL       eignq(iim,nlat,nbniv), sdd1(iim),sdd2(iim)
    60       LOGICAL    griscal
    61       INTEGER    hemisph, iaire
     63      LOGICAL,INTENT(IN) :: griscal
     64      INTEGER    hemisph
    6265
    6366      LOGICAL,SAVE     :: first=.TRUE.
     
    132135            jffil2 = jjm
    133136         END IF
    134       ELSE
     137      ELSE ! of IF( griscal )
    135138         IF( nlat.NE.jjm )  THEN
    136139            PRINT  2222
     
    159162            jffil2 = jjm
    160163         END IF
    161       END IF
     164      END IF ! of IF( griscal )
    162165     
    163166      DO hemisph = 1, 2
     
    223226               END DO
    224227               
    225             ENDIF
    226            
    227          ELSE
     228            ENDIF ! of IF( ifiltre.EQ.-2 ) ... ELSE IF ( griscal ) ... ELSE
     229           
     230         ELSE ! of IF( hemisph. EQ. 1 )
    228231           
    229232            IF( ifiltre. EQ. -2 )   THEN
     
    273276               END DO
    274277                             
    275             ENDIF
    276            
    277          ENDIF
     278            ENDIF ! of IF( ifiltre.EQ.-2 ) ... ELSE IF ( griscal ) ... ELSE
     279           
     280         ENDIF ! of IF( hemisph. EQ. 1 )
    278281         
    279282         IF( ifiltre.EQ. 2 )  THEN
     
    301304            END DO
    302305
    303          ENDIF
     306         ENDIF ! of IF( ifiltre.EQ. 2 )
    304307
    305308         DO l = 1, nbniv
     
    310313
    311314     
    312       ENDDO
     315      ENDDO ! of DO hemisph = 1, 2
    313316
    3143171111  FORMAT(//20x,'ERREUR dans le dimensionnement du tableau  CHAMP a
     
    3163192222  FORMAT(//20x,'ERREUR dans le dimensionnement du tableau CHAMP a fi
    317320     &     ltrer, sur la grille de V ou de Z'/)
    318       RETURN
     321
    319322      END
Note: See TracChangeset for help on using the changeset viewer.