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

Annotation of /trunk/dyn3d/divergf.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3 - (hide annotations)
Wed Feb 27 13:16:39 2008 UTC (16 years, 3 months ago) by guez
Original Path: trunk/libf/dyn3d/divergf.f
File size: 2439 byte(s)
Initial import
1 guez 3 !
2     ! $Header: /home/cvsroot/LMDZ4/libf/dyn3d/divergf.F,v 1.1.1.1 2004/05/19 12:53:05 lmdzadmin Exp $
3     !
4     SUBROUTINE divergf(klevel,x,y,div)
5     c
6     c P. Le Van
7     c
8     c *********************************************************************
9     c ... calcule la divergence a tous les niveaux d'1 vecteur de compos.
10     c x et y...
11     c x et y etant des composantes covariantes ...
12     c *********************************************************************
13     use dimens_m
14     use paramet_m
15     use comgeom
16     IMPLICIT NONE
17     c
18     c x et y sont des arguments d'entree pour le s-prog
19     c div est un argument de sortie pour le s-prog
20     c
21     c
22     c ---------------------------------------------------------------------
23     c
24     c ATTENTION : pendant ce s-pg , ne pas toucher au COMMON/scratch/ .
25     c
26     c ---------------------------------------------------------------------
27     c
28     c .......... variables en arguments ...................
29     c
30     INTEGER klevel
31     REAL x( ip1jmp1,klevel ),y( ip1jm,klevel ),div( ip1jmp1,klevel )
32     INTEGER l,ij
33     c
34     c ............... variables locales .........................
35    
36     REAL aiy1( iip1 ) , aiy2( iip1 )
37     REAL sumypn,sumyps
38     c ...................................................................
39     c
40     REAL SSUM
41     c
42     c
43     DO 10 l = 1,klevel
44     c
45     DO ij = iip2, ip1jm - 1
46     div( ij + 1, l ) =
47     * cvusurcu( ij+1 ) * x( ij+1,l ) - cvusurcu( ij ) * x( ij , l) +
48     * cuvsurcv(ij-iim) * y(ij-iim,l) - cuvsurcv(ij+1) * y(ij+1,l)
49     ENDDO
50     c
51     c .... correction pour div( 1,j,l) ......
52     c .... div(1,j,l)= div(iip1,j,l) ....
53     c
54     CDIR$ IVDEP
55     DO ij = iip2,ip1jm,iip1
56     div( ij,l ) = div( ij + iim,l )
57     ENDDO
58     c
59     c .... calcul aux poles .....
60     c
61     DO ij = 1,iim
62     aiy1(ij) = cuvsurcv( ij ) * y( ij , l )
63     aiy2(ij) = cuvsurcv( ij+ ip1jmi1 ) * y( ij+ ip1jmi1, l )
64     ENDDO
65     sumypn = SSUM ( iim,aiy1,1 ) / apoln
66     sumyps = SSUM ( iim,aiy2,1 ) / apols
67     c
68     DO ij = 1,iip1
69     div( ij , l ) = - sumypn
70     div( ij + ip1jm, l ) = sumyps
71     ENDDO
72     10 CONTINUE
73     c
74    
75     CALL filtreg( div, jjp1, klevel, 2, 2, .TRUE., 1 )
76    
77     c
78     DO l = 1, klevel
79     DO ij = iip2,ip1jm
80     div(ij,l) = div(ij,l) * unsaire(ij)
81     ENDDO
82     ENDDO
83     c
84     RETURN
85     END

  ViewVC Help
Powered by ViewVC 1.1.21