SICOPOLIS V3.1
 All Classes Files Functions Variables Macros
topography2.F90
Go to the documentation of this file.
1 !+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 !
3 ! Subroutine : t o p o g r a p h y 2
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 ice-free initial topography with relaxed lithosphere.
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 ice-free initial topography with relaxed lithosphere.
38 !<------------------------------------------------------------------------------
39 subroutine topography2(dxi, deta)
40 
41 use sico_types
43 
44 implicit none
45 
46 real(dp), intent(out) :: dxi, deta
47 
48 integer(i4b) :: i, j, n
49 integer(i4b) :: ios
50 real(dp) :: xi0, eta0
51 character :: ch_dummy
52 
53 character(len= 8) :: ch_imax
54 character(len=128) :: fmt4
55 
56 write(ch_imax, fmt='(i8)') imax
57 write(fmt4, fmt='(a)') '('//trim(adjustl(ch_imax))//'(i1),i1)'
58 
59 !-------- Set topography --------
60 
61 zl0 = 0.0_dp
62 
63 open(24, iostat=ios, &
64  file=inpath//'/heino/'//mask_present_file, &
65  recl=1024, status='old')
66 
67 if (ios /= 0) stop ' topography2: Error when opening the mask file!'
68 
69 do n=1, 6; read(24, fmt='(a)') ch_dummy; end do
70 
71 do j=jmax, 0, -1
72  read(24, fmt=trim(fmt4)) (maske(j,i), i=0,imax)
73 end do
74 
75 close(24, status='keep')
76 
77 !-------- Further stuff --------
78 
79 #if (GRID==0 || GRID==1)
80 
81 dxi = dx *1000.0_dp ! km -> m
82 deta = dx *1000.0_dp ! km -> m
83 
84 xi0 = x0 *1000.0_dp ! km -> m
85 eta0 = y0 *1000.0_dp ! km -> m
86 
87 #elif GRID==2
88 
89 stop ' topography2: GRID==2 not allowed for this application!'
90 
91 #endif
92 
93 do i=0, imax
94 do j=0, jmax
95 
96  zs(j,i) = zl0(j,i)
97  zb(j,i) = zl0(j,i)
98  zl(j,i) = zl0(j,i)
99 
100  xi(i) = xi0 + real(i,dp)*dxi
101  eta(j) = eta0 + real(j,dp)*deta
102 
103  call geo_coord(phi(j,i), lambda(j,i), xi(i), eta(j))
104 
105  zm(j,i) = zb(j,i)
106  n_cts(j,i) = -1
107 
108  h_c(j,i) = 0.0_dp
109  h_t(j,i) = 0.0_dp
110 
111  dzs_dtau(j,i) = 0.0_dp
112  dzm_dtau(j,i) = 0.0_dp
113  dzb_dtau(j,i) = 0.0_dp
114  dzl_dtau(j,i) = 0.0_dp
115  dh_c_dtau(j,i) = 0.0_dp
116  dh_t_dtau(j,i) = 0.0_dp
117 
118 end do
119 end do
120 
121 !-------- Metric tensor, gradients of the topography --------
122 
123 call metric()
124 
125 #if TOPOGRAD==0
126 call topograd_1(dxi, deta, 1)
127 #elif TOPOGRAD==1
128 call topograd_2(dxi, deta, 1)
129 #endif
130 
131 !-------- Corresponding area of grid points --------
132 
133 do i=0, imax
134 do j=0, jmax
135  area(j,i) = sq_g11_g(j,i)*sq_g22_g(j,i)*dxi*deta
136 end do
137 end do
138 
139 end subroutine topography2
140 !