Ignore:
Timestamp:
Apr 12, 2011, 11:16:02 AM (14 years ago)
Author:
slebonnois
Message:

Sebastien Lebonnois: sponge layer et dissip horizontale.

File:
1 edited

Legend:

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

    r1 r108  
    6464             rdamp(llm-3)=tau_top_bound/8.
    6565         else if (iflag_top_bound == 2) then
    66 ! couce eponge dans toutes les couches de pression plus faible que
     66! couche eponge dans toutes les couches de pression plus faible que
    6767! 100 fois la pression de la derniere couche
    6868             rdamp(:)=tau_top_bound
     
    7070         endif
    7171         first=.false.
    72          print*,'TOP_BOUND rdamp=',rdamp
     72         print*,'TOP_BOUND mode',mode_top_bound
     73         print*,'Coeffs pour la couche eponge a l equateur'
     74         print*,'p (Pa)  z(km)  tau (s)   dt*rdamp'
     75         do l=1,llm
     76           if (rdamp(l).ne.0.) then
     77            zkm        = phi(iip1/2,jjp1/2,l)/(1000*g)
     78          print*,presnivs(l),zkm,
     79     .          1./rdamp(l),
     80     .          dt*rdamp(l)
     81           endif
     82         enddo
    7383c$OMP END MASTER
    7484c$OMP BARRIER
     
    7787
    7888      CALL massbar_p(masse,massebx,masseby)
     89
     90c   mode = 0 : pas de sponge
     91c   mode = 1 : u et v -> 0
     92c   mode = 2 : u et v -> moyenne zonale
     93c   mode = 3 : u, v et h -> moyenne zonale
     94
     95C POUR V
     96
    7997C  CALCUL DES CHAMPS EN MOYENNE ZONALE:
    8098
     
    84102
    85103c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    86       do l=1,llm
     104      if (mode_top_bound.ge.2) then
     105       do l=1,llm
    87106        do j=jjb,jje
    88107          zm=0.
     
    97116          vzon(j,l)=vzon(j,l)/zm
    98117        enddo
    99       enddo
     118       enddo
     119      else
     120       do l=1,llm
     121        do j=jjb,jje
     122          vzon(j,l)=0.
     123        enddo
     124       enddo
     125      endif
    100126c$OMP END DO NOWAIT   
    101127
    102 c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    103       do l=1,llm
     128C   AMORTISSEMENTS LINEAIRES:
     129
     130c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     131      if (mode_top_bound.ge.1) then
     132       do l=1,llm
    104133        do j=jjb,jje
    105134          do i=1,iip1
    106             dv(i,j,l)=dv(i,j,l)-rdamp(l)*(vcov(i,j,l)-vzon(j,l))
    107           enddo
    108         enddo
    109       enddo
    110 c$OMP END DO NOWAIT
     135            dv(i,j,l)= -rdamp(l)*(vcov(i,j,l)-vzon(j,l))
     136          enddo
     137        enddo
     138       enddo
     139      endif
     140c$OMP END DO NOWAIT
     141
     142C POUR U ET H
     143
     144C  CALCUL DES CHAMPS EN MOYENNE ZONALE:
    111145
    112146      jjb=jj_begin
     
    116150
    117151c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    118       do l=1,llm
     152      if (mode_top_bound.ge.2) then
     153       do l=1,llm
    119154        do j=jjb,jje
    120155          uzon(j,l)=0.
     
    126161          uzon(j,l)=uzon(j,l)/zm
    127162        enddo
    128       enddo
     163       enddo
     164      else
     165       do l=1,llm
     166        do j=jjb,jje
     167          uzon(j,l)=0.
     168        enddo
     169       enddo
     170      endif
    129171c$OMP END DO NOWAIT
    130172
    131173c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)   
    132       do l=1,llm
     174      if (mode_top_bound.ge.3) then
     175       do l=1,llm
    133176        do j=jjb,jje
    134177          zm=0.
     
    140183          tzon(j,l)=tzon(j,l)/zm
    141184        enddo
    142       enddo
     185       enddo
     186      endif
    143187c$OMP END DO NOWAIT
    144188
     
    146190
    147191c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
    148       do l=1,llm
     192      if (mode_top_bound.ge.1) then
     193       do l=1,llm
    149194        do j=jjb,jje
    150195          do i=1,iip1
    151             du(i,j,l)=du(i,j,l)
    152      s               -rdamp(l)*(ucov(i,j,l)-cu(i,j)*uzon(j,l))
    153             dh(i,j,l)=dh(i,j,l)-rdamp(l)*(teta(i,j,l)-tzon(j,l))
    154           enddo
    155        enddo
    156       enddo
     196            du(i,j,l)= -rdamp(l)*(ucov(i,j,l)-cu(i,j)*uzon(j,l))
     197          enddo
     198        enddo
     199       enddo
     200      endif
     201c$OMP END DO NOWAIT
     202     
     203c$OMP DO SCHEDULE(STATIC,OMP_CHUNK)     
     204      if (mode_top_bound.ge.3) then
     205       do l=1,llm
     206        do j=jjb,jje
     207          do i=1,iip1
     208            dh(i,j,l)= -rdamp(l)*(teta(i,j,l)-tzon(j,l))
     209          enddo
     210        enddo
     211       enddo
     212      endif
    157213c$OMP END DO NOWAIT
    158214     
Note: See TracChangeset for help on using the changeset viewer.