/[lmdze]/trunk/Sources/dyn3d/tourpot.f
ViewVC logotype

Contents of /trunk/Sources/dyn3d/tourpot.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 137 - (show annotations)
Wed May 6 15:51:03 2015 UTC (9 years ago) by guez
File size: 1350 byte(s)
Removed unused argument missval in ma_fucoll_r[1-3]1, ma_fufill_r[1-3]1.

Split filtreg into two procedures: filtreg_scal and filtreg_v. I did
not like the test on the extent of the argument and there was no
common code between the two cases: jjm and jjm + 1. Also, it is
simpler now to just remove the argument "direct" from filtreg_v instead
of allowing it and then stopping the program if it is false.

Removed the computation of pkf in reanalyse2nat, was not used.

As a consequence of the split of filtreg, had to extract the
computation of pkf out of exner_hyb. This is clearer anyway because we
want to be able to call exner_hyb with any size in the first two
dimensions (as in test_disvert). But at the same time exner_hyb
required particular sizes for the computation of pkf. It was
awkward. The only computation of pkf is now in leapfrog.

1 module tourpot_m
2
3 IMPLICIT NONE
4
5 contains
6
7 SUBROUTINE tourpot(vcov, ucov, massebxy, vorpot)
8
9 ! From LMDZ4/libf/dyn3d/tourpot.F, version 1.1.1.1, 2004/05/19 12:53:06
10
11 ! Author: P. Le Van
12 ! Objet : calcul du tourbillon potentiel
13
14 USE comgeom, ONLY: fext_2d
15 USE dimens_m, ONLY: iim, jjm, llm
16 use filtreg_v_m, only: filtreg_v
17
18 REAL, intent(in):: vcov(:, :, :) ! (iim + 1, jjm, llm)
19 REAL, intent(in):: ucov(:, :, :) ! (iim + 1, jjm + 1, llm)
20 REAL, intent(in):: massebxy(:, :, :) ! (iim + 1, jjm, llm) mass of grid cell
21
22 real, intent(out):: vorpot(:, :, :) ! (iim + 1, jjm, llm)
23 ! = (Filtre(d(vcov)/dx - d(ucov)/dy) + fext) / massebxy
24
25 ! Local:
26
27 REAL rot(iim + 1, jjm, llm)
28 ! relative vorticity multiplied by cell area, in m2 s-1
29
30 INTEGER l, i, j
31
32 !---------------------------------------------------------------
33
34 ! Calcul du rotationnel du vent puis filtrage
35
36 forall (i = 1: iim, j = 1: jjm) rot(i, j, :) &
37 = vcov(i + 1, j, :) - vcov(i, j, :) + ucov(i, j + 1, :) - ucov(i, j, :)
38 rot(iim + 1, :, :) = rot(1, :, :)
39
40 CALL filtreg_v(rot, intensive = .true.)
41
42 forall (l = 1: llm) vorpot(:iim, :, l) &
43 = (rot(:iim, :, l) + fext_2d(:iim, :)) / massebxy(:iim, :, l)
44 vorpot(iim + 1, :, :)= vorpot(1, :, :)
45
46 END SUBROUTINE tourpot
47
48 end module tourpot_m

  ViewVC Help
Powered by ViewVC 1.1.21