84 coor, nodes, mattype, ri, rho ,elconnvol )
93 INTEGER :: numel, numnp, nummat
94 INTEGER,
DIMENSION(1:NumEl) :: mattype
95 INTEGER,
DIMENSION(1:8,1:NumEl) :: nodes
96 REAL(KIND=wp),
DIMENSION(1:3,1:NumNP) :: coor
97 REAL(KIND=wp),
DIMENSION(1:3,1:8) :: ri
98 REAL(KIND=wp),
DIMENSION(1:NumMat) :: rho
99 INTEGER,
DIMENSION(1:8,1:NumEl) :: elconnvol
102 REAL(kind=wp),
DIMENSION(1:8) ::
n
103 REAL(kind=wp),
DIMENSION(1:8,1:3) :: dn
104 REAL(kind=wp),
DIMENSION(1:8,1:8) :: ntn
110 INTEGER :: dof1, dof2, gdof1, gdof2, ldof1, ldof2
111 REAL(kind=wp) :: tempval
113 REAL(kind=wp) :: element_volume
114 REAL(kind=wp),
DIMENSION(1:3,1:3) :: jac, jacinv
115 REAL(kind=wp) :: detj
117 INTEGER :: n1,n2,n3,n4,n5,n6,n7,n8
118 REAL(kind=wp),
DIMENSION(1:3,1:8) ::
coord
121 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: rp, cval
122 REAL(KIND=wp),
ALLOCATABLE,
DIMENSION(:) :: aval
126 ALLOCATE(rp(1:3*gnumnp+1))
147 coord(1,1) = coor(1,n1)
148 coord(2,1) = coor(2,n1)
149 coord(3,1) = coor(3,n1)
150 coord(1,2) = coor(1,n2)
151 coord(2,2) = coor(2,n2)
152 coord(3,2) = coor(3,n2)
153 coord(1,3) = coor(1,n3)
154 coord(2,3) = coor(2,n3)
155 coord(3,3) = coor(3,n3)
156 coord(1,4) = coor(1,n4)
157 coord(2,4) = coor(2,n4)
158 coord(3,4) = coor(3,n4)
159 coord(1,5) = coor(1,n5)
160 coord(2,5) = coor(2,n5)
161 coord(3,5) = coor(3,n5)
162 coord(1,6) = coor(1,n6)
163 coord(2,6) = coor(2,n6)
164 coord(3,6) = coor(3,n6)
165 coord(1,7) = coor(1,n7)
166 coord(2,7) = coor(2,n7)
167 coord(3,7) = coor(3,n7)
168 coord(1,8) = coor(1,n8)
169 coord(2,8) = coor(2,n8)
170 coord(3,8) = coor(3,n8)
173 imat = mattype(ielem)
189 jacinv(1:3,1:3) = 0.0
191 element_volume = element_volume + detj
196 ntn(
i,
j) = ntn(
i,
j) + rho(imat)*
n(
i)*
n(
j)*detj
205 gdof1 = 3 * local2global(elconnvol(
i,ielem)) - 3 + dof1
209 gdof2 = 3 * local2global(elconnvol(
j,ielem)) - 3 + dof1
212 IF ( ldof1 <= ldof2 )
THEN
213 tempval = ntn(ldof1,ldof2)
215 tempval = ntn(ldof2,ldof1)
218 IF ( tempval == 0.0 )
THEN
219 print*,
'ZERO DETECTED IN LOCAL MASS MATRIX!',gdof1,gdof2,myid
224 CALL
comp_row_addval(3*gnumnp,3*gnumnp,nnz,1,rp,cval,aval,gdof1,gdof2,tempval)
226 IF (nnzold /= nnz)
THEN
229 ALLOCATE(cval(1:nnz))
230 ALLOCATE(aval(1:nnz))
236 DEALLOCATE(cval_temp)
237 DEALLOCATE(aval_temp)
247 ALLOCATE(rp_temp(1:3*gnumnp+1))
248 ALLOCATE(cval_temp(1:nnz_temp))
249 ALLOCATE(aval_temp(1:nnz_temp))
int coord[NPANE][NROW *NCOL][3]
subroutine get_jacobien(coords, mcrd, nnode, dn, jac, jacinv, detj, error)
subroutine implicit_v3d8_mass_consistent(NumEl, NumNP, NumMat, coor, nodes, MatType, ri, rho, ElConnVol)
subroutine get_shape(r, n, dn, igpt)
subroutine comp_row_addval(ndim, nrows, nnz, nstart, rp, cval, aval, ipos, jpos, val)