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

Go to the source code of this file.

Functions/Subroutines

subroutine thickness (dgdx, nobject, nodedesiboun, ndesiboun, objectset, xo, yo, zo, x, y, z, nx, ny, nz, co, ifree, ndesia, ndesib, iobject, ndesi, dgdxglob, nk)
 

Function/Subroutine Documentation

◆ thickness()

subroutine thickness ( real*8, dimension(ndesi,nobject)  dgdx,
integer  nobject,
integer, dimension(*)  nodedesiboun,
integer  ndesiboun,
character*81, dimension(4,*)  objectset,
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,
real*8, dimension(3,*)  co,
integer  ifree,
integer  ndesia,
integer  ndesib,
integer  iobject,
integer  ndesi,
real*8, dimension(2,nk,nobject)  dgdxglob,
integer  nk 
)
22 !
23 ! calcualtion of the actual wall thickness
24 !
25  implicit none
26 !
27  character*81 objectset(4,*)
28 
29  integer nobject,nodedesiboun(*),nnodesinside,i,ndesi,
30  & ndesiboun,j,k,neighbor(10),nx(*),ny(*),nz(*),
31  & istat,ndesia,ndesib,ifree,nnodes,irefnode,
32  & iactnode,iobject,nk
33 !
34  real*8 dgdx(ndesi,nobject),xo(*),yo(*),zo(*),x(*),
35  & y(*),z(*),refdist,co(3,*),xdesi,ydesi,zdesi,
36  & scale,actdist,dd,xrefnode,yrefnode,zrefnode,
37  & numericdist,dgdxglob(2,nk,nobject)
38 !
39  read(objectset(1,iobject)(61:80),'(f20.0)',iostat=istat) refdist
40 !
41  nnodes=1
42  numericdist=0.02
43 !
44 ! check if upper or lower constraint is defined
45 !
46  if(objectset(1,iobject)(19:20).eq.'LE') then
47  refdist=refdist*(1-numericdist)
48  else
49  refdist=refdist*(1+numericdist)
50  endif
51 !
52 ! find minimum distance
53 !
54  do j=ndesia,ndesib
55 !
56  iactnode=nodedesiboun(j)
57  xdesi=co(1,iactnode)
58  ydesi=co(2,iactnode)
59  zdesi=co(3,iactnode)
60 !
61  call near3d(xo,yo,zo,x,y,z,nx,ny,nz,xdesi,ydesi,zdesi,
62  & ifree,neighbor,nnodes)
63 !
64 ! Calculate distance and check if node is active
65 !
66  irefnode=neighbor(1)
67  xrefnode=xo(irefnode)
68  yrefnode=yo(irefnode)
69  zrefnode=zo(irefnode)
70  dd=(xrefnode-xdesi)**2+(yrefnode-ydesi)**2
71  & +(zrefnode-zdesi)**2
72  actdist=dsqrt(dd)
73 !
74  if(objectset(1,iobject)(19:20).eq.'LE') then
75  if(actdist.gt.refdist) then
76  dgdxglob(2,iactnode,iobject)=1.0d0
77  endif
78  else
79  if(actdist.lt.refdist) then
80  dgdxglob(2,iactnode,iobject)=1.0d0
81  endif
82  endif
83  enddo
84 !
85  return
subroutine near3d(xo, yo, zo, x, y, z, nx, ny, nz, xp, yp, zp, n, neighbor, k)
Definition: near3d.f:20
Hosted by OpenAircraft.com, (Michigan UAV, LLC)