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/exner_hyb_p.F

    r774 r985  
    5151      INTEGER ije,ijb,jje,jjb
    5252c
    53 c$OMP MASTER           
     53c$OMP BARRIER           
    5454      unpl2k    = 1.+ 2.* kappa
    5555c
     
    5757      ije=ij_end
    5858
    59 
     59c$OMP DO SCHEDULE(STATIC)
    6060      DO   ij  = ijb, ije
    6161        pks(ij) = cpp * ( ps(ij)/preff ) ** kappa
    6262      ENDDO
     63c$OMP ENDDO
     64c Synchro OPENMP ici
    6365
     66c$OMP MASTER
    6467      if (pole_nord) then
    6568        DO  ij   = 1, iim
     
    8386        ENDDO
    8487      endif
    85 
     88c$OMP END MASTER
    8689c
    8790c
    8891c    .... Calcul des coeff. alpha et beta  pour la couche l = llm ..
    8992c
     93c$OMP DO SCHEDULE(STATIC)
    9094      DO     ij      = ijb,ije
    9195       alpha(ij,llm) = 0.
    9296       beta (ij,llm) = 1./ unpl2k
    9397      ENDDO
     98c$OMP ENDDO NOWAIT
    9499c
    95100c     ... Calcul des coeff. alpha et beta  pour l = llm-1  a l = 2 ...
     
    97102      DO l = llm -1 , 2 , -1
    98103c
     104c$OMP DO SCHEDULE(STATIC)
    99105        DO ij = ijb, ije
    100106        dellta = p(ij,l)* unpl2k + p(ij,l+1)* ( beta(ij,l+1)-unpl2k )
     
    102108        beta (ij,l)  =   p(ij,l  ) / dellta   
    103109        ENDDO
     110c$OMP ENDDO NOWAIT
    104111c
    105112      ENDDO
     
    109116c     .....  Calcul de pk pour la couche 1 , pres du sol  ....
    110117c
    111 
     118c$OMP DO SCHEDULE(STATIC)
    112119      DO   ij   = ijb, ije
    113120       pk(ij,1) = ( p(ij,1)*pks(ij) - 0.5*alpha(ij,2)*p(ij,2) )  /
    114121     *    (  p(ij,1)* (1.+kappa) + 0.5*( beta(ij,2)-unpl2k )* p(ij,2) )
    115122      ENDDO
     123c$OMP ENDDO NOWAIT
    116124c
    117125c    ..... Calcul de pk(ij,l) , pour l = 2 a l = llm  ........
    118126c
    119127      DO l = 2, llm
     128c$OMP DO SCHEDULE(STATIC)
    120129        DO   ij   = ijb, ije
    121130         pk(ij,l) = alpha(ij,l) + beta(ij,l) * pk(ij,l-1)
    122131        ENDDO
     132c$OMP ENDDO NOWAIT       
    123133      ENDDO
    124134c
    125135c
    126136c      CALL SCOPY   ( ngrid * llm, pk, 1, pkf, 1 )
    127       pkf(ijb:ije,1:llm)=pk(ijb:ije,1:llm)
    128 c$OMP END MASTER
     137      DO l = 1, llm
     138c$OMP DO SCHEDULE(STATIC)
     139         DO   ij   = ijb, ije
     140           pkf(ij,l)=pk(ij,l)
     141         ENDDO
     142c$OMP ENDDO NOWAIT             
     143      ENDDO
     144
    129145c$OMP BARRIER
    130146     
Note: See TracChangeset for help on using the changeset viewer.