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

Contents of /trunk/dyn3d/fxy.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 57 - (show annotations)
Mon Jan 30 12:54:02 2012 UTC (12 years, 3 months ago) by guez
Original Path: trunk/libf/dyn3d/fxy.f90
File size: 3773 byte(s)
Write used namelists to file "" instead of standard output.

Avoid aliasing in "inidissip" in calls to "divgrad2", "divgrad",
"gradiv2", "gradiv", "nxgraro2" and "nxgrarot". Add a degenerate
dimension to arrays so they have rank 3, like the dummy arguments in
"divgrad2", "divgrad", "gradiv2", "gradiv", "nxgraro2" and "nxgrarot".

Extract the initialization part from "bilan_dyn" and make a separate
procedure, "init_dynzon", from it.

Move variables from modules "iniprint" and "logic" to module
"conf_gcm_m".

Promote internal procedures of "fxy" to private procedures of module
"fxy_m".

Extracted documentation from "inigeom". Removed useless "save"
attributes. Removed useless intermediate variables. Extracted
processing of poles from loop on latitudes. Write coordinates to file
"longitude_latitude.txt" instead of standard output.

Do not use ozone tracer for radiative transfer.

1 module fxy_m
2
3 IMPLICIT NONE
4
5 private
6 public fxy
7
8 contains
9
10 SUBROUTINE fxy(rlatu, yprimu, rlatv, yprimv, rlatu1, yprimu1, rlatu2, &
11 yprimu2, rlonu, xprimu, rlonv, xprimv, rlonm025, xprimm025, rlonp025, &
12 xprimp025)
13
14 ! From dyn3d/fxy.F, v 1.1.1.1 2004/05/19 12:53:06
15 ! Auteur : P. Le Van
16 ! Calcul des longitudes et des latitudes pour une fonction f(x, y)
17 ! à tangente sinusoïdale et éventuellement avec zoom.
18
19 USE dimens_m, ONLY : iim, jjm
20
21 REAL, INTENT (OUT) :: rlatu(jjm + 1), yprimu(jjm + 1), rlatv(jjm)
22 REAL, INTENT (OUT) :: yprimv(jjm)
23 REAL, INTENT (OUT) :: rlatu1(jjm)
24 REAL, INTENT (OUT) :: yprimu1(jjm), rlatu2(jjm), yprimu2(jjm)
25 REAL, INTENT (OUT) :: rlonu(iim + 1), xprimu(iim + 1), rlonv(iim + 1)
26 REAL, INTENT (OUT) :: xprimv(iim + 1)
27 REAL, INTENT (OUT) :: rlonm025(iim + 1), xprimm025(iim + 1)
28 REAL, INTENT (OUT) :: rlonp025(iim + 1)
29 REAL, INTENT (OUT) :: xprimp025(iim + 1)
30
31 ! Variables local to the procedure:
32
33 INTEGER i, j
34
35 !------------------------------------------------------------
36
37 ! Calcul des latitudes et de y'
38
39 DO j = 1, jjm + 1
40 rlatu(j) = fy(real(j))
41 yprimu(j) = fyprim(real(j))
42 END DO
43
44 DO j = 1, jjm
45 rlatv(j) = fy(real(j) + 0.5)
46 rlatu1(j) = fy(real(j) + 0.25)
47 rlatu2(j) = fy(real(j) + 0.75)
48
49 yprimv(j) = fyprim(real(j) + 0.5)
50 yprimu1(j) = fyprim(real(j) + 0.25)
51 yprimu2(j) = fyprim(real(j) + 0.75)
52 END DO
53
54 ! Calcul des longitudes et de x'
55
56 DO i = 1, iim + 1
57 rlonv(i) = fx(real(i))
58 rlonu(i) = fx(real(i) + 0.5)
59 rlonm025(i) = fx(real(i) - 0.25)
60 rlonp025(i) = fx(real(i) + 0.25)
61
62 xprimv(i) = fxprim(real(i))
63 xprimu(i) = fxprim(real(i) + 0.5)
64 xprimm025(i) = fxprim(real(i) - 0.25)
65 xprimp025(i) = fxprim(real(i) + 0.25)
66 END DO
67
68 END SUBROUTINE fxy
69
70 !******************************************************
71
72 ! From grid/fxy_new.h, v 1.1.1.1 2004/05/19 12:53:05
73
74 REAL FUNCTION ripx(ri)
75
76 ! stretching in x
77
78 USE nr_util, ONLY : pi
79 USE dimens_m, ONLY : iim
80
81 REAL, INTENT (IN) :: ri
82
83 ripx = (ri - 1.) * 2 * pi / REAL(iim)
84
85 end function ripx
86
87 !******************************************************
88
89 REAL FUNCTION fx(ri)
90 ! stretching in x
91 USE nr_util, ONLY : pi
92 USE serre, ONLY : alphax, pxo, transx
93 REAL, INTENT (IN) :: ri
94
95 fx = ripx(ri) + transx + alphax * SIN(ripx(ri) + transx - pxo) - pi
96 end function fx
97
98 !******************************************************
99
100 REAL FUNCTION fxprim(ri)
101
102 ! stretching in x
103
104 USE nr_util, ONLY : pi
105 USE serre, ONLY : alphax, pxo, transx
106 USE dimens_m, ONLY : iim
107
108 REAL, INTENT (IN) :: ri
109
110 fxprim = 2 * pi / REAL(iim) * (1. + alphax * COS(ripx(ri) + transx - pxo))
111
112 end function fxprim
113
114 !******************************************************
115
116 REAL FUNCTION bigy(rj)
117 ! stretching in y
118 USE nr_util, ONLY : pi
119 USE dimens_m, ONLY : jjm
120 REAL, INTENT (IN) :: rj
121
122 bigy = 2 * (REAL(jjm + 1) - rj) * pi / jjm
123 end function bigy
124
125 !******************************************************
126
127 REAL FUNCTION fy(rj)
128 ! stretching in y
129 USE nr_util, ONLY : pi
130 USE serre, ONLY : alphay, pyo, transy
131 REAL, INTENT (IN) :: rj
132
133 fy = (bigy(rj) + transy + alphay * SIN(bigy(rj) + transy - pyo)) / 2 &
134 - pi / 2
135 end function fy
136
137 !******************************************************
138
139 REAL FUNCTION fyprim(rj)
140
141 ! stretching in y
142
143 USE nr_util, ONLY : pi
144 USE serre, ONLY : alphay, pyo, transy
145 USE dimens_m, ONLY : jjm
146
147 REAL, INTENT (IN) :: rj
148
149 fyprim = (pi / jjm) * (1. + alphay * COS(bigy(rj) + transy - pyo))
150
151 end function fyprim
152
153 end module fxy_m

  ViewVC Help
Powered by ViewVC 1.1.21