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

Go to the source code of this file.

Functions/Subroutines

subroutine prethickness (co, xo, yo, zo, x, y, z, nx, ny, nz, ifree, nodedesiinv, ndesiboun, nodedesiboun, set, nset, objectset, iobject, istartset, iendset, ialset)
 

Function/Subroutine Documentation

◆ prethickness()

subroutine prethickness ( real*8, dimension(3,*)  co,
real*8, dimension(*)  xo,
real*8, dimension(*)  yo,
real*8, dimension(*)  zo,
real*8, dimension(*)  x,
real*8, dimension(*)  y,
real*8, dimension(*)  z,
integer, dimension(*)  nx,
integer, dimension(*)  ny,
integer, dimension(*)  nz,
integer  ifree,
integer, dimension(*)  nodedesiinv,
integer  ndesiboun,
integer, dimension(*)  nodedesiboun,
character*81, dimension(*)  set,
integer  nset,
character*81, dimension(4,*)  objectset,
integer  iobject,
integer, dimension(*)  istartset,
integer, dimension(*)  iendset,
integer, dimension(*)  ialset 
)
22 !
23  implicit none
24 !
25  character*81 objectset(4,*),set(*)
26 !
27  integer j,k,i,ifree,nx(*),ny(*),nz(*),kflag,ndesinode,
28  & nodedesiinv(*),ndesiboun,nodedesiboun(*),nset,
29  & iobject,istartset(*),iendset(*),ialset(*)
30 !
31  real*8 co(3,*),xo(*),yo(*),zo(*),x(*),y(*),z(*)
32 !
33 ! determining the set of boundary nodes
34 !
35  do i=1,nset
36  if(objectset(4,iobject).eq.set(i)) exit
37  enddo
38 !
39  if(i.le.nset) then
40 !
41 ! all nodes which define the boundary are put in a set
42 !
43  ifree=0
44  do j=istartset(i),iendset(i)
45  if(ialset(j).gt.0) then
46  k=ialset(j)
47  ifree=ifree+1
48  xo(ifree)=co(1,k)
49  x(ifree)=xo(ifree)
50  nx(ifree)=ifree
51  yo(ifree)=co(2,k)
52  y(ifree)=yo(ifree)
53  ny(ifree)=ifree
54  zo(ifree)=co(3,k)
55  z(ifree)=zo(ifree)
56  nz(ifree)=ifree
57  else
58  k=ialset(j-2)
59  do
60  k=k-ialset(j)
61  if(k.ge.ialset(j-1)) exit
62  ifree=ifree+1
63  xo(ifree)=co(1,k)
64  x(ifree)=xo(ifree)
65  nx(ifree)=ifree
66  yo(ifree)=co(2,k)
67  y(ifree)=yo(ifree)
68  ny(ifree)=ifree
69  zo(ifree)=co(3,k)
70  z(ifree)=zo(ifree)
71  nz(ifree)=ifree
72  enddo
73  endif
74  enddo
75 !
76 ! Sorting of nodes set w.r.t. coordinates
77 !
78  kflag=2
79  call dsort(x,nx,ifree,kflag)
80  call dsort(y,ny,ifree,kflag)
81  call dsort(z,nz,ifree,kflag)
82 !
83  endif
84 !
85 ! determining the set of designvariables which have a wall
86 ! thickness constraint
87 !
88  do i=1,nset
89  if(objectset(3,iobject).eq.set(i)) exit
90  enddo
91 !
92  if(i.le.nset) then
93 !
94 ! all designvariables which have the constraint are put in the set
95 !
96  ndesiboun=0
97  do j=istartset(i),iendset(i)
98  if(ialset(j).gt.0) then
99  k=ialset(j)
100  if(nodedesiinv(k).ne.1) cycle
101  ndesiboun=ndesiboun+1
102  nodedesiboun(ndesiboun)=k
103  else
104  k=ialset(j-2)
105  do
106  k=k-ialset(j)
107  if(k.ge.ialset(j-1)) exit
108  if(nodedesiinv(k).ne.1) cycle
109  ndesiboun=ndesiboun+1
110  nodedesiboun(ndesiboun)=k
111  enddo
112  endif
113  enddo
114  endif
115 !
116  return
subroutine dsort(dx, iy, n, kflag)
Definition: dsort.f:6
Hosted by OpenAircraft.com, (Michigan UAV, LLC)