Directory: | ./ |
---|---|
File: | phys/albsno.f90 |
Date: | 2022-01-11 19:19:34 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 15 | 17 | 88.2% |
Branches: | 15 | 18 | 83.3% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | ! | ||
2 | ! $Header$ | ||
3 | ! | ||
4 | 1440 | SUBROUTINE albsno(klon, knon, dtime, agesno, alb_neig_grid, precip_snow) | |
5 | |||
6 | IMPLICIT NONE | ||
7 | |||
8 | INCLUDE "clesphys.h" | ||
9 | |||
10 | ! Input arguments | ||
11 | !**************************************************************************************** | ||
12 | INTEGER, INTENT(IN) :: klon, knon | ||
13 | REAL, INTENT(IN) :: dtime | ||
14 | REAL, DIMENSION(klon), INTENT(IN) :: precip_snow | ||
15 | |||
16 | ! In/Output arguments | ||
17 | !**************************************************************************************** | ||
18 | REAL, DIMENSION(klon), INTENT(INOUT) :: agesno | ||
19 | |||
20 | ! Output arguments | ||
21 | !**************************************************************************************** | ||
22 | REAL, DIMENSION(klon), INTENT(OUT) :: alb_neig_grid | ||
23 | |||
24 | ! Local variables | ||
25 | !**************************************************************************************** | ||
26 | INTEGER :: i, nv | ||
27 | INTEGER, PARAMETER :: nvm = 8 | ||
28 | REAL :: as | ||
29 | 2880 | REAL, DIMENSION(klon,nvm) :: veget | |
30 | REAL, DIMENSION(nvm),SAVE :: init, decay | ||
31 | !$OMP THREADPRIVATE(init, decay) | ||
32 | |||
33 | DATA init /0.55, 0.14, 0.18, 0.29, 0.15, 0.15, 0.14, 0./ | ||
34 | DATA decay/0.30, 0.67, 0.63, 0.45, 0.40, 0.14, 0.06, 1./ | ||
35 | !**************************************************************************************** | ||
36 | |||
37 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1440 times.
|
1440 | if (albsno0>=0.) then |
38 | ✗ | init(:)=albsno0 | |
39 | ✗ | decay(:)=0. | |
40 | endif | ||
41 | |||
42 |
4/4✓ Branch 0 taken 11520 times.
✓ Branch 1 taken 1440 times.
✓ Branch 2 taken 11450880 times.
✓ Branch 3 taken 11520 times.
|
11463840 | veget = 0. |
43 |
2/2✓ Branch 0 taken 1431360 times.
✓ Branch 1 taken 1440 times.
|
1432800 | veget(:,1) = 1. ! desert partout |
44 |
2/2✓ Branch 0 taken 425475 times.
✓ Branch 1 taken 1440 times.
|
426915 | DO i = 1, knon |
45 | 426915 | alb_neig_grid(i) = 0.0 | |
46 | ENDDO | ||
47 |
2/2✓ Branch 0 taken 11520 times.
✓ Branch 1 taken 1440 times.
|
12960 | DO nv = 1, nvm |
48 |
2/2✓ Branch 0 taken 3403800 times.
✓ Branch 1 taken 11520 times.
|
3416760 | DO i = 1, knon |
49 | 3403800 | as = init(nv)+decay(nv)*EXP(-agesno(i)/5.) | |
50 | 3415320 | alb_neig_grid(i) = alb_neig_grid(i) + veget(i,nv)*as | |
51 | ENDDO | ||
52 | ENDDO | ||
53 | |||
54 | |||
55 | ! modilation en fonction de l'age de la neige | ||
56 |
2/2✓ Branch 0 taken 425475 times.
✓ Branch 1 taken 1440 times.
|
426915 | DO i = 1, knon |
57 | agesno(i) = (agesno(i) + (1.-agesno(i)/50.)*dtime/86400.)& | ||
58 | 425475 | & * EXP(-1.*MAX(0.0,precip_snow(i))*dtime/0.3) | |
59 | 426915 | agesno(i) = MAX(agesno(i),0.0) | |
60 | ENDDO | ||
61 | |||
62 | 1440 | END SUBROUTINE albsno | |
63 |