Ignore:
Timestamp:
Jul 30, 2008, 5:50:03 PM (16 years ago)
Author:
Laurent Fairhead
Message:

Mise a jour de dyn3dpar par rapport a dyn3d, inclusion OpenMP et filtre FFT YM
LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/trunk/libf/dyn3dpar/qminimum_p.F

    r630 r985  
    3434      SAVE imprim
    3535      DATA imprim /0/
     36c$OMP THREADPRIVATE(imprim)
    3637      INTEGER ijb,ije
     38      INTEGER Index_pump(ip1jmp1)
     39      INTEGER nb_pump
    3740c
    3841c Quand l'eau liquide est trop petite (ou negative), on prend
     
    4043c (sans changer la temperature !)
    4144c
     45
    4246      ijb=ij_begin
    4347      ije=ij_end
    44      
     48
     49c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)       
    4550      DO 1000 k = 1, llm
    4651      DO 1040 i = ijb, ije
     
    5055 1040 CONTINUE
    5156 1000 CONTINUE
     57c$OMP END DO NOWAIT
     58c$OMP BARRIER
     59c --->  SYNCHRO OPENMP ICI
     60
    5261c
    5362c Quand l'eau vapeur est trop faible (ou negative), on complete
     
    5867      DO k = llm, 2, -1
    5968ccc      zx_abc = dpres(k) / dpres(k-1)
     69c$OMP DO SCHEDULE(STATIC)
    6070      DO i = ijb, ije
    6171         zx_abc = deltap(i,k)/deltap(i,k-1)
     
    6474         q(i,k,iq)   =  q(i,k,iq)   + zx_defau 
    6575      ENDDO
     76c$OMP END DO NOWAIT
    6677      ENDDO
     78c$OMP BARRIER
    6779c
    6880c Quand il s'agit de la premiere couche au-dessus du sol, on
    6981c doit imprimer un message d'avertissement (saturation possible).
    7082c
     83      nb_pump=0
     84c$OMP DO SCHEDULE(STATIC)
    7185      DO i = ijb, ije
    7286         zx_pump(i) = AMAX1( 0.0, seuil_vap - q(i,1,iq) )
    7387         q(i,1,iq)  = AMAX1( q(i,1,iq), seuil_vap )
     88         IF (zx_pump(i) > 0.0) THEN
     89            nb_pump = nb_pump+1
     90            Index_pump(nb_pump)=i
     91         ENDIF
    7492      ENDDO
    75       pompe = SSUM(ije-ijb+1,zx_pump(ijb),1)
    76       IF (imprim.LE.500 .AND. pompe.GT.0.0) THEN
    77          WRITE(6,'(1x,"ATT!:on pompe de l eau au sol",e15.7)') pompe
    78          DO i = ijb, ije
    79             IF (zx_pump(i).GT.0.0) THEN
     93c$OMP END DO 
     94!      pompe = SSUM(ije-ijb+1,zx_pump(ijb),1)
     95
     96      IF (imprim.LE.100 .AND. nb_pump .GT. 0 ) THEN
     97         PRINT *, 'ATT!:on pompe de l eau au sol'
     98         DO i = 1, nb_pump
    8099               imprim = imprim + 1
    81                PRINT*,'  en ',i,zx_pump(i)
    82             ENDIF
     100               PRINT*,'  en ',index_pump(i),zx_pump(index_pump(i))
    83101         ENDDO
    84102      ENDIF
Note: See TracChangeset for help on using the changeset viewer.