42 cs_loc, cs_nnz_loc, sdeg_mat, nmat, &
44 xr_mlst, yr_mlst, zr_mlst, &
46 SDOFinputab, SDOFinputdispl, mpi_np, &
51 integer*4 :: imon, ielem, ie, im, nn, k, j, i, is, in, iaz, sdof_num, ishift
52 integer*4 :: mpi_id, ne_loc, nmat, nnod_loc, cs_nnz_loc, mpi_np
54 integer*4,
dimension(0:cs_nnz_loc) :: cs_loc
55 integer*4,
dimension(sdof_num) :: elem_mlst
56 integer*4,
dimension(nmat) :: sdeg_mat
57 integer*4,
dimension(ne_loc) :: local_el_num
61 real*8,
dimension(:),
allocatable :: ct, ww
62 real*8,
dimension(:,:),
allocatable :: dd
63 real*8,
dimension(:,:,:),
allocatable :: ux_el, uy_el, uz_el
64 real*8,
dimension(3*nnod_loc) :: u2
65 real*8,
dimension(sdof_num) ::xr_mlst, yr_mlst, zr_mlst
66 real*8,
dimension(3*sdof_num) :: sdofinputab, sdofinputdispl, ub1, ub2, ub3
68 ub3(1:3*sdof_num)=ub2(1:3*sdof_num)
69 ub2(1:3*sdof_num)=ub1(1:3*sdof_num)
75 ielem = elem_mlst(imon)
78 im = cs_loc(cs_loc(ie -1) +0)
81 allocate(ct(nn),ww(nn),dd(nn,nn))
82 allocate(ux_el(nn,nn,nn),uy_el(nn,nn,nn),uz_el(nn,nn,nn))
89 is = nn*nn*(k -1) +nn*(j -1) +i
90 in = cs_loc(cs_loc(ie -1) + is)
92 iaz = 3*(in -1) +1; ux_el(i,j,k) = u2(iaz)
93 iaz = 3*(in -1) +2; uy_el(i,j,k) = u2(iaz)
94 iaz = 3*(in -1) +3; uz_el(i,j,k) = u2(iaz)
104 xr_mlst(imon),yr_mlst(imon),zr_mlst(imon),uxm)
106 xr_mlst(imon),yr_mlst(imon),zr_mlst(imon),uym)
108 xr_mlst(imon),yr_mlst(imon),zr_mlst(imon),uzm)
110 if (dabs(uxm).lt.1.0e-30) uxm = 0.0e+00
111 if (dabs(uym).lt.1.0e-30) uym = 0.0e+00
112 if (dabs(uzm).lt.1.0e-30) uzm = 0.0e+00
119 axm = (ub1(ishift+1) -2.0d0*ub2(ishift+1) +ub3(ishift+1)) / dt2
120 aym = (ub1(ishift+2) -2.0d0*ub2(ishift+2) +ub3(ishift+2)) / dt2
121 azm = (ub1(ishift+3) -2.0d0*ub2(ishift+3) +ub3(ishift+3)) / dt2
123 if (dabs(axm).lt.1.0e-30) axm = 0.0e+00
124 if (dabs(aym).lt.1.0e-30) aym = 0.0e+00
125 if (dabs(azm).lt.1.0e-30) azm = 0.0e+00
128 if (mpi_id .eq. (nmpi-1))
then
129 sdofinputab(3*imon-2)=axm
130 sdofinputab(3*imon-1)=aym
131 sdofinputab(3*imon)=azm
132 sdofinputdispl(3*imon-2)=uxm
133 sdofinputdispl(3*imon-1)=uym
134 sdofinputdispl(3*imon)=uzm
139 deallocate(ux_el,uy_el,uz_el)