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

Annotation of /trunk/dyn3d/divergf.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 82 - (hide annotations)
Wed Mar 5 14:57:53 2014 UTC (10 years, 2 months ago) by guez
File size: 1743 byte(s)
Changed all ".f90" suffixes to ".f".
1 guez 57 module divergf_m
2 guez 3
3 guez 57 IMPLICIT NONE
4 guez 3
5 guez 57 contains
6    
7     SUBROUTINE divergf(klevel, x, y, div)
8    
9 guez 61 ! From libf/dyn3d/divergf.F, version 1.1.1.1 2004/05/19 12:53:05
10 guez 57
11     ! P. Le Van
12     ! Calcule la divergence à tous les niveaux d'un vecteur de
13     ! composantes x et y. x et y sont des composantes covariantes.
14    
15 guez 65 USE comgeom, ONLY: apoln, apols, cuvsurcv, cvusurcu, unsaire
16 guez 57 USE dimens_m, ONLY: iim
17 guez 65 USE filtreg_m, ONLY: filtreg
18 guez 57 USE paramet_m, ONLY: iip1, iip2, ip1jm, ip1jmi1, ip1jmp1, jjp1
19    
20     INTEGER, intent(in):: klevel
21     REAL, intent(in):: x(ip1jmp1, klevel), y(ip1jm, klevel)
22 guez 60 real, intent(out):: div(ip1jmp1, klevel) ! in (unit of x, y) m-2
23 guez 57
24 guez 60 ! Variables locales :
25 guez 57
26     INTEGER l, ij
27 guez 60 REAL aiy1(iim) , aiy2(iim)
28 guez 57 REAL sumypn, sumyps
29    
30     !------------------------------------------------------------
31    
32     DO l = 1, klevel
33     DO ij = iip2, ip1jm - 1
34     div(ij + 1, l) = cvusurcu(ij+1) * x(ij+1, l) &
35     - cvusurcu(ij) * x(ij , l) + cuvsurcv(ij-iim) * y(ij-iim, l) &
36     - cuvsurcv(ij+1) * y(ij+1, l)
37     ENDDO
38    
39     DO ij = iip2, ip1jm, iip1
40     div(ij, l) = div(ij + iim, l)
41     ENDDO
42    
43     ! Calcul aux pôles
44    
45     DO ij = 1, iim
46     aiy1(ij) = cuvsurcv(ij) * y(ij , l)
47     aiy2(ij) = cuvsurcv(ij+ ip1jmi1) * y(ij+ ip1jmi1, l)
48     ENDDO
49 guez 60 sumypn = SUM(aiy1) / apoln
50     sumyps = SUM(aiy2) / apols
51 guez 57
52     DO ij = 1, iip1
53     div(ij , l) = - sumypn
54     div(ij + ip1jm, l) = sumyps
55     ENDDO
56     end DO
57    
58 guez 64 CALL filtreg(div, jjp1, klevel, 2, 2, .TRUE.)
59 guez 57
60     DO l = 1, klevel
61     DO ij = iip2, ip1jm
62     div(ij, l) = div(ij, l) * unsaire(ij)
63     ENDDO
64     ENDDO
65    
66     END SUBROUTINE divergf
67    
68     end module divergf_m

  ViewVC Help
Powered by ViewVC 1.1.21