/[lmdze]/trunk/dyn3d/diverg_gam.f90
ViewVC logotype

Contents of /trunk/dyn3d/diverg_gam.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 336 - (show annotations)
Thu Sep 12 21:34:37 2019 UTC (4 years, 8 months ago) by guez
File size: 2096 byte(s)
Replace ssum by sum in procedure diverg_gam
1 module diverg_gam_m
2
3 IMPLICIT NONE
4
5 contains
6
7 SUBROUTINE diverg_gam(klevel, cuvscvgam, cvuscugam, unsairegam, unsapolnga, &
8 unsapolsga, x, y, div)
9
10 ! From LMDZ4/libf/dyn3d/diverg_gam.F, version 1.1.1.1 2004/05/19
11 ! 12:53:05
12
13 ! Author: P. Le Van
14
15 ! Calcule la divergence \`a tous les niveaux d'un vecteur de
16 ! composantes covariantes x et y.
17
18 USE dimensions, only: iim
19 USE paramet_m, only: ip1jmp1, ip1jm, iip1, iip2, ip1jmi1
20
21 ! div est un argument de sortie pour le s-prog
22
23 ! ATTENTION : pendant ce s-pg , ne pas toucher au COMMON/scratch/ .
24
25 ! ---------------------------------------------------------------------
26
27 ! .......... variables en arguments ...................
28
29 INTEGER, INTENT (IN) :: klevel
30 REAL cuvscvgam(ip1jm), cvuscugam(ip1jmp1), unsairegam(ip1jmp1)
31 REAL unsapolnga, unsapolsga
32 REAL, intent(in):: x(ip1jmp1, klevel), y(ip1jm, klevel)
33 real div(ip1jmp1, klevel)
34
35 ! ............... variables locales .........................
36
37 REAL aiy1(iip1), aiy2(iip1)
38 REAL sumypn, sumyps
39 INTEGER l, ij
40
41 ! ...................................................................
42
43 DO l = 1, klevel
44
45 DO ij = iip2, ip1jm - 1
46 div(ij+1, l) = (cvuscugam(ij+1)*x(ij+1,l)-cvuscugam(ij)*x(ij,l)+ &
47 cuvscvgam(ij-iim)*y(ij-iim,l)-cuvscvgam(ij+1)*y(ij+1,l))* &
48 unsairegam(ij+1)
49 END DO
50
51 ! .... correction pour div( 1,j,l) ......
52 ! .... div(1,j,l)= div(iip1,j,l) ....
53
54 ! DIR$ IVDEP
55 DO ij = iip2, ip1jm, iip1
56 div(ij, l) = div(ij+iim, l)
57 END DO
58
59 ! .... calcul aux poles .....
60
61 DO ij = 1, iim
62 aiy1(ij) = cuvscvgam(ij)*y(ij, l)
63 aiy2(ij) = cuvscvgam(ij+ip1jmi1)*y(ij+ip1jmi1, l)
64 END DO
65 sumypn = sum(aiy1(:iim)) * unsapolnga
66 sumyps = sum(aiy2(:iim)) * unsapolsga
67
68 DO ij = 1, iip1
69 div(ij, l) = -sumypn
70 div(ij+ip1jm, l) = sumyps
71 END DO
72 END DO
73
74 END SUBROUTINE diverg_gam
75
76 end module diverg_gam_m

  ViewVC Help
Powered by ViewVC 1.1.21