LMDZ
divergf.F
Go to the documentation of this file.
1 !
2 ! $Header$
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  IMPLICIT NONE
14 c
15 c x et y sont des arguments d'entree pour le s-prog
16 c div est un argument de sortie pour le s-prog
17 c
18 c
19 c ---------------------------------------------------------------------
20 c
21 c ATTENTION : pendant ce s-pg , ne pas toucher au COMMON/scratch/ .
22 c
23 c ---------------------------------------------------------------------
24 #include "dimensions.h"
25 #include "paramet.h"
26 #include "comgeom.h"
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
!$Header llmm1 INTEGER ip1jmi1
Definition: paramet.h:14
!$Header iip2
Definition: paramet.h:14
!$Header llmm1 INTEGER ip1jmp1
Definition: paramet.h:14
!$Header!CDK comgeom COMMON comgeom apols
Definition: comgeom.h:8
subroutine divergf(klevel, x, y, div)
Definition: divergf.F:5
!$Header llmm1 INTEGER ip1jm
Definition: paramet.h:14
!$Header!CDK comgeom COMMON comgeom apoln
Definition: comgeom.h:8
!$Header jjp1
Definition: paramet.h:14
!$Header!CDK comgeom COMMON comgeom unsapolnga2 cuvsurcv
Definition: comgeom.h:25
!$Header!CDK comgeom COMMON comgeom unsapolnga2 cvusurcu
Definition: comgeom.h:25
!$Id itapm1 ENDIF!IM on interpole les champs sur les niveaux STD de pression!IM a chaque pas de temps de la physique c!positionnement de l argument logique a false c!pour ne pas recalculer deux fois la meme chose!c!a cet effet un appel a plevel_new a ete deplace c!a la fin de la serie d appels c!la boucle DO nlevSTD a ete internalisee c!dans d ou la creation de cette routine c c!CALL ulevSTD CALL &zphi philevSTD CALL &zx_rh rhlevSTD!DO klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon klev DO klon du jour ou toutes les read_climoz CALL true
c c zjulian c cym CALL iim cym klev iim
Definition: ini_bilKP_ave.h:24
subroutine filtreg(champ, nlat, nbniv, ifiltre, iaire, griscal, iter)
Definition: filtreg.F:6
!$Header!CDK comgeom COMMON comgeom unsaire
Definition: comgeom.h:25