1 | !> \file sortie-hz-multivar.f90 |
---|
2 | !! Sortie des variables horizontaux. |
---|
3 | !< |
---|
4 | |
---|
5 | !> SUBROUTINE: sortie_hz_multi() |
---|
6 | !! \author ... |
---|
7 | !! \date ... |
---|
8 | !! @note Sortie des variables horizontaux. |
---|
9 | !! @note Appelle rempl_xxx pour les variables qui sont dans module3d_phy |
---|
10 | !! remplace sortielongue. |
---|
11 | !! @note Used modules: |
---|
12 | !! @note - use module3D_phy |
---|
13 | !< |
---|
14 | subroutine sortie_hz_multi() |
---|
15 | |
---|
16 | ! Appelle rempl_xxx pour les variables qui sont dans module3d_phy |
---|
17 | ! remplace sortielongue. |
---|
18 | ! |
---|
19 | |
---|
20 | use module3d_phy |
---|
21 | use module_choix ! donne acces a module out_hz |
---|
22 | implicit none |
---|
23 | real VVV(nx,ny) ! variable de travail |
---|
24 | |
---|
25 | ! surface, epaisseur, socle |
---|
26 | if (isort_time(1).eq.1) call rempli_xxx(1,S) |
---|
27 | if (isort_time(2).eq.1) call rempli_xxx(2,H) |
---|
28 | if (isort_time(3).eq.1) call rempli_xxx(3,Bsoc) |
---|
29 | |
---|
30 | ! masque flottant-pose |
---|
31 | vvv(:,:)=mk(:,:) |
---|
32 | if (isort_time(4).eq.1) call rempli_xxx(4,vvv) |
---|
33 | |
---|
34 | ! hdot |
---|
35 | if (isort_time(5).eq.1) call rempli_xxx(5,Hdot) |
---|
36 | |
---|
37 | ! ============================================================ |
---|
38 | ! bilan de masse en surface (Bm), Accumulation, ablation, |
---|
39 | |
---|
40 | if (isort_time(10).eq.1) call rempli_xxx(10,Bm) |
---|
41 | if (isort_time(11).eq.1) call rempli_xxx(11,Acc) |
---|
42 | |
---|
43 | ! ablation : |
---|
44 | VVV(:,:)=BM(:,:)-Acc(:,:) |
---|
45 | if (isort_time(12).eq.1) call rempli_xxx(12,VVV) |
---|
46 | |
---|
47 | |
---|
48 | ! Calving |
---|
49 | if (isort_time(13).eq.1) call rempli_xxx(13,Calv) |
---|
50 | if (isort_time(14).eq.1) call rempli_xxx(14,dhdt) |
---|
51 | |
---|
52 | ! Temperatures en surface |
---|
53 | if (isort_time(18).eq.1) call rempli_xxx(18,Tann) |
---|
54 | if (isort_time(19).eq.1) call rempli_xxx(19,Tjuly) |
---|
55 | |
---|
56 | !============================================================ |
---|
57 | ! Conditions basales |
---|
58 | VVV(:,:)=T(:,:,nz)-Tpmp(:,:,nz) |
---|
59 | if (isort_time(20).eq.1) call rempli_xxx(20,VVV) |
---|
60 | |
---|
61 | ! flux geothermique |
---|
62 | if (isort_time(23).eq.1) call rempli_xxx(23,ghf) |
---|
63 | if (isort_time(24).eq.1) call rempli_xxx(24,phid) |
---|
64 | |
---|
65 | ! fusion basale |
---|
66 | if (isort_time(25).eq.1) call rempli_xxx(25,bmelt) |
---|
67 | !============================================================ |
---|
68 | ! vitesse moyenne selon x |
---|
69 | |
---|
70 | do j=1,ny |
---|
71 | do i=1,nx |
---|
72 | if (i.ne.nx) then |
---|
73 | vvv(i,j)=(uxbar(i,j)+uxbar(i+1,j))/2. |
---|
74 | else |
---|
75 | vvv(i,j)=uxbar(i,j) |
---|
76 | endif |
---|
77 | end do |
---|
78 | end do |
---|
79 | |
---|
80 | if (isort_time(30).eq.1) call rempli_xxx(30,VVV) |
---|
81 | |
---|
82 | ! vitesse moyenne selon y |
---|
83 | |
---|
84 | do j=1,ny |
---|
85 | do i=1,nx |
---|
86 | if (j.ne.ny) then |
---|
87 | vvv(i,j)=(uybar(i,j)+uybar(i,j+1))/2 |
---|
88 | else |
---|
89 | vvv(i,j)=uybar(i,j) |
---|
90 | endif |
---|
91 | end do |
---|
92 | end do |
---|
93 | |
---|
94 | if (isort_time(31).eq.1) call rempli_xxx(31,VVV) |
---|
95 | |
---|
96 | |
---|
97 | if (isort_time(32).eq.1) call rempli_xxx(32,uxbar) |
---|
98 | if (isort_time(33).eq.1) call rempli_xxx(33,uybar) |
---|
99 | |
---|
100 | vvv(:,:)=ux(:,:,nz) |
---|
101 | if (isort_time(34).eq.1) call rempli_xxx(34,vvv) |
---|
102 | |
---|
103 | vvv(:,:)=uy(:,:,nz) |
---|
104 | if (isort_time(35).eq.1) call rempli_xxx(35,vvv) |
---|
105 | |
---|
106 | !============================================================= |
---|
107 | if (isort_time(40).eq.1) call rempli_xxx(40,frotmx) |
---|
108 | if (isort_time(41).eq.1) call rempli_xxx(41,frotmy) |
---|
109 | if (isort_time(42).eq.1) call rempli_xxx(42,tobmx) |
---|
110 | if (isort_time(43).eq.1) call rempli_xxx(43,tobmy) |
---|
111 | if (isort_time(44).eq.1) call rempli_xxx(44,taushelf) |
---|
112 | if (isort_time(45).eq.1) call rempli_xxx(45,epsxx) |
---|
113 | if (isort_time(46).eq.1) call rempli_xxx(46,epsyy) |
---|
114 | if (isort_time(47).eq.1) call rempli_xxx(47,epsxy) |
---|
115 | if (isort_time(48).eq.1) call rempli_xxx(48,eps) |
---|
116 | !================================================================ |
---|
117 | if (isort_time(50).eq.1) call rempli_xxx(50,pvi) |
---|
118 | |
---|
119 | !=============================================================== |
---|
120 | if(isort_time(60).eq.1) call rempli_xxx(60,hwater) |
---|
121 | if(isort_time(61).eq.1) call rempli_xxx(61,hdotwater) |
---|
122 | if(isort_time(62).eq.1) call rempli_xxx(62,Pgx) |
---|
123 | if(isort_time(63).eq.1) call rempli_xxx(63,Pgy) |
---|
124 | if(isort_time(64).eq.1) call rempli_xxx(64,kond) |
---|
125 | if(isort_time(65).eq.1) call rempli_xxx(65,phiWx) |
---|
126 | if(isort_time(66).eq.1) call rempli_xxx(66,phiWy) |
---|
127 | if(isort_time(68).eq.1) call rempli_xxx(68,Neffmx) |
---|
128 | if(isort_time(69).eq.1) call rempli_xxx(69,Neffmy) |
---|
129 | !=============================================================== |
---|
130 | |
---|
131 | ! grounded -> 0, , grzone ->1 ilemx->2 flot->3 |
---|
132 | do j=1,ny |
---|
133 | do i=1,nx |
---|
134 | if (gzmx(i,j)) then |
---|
135 | if (ilemx(i,j)) then ! ile |
---|
136 | vvv(i,j)=2 |
---|
137 | else |
---|
138 | vvv(i,j)=1 ! grounded zone |
---|
139 | endif |
---|
140 | else if (flotmx(i,j)) then ! flottant |
---|
141 | if (HMX(i,j).gt.1.) then |
---|
142 | vvv(i,j)=3 |
---|
143 | else |
---|
144 | vvv(i,j)=4 |
---|
145 | endif |
---|
146 | else ! pose |
---|
147 | vvv(i,j)=0 |
---|
148 | endif |
---|
149 | end do |
---|
150 | end do |
---|
151 | if(isort_time(70).eq.1) call rempli_xxx(70,vvv) |
---|
152 | do j=1,ny |
---|
153 | do i=1,nx |
---|
154 | if (gzmy(i,j)) then |
---|
155 | if (ilemy(i,j)) then |
---|
156 | vvv(i,j)=2 |
---|
157 | else |
---|
158 | vvv(i,j)=1 |
---|
159 | endif |
---|
160 | else if (flotmy(i,j)) then |
---|
161 | if (HMY(i,j).gt.1.) then |
---|
162 | vvv(i,j)=3 |
---|
163 | else |
---|
164 | vvv(i,j)=4 |
---|
165 | endif |
---|
166 | else |
---|
167 | vvv(i,j)=0 |
---|
168 | endif |
---|
169 | end do |
---|
170 | end do |
---|
171 | if(isort_time(71).eq.1) call rempli_xxx(71,vvv) |
---|
172 | |
---|
173 | ! frontfacex et frontfacey |
---|
174 | vvv(:,:)=frontfacex(:,:) |
---|
175 | if(isort_time(72).eq.1) call rempli_xxx(72,vvv) |
---|
176 | vvv(:,:)=frontfacey(:,:) |
---|
177 | if(isort_time(73).eq.1) call rempli_xxx(73,vvv) |
---|
178 | |
---|
179 | !============================================================= |
---|
180 | return |
---|
181 | end subroutine sortie_hz_multi |
---|