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

Go to the source code of this file.

Functions/Subroutines

subroutine bodyforce (cbody, ibody, ipobody, nbody, set, istartset, iendset, ialset, inewton, nset, ifreebody, k)
 

Function/Subroutine Documentation

◆ bodyforce()

subroutine bodyforce ( character*81, dimension(*)  cbody,
integer, dimension(3,*)  ibody,
integer, dimension(2,*)  ipobody,
integer  nbody,
character*81, dimension(*)  set,
integer, dimension(*)  istartset,
integer, dimension(*)  iendset,
integer, dimension(*)  ialset,
integer  inewton,
integer  nset,
integer  ifreebody,
integer  k 
)
21 !
22 ! assigns the body forces to the elements by use of field ipobody
23 !
24  implicit none
25 !
26  character*81 cbody(*),elset,set(*)
27 !
28  integer ibody(3,*),ipobody(2,*),i,j,l,istartset(*),nbody,
29  & iendset(*),ialset(*),kindofbodyforce,inewton,nset,istat,
30  & ifreebody,k,index
31 !
32  elset=cbody(k)
33  kindofbodyforce=ibody(1,k)
34  if(kindofbodyforce.eq.3) inewton=1
35 !
36 ! check whether element number or set name
37 !
38  read(elset,'(i21)',iostat=istat) l
39  if(istat.eq.0) then
40  if(ipobody(1,l).eq.0) then
41  ipobody(1,l)=k
42  else
43 !
44  index=l
45  do
46  if(ipobody(1,index).eq.k) exit
47  if(ipobody(2,index).eq.0) then
48  ipobody(2,index)=ifreebody
49  ipobody(1,ifreebody)=k
50  ipobody(2,ifreebody)=0
51  ifreebody=ifreebody+1
52  exit
53  endif
54  index=ipobody(2,index)
55  enddo
56  endif
57  return
58  endif
59 !
60 ! set name
61 !
62  do i=1,nset
63  if(set(i).eq.elset) exit
64  enddo
65 !
66  do j=istartset(i),iendset(i)
67  if(ialset(j).gt.0) then
68  l=ialset(j)
69  if(ipobody(1,l).eq.0) then
70  ipobody(1,l)=k
71  else
72 !
73  index=l
74  do
75  if(ipobody(1,index).eq.k) exit
76  if(ipobody(2,index).eq.0) then
77  ipobody(2,index)=ifreebody
78  ipobody(1,ifreebody)=k
79  ipobody(2,ifreebody)=0
80  ifreebody=ifreebody+1
81  exit
82  endif
83  index=ipobody(2,index)
84  enddo
85  endif
86  else
87  l=ialset(j-2)
88  do
89  l=l-ialset(j)
90  if(l.ge.ialset(j-1)) exit
91  if(ipobody(1,l).eq.0) then
92  ipobody(1,l)=k
93  else
94 !
95  index=l
96  do
97  if(ipobody(1,index).eq.k) exit
98  if(ipobody(2,index).eq.0) then
99  ipobody(2,index)=ifreebody
100  ipobody(1,ifreebody)=k
101  ipobody(2,ifreebody)=0
102  ifreebody=ifreebody+1
103  exit
104  endif
105  index=ipobody(2,index)
106  enddo
107  endif
108  enddo
109  endif
110  enddo
111 !
112  return
Hosted by OpenAircraft.com, (Michigan UAV, LLC)