/[lmdze]/trunk/filtrez/filtreg_v.f
ViewVC logotype

Annotation of /trunk/filtrez/filtreg_v.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 137 - (hide annotations)
Wed May 6 15:51:03 2015 UTC (9 years ago) by guez
Original Path: trunk/Sources/filtrez/filtreg_v.f
File size: 1309 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 guez 137 module filtreg_v_m
2    
3     IMPLICIT NONE
4    
5     contains
6    
7     SUBROUTINE filtreg_v(champ, intensive)
8    
9     ! From filtrez/filtreg.F, version 1.1.1.1, 2004/05/19 12:53:09
10     ! Author: P. Le Van
11    
12     ! Filtre matriciel longitudinal, avec les matrices
13     ! pr\'ecalcul\'ees pour l'op\'erateur filtre. On v grid, direct
14     ! only.
15    
16     USE coefils, ONLY: sddu, unsddu
17     USE dimens_m, ONLY: iim, jjm
18     use filtreg_hemisph_m, only: filtreg_hemisph
19     use inifilr_m, only: jfiltnv, jfiltsv, matricevn, matricevs
20     use nr_util, only: assert
21    
22     REAL, intent(inout):: champ(:, :, :) ! (iim + 1, jjm, :)
23     ! en entr\'ee : champ \`a filtrer, en sortie : champ filtr\'e
24    
25     logical, intent(in):: intensive
26     ! champ intensif ou extensif (pond\'er\'e par les aires)
27    
28     ! Local:
29     REAL sdd1(iim), sdd2(iim)
30    
31     !-----------------------------------------------------------
32    
33     call assert(size(champ, 1) == iim + 1, "filtreg_v iim + 1")
34     call assert(size(champ, 2) == jjm, "filtreg_v jjm")
35    
36     IF (intensive) THEN
37     sdd1 = sddu
38     sdd2 = unsddu
39     ELSE
40     sdd1 = unsddu
41     sdd2 = sddu
42     END IF
43    
44     call filtreg_hemisph(champ(:, :jfiltnv, :), sdd1, sdd2, matricevn)
45     call filtreg_hemisph(champ(:, jfiltsv:jjm, :), sdd1, sdd2, matricevs)
46    
47     END SUBROUTINE filtreg_v
48    
49     end module filtreg_v_m

  ViewVC Help
Powered by ViewVC 1.1.21