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

Annotation of /trunk/filtrez/filtreg_scal.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 140 - (hide annotations)
Fri Jun 5 18:58:06 2015 UTC (8 years, 11 months ago) by guez
Original Path: trunk/Sources/filtrez/filtreg_scal.f
File size: 1621 byte(s)
Changed unit of variables lat_min_guide and lat_max_guide from module
conf_guide_m from degrees to rad. Then we do not have to convert the
whole array rlat from rad to degrees in SUBROUTINE tau2alpha.

Removed some useless computations in inigeom.

Removed module coefils. Moved variables sddv, unsddv, sddu, unsddu,
eignfnu, eignfnv of module coefils to module inifgn_m. Downgraded
variables coefilu, coefilu2, coefilv, coefilv2, modfrstu, modfrstv of
module coefils to local variables of SUBROUTINE inifilr.

Write and read a 3-dimensional variable Tsoil in restartphy.nc and
startphy.nc instead of multiple variables for the different
subs-urfaces and soil layers. This does not allow any longer to
provide only the surface value in startphy.nc and spread it to other
layers. Instead, if necessary, pre-process the file startphy.nc to
spread the surface value.

1 guez 137 module filtreg_scal_m
2 guez 3
3 guez 27 IMPLICIT NONE
4 guez 3
5 guez 27 contains
6 guez 3
7 guez 137 SUBROUTINE filtreg_scal(champ, direct, intensive)
8 guez 3
9 guez 27 ! From filtrez/filtreg.F, version 1.1.1.1, 2004/05/19 12:53:09
10     ! Author: P. Le Van
11 guez 133 ! Objet : filtre matriciel longitudinal, avec les matrices pr\'ecalcul\'ees
12     ! pour l'op\'erateur filtre.
13 guez 3
14 guez 64 USE dimens_m, ONLY: iim, jjm
15 guez 136 use filtreg_hemisph_m, only: filtreg_hemisph
16 guez 140 USE inifgn_m, ONLY: sddv, unsddv
17 guez 137 use inifilr_m, only: jfiltnu, jfiltsu, matriceun, matriceus, matrinvn, &
18     matrinvs
19 guez 107 use nr_util, only: assert
20 guez 3
21 guez 137 REAL, intent(inout):: champ(:, :, :) ! (iim + 1, jjm + 1, :)
22 guez 133 ! en entr\'ee : champ \`a filtrer, en sortie : champ filtr\'e
23 guez 3
24 guez 107 logical, intent(in):: direct ! filtre direct ou inverse
25 guez 3
26 guez 107 logical, intent(in):: intensive
27 guez 133 ! champ intensif ou extensif (pond\'er\'e par les aires)
28 guez 3
29 guez 107 ! Local:
30 guez 136 REAL sdd1(iim), sdd2(iim)
31 guez 25
32 guez 27 !-----------------------------------------------------------
33 guez 25
34 guez 137 call assert(size(champ, 1) == iim + 1, "filtreg_scal iim + 1")
35     call assert(size(champ, 2) == jjm + 1, "filtreg_scal jjm + 1")
36 guez 25
37 guez 137 IF (intensive) THEN
38     sdd1 = sddv
39     sdd2 = unsddv
40     ELSE
41     sdd1 = unsddv
42     sdd2 = sddv
43     END IF
44    
45     if (direct) then
46     call filtreg_hemisph(champ(:, 2:jfiltnu, :), sdd1, sdd2, matriceun)
47     call filtreg_hemisph(champ(:, jfiltsu:jjm, :), sdd1, sdd2, matriceus)
48 guez 136 else
49 guez 137 call filtreg_hemisph(champ(:, 2:jfiltnu, :), sdd1, sdd2, - matrinvn)
50     call filtreg_hemisph(champ(:, jfiltsu:jjm, :), sdd1, sdd2, - matrinvs)
51 guez 136 end if
52 guez 25
53 guez 137 END SUBROUTINE filtreg_scal
54 guez 27
55 guez 137 end module filtreg_scal_m

  ViewVC Help
Powered by ViewVC 1.1.21