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

Go to the source code of this file.

Functions/Subroutines

subroutine addizdofdload (nelemload, sideload, ipkon, kon, lakon, nactdof, izdof, nzdof, mi, iload, iznode, nznode, nk, imdnode, nmdnode)
 

Function/Subroutine Documentation

◆ addizdofdload()

subroutine addizdofdload ( integer, dimension(2,*)  nelemload,
character*20, dimension(*)  sideload,
integer, dimension(*)  ipkon,
integer, dimension(*)  kon,
character*8, dimension(*)  lakon,
integer, dimension(0:mi(2),*)  nactdof,
integer, dimension(*)  izdof,
integer  nzdof,
integer, dimension(*)  mi,
integer  iload,
integer, dimension(*)  iznode,
integer  nznode,
integer  nk,
integer, dimension(*)  imdnode,
integer  nmdnode 
)
21 !
22 ! adds the nodes belonging to a facial load to iznode, izdof
23 ! and to imdnode if user-defined load
24 ! (needed in dyna.c and steadystate.c)
25 !
26  implicit none
27 !
28  character*8 lakon(*),lakonl
29  character*20 sideload(*)
30 !
31  integer mi(*),nelemload(2,*),ipkon(*),kon(*),nactdof(0:mi(2),*),
32  & izdof(*),nzdof,iload,j,ii,nopes,node,indexe,jdof,ifaceq(8,6),
33  & ifacew(8,5),ifacet(7,4),ig,ielem,nope,iznode(*),nznode,
34  & nodebasis,nk,imdnode(*),nmdnode
35 !
36  data ifaceq /4,3,2,1,11,10,9,12,
37  & 5,6,7,8,13,14,15,16,
38  & 1,2,6,5,9,18,13,17,
39  & 2,3,7,6,10,19,14,18,
40  & 3,4,8,7,11,20,15,19,
41  & 4,1,5,8,12,17,16,20/
42  data ifacet /1,3,2,7,6,5,11,
43  & 1,2,4,5,9,8,12,
44  & 2,3,4,6,10,9,13,
45  & 1,4,3,8,10,7,14/
46  data ifacew /1,3,2,9,8,7,0,0,
47  & 4,5,6,10,11,12,0,0,
48  & 1,2,5,4,7,14,10,13,
49  & 2,3,6,5,8,15,11,14,
50  & 4,6,3,1,12,15,9,13/
51 !
52  ielem=nelemload(1,iload)
53  lakonl=lakon(ielem)
54  indexe=ipkon(ielem)
55 !
56  if(sideload(iload)(1:1).eq.'P') then
57  read(sideload(iload)(2:2),'(i1)') ig
58 !
59 ! surface pressure: number of nodes belonging to the face
60 !
61  if(lakonl(4:4).eq.'2') then
62  nopes=8
63  elseif(lakonl(4:4).eq.'8') then
64  nopes=4
65  elseif(lakonl(4:5).eq.'10') then
66  nopes=6
67  elseif(lakonl(4:4).eq.'4') then
68  nopes=3
69  elseif(lakonl(4:5).eq.'15') then
70  if(ig.le.2) then
71  nopes=6
72  else
73  nopes=8
74  endif
75  elseif(lakonl(4:4).eq.'6') then
76  if(ig.le.2) then
77  nopes=3
78  else
79  nopes=4
80  endif
81  endif
82 !
83  do ii=1,nopes
84  if((lakonl(4:4).eq.'2').or.(lakonl(4:4).eq.'8')) then
85  node=kon(indexe+ifaceq(ii,ig))
86  elseif((lakonl(4:5).eq.'10').or.(lakonl(4:4).eq.'4')) then
87  node=kon(indexe+ifacet(ii,ig))
88  elseif((lakonl(4:5).eq.'15').or.(lakonl(4:4).eq.'6')) then
89  node=kon(indexe+ifacew(ii,ig))
90  endif
91 !
92 ! adding the nodes in the basis sector to iznode
93 !
94  nodebasis=mod(node,nk)
95  call addimd(iznode,nznode,nodebasis)
96 !
97 ! user-defined load
98 !
99  if(sideload(iload)(3:4).eq.'NU') then
100  call addimd(imdnode,nmdnode,node)
101  endif
102 !
103  do j=1,3
104 !
105 ! C-convention!
106 !
107  jdof=nactdof(j,node)-1
108  if(jdof.gt.0) call addimd(izdof,nzdof,jdof)
109 c if(jdof.gt.-1) call addimd(izdof,nzdof,jdof)
110  enddo
111  enddo
112  elseif(sideload(iload)(1:1).eq.'B') then
113 !
114 ! volumetric load; number of nodes in the element
115 !
116  if(lakonl(4:4).eq.'2') then
117  nope=20
118  elseif(lakonl(4:4).eq.'8') then
119  nope=8
120  elseif(lakonl(4:5).eq.'10') then
121  nope=10
122  elseif(lakonl(4:4).eq.'4') then
123  nope=4
124  elseif(lakonl(4:5).eq.'15') then
125  nope=15
126  elseif(lakonl(4:4).eq.'6') then
127  nope=6
128  endif
129 !
130  do ii=1,nope
131  node=kon(indexe+ii)
132 !
133 ! adding the nodes in the basis sector to iznode
134 !
135  nodebasis=mod(node,nk)
136  call addimd(iznode,nznode,nodebasis)
137 !
138 ! user-defined load
139 !
140  if(sideload(iload)(3:4).eq.'NU') then
141  call addimd(imdnode,nmdnode,node)
142  endif
143 !
144  do j=1,3
145 !
146 ! C-convention!
147 !
148  jdof=nactdof(j,node)-1
149  if(jdof.gt.0) call addimd(izdof,nzdof,jdof)
150 c if(jdof.gt.-1) call addimd(izdof,nzdof,jdof)
151  enddo
152  enddo
153  endif
154 !
155  return
subroutine addimd(imd, nmd, node)
Definition: addimd.f:20
Hosted by OpenAircraft.com, (Michigan UAV, LLC)