Ignore:
Timestamp:
Nov 2, 2010, 12:38:23 PM (14 years ago)
Author:
emillour
Message:

Debut de mise a jour de la dynamique parallele par rapport aux modifs dans la partie sequentielle.

Mais NON TESTE , car pas (encore) possibilite de compiler et faire tourner cas simple (type newtonien sans physique).

Voir commit_v8.log pour les details.

Ehouarn

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libf/dyn3dpar/leapfrog_p.F

    r7 r8  
    9090      REAL,SAVE :: phi(ip1jmp1,llm)                  ! geopotentiel
    9191      REAL,SAVE :: w(ip1jmp1,llm)                    ! vitesse verticale
     92! ADAPTATION GCM POUR CP(T)
     93      REAL,SAVE :: temp(ip1jmp1,llm)                 ! temperature 
     94      REAL,SAVE :: tsurpk(ip1jmp1,llm)               ! cpp*T/pk 
    9295
    9396c variables dynamiques intermediaire pour le transport
     
    475478     &                                jj_nb_caldyn,0,0,TestRequest)
    476479        enddo
     480! ADAPTATION GCM POUR CP(T)
     481         call Register_SwapFieldHallo(temp,temp,ip1jmp1,llm,
     482     &                                jj_Nb_caldyn,0,0,TestRequest)
     483         call Register_SwapFieldHallo(tsurpk,tsurpk,ip1jmp1,llm,
     484     &                                jj_Nb_caldyn,0,0,TestRequest)
    477485
    478486         call SetDistrib(jj_nb_caldyn)
     
    505513       call Register_Hallo(pks,ip1jmp1,1,1,1,1,1,TestRequest)
    506514       call Register_Hallo(p,ip1jmp1,llmp1,1,1,1,1,TestRequest)
     515! ADAPTATION GCM POUR CP(T)
     516       call Register_Hallo(temp,ip1jmp1,llm,1,1,1,1,TestRequest)
     517       call Register_Hallo(tsurpk,ip1jmp1,llm,1,1,1,1,TestRequest)
    507518       
    508519c       do j=1,nqtot
     
    543554      True_itau=True_itau+1
    544555
    545 c$OMP MASTER
     556! ADAPTATION GCM POUR CP(T)
     557      call tpot2t_p(ip1jmp1,llm,teta,temp,pk)
     558      ijb=ij_begin
     559      ije=ij_end
     560!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     561      do l=1,llm
     562        tsurpk(ijb:ije,llm)=cpp*temp(ijb:ije,llm)/pk(ijb:ije,llm)
     563      enddo
     564!$OMP END DO
     565
    546566      IF (prt_level>9) THEN
    547567        WRITE(lunout,*)"leapfrog_p: Iteration No",True_itau
     
    551571      call start_timer(timer_caldyn)
    552572
    553       CALL geopot_p  ( ip1jmp1, teta  , pk , pks,  phis  , phi   )
    554 
     573! ADAPTATION GCM POUR CP(T)
     574!      CALL geopot_p  ( ip1jmp1, teta  , pk , pks,  phis  , phi   )
     575      CALL geopot_p  ( ip1jmp1, tsurpk  , pk , pks,  phis  , phi   )
    555576     
    556577      call VTb(VTcaldyn)
     
    561582!      CALL FTRACE_REGION_BEGIN("caldyn")
    562583      time = jD_cur + jH_cur
     584! ADAPTATION GCM POUR CP(T)
     585!      CALL caldyn_p
     586!     $  ( itau,ucov,vcov,teta,ps,masse,pk,pkf,phis ,
     587!     $    phi,conser,du,dv,dteta,dp,w, pbaru,pbarv, time )
    563588      CALL caldyn_p
    564      $  ( itau,ucov,vcov,teta,ps,masse,pk,pkf,phis ,
     589     $  ( itau,ucov,vcov,teta,ps,masse,pk,pkf,tsurpk,phis,
    565590     $    phi,conser,du,dv,dteta,dp,w, pbaru,pbarv, time )
    566591
     
    701726
    702727
    703 c   Inbterface avec les routines de phylmd (phymars ... )
     728c   Interface avec les routines de phylmd (phymars ... )
    704729c   -----------------------------------------------------
    705730
     
    10751100
    10761101c   dissipation
     1102! ADAPTATION GCM POUR CP(T)
     1103        call tpot2t_p(ip1jmp1,llm,teta,temp,pk)
    10771104
    10781105!        CALL FTRACE_REGION_BEGIN("dissip")
     
    10851112        DO l=1,llm
    10861113          ucov(ijb:ije,l)=ucov(ijb:ije,l)+dudis(ijb:ije,l)
     1114          dudis(ijb:ije,l)=dudis(ijb:ije,l)/dtdiss   ! passage en (m/s)/s
    10871115        ENDDO
    10881116c$OMP END DO NOWAIT       
     
    10911119        DO l=1,llm
    10921120          vcov(ijb:ije,l)=vcov(ijb:ije,l)+dvdis(ijb:ije,l)
     1121          dvdis(ijb:ije,l)=dvdis(ijb:ije,l)/dtdiss   ! passage en (m/s)/s
    10931122        ENDDO
    10941123c$OMP END DO NOWAIT       
    1095 
    1096 c       teta=teta+dtetadis
    10971124
    10981125
     
    11241151            do l=1,llm
    11251152              do ij=ijb,ije
    1126                 dtetaecdt(ij,l)= (ecin0(ij,l)-ecin(ij,l))/ pk(ij,l)
     1153! ADAPTATION GCM POUR CP(T)
     1154!                dtetaecdt(ij,l)= (ecin0(ij,l)-ecin(ij,l))/ pk(ij,l)
     1155!                dtetadis(ij,l)=dtetadis(ij,l)+dtetaecdt(ij,l)
     1156                temp(ij,l)=temp(ij,l) +
     1157     &                      (ecin0(ij,l)-ecin(ij,l))/cpdet(temp(ij,l))
     1158              enddo
     1159            enddo
     1160c$OMP END DO
     1161            call t2tpot_p(ip1jmp1,llm,temp,ztetaec,pk)
     1162c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)           
     1163            do l=1,llm
     1164              do ij=ijb,ije
     1165                dtetaecdt(ij,l)=ztetaec(ij,l)-teta(ij,l)
    11271166                dtetadis(ij,l)=dtetadis(ij,l)+dtetaecdt(ij,l)
    11281167              enddo
    11291168            enddo
    1130 c$OMP END DO NOWAIT           
     1169c$OMP END DO NOWAIT
    11311170       endif ! of if (dissip_conservative)
    11321171
     
    11371176           do ij=ijb,ije
    11381177              teta(ij,l)=teta(ij,l)+dtetadis(ij,l)
     1178              dtetadis(ij,l)=dtetadis(ij,l)/dtdiss   ! passage en K/s
    11391179           enddo
    11401180         enddo
     
    13721412
    13731413c ATTENTION!!! bilan_dyn_p ne marche probablement pas avec OpenMP
    1374               CALL bilan_dyn_p(2,dtvr*iperiod,dtvr*day_step*periodav,
    1375      ,             ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q)
     1414!              CALL bilan_dyn_p(2,dtvr*iperiod,dtvr*day_step*periodav,
     1415!     ,             ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q)
     1416c les traceurs ne sont pas sortis, trop lourd.
     1417c Peut changer eventuellement si besoin.
     1418                 CALL bilan_dyn_p(dtvr*iperiod,dtvr*day_step*periodav,
     1419     &                 ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,
     1420     &                 du,dudis,duspg,dufi)
    13761421c$OMP END MASTER
    13771422              ENDIF !ok_dynzon
     
    14111456c$OMP MASTER
    14121457              nbetat = nbetatdem
    1413               CALL geopot_p(ip1jmp1,teta,pk,pks,phis,phi)
     1458
     1459! ADAPTATION GCM POUR CP(T)
     1460      call tpot2t_p(ip1jmp1,llm,teta,temp,pk)
     1461      ijb=ij_begin
     1462      ije=ij_end
     1463!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     1464      do l=1,llm
     1465        tsurpk(ijb:ije,llm)=cpp*temp(ijb:ije,llm)/pk(ijb:ije,llm)
     1466      enddo
     1467!$OMP END DO
     1468!              CALL geopot_p(ip1jmp1,teta,pk,pks,phis,phi)
     1469      CALL geopot_p  ( ip1jmp1, tsurpk  , pk , pks,  phis  , phi   )
    14141470       
    14151471cym        unat=0.
     
    14881544c$OMP MASTER
    14891545
    1490 !              if (planet_type.eq."earth") then
     1546              if (planet_type.eq."mars") then
     1547! POUR MARS, METTRE UNE FONCTION A PART, genre dynredem1_mars
     1548                abort_message = 'dynredem1_mars A FAIRE'
     1549                call abort_gcm(modname,abort_message,0)
     1550              else
    14911551! Write an Earth-format restart file
    14921552                CALL dynredem1_p("restart.nc",0.0,
    14931553     &                           vcov,ucov,teta,q,masse,ps)
    1494 !              endif ! of if (planet_type.eq."earth")
     1554              endif ! of if (planet_type.eq."mars")
    14951555
    14961556!              CLOSE(99)
     
    15781638!               CALL writedynav_p(histaveid, itau,vcov ,
    15791639!     ,                          ucov,teta,pk,phi,q,masse,ps,phis)
    1580                CALL bilan_dyn_p(2,dtvr*iperiod,dtvr*day_step*periodav,
    1581      ,           ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q)
     1640!               CALL bilan_dyn_p(2,dtvr*iperiod,dtvr*day_step*periodav,
     1641!     ,           ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,q)
     1642c les traceurs ne sont pas sortis, trop lourd.
     1643c Peut changer eventuellement si besoin.
     1644                 CALL bilan_dyn_p(dtvr*iperiod,dtvr*day_step*periodav,
     1645     &                 ps,masse,pk,pbaru,pbarv,teta,phi,ucov,vcov,
     1646     &                 du,dudis,duspg,dufi)
     1647
    15821648c$OMP END MASTER
    15831649               END IF !ok_dynzon
     
    16141680c$OMP MASTER
    16151681                nbetat = nbetatdem
    1616                 CALL geopot_p(ip1jmp1,teta,pk,pks,phis,phi)
     1682! ADAPTATION GCM POUR CP(T)
     1683                call tpot2t_p(ip1jmp1,llm,teta,temp,pk)
     1684                ijb=ij_begin
     1685                ije=ij_end
     1686!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
     1687                do l=1,llm
     1688                  tsurpk(ijb:ije,llm)=cpp*temp(ijb:ije,llm)/
     1689     &                                             pk(ijb:ije,llm)
     1690                enddo
     1691!$OMP END DO
     1692!                CALL geopot_p(ip1jmp1,teta,pk,pks,phis,phi)
     1693                CALL geopot_p(ip1jmp1,tsurpk,pk,pks,phis,phi)
    16171694
    16181695cym        unat=0.
     
    16811758
    16821759              IF(itau.EQ.itaufin) THEN
    1683 !                if (planet_type.eq."earth") then
     1760                if (planet_type.eq."mars") then
     1761! POUR MARS, METTRE UNE FONCTION A PART, genre dynredem1_mars
     1762                  abort_message = 'dynredem1_mars A FAIRE'
     1763                  call abort_gcm(modname,abort_message,0)
     1764                else
    16841765c$OMP MASTER
    16851766                   CALL dynredem1_p("restart.nc",0.0,
    16861767     .                               vcov,ucov,teta,q,masse,ps)
    16871768c$OMP END MASTER
    1688 !                endif ! of if (planet_type.eq."earth")
     1769                endif ! of if (planet_type.eq."mars")
    16891770              ENDIF ! of IF(itau.EQ.itaufin)
    16901771
Note: See TracChangeset for help on using the changeset viewer.