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

Annotation of /trunk/dyn3d/Guide/tau2alpha.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 254 - (hide annotations)
Mon Feb 5 10:39:38 2018 UTC (6 years, 4 months ago) by guez
File size: 1588 byte(s)
Move Sources/* to root directory.
1 guez 37 module tau2alpha_m
2    
3 guez 103 IMPLICIT NONE
4 guez 37
5     contains
6    
7 guez 211 SUBROUTINE tau2alpha(lat_min_guide, lat_max_guide, factt, dxdy, rlat, &
8     taumin, taumax, alpha)
9 guez 37
10 guez 115 use init_tau2alpha_m, only: dxdy_min, dxdy_max, gamma
11 guez 178 USE nr_util, ONLY: assert_eq
12 guez 37
13 guez 211 ! 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 guez 115 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 guez 103
25     ! Local:
26 guez 210 REAL a_min, a_max, xi
27 guez 115 INTEGER i, j, n_lon, n_lat
28 guez 37
29 guez 44 !------------------------------------------------------------
30    
31 guez 115 PRINT *, 'Call sequence information: tau2alpha'
32 guez 109
33 guez 115 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 guez 109
37 guez 210 a_min = factt / taumax
38     a_max = factt / taumin
39 guez 113
40 guez 115 DO j = 1, n_lat
41 guez 140 IF (lat_min_guide <= rlat(j) .AND. rlat(j) <= lat_max_guide) THEN
42 guez 115 DO i = 1, n_lon
43     xi = min(((dxdy_max - dxdy(i, j)) &
44     / (dxdy_max - dxdy_min))**gamma, 1.)
45 guez 210 alpha(i, j) = 1. - exp(- xi * a_min - (1. - xi) * a_max)
46 guez 37 END DO
47     ELSE
48 guez 115 alpha(:, j) = 0.
49 guez 37 END IF
50     END DO
51    
52     END SUBROUTINE tau2alpha
53    
54     end module tau2alpha_m

  ViewVC Help
Powered by ViewVC 1.1.21