/[lmdze]/trunk/dyn3d/massdair.f
ViewVC logotype

Diff of /trunk/dyn3d/massdair.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/libf/dyn3d/massdair.f revision 3 by guez, Wed Feb 27 13:16:39 2008 UTC trunk/libf/dyn3d/massdair.f90 revision 67 by guez, Tue Oct 2 15:50:56 2012 UTC
# Line 1  Line 1 
1  !  module massdair_m
2  ! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/massdair.F,v 1.1.1.1 2004/05/19 12:53:07 lmdzadmin Exp $  
3  !    IMPLICIT NONE
4        SUBROUTINE massdair( p, masse )  
5  c  contains
6  c *********************************************************************  
7  c       ....  Calcule la masse d'air  dans chaque maille   ....    SUBROUTINE massdair(p, masse)
8  c *********************************************************************  
9  c      ! From LMDZ4/libf/dyn3d/massdair.F, version 1.1.1.1 2004/05/19 12:53:07
10  c    Auteurs : P. Le Van , Fr. Hourdin  .  
11  c   ..........      ! Calcule la masse d'air dans chaque maille.
12  c      ! Auteurs : P. Le Van , F. Hourdin.
13  c  ..    p                      est  un argum. d'entree pour le s-pg ...  
14  c  ..  masse                    est un  argum.de sortie pour le s-pg ...      ! Méthode pour calculer massebx et masseby. A chaque point
15  c          ! scalaire P(i, j) sont affectés quatre coefficients d'aires.
16  c  ....  p est defini aux interfaces des llm couches   .....  
17  c      ! alpha1(i, j) calculé au point (i + 1/4, j - 1/4)
18        use dimens_m      ! alpha2(i, j) calculé au point (i + 1/4, j + 1/4)
19        use paramet_m      ! alpha3(i, j) calculé au point (i - 1/4, j + 1/4)
20        use comconst      ! alpha4(i, j) calculé au point (i - 1/4, j - 1/4)
21        use comgeom, only: airesurg  
22        IMPLICIT NONE      ! Avec alpha1(i, j) = aire(i + 1/4, j - 1/4)/ aire(i, j)
23  c  
24  c      ! Pour plus de détails, voir sous-programme "iniconst" et
25  c  .....   arguments  ....      ! "massdair.txt".
26  c  
27        REAL,intent(in):: p(ip1jmp1,llmp1)      USE comgeom, ONLY: airesurg
28        real masse(ip1jmp1,llm)      USE dimens_m, ONLY: iim, llm
29        USE paramet_m, ONLY: iip1, ip1jmp1, llmp1
30  c   ....  Variables locales  .....  
31        REAL, intent(in):: p(ip1jmp1, llmp1) ! aux interfaces des llm couches
32        INTEGER l,ij      real, intent(out):: masse(ip1jmp1, llm)
33        REAL massemoyn, massemoys  
34        ! Variables locales
35        REAL SSUM      INTEGER l, ij
36  c  
37  c      !----------------------------------------------------------
38  c   Methode pour calculer massebx et masseby .  
39  c   ----------------------------------------      DO l = 1 , llm
40  c         masse(:, l) = airesurg(:) * (p(:, l) - p(:, l + 1))
41  c    A chaque point scalaire P (i,j) est affecte 4 coefficients d'aires  
42  c       alpha1(i,j)  calcule  au point ( i+1/4,j-1/4 )         DO ij = 1, ip1jmp1, iip1
43  c       alpha2(i,j)  calcule  au point ( i+1/4,j+1/4 )            masse(ij + iim, l) = masse(ij, l)
44  c       alpha3(i,j)  calcule  au point ( i-1/4,j+1/4 )         ENDDO
45  c       alpha4(i,j)  calcule  au point ( i-1/4,j-1/4 )      end DO
46  c  
47  c    Avec  alpha1(i,j) = aire(i+1/4,j-1/4)/ aire(i,j)            END SUBROUTINE massdair
48  c  
49  c    N.B .  Pour plus de details, voir s-pg  ...  iniconst ...  end module massdair_m
 c  
 c  
 c  
 c   alpha4 .         . alpha1    . alpha4  
 c    (i,j)             (i,j)       (i+1,j)  
 c  
 c             P .        U .          . P  
 c           (i,j)       (i,j)         (i+1,j)  
 c  
 c   alpha3 .         . alpha2    .alpha3  
 c    (i,j)              (i,j)     (i+1,j)  
 c  
 c             V .        Z .          . V  
 c           (i,j)  
 c  
 c   alpha4 .         . alpha1    .alpha4  
 c   (i,j+1)            (i,j+1)   (i+1,j+1)  
 c  
 c             P .        U .          . P  
 c          (i,j+1)                    (i+1,j+1)  
 c  
 c  
 c  
 c                       On  a :  
 c  
 c    massebx(i,j) = masse(i  ,j) * ( alpha1(i  ,j) + alpha2(i,j))   +  
 c                   masse(i+1,j) * ( alpha3(i+1,j) + alpha4(i+1,j) )  
 c     localise  au point  ... U (i,j) ...  
 c  
 c    masseby(i,j) = masse(i,j  ) * ( alpha2(i,j  ) + alpha3(i,j  )  +  
 c                   masse(i,j+1) * ( alpha1(i,j+1) + alpha4(i,j+1)    
 c     localise  au point  ... V (i,j) ...  
 c  
 c  
 c=======================================================================  
   
 CC      print *, "Call sequence information: massdair"  
       DO   100    l = 1 , llm  
 c  
         DO    ij     = 1, ip1jmp1  
          masse(ij,l) = airesurg(ij) * ( p(ij,l) - p(ij,l+1) )  
         ENDDO  
 c  
         DO   ij = 1, ip1jmp1,iip1  
          masse(ij+ iim,l) = masse(ij,l)  
         ENDDO  
 100   CONTINUE  
 c  
       RETURN  
       END  

Legend:
Removed from v.3  
changed lines
  Added in v.67

  ViewVC Help
Powered by ViewVC 1.1.21