1!$Id:$ 2 subroutine vblke(nr,ns,nt,ix,ni,ne,nf,nen1,mat,ntyp,dlayer,ilr) 3 4! * * F E A P * * A Finite Element Analysis Program 5 6!.... Copyright (c) 1984-2017: Regents of the University of California 7! All rights reserved 8 9!-----[--.----+----.----+----.-----------------------------------------] 10! Purpose: Generate a block of 3-d 8-node brick elements 11 12! Inputs: 13! nr - Number elements in 1-local coordinate dir. 14! ns - Number elements in 2-local coordinate dir. 15! nt - Number elements in 3-local coordinate dir. 16! ni - Initial node number for block 17! ne - Initial element number for block 18! nf - Final element number for block 19! nen1 - Dimension of ix array 20! mat - Material set number for block 21! ntyp - Element type for generations 22! 10: 8-node hexahedral elements 23! 11: 4-node tetrahedral elements 24 25! Outputs: 26! ix(*) - Element nodal connection list for block 27!-----[--.----+----.----+----.-----------------------------------------] 28 29 implicit none 30 31 include 'cdata.h' 32 include 'cdat2.h' 33 include 'iofile.h' 34 include 'trdata.h' 35 36 integer ni,nf,ne,nen1,mat,ma,ntyp 37 integer nr,ns,nt,nrs,i,j,k,l,m,n,dlayer 38 39 integer ix(nen1,*),iq(8),it(4),ilr(*),nd(8),itc(4,6) 40 41 save 42 43 data itc / 1,2,4,5, 2,3,4,8, 2,4,5,8, 44 & 2,6,3,8, 3,6,7,8, 5,6,2,8 / 45 46! Check generation order 47 48 do i = 1,4 49 it(i) = i 50 end do ! i 51 if(trdet.gt.0.0d0) then 52 do i = 1,8 53 iq(i ) = i 54 end do ! i 55 else 56 do i = 1,4 57 iq(i+4) = i 58 iq(i ) = i+4 59 end do ! i 60 i = it(2) 61 it(2) = it(3) 62 it(3) = i 63 endif 64 65 nrs = nr*ns 66 nd(1) = -1 67 nd(2) = 0 68 nd(3) = nr 69 nd(4) = nr - 1 70 nd(5) = nrs - 1 71 nd(6) = nrs 72 nd(7) = nrs + nr 73 nd(8) = nrs + nr - 1 74 75! Compute element connections 76 77 if(dlayer.ge.0) then 78 ma = mat 79 endif 80 nf = ne - 1 81 do k = 1,nt-1 82 if(dlayer.eq.3) then 83 ma = ilr(k) 84 endif 85 do j = 1,ns-1 86 if(dlayer.eq.2) then 87 ma = ilr(j) 88 endif 89 n = nr*(j-1 + ns*(k-1)) + ni 90 do i = 1,nr-1 91 if(dlayer.eq.1) then 92 ma = ilr(i) 93 endif 94 n = n + 1 95 96! Hexahedral elements 97 98 if(ntyp.eq.10) then 99 nf = nf + 1 100 ix(nen1,nf) = ma 101 ix(nen+7,nf) = netyp 102 ix(nen+8,nf) = 1 103 do m = 1,8 104 ix(iq(m),nf) = n + nd(m) 105 end do ! m 106 107! Tetrahedral elements 108 109 elseif(ntyp.eq.11) then 110 do l = 1,6 111 nf = nf + 1 112 ix(nen1,nf) = ma 113 ix(nen+7,nf) = netyp 114 ix(nen+8,nf) = 1 115 do m = 1,4 116 ix(it(m),nf) = n + nd(itc(m,l)) 117 end do ! m 118 end do ! l 119 endif 120 121 end do ! i 122 end do ! j 123 end do ! k 124 125 end 126