/[lmdze]/trunk/libf/dyn3d/Dissipation/gradiv2.f90
ViewVC logotype

Contents of /trunk/libf/dyn3d/Dissipation/gradiv2.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 61 - (show annotations)
Fri Apr 20 14:58:43 2012 UTC (12 years ago) by guez
File size: 1971 byte(s)
No more included file in LMDZE, not even "netcdf.inc".

Created a variable containing the list of common source files in
GNUmakefile. So we now also see clearly files that are specific to
each program.

Split module "histcom". Assembled resulting files in directory
"Histcom".

Removed aliasing in calls to "laplacien".

1 module gradiv2_m
2
3 IMPLICIT NONE
4
5 contains
6
7 SUBROUTINE gradiv2(xcov, ycov, ld, gdx, gdy, cdivu)
8
9 ! From LMDZ4/libf/dyn3d/gradiv2.F, version 1.1.1.1 2004/05/19 12:53:07
10 ! P. Le Van
11 ! Calcul du gradient de la divergence du vecteur v.
12
13 USE dimens_m, ONLY : iim, jjm, llm
14 use divergf_m, only: divergf
15 USE comgeom, ONLY : cuvscvgam1, cvuscugam1, unsair_gam1, unsapolnga1, &
16 unsapolsga1
17 USE filtreg_m, ONLY : filtreg
18 use grad_m, only: grad
19 use nr_util, only: assert_eq, assert
20 use laplacien_m, only: laplacien
21
22 ! Composantes covariantes de v :
23 REAL, intent(in):: xcov(:, :, :) ! (iim + 1, jjm + 1, klevel)
24 REAL, intent(in):: ycov(:, :, :) ! (iim + 1, jjm, klevel)
25
26 integer, intent(in):: ld
27 REAL, intent(out):: gdx(:, :, :) ! (iim + 1, jjm + 1, klevel)
28 REAL, intent(out):: gdy(:, :, :) ! (iim + 1, jjm, klevel)
29 real, intent(in):: cdivu
30
31 ! Variables locales :
32 REAL nugrads, div(iim + 1, jjm + 1, llm)
33 INTEGER iter, klevel
34
35 !--------------------------------------------------------------
36
37 call assert((/size(xcov, 1), size(ycov, 1), size(gdx, 1), size(gdy, 1)/) &
38 == iim + 1, "gradiv2 iim")
39 call assert((/size(xcov, 2) - 1, size(ycov, 2), size(gdx, 2) - 1, &
40 size(gdy, 2)/) == jjm, "gradiv2 iim")
41 klevel = assert_eq(size(xcov, 3), size(ycov, 3), size(gdx, 3), &
42 size(gdy, 3), "gradiv2 klevel")
43
44 CALL divergf(klevel, xcov, ycov, div)
45
46 IF (ld > 1) THEN
47 CALL laplacien(klevel, div)
48
49 ! Itération de l'opérateur laplacien_gam
50 DO iter = 1, ld -2
51 CALL laplacien_gam(klevel, cuvscvgam1, cvuscugam1, unsair_gam1, &
52 unsapolnga1, unsapolsga1, div, div)
53 END DO
54 ENDIF
55
56 CALL filtreg(div, jjm + 1, klevel, 2, 1, .TRUE., 1)
57 CALL grad(klevel, div, gdx, gdy)
58 nugrads = (-1.)**ld * cdivu
59
60 gdx = gdx * nugrads
61 gdy = gdy * nugrads
62
63 END SUBROUTINE gradiv2
64
65 end module gradiv2_m

  ViewVC Help
Powered by ViewVC 1.1.21