source: trunk/SOURCES/Greeneem_files/lect-clim-act-greeneem_mar_mod.f90 @ 4

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

initial import GRISLI trunk

File size: 3.9 KB
Line 
1module lect_clim_act_greeneem_mar
2! c'est pour une version annuelle utilisant les donnees mar.
3
4  use module3D_phy
5  use ablation_ann          ! le module pdd base sur Tann et Tjuly
6
7  real,dimension(nx,ny) :: S0CLIM             ! topo de reference du GCM
8
9contains
10 
11subroutine input_climat_ref()
12
13
14
15! pour les precip et la temp on prend les valeurs mensuelles et on en deduit des Tann/tjuly
16real,dimension(nx,ny,12) :: Tm      ! temperature mensuelle sur la calotte de ref
17real,dimension(nx,ny,12) :: Pm      ! precipitation mensuelle sur la calotte de ref
18
19
20character(len=200) :: filin  !nom temporaire
21character (len=200) :: filtr_topo, filtr_t, filtr_p
22
23real :: ti, tj                     ! variable provisoire de lecture
24
25
26namelist/clim_init_ann/filtr_topo,filtr_t,filtr_p 
27
28
29! formats pour les ecritures dans 42
30428 format(A)
31
32rewind(num_param)        ! pour revenir au debut du fichier param_list.dat
33read(num_param,clim_init_ann)
34
35
36write(num_rep_42,428)'!___________________________________________________________' 
37write(num_rep_42,428) '&clim_perturb_ann                            ! module climat_perturb_mar_mod'
38write(num_rep_42,'(A,A)')   'filtr_topo =', filtr_topo
39write(num_rep_42,'(A,A)')   'filtr_t =', filtr_t
40write(num_rep_42,'(A,A)')   'filtr_p =', filtr_p
41write(num_rep_42,*)'/'                     
42write(num_rep_42,428) '! fichiers temperature et precip : 12 mois'
43write(num_rep_42,428) '! faire un bloc namelist par snapshot'
44write(num_rep_42,*)
45
46
47
48write(6,*) 'fichiers snapshots'
49 
50! lecture de la topo de surface de reference du GCM
51filin=trim(dirnameinp)//trim(filtr_topo)
52write(6,*) filin
53open(20,file=filin)
54do j=1,ny 
55   do i=1,nx
56      read (20,*) S0CLIM(i,j)
57      S0CLIM(i,j)=max(S0CLIM(i,j),slv(i,j))   ! pour etre au niveau des mers
58   end do
59end do
60close(20)
61
62
63! temperature : temperature a l'altitude de la calotte de ref (MAR)
64filin=trim(dirnameinp)//trim(filtr_t)
65write(6,*) filin
66open(20,file=filin)
67do j=1,ny
68   do i=1,nx
69      read(20,*) ti, tj, (Tm(i,j,mo),mo=1,12)
70   end do
71end do
72close(20)
73   
74! precipitation a l'altitude de la calotte de ref (MAR)
75filin=trim(dirnameinp)//trim(filtr_p)
76write(6,*) filin
77open(20,file=filin)
78do j=1,ny
79   do i=1,nx
80      read(20,*) ti, tj, (Pm(i,j,mo),mo=1,12)
81   end do
82end do
83close(20)
84
85do j=1,ny
86   do i=1,nx
87      Tann(i,j)=sum(Tm(i,j,:))/12 
88      Tjuly(i,j)=Tm(i,j,7)
89      !Tjuly(i,j)=(Tm_surf(i,j,6)+Tm_surf(i,j,7)+Tm_surf(i,j,8))/3 ! en fait un Tjja
90      precip(i,j)=sum(Pm(i,j,:))/12 !attention a l'unite des precipes mensuelles (mm/mois ramenee sur l'annee...)
91      if(Tann(i,j).lt.(-10)) then
92         acc(i,j)=precip(i,j)
93      else if(Tann(i,j).lt.(-2)) then
94         acc(i,j)=0.9*precip(i,j)
95      else if(Tann(i,j).lt.2) then
96         acc(i,j)=0.8*precip(i,j)
97      else if(Tann(i,j).lt.(5)) then
98         acc(i,j)=0.6*precip(i,j)
99      else
100         acc(i,j)=0.
101      end if
102   end do
103end do
104
105
106
107
108! temperature a l'altitude du GCM
109TA0(:,:)=Tann(:,:) 
110TJ0(:,:)=Tjuly(:,:)
111
112call Tsgreen
113
114Tann(:,:)=Tann(:,:)+Tafor
115Tjuly(:,:)=Tjuly(:,:)+Tafor
116
117do j=1,ny
118   do i=1,nx
119      if(retroac.eq.1) then           ! full retroaction acc.
120         acc(i,j)=precip(i,j)*exp(rappact*(tann(i,j)-ta0(i,j)))       
121      else if(retroac.eq.0) then
122         acc(i,j)=precip(i,j)
123      endif
124   end do
125end do
126
127end subroutine input_climat_ref
128
129!---------------------------------------------------------------------------------------------
130! parametrisation de la temperature . Cette routine gere la partie dependance en altitude
131! c'est donc le S courant qui compte
132
133subroutine Tsgreen
134 
135  real alti
136  real lapse_ann
137  real lapse_july
138
139
140
141! valeur de lapse de Fausto et al.
142  lapse_ann = -6.309/1000
143  lapse_july = -5.426/1000
144
145
146  do j=1,ny
147     do i=1,nx
148        alti=max(slv(i,j),S(I,J))
149        Tann(i,j)=TA0(i,j)+lapse_ann*(alti-S0CLIM(i,j))
150        Tjuly(i,j)=TJ0(i,j)+lapse_july*(alti-S0CLIM(i,j))
151     end do
152  end do
153  !  la retroac des precipes de fait dans massb
154 
155end subroutine Tsgreen
156
157
158end module  lect_clim_act_greeneem_mar
Note: See TracBrowser for help on using the repository browser.