Ignore:
Timestamp:
Jun 4, 2007, 4:13:10 PM (17 years ago)
Author:
Laurent Fairhead
Message:

Merge entre la version V3_conv et le HEAD
YM, JG, LF

File:
1 edited

Legend:

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

    r630 r764  
    4646      REAL ps(ip1jmp1),phis(ip1jmp1)
    4747      REAL pk(iip1,jjp1,llm),pkf(ip1jmp1,llm)
    48       REAL vcont(ip1jm,llm),ucont(ip1jmp1,llm)
     48      REAL,SAVE :: vcont(ip1jm,llm),ucont(ip1jmp1,llm)
    4949      REAL phi(ip1jmp1,llm),masse(ip1jmp1,llm)
    5050      REAL dv(ip1jm,llm),du(ip1jmp1,llm)
    5151      REAL dteta(ip1jmp1,llm),dp(ip1jmp1)
     52      REAL w(ip1jmp1,llm)
    5253      REAL pbaru(ip1jmp1,llm),pbarv(ip1jm,llm)
    5354      REAL time
     
    5657c   ------
    5758
    58       REAL ang(ip1jmp1,llm),p(ip1jmp1,llmp1)
    59       REAL massebx(ip1jmp1,llm),masseby(ip1jm,llm),psexbarxy(ip1jm)
    60       REAL vorpot(ip1jm,llm)
    61       REAL w(ip1jmp1,llm),ecin(ip1jmp1,llm),convm(ip1jmp1,llm)
    62       REAL bern(ip1jmp1,llm)
    63       REAL massebxy(ip1jm,llm)
    64    
    65 
     59      REAL,SAVE :: ang(ip1jmp1,llm)
     60      REAL,SAVE :: p(ip1jmp1,llmp1)
     61      REAL,SAVE :: massebx(ip1jmp1,llm),masseby(ip1jm,llm)
     62      REAL,SAVE :: psexbarxy(ip1jm)
     63      REAL,SAVE :: vorpot(ip1jm,llm)
     64      REAL,SAVE :: ecin(ip1jmp1,llm)
     65      REAL,SAVE :: bern(ip1jmp1,llm)
     66      REAL,SAVE :: massebxy(ip1jm,llm)
     67      REAL,SAVE :: convm(ip1jmp1,llm)
    6668      INTEGER   ij,l,ijb,ije,ierr
    6769
     
    7274      CALL pression_p ( ip1jmp1, ap      , bp   ,  ps  , p            )
    7375cym      CALL psextbar (   ps   , psexbarxy                          )
     76c$OMP BARRIER
    7477      CALL massdair_p (    p   , masse                                )
    7578      CALL massbar_p  (   masse, massebx , masseby                    )
     
    7780      CALL flumass_p  ( massebx, masseby , vcont, ucont ,pbaru, pbarv )
    7881      CALL dteta1_p   (   teta , pbaru   , pbarv, dteta               )
    79       CALL convmas_p  (   pbaru, pbarv   , convm                      )
    80 
     82      CALL convmas1_p  (   pbaru, pbarv   , convm                      )
     83c$OMP BARRIER     
     84      CALL convmas2_p  (   convm                      )
     85c$OMP BARRIER
    8186#ifdef DEBUG_IO
     87c$OMP BARRIER
     88c$OMP MASTER
    8289      call WriteField_p('ucont',reshape(ucont,(/iip1,jmp1,llm/)))
    8390      call WriteField_p('vcont',reshape(vcont,(/iip1,jjm,llm/)))
     
    9198      call WriteField_p('dteta',reshape(dteta,(/iip1,jmp1,llm/)))
    9299      call WriteField_p('convm',reshape(convm,(/iip1,jmp1,llm/)))
     100c$OMP END MASTER
     101c$OMP BARRIER
    93102#endif     
    94103
     104c$OMP BARRIER
     105c$OMP MASTER
    95106      ijb=ij_begin
    96107      ije=ij_end
     
    99110         dp( ij ) = convm( ij,1 ) / airesurg( ij )
    100111      ENDDO
    101 
     112c$OMP END MASTER
     113c$OMP BARRIER
     114c$OMP FLUSH
    102115      CALL vitvert_p ( convm  , w                                  )
    103116      CALL tourpot_p ( vcov   , ucov  , massebxy  , vorpot         )
     
    105118
    106119#ifdef DEBUG_IO     
     120c$OMP BARRIER
     121c$OMP MASTER
    107122      call WriteField_p('w',reshape(w,(/iip1,jmp1,llm/)))
    108123      call WriteField_p('vorpot',reshape(vorpot,(/iip1,jjm,llm/)))
    109124      call WriteField_p('du',reshape(du,(/iip1,jmp1,llm/)))
    110125      call WriteField_p('dv',reshape(dv,(/iip1,jjm,llm/)))
     126c$OMP END MASTER
     127c$OMP BARRIER
    111128#endif     
    112129      CALL enercin_p ( vcov   , ucov  , vcont     , ucont  , ecin  )
     
    115132
    116133#ifdef DEBUG_IO
     134c$OMP BARRIER
     135c$OMP MASTER
    117136      call WriteField_p('ecin',reshape(ecin,(/iip1,jmp1,llm/)))
    118137      call WriteField_p('bern',reshape(bern,(/iip1,jmp1,llm/)))
    119138      call WriteField_p('du',reshape(du,(/iip1,jmp1,llm/)))
    120139      call WriteField_p('dv',reshape(dv,(/iip1,jjm,llm/)))
     140      call WriteField_p('pkf',reshape(pkf,(/iip1,jmp1,llm/)))
     141c$OMP END MASTER
     142c$OMP BARRIER
    121143#endif
    122144     
     
    126148      if (pole_nord) ijb=ij_begin
    127149      if (pole_sud) ije=ij_end
    128      
     150
     151c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)       
    129152      DO l=1,llm
    130153         DO ij=ijb,ije
     
    132155        ENDDO
    133156      ENDDO
     157c$OMP END DO
    134158
    135 
    136       CALL advect_p( ang, vcov, teta, w, massebx, masseby,du,dv,dteta)
     159      CALL advect_new_p(ang,vcov,teta,w,massebx,masseby,du,dv,dteta)
    137160
    138161C  WARNING probleme de peridocite de dv sur les PC/linux. Pb d'arrondi
     
    142165      if (pole_sud) ije=ij_end-iip1
    143166
     167c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    144168      DO l = 1, llm
    145169         DO ij = ijb, ije, iip1
     
    152176         enddo
    153177      enddo
     178c$OMP END DO NOWAIT     
    154179c-----------------------------------------------------------------------
    155180c   Sorties eventuelles des variables de controle:
Note: See TracChangeset for help on using the changeset viewer.