SICOPOLIS V3.1
 All Classes Files Functions Variables Macros
topography3.F90
Go to the documentation of this file.
1 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 !
3 ! Subroutine : t o p o g r a p h y 3
4 !
5 !> @file
6 !!
7 !! Definition of the initial surface and bedrock topography
8 !! (including gradients) and of the horizontal grid spacings dxi, deta.
9 !! For initial topography from previous simulation (read in binary format).
10 !!
11 !! @section Copyright
12 !!
13 !! Copyright 2009-2013 Ralf Greve
14 !!
15 !! @section License
16 !!
17 !! This file is part of SICOPOLIS.
18 !!
19 !! SICOPOLIS is free software: you can redistribute it and/or modify
20 !! it under the terms of the GNU General Public License as published by
21 !! the Free Software Foundation, either version 3 of the License, or
22 !! (at your option) any later version.
23 !!
24 !! SICOPOLIS is distributed in the hope that it will be useful,
25 !! but WITHOUT ANY WARRANTY; without even the implied warranty of
26 !! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 !! GNU General Public License for more details.
28 !!
29 !! You should have received a copy of the GNU General Public License
30 !! along with SICOPOLIS. If not, see <http://www.gnu.org/licenses/>.
31 !<
32 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
33 
34 !-------------------------------------------------------------------------------
35 !> Definition of the initial surface and bedrock topography
36 !! (including gradients) and of the horizontal grid spacings dxi, deta.
37 !! For initial topography from previous simulation (read in binary format).
38 !<------------------------------------------------------------------------------
39 subroutine topography3(dxi, deta, z_sl, anfdatname)
40 
41 use sico_types
43 
44 implicit none
45 
46 character(len=100), intent(in) :: anfdatname
47 
48 real(dp), intent(out) :: dxi, deta, z_sl
49 
50 integer(i4b) :: i, j, kc, kt, kr
51 integer(i4b) :: ios
52 character(len=256) :: ch_attr_title, ch_attr_institution, ch_attr_source, &
53  ch_attr_history, ch_attr_references
54 
55 integer(i2b), dimension(0:IMAX,0:JMAX) :: maske_conv, n_cts_conv
56 real(sp) :: time_conv, dummy_conv, z_sl_conv, &
57  v_tot_conv, a_grounded_conv, a_floating_conv, &
58  h_r_conv, &
59  xi_conv(0:imax), eta_conv(0:jmax), &
60  sigma_level_c_conv(0:kcmax), sigma_level_t_conv(0:ktmax), &
61  sigma_level_r_conv(0:krmax)
62 real(sp), dimension(0:IMAX,0:JMAX) :: lambda_conv, phi_conv, &
63  lon_conv, lat_conv, &
64  temp_s_conv, as_perp_conv, &
65  zs_conv, zm_conv, zb_conv, zl_conv, h_c_conv, h_t_conv, h_conv, &
66  q_bm_conv, q_tld_conv, &
67  am_perp_conv, &
68  qx_conv, qy_conv, &
69  dzs_dtau_conv, dzm_dtau_conv, dzb_dtau_conv, dzl_dtau_conv, &
70  dh_c_dtau_conv, dh_t_dtau_conv, dh_dtau_conv, &
71  vx_b_g_conv, vy_b_g_conv, vz_b_conv, vh_b_conv, &
72  vx_s_g_conv, vy_s_g_conv, vz_s_conv, vh_s_conv, &
73  temp_b_conv, temph_b_conv, &
74  p_b_w_conv, h_w_conv, q_gl_g_conv
75 real(sp), dimension(0:IMAX,0:JMAX,0:KCMAX) :: vx_c_conv, vy_c_conv, vz_c_conv, &
76  temp_c_conv, age_c_conv
77 real(sp), dimension(0:IMAX,0:JMAX,0:KTMAX) :: vx_t_conv, vy_t_conv, vz_t_conv, &
78  omega_t_conv, age_t_conv
79 real(sp), dimension(0:IMAX,0:JMAX,0:KRMAX) :: temp_r_conv
80 
81 !-------- Read data from time-slice file of previous simulation --------
82 
83 open(11, iostat=ios, &
84  file=anfdatpath//'/'//trim(anfdatname), &
85  status='old', form='unformatted')
86 if (ios /= 0) stop ' topography3: Error when opening the initial-value file!'
87 
88 read(11) ch_attr_title
89 read(11) ch_attr_institution
90 read(11) ch_attr_source
91 read(11) ch_attr_history
92 read(11) ch_attr_references
93 read(11) time_conv
94 read(11) dummy_conv
95 read(11) z_sl_conv
96 read(11) xi_conv
97 read(11) eta_conv
98 read(11) sigma_level_c_conv
99 read(11) sigma_level_t_conv
100 read(11) sigma_level_r_conv
101 read(11) lon_conv
102 read(11) lat_conv
103 read(11) lambda_conv
104 read(11) phi_conv
105 read(11) temp_s_conv
106 read(11) as_perp_conv
107 read(11) maske_conv
108 read(11) n_cts_conv
109 read(11) zs_conv
110 read(11) zm_conv
111 read(11) zb_conv
112 read(11) zl_conv
113 read(11) h_c_conv
114 read(11) h_t_conv
115 read(11) h_conv
116 read(11) h_r_conv
117 read(11) vx_c_conv
118 read(11) vy_c_conv
119 read(11) vz_c_conv
120 read(11) vx_t_conv
121 read(11) vy_t_conv
122 read(11) vz_t_conv
123 read(11) temp_c_conv
124 read(11) omega_t_conv
125 read(11) temp_r_conv
126 read(11) q_bm_conv
127 read(11) q_tld_conv
128 read(11) am_perp_conv
129 read(11) qx_conv
130 read(11) qy_conv
131 read(11) age_c_conv
132 read(11) age_t_conv
133 read(11) dzs_dtau_conv
134 read(11) dzm_dtau_conv
135 read(11) dzb_dtau_conv
136 read(11) dzl_dtau_conv
137 read(11) dh_c_dtau_conv
138 read(11) dh_t_dtau_conv
139 read(11) dh_dtau_conv
140 read(11,end=110) vx_b_g_conv
141 read(11,end=110) vy_b_g_conv
142 read(11,end=110) vz_b_conv
143 read(11,end=110) vh_b_conv
144 read(11,end=110) vx_s_g_conv
145 read(11,end=110) vy_s_g_conv
146 read(11,end=110) vz_s_conv
147 read(11,end=110) vh_s_conv
148 read(11,end=110) temp_b_conv
149 read(11,end=110) temph_b_conv
150 read(11,end=110) p_b_w_conv
151 read(11,end=110) h_w_conv
152 read(11,end=110) q_gl_g_conv
153 
154 go to 120
155 
156 110 continue
157 write(6, fmt='(/1x,a)') 'topography3: End-of-file condition while reading *.erg.'
158 write(6, fmt= '(1x,a)') ' Some variables will be undefined.'
159 
160 120 continue
161 
162 close(11,status='keep')
163 
164 !-------- Convert data to real*8 and years to seconds --------
165 
166 z_sl = real(z_sl_conv,dp)
167 
168 h_r = real(h_r_conv,dp)
169 
170 do i=0, imax
171  xi(i) = real(xi_conv(i),dp)
172 end do
173 
174 do j=0, jmax
175  eta(j) = real(eta_conv(j),dp)
176 end do
177 
178 do i=0, imax
179 do j=0, jmax
180 
181  maske(j,i) = maske_conv(i,j)
182  n_cts(j,i) = n_cts_conv(i,j)
183  zs(j,i) = real(zs_conv(i,j),dp)
184  zm(j,i) = real(zm_conv(i,j),dp)
185  zb(j,i) = real(zb_conv(i,j),dp)
186  zl(j,i) = real(zl_conv(i,j),dp)
187  h_c(j,i) = real(H_c_conv(i,j),dp)
188  h_t(j,i) = real(H_t_conv(i,j),dp)
189  q_bm(j,i) = real(Q_bm_conv(i,j),dp)/year_sec
190  q_tld(j,i) = real(Q_tld_conv(i,j),dp)/year_sec
191  am_perp(j,i) = real(am_perp_conv(i,j),dp)/year_sec
192  qx(j,i) = real(qx_conv(i,j),dp)/year_sec
193  qy(j,i) = real(qy_conv(i,j),dp)/year_sec
194  dzs_dtau(j,i) = real(dzs_dtau_conv(i,j),dp)/year_sec
195  dzm_dtau(j,i) = real(dzm_dtau_conv(i,j),dp)/year_sec
196  dzb_dtau(j,i) = real(dzb_dtau_conv(i,j),dp)/year_sec
197  dzl_dtau(j,i) = real(dzl_dtau_conv(i,j),dp)/year_sec
198  dh_c_dtau(j,i) = real(dH_c_dtau_conv(i,j),dp)/year_sec
199  dh_t_dtau(j,i) = real(dH_t_dtau_conv(i,j),dp)/year_sec
200  vx_b_g(j,i) = real(vx_b_g_conv(i,j),dp)/year_sec
201  vy_b_g(j,i) = real(vy_b_g_conv(i,j),dp)/year_sec
202  vz_b(j,i) = real(vz_b_conv(i,j),dp)/year_sec
203  vx_s_g(j,i) = real(vx_s_g_conv(i,j),dp)/year_sec
204  vy_s_g(j,i) = real(vy_s_g_conv(i,j),dp)/year_sec
205  vz_s(j,i) = real(vz_s_conv(i,j),dp)/year_sec
206  temp_b(j,i) = real(temp_b_conv(i,j),dp)
207  temph_b(j,i) = real(temph_b_conv(i,j),dp)
208  p_b_w(j,i) = real(p_b_w_conv(i,j),dp)
209  h_w(j,i) = real(H_w_conv(i,j),dp)
210  q_gl_g(j,i) = real(q_gl_g_conv(i,j),dp)/year_sec
211 
212  do kr=0, krmax
213  temp_r(kr,j,i) = real(temp_r_conv(i,j,kr),dp)
214  end do
215 
216  do kt=0, ktmax
217  vx_t(kt,j,i) = real(vx_t_conv(i,j,kt),dp)/year_sec
218  vy_t(kt,j,i) = real(vy_t_conv(i,j,kt),dp)/year_sec
219  vz_t(kt,j,i) = real(vz_t_conv(i,j,kt),dp)/year_sec
220  omega_t(kt,j,i) = real(omega_t_conv(i,j,kt),dp)
221  age_t(kt,j,i) = real(age_t_conv(i,j,kt),dp)*year_sec
222  end do
223 
224  do kc=0, kcmax
225  vx_c(kc,j,i) = real(vx_c_conv(i,j,kc),dp)/year_sec
226  vy_c(kc,j,i) = real(vy_c_conv(i,j,kc),dp)/year_sec
227  vz_c(kc,j,i) = real(vz_c_conv(i,j,kc),dp)/year_sec
228  temp_c(kc,j,i) = real(temp_c_conv(i,j,kc),dp)
229  age_c(kc,j,i) = real(age_c_conv(i,j,kc),dp)*year_sec
230  end do
231 
232 end do
233 end do
234 
235 !-------- Set topography of the relaxed bedrock --------
236 
237 zl0 = 0.0_dp
238 
239 !-------- Further stuff --------
240 
241 #if (GRID==0 || GRID==1)
242 
243 dxi = dx *1000.0_dp ! km -> m
244 deta = dx *1000.0_dp ! km -> m
245 
246 #elif GRID==2
247 
248 stop ' topography3: GRID==2 not allowed for this application!'
249 
250 #endif
251 
252 do i=0, imax
253 do j=0, jmax
254  call geo_coord(phi(j,i), lambda(j,i), xi(i), eta(j))
255 end do
256 end do
257 
258 !-------- Metric tensor, gradients of the topography --------
259 
260 call metric()
261 
262 #if TOPOGRAD==0
263 call topograd_1(dxi, deta, 1)
264 #elif TOPOGRAD==1
265 call topograd_2(dxi, deta, 1)
266 #endif
267 
268 !-------- Corresponding area of grid points --------
269 
270 do i=0, imax
271 do j=0, jmax
272  area(j,i) = sq_g11_g(j,i)*sq_g22_g(j,i)*dxi*deta
273 end do
274 end do
275 
276 end subroutine topography3
277 !