Set initial conditions.
48
49
50 implicit none
51
52 character*100000 :: input_line
53 character*4 :: keyword
54
55 integer*4 :: nnod_loc, mpi_id, cs_nnz_loc
56 integer*4 :: nm, ne_loc, status
57 integer*4 :: ie, im, nn, fn,is,in,iaz,i,j,k,ileft,iright,nval
58 integer*4, dimension(0:cs_nnz_loc) :: cs_loc
59
60 integer*4, dimension(nnod_loc) :: loc_n_num
61 integer*4, dimension(nm) :: sdeg_mat
62
63
64 real*8 :: time, term1,term2,term3, dt, pi, vp, omega, k1, k2, k3
65 real*8 :: a1,a2,a3,b1,b2,b3,c1,c2,c3,w1, rho,lambda,mu, cost1,cost2,cost3
66 real*8 :: dxdx,dxdy,dxdz,dydx,dydy,dydz,dzdx,dzdy,dzdz,det_j, u1_ex,u2_ex,u3_ex
67
68 real*8, dimension(nm,4) :: prop_mat
69 real*8, dimension(ne_loc) :: alfa11,alfa12,alfa13,alfa21,alfa22,alfa23,alfa31,alfa32,alfa33
70 real*8, dimension(ne_loc) :: beta11,beta12,beta13,beta21,beta22,beta23,beta31,beta32,beta33
71 real*8, dimension(ne_loc) :: gamma1,gamma2,gamma3,delta1,delta2,delta3
72 real*8, dimension(3*nnod_loc) :: u0, u1, v1
73 real*8, dimension(nnod_loc) :: xs_loc, ys_loc, zs_loc
74 real*8, dimension(:), allocatable :: val_data
75
76
77
78 pi = 4.d0*datan(1.d0)
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128 do ie = 1,ne_loc
129
130 im = cs_loc(cs_loc(ie -1))
131 nn = sdeg_mat(im) +1
132 rho = prop_mat(im,1); lambda = prop_mat(im,2); mu = prop_mat(im,3)
133
134 k1 = 0;
135 k2 = 0;
136 k3 = 1;
137
138 omega = 120.d0*2*pi
139 vp = dsqrt((lambda+2*mu)/rho)
140 k3 = k3*omega/vp;
141
142
143
144
145
146
147 do k = 1,nn
148 do j = 1,nn
149 do i = 1,nn
150
151 is = nn*nn*(k -1) +nn*(j -1) +i
152 in = cs_loc(cs_loc(ie -1) +is)
153 iaz = 3*(in -1) + 1
154
155
156 u0(iaz+0) = + dsin(3.d0*pi*dt)*(dsin(pi*xs_loc(in)))**2.d0*dsin(2.d0*pi*ys_loc(in))*dsin(2.d0*pi*zs_loc(in));
157 u0(iaz+1) = - dsin(3.d0*pi*dt)*(dsin(pi*ys_loc(in)))**2.d0*dsin(2.d0*pi*xs_loc(in))*dsin(2.d0*pi*zs_loc(in));
158 u0(iaz+2) = - dsin(3.d0*pi*dt)*(dsin(pi*zs_loc(in)))**2.d0*dsin(2.d0*pi*xs_loc(in))*dsin(2.d0*pi*ys_loc(in));
159
160 u1(iaz+0) = - 0.d0*(dsin(pi*xs_loc(in)))**2.d0*dsin(2.d0*pi*ys_loc(in))*dsin(2.d0*pi*zs_loc(in));
161 u1(iaz+1) = + 0.d0*(dsin(pi*ys_loc(in)))**2.d0*dsin(2.d0*pi*xs_loc(in))*dsin(2.d0*pi*zs_loc(in));
162 u1(iaz+2) = + 0.d0*(dsin(pi*zs_loc(in)))**2.d0*dsin(2.d0*pi*xs_loc(in))*dsin(2.d0*pi*ys_loc(in));
163
164 v1(iaz+0) = - 3.d0*pi*(dsin(pi*xs_loc(in)))**2.d0*dsin(2.d0*pi*ys_loc(in))*dsin(2.d0*pi*zs_loc(in));
165 v1(iaz+1) = + 3.d0*pi*(dsin(pi*ys_loc(in)))**2.d0*dsin(2.d0*pi*xs_loc(in))*dsin(2.d0*pi*zs_loc(in));
166 v1(iaz+2) = + 3.d0*pi*(dsin(pi*zs_loc(in)))**2.d0*dsin(2.d0*pi*xs_loc(in))*dsin(2.d0*pi*ys_loc(in));
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193 enddo
194 enddo
195 enddo
196
197 enddo
198
199
200
201