31 numnp,numel,mattype,nummattype)
47 REAL*8,
DIMENSION(1:3,1:numnp) :: coor
49 INTEGER,
DIMENSION(1:8,1:NumEl) :: elconnvol
50 INTEGER,
DIMENSION(1:NumEl) :: mattype
54 INTEGER :: n1,n2,n3,n4,n5,n6,n7,n8
56 REAL*8,
DIMENSION(1:3,1:8) ::
coord
58 REAL*8 :: element_volume
60 INTEGER :: ielem, imat, igpt
62 REAL*8 ::
n(8), dn(8,3), jac(3,3), jacinv(3,3), nkn(8,8), dmat(3,3),bmat(8,3)
65 REAL*8,
DIMENSION(1:3,1:8) :: ri = reshape( &
66 (/-0.577350269189626,-0.577350269189626,-0.577350269189626, &
67 0.577350269189626,-0.577350269189626,-0.577350269189626, &
68 0.577350269189626, 0.577350269189626,-0.577350269189626, &
69 -0.577350269189626, 0.577350269189626,-0.577350269189626, &
70 -0.577350269189626,-0.577350269189626, 0.577350269189626, &
71 0.577350269189626,-0.577350269189626, 0.577350269189626, &
72 0.577350269189626, 0.577350269189626, 0.577350269189626, &
73 -0.577350269189626, 0.577350269189626, 0.577350269189626/),(/3,8/) )
78 INTEGER,
parameter :: ngpts = 8
84 REAL(kind=wp) :: tempval
88 CALL
ktnumnnz(numnp,numel,elconnvol,nnz_kt)
89 ALLOCATE(rp_kt(1:gnumnp+1))
90 ALLOCATE(cval_kt(1:nnz_kt))
91 ALLOCATE(aval_kt(1:nnz_kt))
97 CALL
ktinitcrs(numnp,numel,elconnvol,nnz_kt,rp_kt,cval_kt,aval_kt)
104 n1 = elconnvol(1,ielem)
105 n2 = elconnvol(2,ielem)
106 n3 = elconnvol(3,ielem)
107 n4 = elconnvol(4,ielem)
108 n5 = elconnvol(5,ielem)
109 n6 = elconnvol(6,ielem)
110 n7 = elconnvol(7,ielem)
111 n8 = elconnvol(8,ielem)
115 coord(1,1) = coor(1,n1)
116 coord(2,1) = coor(2,n1)
117 coord(3,1) = coor(3,n1)
119 coord(1,2) = coor(1,n2)
120 coord(2,2) = coor(2,n2)
121 coord(3,2) = coor(3,n2)
123 coord(1,3) = coor(1,n3)
124 coord(2,3) = coor(2,n3)
125 coord(3,3) = coor(3,n3)
127 coord(1,4) = coor(1,n4)
128 coord(2,4) = coor(2,n4)
129 coord(3,4) = coor(3,n4)
131 coord(1,5) = coor(1,n5)
132 coord(2,5) = coor(2,n5)
133 coord(3,5) = coor(3,n5)
135 coord(1,6) = coor(1,n6)
136 coord(2,6) = coor(2,n6)
137 coord(3,6) = coor(3,n6)
139 coord(1,7) = coor(1,n7)
140 coord(2,7) = coor(2,n7)
141 coord(3,7) = coor(3,n7)
143 coord(1,8) = coor(1,n8)
144 coord(2,8) = coor(2,n8)
145 coord(3,8) = coor(3,n8)
148 imat = mattype(ielem)
165 jacinv(1:3,1:3) = 0.0
169 element_volume = element_volume + detj
174 bmat(
i,:) = matmul(dn(
i,:),jacinv)
184 nkn(
i,
j) = nkn(
i,
j) + dmat(
k,l) * bmat(
i,
k) * bmat(
j,
k) *detj
203 dof1 = local2global(elconnvol(
i,ielem))
209 dof2 = local2global(elconnvol(
j,ielem))
219 IF (tempval /= 0.0)
THEN
221 DO m = rp_kt(dof1)+1, rp_kt(dof1+1)
222 IF (cval_kt(
m) == dof2-1)
THEN
223 aval_kt(
m) = aval_kt(
m) + tempval
229 if(counter==0)
print*,
'WARNING: Unable to add value to K matrix at (',dof1,
',',dof2,
') on processor ',myid,rp_kt(dof1)+1,rp_kt(dof1+1)
231 print*,myid,
'ZERO DETECTED IN LOCAL STIFFNESS MATRIX!',dof1,dof2
240 ALLOCATE(rp_temp(1:gnumnp+1),cval_temp(1:nnz_kt),aval_temp(1:nnz_kt))
246 DEALLOCATE(rp_kt,cval_kt,aval_kt)
subroutine ktnumnnz(NumNp, NumEl, ElConnVol, nnz)
int coord[NPANE][NROW *NCOL][3]
subroutine ktinitcrs(NumNp, NumEl, ElConnVol, nnz, rp, cval, aval)
subroutine locthermstiff_v3d8(coor, ElConnVol, dmat, numnp, NumEL, MatType, NumMatType)
subroutine get_jacobien(coords, mcrd, nnode, dn, jac, jacinv, detj, error)
subroutine get_shape(r, n, dn, igpt)