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

Go to the source code of this file.

Functions/Subroutines

subroutine actideactistr (set, nset, istartset, iendset, ialset, objectset, ipkon, iobject, ne, neinset, iponoel, inoel, nepar)
 

Function/Subroutine Documentation

◆ actideactistr()

subroutine actideactistr ( character*81, dimension(*)  set,
integer  nset,
integer, dimension(*)  istartset,
integer, dimension(*)  iendset,
integer, dimension(*)  ialset,
character*81, dimension(4,*)  objectset,
integer, dimension(*)  ipkon,
integer  iobject,
integer  ne,
integer, dimension(*)  neinset,
integer, dimension(*)  iponoel,
integer, dimension(2,*)  inoel,
integer  nepar 
)
22 !
23 ! deactivates the elements which are not adjacent to the nodes in
24 ! the STRESS objective function set
25 !
26  implicit none
27 !
28  character*81 objectset(4,*),set(*)
29 !
30  integer i,j,k,nset,istartset(*),iendset(*),ialset(*),ipkon(*),
31  & iobject,ne,index,nelem,iponoel(*),inoel(2,*),neinset(*),
32  & nepar
33 !
34 ! determining the nodes set corresponding to the STRESS
35 ! objective function
36 !
37  do i=1,nset
38  if(objectset(3,iobject).eq.set(i)) exit
39  enddo
40 !
41  nepar=0
42 !
43  if(i.le.nset) then
44 !
45 ! deactivate all elements
46 !
47  do j=1,ne
48  if(ipkon(j).lt.0) cycle
49  ipkon(j)=-2-ipkon(j)
50  enddo
51 !
52 ! reactivate the elements adjacent to the nodes in the
53 ! STRESS objective function set (the stress is extrapolated
54 ! to the nodes, therefore only those elements are needed to
55 ! which the nodes in the STRESS objective function belong)
56 !
57  do j=istartset(i),iendset(i)
58  if(ialset(j).gt.0) then
59  index=iponoel(ialset(j))
60  do
61  if(index.eq.0) exit
62  nelem=inoel(1,index)
63  if(neinset(nelem).eq.0) then
64  ipkon(nelem)=-ipkon(nelem)-2
65  neinset(nelem)=1
66  nepar=nepar+1
67  endif
68  index=inoel(2,index)
69  enddo
70  else
71  k=ialset(j-2)
72  do
73  k=k-ialset(j)
74  if(k.ge.ialset(j-1)) exit
75  index=iponoel(ialset(k))
76  do
77  if(index.eq.0) exit
78  nelem=inoel(1,index)
79  if(neinset(nelem).eq.0) then
80  ipkon(nelem)=-ipkon(nelem)-2
81  neinset(nelem)=1
82  nepar=nepar+1
83  endif
84  index=inoel(2,index)
85  enddo
86  enddo
87  endif
88  enddo
89  else
90 !
91 ! all elements are taken into account
92 !
93  do i=1,ne
94  if(ipkon(i).lt.0) cycle
95  neinset(i)=1
96  nepar=nepar+1
97  enddo
98  endif
99 !
100  return
Hosted by OpenAircraft.com, (Michigan UAV, LLC)