CalculiX  2.13
A Free Software Three-Dimensional Structural Finite Element Program
nodestiedface.f File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine nodestiedface (tieset, ntie, ipkon, kon, lakon, set, istartset, iendset, ialset, nset, ifaceslave, istartfield, iendfield, ifield, nconf, ncone, kind)
 

Function/Subroutine Documentation

◆ nodestiedface()

subroutine nodestiedface ( character*81, dimension(3,*)  tieset,
integer  ntie,
integer, dimension(*)  ipkon,
integer, dimension(*)  kon,
character*8, dimension(*)  lakon,
character*81, dimension(*)  set,
integer, dimension(*)  istartset,
integer, dimension(*)  iendset,
integer, dimension(*)  ialset,
integer  nset,
integer, dimension(*)  ifaceslave,
integer, dimension(*)  istartfield,
integer, dimension(*)  iendfield,
integer, dimension(*)  ifield,
integer  nconf,
integer  ncone,
character*1  kind 
)
22 !
23 ! identifies slave nodes in tied slave faces
24 !
25  implicit none
26 !
27  character*1 kind
28  character*8 lakon(*)
29  character*81 tieset(3,*),slavset,set(*)
30 !
31  integer ntie,nset,istartset(*),iendset(*),ialset(*),ifree,
32  & ipkon(*),kon(*),node,ifaceslave(*),i,j,k,l,
33  & ifaceq(8,6),ifacet(6,4),ilength,id,ncone,
34  & ifacew1(4,5),ifacew2(8,5),nelem,jface,indexe,
35  & nnodelem,nface,nope,nodef(8),
36  & ifield(*),istartfield(*),iendfield(*),nconf
37 !
38 ! nodes per face for hex elements
39 !
40  data ifaceq /4,3,2,1,11,10,9,12,
41  & 5,6,7,8,13,14,15,16,
42  & 1,2,6,5,9,18,13,17,
43  & 2,3,7,6,10,19,14,18,
44  & 3,4,8,7,11,20,15,19,
45  & 4,1,5,8,12,17,16,20/
46 !
47 ! nodes per face for tet elements
48 !
49  data ifacet /1,3,2,7,6,5,
50  & 1,2,4,5,9,8,
51  & 2,3,4,6,10,9,
52  & 1,4,3,8,10,7/
53 !
54 ! nodes per face for linear wedge elements
55 !
56  data ifacew1 /1,3,2,0,
57  & 4,5,6,0,
58  & 1,2,5,4,
59  & 2,3,6,5,
60  & 3,1,4,6/
61 !
62 ! nodes per face for quadratic wedge elements
63 !
64  data ifacew2 /1,3,2,9,8,7,0,0,
65  & 4,5,6,10,11,12,0,0,
66  & 1,2,5,4,7,14,10,13,
67  & 2,3,6,5,8,15,11,14,
68  & 3,1,4,6,9,13,12,15/
69 !
70  ifree=1
71 !
72  do i=1,ntie
73  ilength=0
74  if(tieset(1,i)(81:81).ne.kind) cycle
75  if(ifaceslave(i).eq.0) cycle
76  slavset=tieset(2,i)
77  do j=1,nset
78  if(set(j).eq.slavset) exit
79  enddo
80 !
81  istartfield(i)=ifree
82  do j=istartset(j),iendset(j)
83  ncone=ncone-1
84  nelem=int(ialset(j)/10.)
85  jface=ialset(j)-10*nelem
86 !
87  indexe=ipkon(nelem)
88  if(lakon(nelem)(4:4).eq.'2') then
89  nnodelem=8
90  nface=6
91  elseif(lakon(nelem)(4:4).eq.'8') then
92  nnodelem=4
93  nface=6
94  elseif(lakon(nelem)(4:5).eq.'10') then
95  nnodelem=6
96  nface=4
97  elseif(lakon(nelem)(4:4).eq.'4') then
98  nnodelem=3
99  nface=4
100  elseif(lakon(nelem)(4:5).eq.'15') then
101  if(jface.le.2) then
102  nnodelem=6
103  else
104  nnodelem=8
105  endif
106  nface=5
107  nope=15
108  elseif(lakon(nelem)(4:4).eq.'6') then
109  if(jface.le.2) then
110  nnodelem=3
111  else
112  nnodelem=4
113  endif
114  nface=5
115  nope=6
116  else
117  cycle
118  endif
119 !
120 ! determining the nodes of the face
121 !
122  if(nface.eq.4) then
123  do k=1,nnodelem
124  nodef(k)=kon(indexe+ifacet(k,jface))
125  enddo
126  elseif(nface.eq.5) then
127  if(nope.eq.6) then
128  do k=1,nnodelem
129  nodef(k)=kon(indexe+ifacew1(k,jface))
130  enddo
131  elseif(nope.eq.15) then
132  do k=1,nnodelem
133  nodef(k)=kon(indexe+ifacew2(k,jface))
134  enddo
135  endif
136  elseif(nface.eq.6) then
137  do k=1,nnodelem
138  nodef(k)=kon(indexe+ifaceq(k,jface))
139  enddo
140  endif
141 !
142 ! inserting the nodes in ifield
143 !
144  do k=1,nnodelem
145  node=nodef(k)
146  call nident(ifield(istartfield(i)),node,ilength,id)
147  id=istartfield(i)+id-1
148  if(id.gt.istartfield(i)-1) then
149  if(ifield(id).eq.node) cycle
150  endif
151  do l=ifree,id+2,-1
152  ifield(l)=ifield(l-1)
153  enddo
154  ifield(id+1)=node
155  ifree=ifree+1
156  ilength=ilength+1
157  enddo
158  enddo
159  iendfield(i)=ifree-1
160  enddo
161 !
162  nconf=ifree-1
163 !
164  return
subroutine nident(x, px, n, id)
Definition: nident.f:26
Hosted by OpenAircraft.com, (Michigan UAV, LLC)