/[lmdze]/trunk/Sources/dyn3d/Guide/tau2alpha.f
ViewVC logotype

Contents of /trunk/Sources/dyn3d/Guide/tau2alpha.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 211 - (show annotations)
Tue Dec 13 17:23:09 2016 UTC (7 years, 6 months ago) by guez
File size: 1588 byte(s)
Removed option online = f in conf_guide (following LMDZ).

Moved computation of alpha_[uvtq] from guide to conf_guide. The aim
(for clarity) is to remove from guide things which should only be done
once. Had then to move computation of dxdyu, dxdyv from init_tau2alpha
to conf_guide to avoid circular dependency (use of guide_u, guide_v in
init_tau2alpha).

1 module tau2alpha_m
2
3 IMPLICIT NONE
4
5 contains
6
7 SUBROUTINE tau2alpha(lat_min_guide, lat_max_guide, factt, dxdy, rlat, &
8 taumin, taumax, alpha)
9
10 use init_tau2alpha_m, only: dxdy_min, dxdy_max, gamma
11 USE nr_util, ONLY: assert_eq
12
13 ! Dans le cas où on n'a les analyses que sur une bande de latitudes :
14 REAL, intent(in):: lat_min_guide ! minimum latitude for nudging, in rad
15 real, intent(in):: lat_max_guide ! maximum latitude for nudging, in rad
16
17 REAL, intent(in):: factt
18 ! pas de temps entre deux appels au guidage, en jours
19
20 REAL, intent(in):: dxdy(:, :) ! (n_lon, n_lat)
21 REAL, intent(in):: rlat(:) ! (n_lat)
22 REAL, intent(in):: taumin, taumax
23 real, intent(out):: alpha(:, :) ! (n_lon, n_lat)
24
25 ! Local:
26 REAL a_min, a_max, xi
27 INTEGER i, j, n_lon, n_lat
28
29 !------------------------------------------------------------
30
31 PRINT *, 'Call sequence information: tau2alpha'
32
33 n_lon = assert_eq(size(alpha, 1), size(dxdy, 1), "tau2alpha n_lon")
34 n_lat = assert_eq(size(alpha, 2), size(dxdy, 2), size(rlat), &
35 "tau2alpha n_lat")
36
37 a_min = factt / taumax
38 a_max = factt / taumin
39
40 DO j = 1, n_lat
41 IF (lat_min_guide <= rlat(j) .AND. rlat(j) <= lat_max_guide) THEN
42 DO i = 1, n_lon
43 xi = min(((dxdy_max - dxdy(i, j)) &
44 / (dxdy_max - dxdy_min))**gamma, 1.)
45 alpha(i, j) = 1. - exp(- xi * a_min - (1. - xi) * a_max)
46 END DO
47 ELSE
48 alpha(:, j) = 0.
49 END IF
50 END DO
51
52 END SUBROUTINE tau2alpha
53
54 end module tau2alpha_m

  ViewVC Help
Powered by ViewVC 1.1.21