/[lmdze]/trunk/dyn3d/grid_change.f
ViewVC logotype

Contents of /trunk/dyn3d/grid_change.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 32 - (show annotations)
Tue Apr 6 17:52:58 2010 UTC (14 years, 1 month ago) by guez
Original Path: trunk/libf/dyn3d/grid_change.f90
File size: 2294 byte(s)
Split "stringop.f90" into single-procedure files. Gathered files in directory
"IOIPSL/Stringop".

Split "flincom.f90" into "flincom.f90" and "flinget.f90". Removed
unused procedures from module "flincom". Removed unused argument
"filename" of procedure "flinopen_nozoom".

Removed unused files.

Split "grid_change.f90" into "grid_change.f90" and
"gr_phy_write_3d.f90".

Removed unused procedures from modules "calendar", "ioipslmpp",
"grid_atob", "gath_cpl" and "getincom". Removed unused procedures in
files "ppm3d.f" and "thermcell.f".

Split "mathelp.f90" into "mathelp.f90" and "mathop.f90".

Removed unused variable "dpres" of module "comvert".

Use argument "itau" instead of local variables "iadvtr" and "first" to
control algorithm in procedure "fluxstokenc".

Removed unused arguments of procedure "integrd".

Removed useless computations at the end of procedure "leapfrog".

Merged common block "matrfil" into module "parafilt".

1 module grid_change
2
3 use dimens_m, only: iim, jjm
4
5 IMPLICIT NONE
6
7 logical, save:: dyn_phy(iim + 1, jjm + 1)
8 ! (mask for distinct points in the scalar grid and the "u" grid,
9 ! first index is for longitude, second index is for latitude)
10
11 private iim, jjm
12
13 contains
14
15 subroutine init_dyn_phy
16
17 ! Construct the mask:
18 dyn_phy = .true.
19 dyn_phy(2:, 1) = .false.
20 dyn_phy(2:, jjm + 1) = .false.
21 dyn_phy(iim + 1, 2:jjm) = .false.
22 ! Note that "count(dyn_phy)" equals "klon"
23
24 end subroutine init_dyn_phy
25
26 !********************************************
27
28 function gr_fi_dyn(pfi)
29
30 ! From gr_fi_dyn.F, version 1.1.1.1 2004/05/19 12:53:05
31 ! Passage d'un champ de la grille physique à la grille dynamique
32
33 use dimphy, only: klon
34
35 REAL, intent(in):: pfi(:)
36 real gr_fi_dyn(iim + 1, jjm + 1)
37
38 ! Variable local to the procedure:
39 real field(iim + 1, jjm + 1)
40
41 !-----------------------------------------------------------------------
42
43 if (size(pfi) /= klon) stop "gr_fi_dyn"
44
45 ! Traitement des pôles :
46 field(2:, 1) = pfi(1)
47 field(2:, jjm + 1) = pfi(klon)
48 ! (We leave undefined elements in "field")
49
50 gr_fi_dyn = unpack(pfi, dyn_phy, field)
51 ! Undefined elements at last longitude in "gr_fi_dyn" come from
52 ! undefined elements in "field".
53 ! Overwrite them now, knowing that last longitude equals first longitude:
54 gr_fi_dyn(iim + 1, 2:jjm) = gr_fi_dyn(1, 2:jjm)
55
56 END function gr_fi_dyn
57
58 !********************************************
59
60 function gr_phy_write_2d(pfi)
61
62 ! From phylmd/physiq.F, version 1.22 2006/02/20 09:38:28
63 ! Transforme une variable de la grille physique à la grille d'écriture.
64 ! The grid for output files does not duplicate the first longitude
65 ! in the last longitude.
66
67 use dimphy, only: klon
68
69 REAL, intent(in):: pfi(:)
70 real gr_phy_write_2d(iim, jjm + 1)
71
72 ! Variable local to the procedure:
73 real field(iim, jjm + 1)
74
75 !-----------------------------------------------------------------------
76
77 if (size(pfi) /= klon) stop "gr_phy_write_2d"
78
79 ! Traitement des pôles :
80 field(2:, 1) = pfi(1)
81 field(2:, jjm + 1) = pfi(klon)
82
83 gr_phy_write_2d = unpack(pfi, dyn_phy(:iim, :), field)
84
85 END function gr_phy_write_2d
86
87 end module grid_change

  ViewVC Help
Powered by ViewVC 1.1.21