75 nn_loc, local_n_num, ne_loc, local_el_num, &
77 nel_dg_loc, nel_dg_glo, &
78 i4count, mpi_id, mpi_comm, mpi_np,&
79 alfa11, alfa12, alfa13, &
80 alfa21, alfa22, alfa23, &
81 alfa31, alfa32, alfa33, &
82 beta11, beta12, beta13, &
83 beta21, beta22, beta23, &
84 beta31, beta32, beta33, &
85 gamma1, gamma2, gamma3, &
86 delta1, delta2, delta3, &
87 dg_els, scratch_dg_els, &
88 tag_dg_el, tag_dg_yn, tag_dg_link, &
89 tag_dg_frc, val_dg_frc, nload_dg, &
90 con_bc, nface,mpi_file)
102 type(
element),
dimension(nel_dg_loc),
intent(inout) :: dg_els
103 type(
scratch_element),
dimension(nel_dg_loc),
intent(inout) :: scratch_dg_els
105 character*70 :: filempi, filename, cmd, mpi_file, filempi_new
107 integer*4 :: nm, cs_nnz_loc, nn_loc, ne_loc, nel_dg_loc, nel_dg_glo
108 integer*4 :: mpi_comm, mpi_id, mpi_ierr, mpi_np, nload_dg, tag_ind, nface
109 integer*4 :: im, nn, ie, ned, unitmpi, unitname, nofel, nel_dg_proc
110 integer*4 :: ne1, ne2, ne3, ne4, ic1, ic2, ic3, ic4
111 integer*4 :: ne5, ne6, ne7, ne8, ic5, ic6, ic7, ic8
112 integer*4 :: el_conf, face_conf, face_found, imate, iele, iface
113 integer*4 :: ip, k, j, i, it, ih, ik, tt, indice, node_not_ass
115 integer*4,
dimension(nm) :: tag_mat, sd
116 integer*4,
dimension(0:cs_nnz_loc) :: cs_loc
117 integer*4,
dimension(nn_loc) :: local_n_num, i4count
118 integer*4,
dimension(ne_loc) :: local_el_num
119 integer*4,
dimension(nload_dg) :: tag_dg_el, tag_dg_yn, tag_dg_frc, tag_dg_link
121 integer*4,
dimension(:),
allocatable :: link_glo
122 integer*4,
dimension(:,:),
allocatable :: ielem_dg
123 integer*4,
dimension(:,:),
allocatable :: mat_el_face
124 integer*4,
dimension(nface,5) :: con_bc
126 real*8 :: normal_x, normal_y, normal_z
127 real*8 :: c_alfa11, c_alfa12, c_alfa13, c_alfa21, c_alfa22, c_alfa23, c_alfa31, c_alfa32, c_alfa33
128 real*8 :: c_beta11, c_beta12, c_beta13, c_beta21, c_beta22, c_beta23, c_beta31, c_beta32, c_beta33
129 real*8 :: c_gamma1, c_gamma2, c_gamma3, c_delta1, c_delta2, c_delta3
130 real*8 :: xnod, ynod, znod, csi, eta, zeta, xnod1, ynod1, znod1
131 real*8 :: val1, val2, val3, val4, val5, val6, valmin
132 real*8 :: coef_a, coef_b, coef_t, det_trasf
134 real*8,
dimension(:),
allocatable :: ctgl,wwgl, zn_glo, zt_glo
135 real*8,
dimension(:),
allocatable :: ct, ww
136 real*8,
dimension(nn_loc) :: xs,ys,zs
137 real*8,
dimension(ne_loc) :: alfa11,alfa12,alfa13
138 real*8,
dimension(ne_loc) :: alfa21,alfa22,alfa23
139 real*8,
dimension(ne_loc) :: alfa31,alfa32,alfa33
140 real*8,
dimension(ne_loc) :: beta11,beta12,beta13
141 real*8,
dimension(ne_loc) :: beta21,beta22,beta23
142 real*8,
dimension(ne_loc) :: beta31,beta32,beta33
143 real*8,
dimension(ne_loc) :: gamma1,gamma2,gamma3
144 real*8,
dimension(ne_loc) :: delta1,delta2,delta3
145 real*8,
dimension(nload_dg,2) :: val_dg_frc
147 real*8,
dimension(:,:),
allocatable :: dd
148 real*8,
dimension(:,:),
allocatable :: normalxyz
159 if (cs_loc(cs_loc(ie -1) + 0) .eq. tag_mat(im))
then
162 ne1 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(1 -1) +(1 -1) +1)
163 ne2 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(nn -1) +(1 -1) +1)
164 ne3 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(nn -1) +(1 -1) +1)
165 ne4 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(1 -1) +(1 -1) +1)
168 if ((i4count(ne1).ne.0) .and. (i4count(ne2).ne.0) .and. (i4count(ne3).ne.0) .and. (i4count(ne4).ne.0))
then
171 local_n_num(ne1),local_n_num(ne2), &
172 local_n_num(ne3),local_n_num(ne4), tag_dg_el, nload_dg, tag_ind)
174 if (tag_ind == 0) print*,
'ERROR IN GET_TAG_BC'
178 nel_dg_loc = nel_dg_loc + 1
179 dg_els(nel_dg_loc)%ind_el = local_el_num(ie)
180 dg_els(nel_dg_loc)%face_el = 1
181 dg_els(nel_dg_loc)%mat = tag_mat(im)
182 dg_els(nel_dg_loc)%spct_deg = nn-1
183 dg_els(nel_dg_loc)%quad_rule =
nofqp
185 dg_els(nel_dg_loc)%proj_yn = tag_dg_yn(tag_ind)
186 dg_els(nel_dg_loc)%link = tag_dg_link(tag_ind)
187 dg_els(nel_dg_loc)%frac_yn = tag_dg_frc(tag_ind)
188 dg_els(nel_dg_loc)%zt = val_dg_frc(tag_ind,1)
189 dg_els(nel_dg_loc)%zn = val_dg_frc(tag_ind,2)
191 call make_normal(1,xs(ne1), xs(ne2), xs(ne3), xs(ne4), ys(ne1), ys(ne2), ys(ne3), ys(ne4), &
192 zs(ne1), zs(ne2), zs(ne3), zs(ne4), normal_x, normal_y, normal_z, 0, 0)
194 dg_els(nel_dg_loc)%nx = normal_x
195 dg_els(nel_dg_loc)%ny = normal_y
196 dg_els(nel_dg_loc)%nz = normal_z
198 allocate(ct(dg_els(nel_dg_loc)%quad_rule), ww(dg_els(nel_dg_loc)%quad_rule), &
199 dd(dg_els(nel_dg_loc)%quad_rule, dg_els(nel_dg_loc)%quad_rule))
201 call make_lgl_nw(dg_els(nel_dg_loc)%quad_rule, ct, ww, dd)
203 allocate(ctgl(dg_els(nel_dg_loc)%quad_rule), wwgl(dg_els(nel_dg_loc)%quad_rule))
205 call make_gl_nw(dg_els(nel_dg_loc)%quad_rule, ctgl, wwgl)
208 do k = 1, dg_els(nel_dg_loc)%quad_rule
209 do j = 1, dg_els(nel_dg_loc)%quad_rule
213 scratch_dg_els(nel_dg_loc)%x_nq(ip) = alfa11(ie)*ct(i) + alfa12(ie)*ctgl(j) &
214 + alfa13(ie)*ctgl(k) + beta11(ie)*ctgl(j)*ctgl(k) &
215 + beta12(ie)*ct(i)*ctgl(k) + beta13(ie)*ct(i)*ctgl(j) &
216 + gamma1(ie)*ct(i)*ctgl(j)*ctgl(k) + delta1(ie)
218 scratch_dg_els(nel_dg_loc)%y_nq(ip) = alfa21(ie)*ct(i) + alfa22(ie)*ctgl(j) &
219 + alfa23(ie)*ctgl(k) + beta21(ie)*ctgl(j)*ctgl(k) &
220 + beta22(ie)*ct(i)*ctgl(k) + beta23(ie)*ct(i)*ctgl(j) &
221 + gamma2(ie)*ct(i)*ctgl(j)*ctgl(k) + delta2(ie)
223 scratch_dg_els(nel_dg_loc)%z_nq(ip) = alfa31(ie)*ct(i) + alfa32(ie)*ctgl(j) &
224 + alfa33(ie)*ctgl(k) + beta31(ie)*ctgl(j)*ctgl(k) &
225 + beta32(ie)*ct(i)*ctgl(k) + beta33(ie)*ct(i)*ctgl(j) &
226 + gamma3(ie)*ct(i)*ctgl(j)*ctgl(k) + delta3(ie)
229 dg_els(nel_dg_loc)%wx_pl(ip) = 1.d0
230 dg_els(nel_dg_loc)%wy_pl(ip) = wwgl(j)
231 dg_els(nel_dg_loc)%wz_pl(ip) = wwgl(k)
237 deallocate(ctgl,wwgl)
242 ne1 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(1 -1) +(1 -1) +1)
243 ne2 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(1 -1) +(nn -1) +1)
244 ne3 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(1 -1) +(nn -1) +1)
245 ne4 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(1 -1) +(1 -1) +1)
248 if ((i4count(ne1).ne.0) .and. (i4count(ne2).ne.0) .and. (i4count(ne3).ne.0) .and. (i4count(ne4).ne.0))
then
252 local_n_num(ne1),local_n_num(ne2), &
253 local_n_num(ne3),local_n_num(ne4), tag_dg_el, nload_dg, tag_ind)
255 if (tag_ind == 0) print*,
'ERROR IN GET_TAG_BC'
258 nel_dg_loc = nel_dg_loc +1
259 dg_els(nel_dg_loc)%ind_el = local_el_num(ie)
260 dg_els(nel_dg_loc)%face_el = 2
261 dg_els(nel_dg_loc)%mat = tag_mat(im)
262 dg_els(nel_dg_loc)%spct_deg = nn-1
263 dg_els(nel_dg_loc)%quad_rule =
nofqp
265 dg_els(nel_dg_loc)%proj_yn = tag_dg_yn(tag_ind)
266 dg_els(nel_dg_loc)%link = tag_dg_link(tag_ind)
267 dg_els(nel_dg_loc)%frac_yn = tag_dg_frc(tag_ind)
268 dg_els(nel_dg_loc)%zt = val_dg_frc(tag_ind,1)
269 dg_els(nel_dg_loc)%zn = val_dg_frc(tag_ind,2)
272 call make_normal(2,xs(ne1), xs(ne2), xs(ne3), xs(ne4), ys(ne1), ys(ne2), ys(ne3), ys(ne4), &
273 zs(ne1), zs(ne2), zs(ne3), zs(ne4), normal_x, normal_y, normal_z, 0, 0)
275 dg_els(nel_dg_loc)%nx = normal_x
276 dg_els(nel_dg_loc)%ny = normal_y
277 dg_els(nel_dg_loc)%nz = normal_z
279 allocate(ct(dg_els(nel_dg_loc)%quad_rule), ww(dg_els(nel_dg_loc)%quad_rule), &
280 dd(dg_els(nel_dg_loc)%quad_rule,dg_els(nel_dg_loc)%quad_rule))
282 call make_lgl_nw(dg_els(nel_dg_loc)%quad_rule,ct,ww,dd)
284 allocate(ctgl(dg_els(nel_dg_loc)%quad_rule),wwgl(dg_els(nel_dg_loc)%quad_rule))
286 call make_gl_nw(dg_els(nel_dg_loc)%quad_rule,ctgl,wwgl)
289 do k = 1, dg_els(nel_dg_loc)%quad_rule
291 do i = 1, dg_els(nel_dg_loc)%quad_rule
293 scratch_dg_els(nel_dg_loc)%x_nq(ip) = alfa11(ie)*ctgl(i) + alfa12(ie)*ct(j) &
294 + alfa13(ie)*ctgl(k) + beta11(ie)*ct(j)*ctgl(k) &
295 + beta12(ie)*ctgl(i)*ctgl(k) + beta13(ie)*ctgl(i)*ct(j) &
296 + gamma1(ie)*ctgl(i)*ct(j)*ctgl(k) + delta1(ie)
298 scratch_dg_els(nel_dg_loc)%y_nq(ip) = alfa21(ie)*ctgl(i) + alfa22(ie)*ct(j) &
299 + alfa23(ie)*ctgl(k) + beta21(ie)*ct(j)*ctgl(k) &
300 + beta22(ie)*ctgl(i)*ctgl(k) + beta23(ie)*ctgl(i)*ct(j) &
301 + gamma2(ie)*ctgl(i)*ct(j)*ctgl(k) + delta2(ie)
303 scratch_dg_els(nel_dg_loc)%z_nq(ip) = alfa31(ie)*ctgl(i) + alfa32(ie)*ct(j) &
304 + alfa33(ie)*ctgl(k) + beta31(ie)*ct(j)*ctgl(k) &
305 + beta32(ie)*ctgl(i)*ctgl(k) + beta33(ie)*ctgl(i)*ct(j) &
306 + gamma3(ie)*ctgl(i)*ct(j)*ctgl(k) + delta3(ie)
308 dg_els(nel_dg_loc)%wx_pl(ip) = wwgl(i)
309 dg_els(nel_dg_loc)%wy_pl(ip) = 1.d0
310 dg_els(nel_dg_loc)%wz_pl(ip) = wwgl(k)
316 deallocate(ctgl,wwgl)
320 ne1 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(1 -1) +(1 -1) +1)
321 ne2 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(1 -1) +(nn -1) +1)
322 ne3 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(nn -1) +(nn -1) +1)
323 ne4 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(nn -1) +(1 -1) +1)
326 if ((i4count(ne1).ne.0) .and. (i4count(ne2).ne.0) .and. (i4count(ne3).ne.0) .and. (i4count(ne4).ne.0))
then
329 local_n_num(ne1),local_n_num(ne2), &
330 local_n_num(ne3),local_n_num(ne4), tag_dg_el, nload_dg, tag_ind)
332 if (tag_ind == 0) print*,
'ERROR IN GET_TAG_BC'
335 nel_dg_loc = nel_dg_loc +1
336 dg_els(nel_dg_loc)%ind_el = local_el_num(ie)
337 dg_els(nel_dg_loc)%face_el = 3
338 dg_els(nel_dg_loc)%mat = tag_mat(im)
339 dg_els(nel_dg_loc)%spct_deg = nn-1
340 dg_els(nel_dg_loc)%quad_rule =
nofqp
342 dg_els(nel_dg_loc)%proj_yn = tag_dg_yn(tag_ind)
343 dg_els(nel_dg_loc)%link = tag_dg_link(tag_ind)
344 dg_els(nel_dg_loc)%frac_yn = tag_dg_frc(tag_ind)
345 dg_els(nel_dg_loc)%zt = val_dg_frc(tag_ind,1)
346 dg_els(nel_dg_loc)%zn = val_dg_frc(tag_ind,2)
348 call make_normal(3,xs(ne1), xs(ne2), xs(ne3), xs(ne4), ys(ne1), ys(ne2), ys(ne3), ys(ne4), &
349 zs(ne1), zs(ne2), zs(ne3), zs(ne4), normal_x, normal_y, normal_z, 0, 0)
351 dg_els(nel_dg_loc)%nx = normal_x
352 dg_els(nel_dg_loc)%ny = normal_y
353 dg_els(nel_dg_loc)%nz = normal_z
355 allocate(ct(dg_els(nel_dg_loc)%quad_rule), ww(dg_els(nel_dg_loc)%quad_rule), &
356 dd(dg_els(nel_dg_loc)%quad_rule,dg_els(nel_dg_loc)%quad_rule))
358 call make_lgl_nw(dg_els(nel_dg_loc)%quad_rule, ct, ww, dd)
360 allocate(ctgl(dg_els(nel_dg_loc)%quad_rule), wwgl(dg_els(nel_dg_loc)%quad_rule))
362 call make_gl_nw(dg_els(nel_dg_loc)%quad_rule, ctgl, wwgl)
366 do j = 1, dg_els(nel_dg_loc)%quad_rule
367 do i = 1, dg_els(nel_dg_loc)%quad_rule
369 scratch_dg_els(nel_dg_loc)%x_nq(ip) = alfa11(ie)*ctgl(i) + alfa12(ie)*ctgl(j) &
370 + alfa13(ie)*ct(k) + beta11(ie)*ctgl(j)*ct(k) &
371 + beta12(ie)*ctgl(i)*ct(k) + beta13(ie)*ctgl(i)*ctgl(j) &
372 + gamma1(ie)*ctgl(i)*ctgl(j)*ct(k) + delta1(ie)
374 scratch_dg_els(nel_dg_loc)%y_nq(ip) = alfa21(ie)*ctgl(i) + alfa22(ie)*ctgl(j) &
375 + alfa23(ie)*ct(k) + beta21(ie)*ctgl(j)*ct(k) &
376 + beta22(ie)*ctgl(i)*ct(k) + beta23(ie)*ctgl(i)*ctgl(j) &
377 + gamma2(ie)*ctgl(i)*ctgl(j)*ct(k) + delta2(ie)
379 scratch_dg_els(nel_dg_loc)%z_nq(ip) = alfa31(ie)*ctgl(i) + alfa32(ie)*ctgl(j) &
380 + alfa33(ie)*ct(k) + beta31(ie)*ctgl(j)*ct(k) &
381 + beta32(ie)*ctgl(i)*ct(k) + beta33(ie)*ctgl(i)*ctgl(j) &
382 + gamma3(ie)*ctgl(i)*ctgl(j)*ct(k) + delta3(ie)
385 dg_els(nel_dg_loc)%wx_pl(ip) = wwgl(i)
386 dg_els(nel_dg_loc)%wy_pl(ip) = wwgl(j)
387 dg_els(nel_dg_loc)%wz_pl(ip) = 1.d0
393 deallocate(ctgl,wwgl)
398 ne1 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(1 -1) +(nn -1) +1)
399 ne2 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(nn -1) +(nn -1) +1)
400 ne3 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(nn -1) +(nn -1) +1)
401 ne4 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(1 -1) +(nn -1) +1)
404 if ((i4count(ne1).ne.0) .and. (i4count(ne2).ne.0) .and. (i4count(ne3).ne.0) .and. (i4count(ne4).ne.0))
then
407 local_n_num(ne1),local_n_num(ne2), &
408 local_n_num(ne3),local_n_num(ne4), tag_dg_el, nload_dg, tag_ind)
410 if (tag_ind == 0) print*,
'ERROR IN GET_TAG_BC'
412 nel_dg_loc = nel_dg_loc +1
413 dg_els(nel_dg_loc)%ind_el = local_el_num(ie)
414 dg_els(nel_dg_loc)%face_el = 4
415 dg_els(nel_dg_loc)%mat = tag_mat(im)
416 dg_els(nel_dg_loc)%spct_deg = nn-1
417 dg_els(nel_dg_loc)%quad_rule =
nofqp
419 dg_els(nel_dg_loc)%proj_yn = tag_dg_yn(tag_ind)
420 dg_els(nel_dg_loc)%link = tag_dg_link(tag_ind)
421 dg_els(nel_dg_loc)%frac_yn = tag_dg_frc(tag_ind)
422 dg_els(nel_dg_loc)%zt = val_dg_frc(tag_ind,1)
423 dg_els(nel_dg_loc)%zn = val_dg_frc(tag_ind,2)
425 call make_normal(4,xs(ne1), xs(ne2), xs(ne3), xs(ne4), ys(ne1), ys(ne2), ys(ne3), ys(ne4), &
426 zs(ne1), zs(ne2), zs(ne3), zs(ne4), normal_x, normal_y, normal_z, 0, 0)
428 dg_els(nel_dg_loc)%nx = normal_x
429 dg_els(nel_dg_loc)%ny = normal_y
430 dg_els(nel_dg_loc)%nz = normal_z
432 allocate(ct(dg_els(nel_dg_loc)%quad_rule),ww(dg_els(nel_dg_loc)%quad_rule), &
433 dd(dg_els(nel_dg_loc)%quad_rule,dg_els(nel_dg_loc)%quad_rule))
435 call make_lgl_nw(dg_els(nel_dg_loc)%quad_rule, ct, ww, dd)
437 allocate(ctgl(dg_els(nel_dg_loc)%quad_rule),wwgl(dg_els(nel_dg_loc)%quad_rule))
439 call make_gl_nw(dg_els(nel_dg_loc)%quad_rule, ctgl, wwgl)
442 do k = 1, dg_els(nel_dg_loc)%quad_rule
443 do j = 1, dg_els(nel_dg_loc)%quad_rule
444 do i = dg_els(nel_dg_loc)%quad_rule, dg_els(nel_dg_loc)%quad_rule
446 scratch_dg_els(nel_dg_loc)%x_nq(ip) = alfa11(ie)*ct(i) + alfa12(ie)*ctgl(j) &
447 + alfa13(ie)*ctgl(k) + beta11(ie)*ctgl(j)*ctgl(k) &
448 + beta12(ie)*ct(i)*ctgl(k) + beta13(ie)*ct(i)*ctgl(j) &
449 + gamma1(ie)*ct(i)*ctgl(j)*ctgl(k) + delta1(ie)
451 scratch_dg_els(nel_dg_loc)%y_nq(ip) = alfa21(ie)*ct(i) + alfa22(ie)*ctgl(j) &
452 + alfa23(ie)*ctgl(k) + beta21(ie)*ctgl(j)*ctgl(k) &
453 + beta22(ie)*ct(i)*ctgl(k) + beta23(ie)*ct(i)*ctgl(j) &
454 + gamma2(ie)*ct(i)*ctgl(j)*ctgl(k) + delta2(ie)
456 scratch_dg_els(nel_dg_loc)%z_nq(ip) = alfa31(ie)*ct(i) + alfa32(ie)*ctgl(j) &
457 + alfa33(ie)*ctgl(k) + beta31(ie)*ctgl(j)*ctgl(k) &
458 + beta32(ie)*ct(i)*ctgl(k) + beta33(ie)*ct(i)*ctgl(j) &
459 + gamma3(ie)*ct(i)*ctgl(j)*ctgl(k) + delta3(ie)
461 dg_els(nel_dg_loc)%wx_pl(ip) = 1.d0
462 dg_els(nel_dg_loc)%wy_pl(ip) = wwgl(j)
463 dg_els(nel_dg_loc)%wz_pl(ip) = wwgl(k)
469 deallocate(ctgl,wwgl)
474 ne1 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(nn -1) +(1 -1) +1)
475 ne2 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(nn -1) +(nn -1) +1)
476 ne3 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(nn -1) +(nn -1) +1)
477 ne4 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(nn -1) +(1 -1) +1)
480 if ((i4count(ne1).ne.0) .and. (i4count(ne2).ne.0) .and. (i4count(ne3).ne.0) .and. (i4count(ne4).ne.0))
then
483 local_n_num(ne1),local_n_num(ne2), &
484 local_n_num(ne3),local_n_num(ne4), tag_dg_el, nload_dg, tag_ind)
486 if (tag_ind == 0) print*,
'ERROR IN GET_TAG_BC'
488 nel_dg_loc = nel_dg_loc +1
489 dg_els(nel_dg_loc)%ind_el = local_el_num(ie)
490 dg_els(nel_dg_loc)%face_el = 5
491 dg_els(nel_dg_loc)%mat = tag_mat(im)
492 dg_els(nel_dg_loc)%spct_deg = nn-1
493 dg_els(nel_dg_loc)%quad_rule =
nofqp
495 dg_els(nel_dg_loc)%proj_yn = tag_dg_yn(tag_ind)
496 dg_els(nel_dg_loc)%link = tag_dg_link(tag_ind)
497 dg_els(nel_dg_loc)%frac_yn = tag_dg_frc(tag_ind)
498 dg_els(nel_dg_loc)%zt = val_dg_frc(tag_ind,1)
499 dg_els(nel_dg_loc)%zn = val_dg_frc(tag_ind,2)
501 call make_normal(5,xs(ne1), xs(ne2), xs(ne3), xs(ne4), ys(ne1), ys(ne2), ys(ne3), ys(ne4), &
502 zs(ne1), zs(ne2), zs(ne3), zs(ne4), normal_x, normal_y, normal_z, 0, 0)
504 dg_els(nel_dg_loc)%nx = normal_x
505 dg_els(nel_dg_loc)%ny = normal_y
506 dg_els(nel_dg_loc)%nz = normal_z
509 allocate(ct(dg_els(nel_dg_loc)%quad_rule), ww(dg_els(nel_dg_loc)%quad_rule), &
510 dd(dg_els(nel_dg_loc)%quad_rule,dg_els(nel_dg_loc)%quad_rule))
512 call make_lgl_nw(dg_els(nel_dg_loc)%quad_rule, ct, ww, dd)
514 allocate(ctgl(dg_els(nel_dg_loc)%quad_rule),wwgl(dg_els(nel_dg_loc)%quad_rule))
516 call make_gl_nw(dg_els(nel_dg_loc)%quad_rule, ctgl, wwgl)
518 do k = 1, dg_els(nel_dg_loc)%quad_rule
519 do j = dg_els(nel_dg_loc)%quad_rule, dg_els(nel_dg_loc)%quad_rule
520 do i = 1, dg_els(nel_dg_loc)%quad_rule
522 scratch_dg_els(nel_dg_loc)%x_nq(ip) = alfa11(ie)*ctgl(i) + alfa12(ie)*ct(j) &
523 + alfa13(ie)*ctgl(k) + beta11(ie)*ct(j)*ctgl(k) &
524 + beta12(ie)*ctgl(i)*ctgl(k) + beta13(ie)*ctgl(i)*ct(j) &
525 + gamma1(ie)*ctgl(i)*ct(j)*ctgl(k) + delta1(ie)
527 scratch_dg_els(nel_dg_loc)%y_nq(ip) = alfa21(ie)*ctgl(i) + alfa22(ie)*ct(j) &
528 + alfa23(ie)*ctgl(k) + beta21(ie)*ct(j)*ctgl(k) &
529 + beta22(ie)*ctgl(i)*ctgl(k) + beta23(ie)*ctgl(i)*ct(j) &
530 + gamma2(ie)*ctgl(i)*ct(j)*ctgl(k) + delta2(ie)
532 scratch_dg_els(nel_dg_loc)%z_nq(ip) = alfa31(ie)*ctgl(i) + alfa32(ie)*ct(j) &
533 + alfa33(ie)*ctgl(k) + beta31(ie)*ct(j)*ctgl(k) &
534 + beta32(ie)*ctgl(i)*ctgl(k) + beta33(ie)*ctgl(i)*ct(j) &
535 + gamma3(ie)*ctgl(i)*ct(j)*ctgl(k) + delta3(ie)
537 dg_els(nel_dg_loc)%wx_pl(ip) = wwgl(i)
538 dg_els(nel_dg_loc)%wy_pl(ip) = 1.d0
539 dg_els(nel_dg_loc)%wz_pl(ip) = wwgl(k)
545 deallocate(ctgl,wwgl)
550 ne1 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(1 -1) +(1 -1) +1)
551 ne2 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(1 -1) +(nn -1) +1)
552 ne3 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(nn -1) +(nn -1) +1)
553 ne4 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(nn -1) +(1 -1) +1)
556 if ((i4count(ne1).ne.0) .and. (i4count(ne2).ne.0) .and. (i4count(ne3).ne.0) .and. (i4count(ne4).ne.0))
then
559 local_n_num(ne1),local_n_num(ne2), &
560 local_n_num(ne3),local_n_num(ne4), tag_dg_el, nload_dg, tag_ind)
562 if (tag_ind == 0) print*,
'ERROR IN GET_TAG_BC'
564 nel_dg_loc = nel_dg_loc + 1
565 dg_els(nel_dg_loc)%ind_el = local_el_num(ie)
566 dg_els(nel_dg_loc)%face_el = 6
567 dg_els(nel_dg_loc)%mat = tag_mat(im)
568 dg_els(nel_dg_loc)%spct_deg = nn-1
569 dg_els(nel_dg_loc)%quad_rule =
nofqp
571 dg_els(nel_dg_loc)%proj_yn = tag_dg_yn(tag_ind)
572 dg_els(nel_dg_loc)%link = tag_dg_link(tag_ind)
573 dg_els(nel_dg_loc)%frac_yn = tag_dg_frc(tag_ind)
574 dg_els(nel_dg_loc)%zt = val_dg_frc(tag_ind,1)
575 dg_els(nel_dg_loc)%zn = val_dg_frc(tag_ind,2)
577 call make_normal(6,xs(ne1), xs(ne2), xs(ne3), xs(ne4), ys(ne1), ys(ne2), ys(ne3), ys(ne4), &
578 zs(ne1), zs(ne2), zs(ne3), zs(ne4), normal_x, normal_y, normal_z, 0, 0)
580 dg_els(nel_dg_loc)%nx = normal_x
581 dg_els(nel_dg_loc)%ny = normal_y
582 dg_els(nel_dg_loc)%nz = normal_z
584 allocate(ct(dg_els(nel_dg_loc)%quad_rule),ww(dg_els(nel_dg_loc)%quad_rule), &
585 dd(dg_els(nel_dg_loc)%quad_rule,dg_els(nel_dg_loc)%quad_rule))
587 call make_lgl_nw(dg_els(nel_dg_loc)%quad_rule, ct, ww, dd)
589 allocate(ctgl(dg_els(nel_dg_loc)%quad_rule), wwgl(dg_els(nel_dg_loc)%quad_rule))
591 call make_gl_nw(dg_els(nel_dg_loc)%quad_rule, ctgl, wwgl)
594 do k = dg_els(nel_dg_loc)%quad_rule,dg_els(nel_dg_loc)%quad_rule
595 do j = 1,dg_els(nel_dg_loc)%quad_rule
596 do i = 1,dg_els(nel_dg_loc)%quad_rule
598 scratch_dg_els(nel_dg_loc)%x_nq(ip) = alfa11(ie)*ctgl(i) + alfa12(ie)*ctgl(j) &
599 + alfa13(ie)*ct(k) + beta11(ie)*ctgl(j)*ct(k) &
600 + beta12(ie)*ctgl(i)*ct(k) + beta13(ie)*ctgl(i)*ctgl(j) &
601 + gamma1(ie)*ctgl(i)*ctgl(j)*ct(k) + delta1(ie)
603 scratch_dg_els(nel_dg_loc)%y_nq(ip) = alfa21(ie)*ctgl(i) + alfa22(ie)*ctgl(j) &
604 + alfa23(ie)*ct(k) + beta21(ie)*ctgl(j)*ct(k) &
605 + beta22(ie)*ctgl(i)*ct(k) + beta23(ie)*ctgl(i)*ctgl(j) &
606 + gamma2(ie)*ctgl(i)*ctgl(j)*ct(k) + delta2(ie)
608 scratch_dg_els(nel_dg_loc)%z_nq(ip) = alfa31(ie)*ctgl(i) + alfa32(ie)*ctgl(j) &
609 + alfa33(ie)*ct(k) + beta31(ie)*ctgl(j)*ct(k) &
610 + beta32(ie)*ctgl(i)*ct(k) + beta33(ie)*ctgl(i)*ctgl(j) &
611 + gamma3(ie)*ctgl(i)*ctgl(j)*ct(k) + delta3(ie)
613 dg_els(nel_dg_loc)%wx_pl(ip) = wwgl(i)
614 dg_els(nel_dg_loc)%wy_pl(ip) = wwgl(j)
615 dg_els(nel_dg_loc)%wz_pl(ip) = 1.d0
621 deallocate(ctgl,wwgl)
631 filempi =
'NORM000000.mpi'
634 if (mpi_id .lt. 10)
then
635 write(filempi(10:10),
'(i1)') mpi_id
636 else if (mpi_id .lt. 100)
then
637 write(filempi(9:10),
'(i2)') mpi_id
638 else if (mpi_id .lt. 1000)
then
639 write(filempi(8:10),
'(i3)') mpi_id
640 else if (mpi_id .lt. 10000)
then
641 write(filempi(7:10),
'(i4)') mpi_id
642 else if (mpi_id .lt. 100000)
then
643 write(filempi(6:10),
'(i5)') mpi_id
644 else if (mpi_id .lt. 1000000)
then
645 write(filempi(5:10),
'(i6)') mpi_id
648 if(len_trim(mpi_file) .ne. 70)
then
649 filempi_new = mpi_file(1:len_trim(mpi_file)) //
'/' // filempi
651 filempi_new = filempi
655 open(unitmpi,file=filempi_new)
656 write(unitmpi,*) nel_dg_loc
658 write(unitmpi,
"(1I2,1X,1I12,1X,1I2,1X,3(1X,ES12.4),1X,1I2,2(1X,ES12.4),1X,1I3)") &
659 dg_els(i)%mat, dg_els(i)%ind_el, dg_els(i)%face_el, &
660 dg_els(i)%nx, dg_els(i)%ny, dg_els(i)%nz, dg_els(i)%frac_yn, dg_els(i)%zt, dg_els(i)%zn, dg_els(i)%link
664 call mpi_barrier(mpi_comm, mpi_ierr)
668 if(mpi_id .eq. 0)
then
670 filename =
'NORMALL.input'
672 open(unitname,file=filename)
673 write(unitname,*) nel_dg_glo
676 allocate(mat_el_face(nel_dg_glo,4), normalxyz(nel_dg_glo,3), zt_glo(nel_dg_glo), zn_glo(nel_dg_glo), &
677 link_glo(nel_dg_glo))
682 filempi =
'NORM000000.mpi'
684 if (i-1 .lt. 10)
then
685 write(filempi(10:10),
'(i1)') i-1
686 else if (i-1 .lt. 100)
then
687 write(filempi(9:10),
'(i2)') i-1
688 else if (i-1 .lt. 1000)
then
689 write(filempi(8:10),
'(i3)') i-1
690 else if (i-1 .lt. 10000)
then
691 write(filempi(7:10),
'(i4)') i-1
692 else if (i-1 .lt. 100000)
then
693 write(filempi(6:10),
'(i5)') i-1
694 else if (i-1 .lt. 1000000)
then
695 write(filempi(5:10),
'(i6)') i-1
698 if(len_trim(mpi_file) .ne. 70)
then
699 filempi_new = mpi_file(1:len_trim(mpi_file)) //
'/' // filempi
701 filempi_new = filempi
704 open(unitmpi,file=filempi_new)
705 read(unitmpi,*) nel_dg_proc
707 do j = 1, nel_dg_proc
708 read(unitmpi,*) mat_el_face(k,1),mat_el_face(k,2), mat_el_face(k,3), &
709 normalxyz(k,1), normalxyz(k,2), normalxyz(k,3), mat_el_face(k,4), zt_glo(k), zn_glo(k), link_glo(k)
718 write(unitname,*) mat_el_face(j,1),mat_el_face(j,2), mat_el_face(j,3), &
719 normalxyz(j,1), normalxyz(j,2), normalxyz(j,3), mat_el_face(j,4), zt_glo(j), zn_glo(j), link_glo(j)
722 deallocate(mat_el_face, normalxyz, zn_glo, zt_glo)
729 call mpi_barrier(mpi_comm, mpi_ierr)