SICOPOLIS V3.0
 All Classes Files Functions Variables Macros
topography1.F90
Go to the documentation of this file.
1 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 !
3 ! Subroutine : t o p o g r a p h y 1
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 present-day initial topography.
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 present-day initial topography.
38 !<------------------------------------------------------------------------------
39 subroutine topography1(dxi, deta)
40 
41 use sico_types
43 
44 implicit none
45 integer(i4b) :: i, j, n
46 integer(i4b) :: ios, n_dummy
47 real(dp) :: dxi, deta
48 real(dp) :: d_dummy
49 real(dp) :: xi0, eta0
50 character :: ch_dummy
51 
52 !-------- Read topography --------
53 
54 open(21, iostat=ios, &
55  file=inpath//'/nmars/'//zs_present_file, &
56  recl=8192, status='old')
57 
58 if (ios.ne.0) stop ' topography1: Error when opening the zs file!'
59 
60 open(22, iostat=ios, &
61  file=inpath//'/nmars/'//zl_present_file, &
62  recl=8192, status='old')
63 
64 if (ios.ne.0) stop ' topography1: Error when opening the zl file!'
65 
66 open(23, iostat=ios, &
67  file=inpath//'/nmars/'//zl0_file, &
68  recl=8192, status='old')
69 
70 if (ios.ne.0) stop ' topography1: Error when opening the zl0 file!'
71 
72 open(24, iostat=ios, &
73  file=inpath//'/nmars/'//mask_present_file, &
74  recl=1024, status='old')
75 
76 if (ios.ne.0) stop ' topography1: Error when opening the mask file!'
77 
78 do n=1, 6; read(21,'(a)') ch_dummy; end do
79 do n=1, 6; read(22,'(a)') ch_dummy; end do
80 do n=1, 6; read(23,'(a)') ch_dummy; end do
81 do n=1, 6; read(24,'(a)') ch_dummy; end do
82 
83 do j=jmax, 0, -1
84  read(21,*) (zs(j,i), i=0,imax)
85  read(22,*) (zl(j,i), i=0,imax)
86  read(23,*) (zl0(j,i), i=0,imax)
87  read(24,2300) (maske(j,i), i=0,imax)
88 end do
89 
90 close(21, status='keep')
91 close(22, status='keep')
92 close(23, status='keep')
93 close(24, status='keep')
94 
95  2300 format(imax(i1),i1)
96 
97 !-------- Further stuff --------
98 
99 dxi = dx *1000.0_dp ! km -> m
100 deta = dx *1000.0_dp ! km -> m
101 
102 xi0 = x0 *1000.0_dp ! km -> m
103 eta0 = y0 *1000.0_dp ! km -> m
104 
105 do i=0, imax
106 do j=0, jmax
107 
108  if (maske(j,i) <= 1 ) then
109  zb(j,i) = zl(j,i)
110  else ! (maske(j,i)>=2)
111  stop ' topography1: maske(j,i)>=2 not allowed for initial topography!'
112  end if
113 
114  zs(j,i) = zs(j,i) *1000.0_dp
115  zb(j,i) = zb(j,i) *1000.0_dp ! km --> m
116  zl(j,i) = zl(j,i) *1000.0_dp
117  zl0(j,i) = zl0(j,i)*1000.0_dp
118 
119  xi(i) = xi0 + real(i,dp)*dxi
120  eta(j) = eta0 + real(j,dp)*deta
121 
122  call geo_coord(phi(j,i), lambda(j,i), xi(i), eta(j))
123 
124  zm(j,i) = zb(j,i)
125  n_cts(j,i) = -1
126 
127  h_c(j,i) = zs(j,i)-zm(j,i)
128  h_t(j,i) = 0.0_dp
129 
130  dzs_dtau(j,i) = 0.0_dp
131  dzm_dtau(j,i) = 0.0_dp
132  dzb_dtau(j,i) = 0.0_dp
133  dzl_dtau(j,i) = 0.0_dp
134  dh_c_dtau(j,i) = 0.0_dp
135  dh_t_dtau(j,i) = 0.0_dp
136 
137 end do
138 end do
139 
140 !-------- Metric tensor, gradients of the topography --------
141 
142 call metric
143 
144 #if TOPOGRAD==0
145 call topograd_1(dxi, deta, 1)
146 #elif TOPOGRAD==1
147 call topograd_2(dxi, deta, 1)
148 #endif
149 
150  1000 format(a)
151 
152 !-------- Corresponding area of grid points --------
153 
154 do i=0, imax
155 do j=0, jmax
156  area(j,i) = sq_g11_g(j,i)*sq_g22_g(j,i)*dxi*deta
157 end do
158 end do
159 
160 end subroutine topography1
161 !