source: trunk/SOURCES/massb_perturb_mois_lapsecouche.f90 @ 23

Last change on this file since 23 was 4, checked in by dumas, 10 years ago

initial import GRISLI trunk

File size: 2.8 KB
Line 
1subroutine massb_perturb_mois_lapsecouche              ! calcule le mass balance en mode perturbation
2                                         
3  use climat_perturb_mois_lapsecouche_mod
4  use declare_month_lapsecouche
5
6  implicit none
7
8
9  real zel     ! variable de travail
10  real T_surf_ref
11
12
13   do j=1,ny
14      do i=1,nx
15! Zs est l'altitude de la surface qu'elle soit mer, glace ou lac
16         ZS(i,j)=max(slv(i,j),S(I,J))
17
18         do mo=1,mois
19
20! on utilise un lapserate par tranche d'altitude
21            if(ZS(i,j).gt.3000) then
22               T_surf_ref=Tsol(i,j,mo)+(lapserate(mo,4)*(ZS(i,j)-3000)+lapserate(mo,3)*1000+lapserate(mo,2)*1000+lapserate(mo,1)*1000)
23            end if
24            if((ZS(i,j).le.3000).and.(zel.gt.2000)) then
25               T_surf_ref=Tsol(i,j,mo)+(lapserate(mo,3)*(ZS(i,j)-2000)+lapserate(mo,2)*1000+lapserate(mo,1)*1000)
26            end if
27            if ((ZS(i,j).le.2000).and.(zel.gt.1000)) then
28               T_surf_ref=Tsol(i,j,mo)+(lapserate(mo,2)*(ZS(i,j)-1000)+lapserate(mo,1)*1000)
29            end if
30            if (ZS(i,j).le.1000) then
31               T_surf_ref=Tsol(i,j,mo)+lapserate(mo,1)*ZS(i,j)
32            end if
33           
34            T_surf_ref=T_surf_ref+Tafor  ! on applique la perturbation homogene
35
36            if(retroac.eq.1) then      ! full retroaction acc.
37               Pm_surf(i,j,mo)= Pm_surf(i,j,mo)*exp(rappact*(T_surf_ref-Tm_surf(i,j,mo)))       
38            else if (retroac.eq.0) then
39               Pm_surf(i,j,mo)=Pm_surf(i,j,mo)
40            end if
41            Tm_surf(i,j,mo)=T_surf_ref
42
43
44     end do
45  end do
46end do
47
48
49
50! Pour les modulos
51   Tm_surf(:,:,mois+1)=Tm_surf(:,:,1)
52   Pm_surf(:,:,mois+1)=Pm_surf(:,:,1)
53
54
55   do j=1,ny
56      do i=1,nx
57         Tann(i,j)=(sum(Tm_surf(i,j,:))-Tm_surf(i,j,1))/12   ! janvier compte en double
58         Tjuly(i,j)= Tm_surf(i,j,7)
59      end do
60   end do
61   
62   
63   debug_3D(:,:,59)=Tjuly(:,:)
64
65
66
67call accum_month_lapsecouche()    ! on calcule l'accumulation deduite de ce champ (temp, precipes)
68
69
70
71!     ablation et bilan de masse sont maintenant appeles par forclim
72
73
74
75!--------------------------------------------------------------------------------------
76! etape 3 : calcul tann et tjuly // sortie de debug3D
77
78!!$do j=1,ny
79!!$   do i=1,nx
80!!$      Tann(i,j)=sum(Tm_surf(i,j,:))/12
81!!$      Tjuly(i,j)=(Tm_surf(i,j,6)+Tm_surf(i,j,7)+Tm_surf(i,j,8))/3
82!!$      zel=max(S(i,j),20.*(ylat(i,j)-65.))
83!!$      Tann_par(i,j)=49.13-0.007992*Zel-0.7576*ylat(i,j)
84!!$      Tjuly_par(i,j)= 30.78-0.006277*S(i,j)-0.3262*ylat(i,j)
85!!$   end do
86!!$end do
87
88!!$debug_3D(:,:,29)=Tann(:,:)-Ta0(:,:)
89!!$debug_3D(:,:,30)=Acc(:,:)-precip(:,:)
90!!$debug_3D(:,:,31)=Acc(:,:)-bmelt(:,:)
91!!$debug_3D(:,:,46)=Tann(:,:)-Tann_par(:,:)
92!!$debug_3D(:,:,47)=Tjuly(:,:)-Tjuly_par(:,:)
93!!$debug_3D(:,:,48)=Tm_surf(:,:,7)-Tjuly_par(:,:)
94
95return
96end subroutine massb_perturb_mois_lapsecouche
97
Note: See TracBrowser for help on using the repository browser.