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

Annotation of /trunk/dyn3d/diverg_gam.f90

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.21