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

Go to the source code of this file.

Functions/Subroutines

subroutine createinum (ipkon, inum, kon, lakon, nk, ne, cflag, nelemload, nload, nodeboun, nboun, ndirboun, ithermal, co, vold, mi, ielmat)
 

Function/Subroutine Documentation

◆ createinum()

subroutine createinum ( integer, dimension(*)  ipkon,
integer, dimension(*)  inum,
integer, dimension(*)  kon,
character*8, dimension(*)  lakon,
integer  nk,
integer  ne,
character*1  cflag,
integer, dimension(2,*)  nelemload,
integer  nload,
integer, dimension(*)  nodeboun,
integer  nboun,
integer, dimension(*)  ndirboun,
integer, dimension(2)  ithermal,
real*8, dimension(3,*)  co,
real*8, dimension(0:mi(2),*)  vold,
integer, dimension(*)  mi,
integer, dimension(mi(3),*)  ielmat 
)
21 !
22 ! determines inum in case no extrapolation is requested in the
23 ! input deck (e.g. only nodal variables are requested)
24 !
25  implicit none
26 !
27  logical force
28 !
29  character*1 cflag
30  character*8 lakon(*),lakonl
31 !
32  integer ipkon(*),inum(*),kon(*),ne,indexe,nope,nfield,mi(*),
33  & nk,i,j,nelemload(2,*),nload,node,nboun,nlayer,nopeexp,
34  & nodeboun(*),ndirboun(*),ithermal(2),ielmat(mi(3),*)
35 !
36  real*8 yn,co(3,*),vold(0:mi(2),*)
37 !
38  force=.false.
39 !
40  do i=1,nk
41  inum(i)=0
42  enddo
43 !
44  do i=1,ne
45 !
46  if(ipkon(i).lt.0) cycle
47  indexe=ipkon(i)
48  lakonl=lakon(i)
49 !
50  if(lakonl(7:8).eq.'LC') then
51  nlayer=0
52  do j=1,mi(3)
53  if(ielmat(j,i).gt.0) then
54  nlayer=nlayer+1
55  else
56  exit
57  endif
58  enddo
59 !
60  if(lakonl(4:4).eq.'2') then
61  nopeexp=28
62  elseif(lakonl(4:5).eq.'15') then
63  nopeexp=21
64  endif
65  endif
66 !
67  if(lakonl(1:1).eq.'F') then
68  cycle
69  elseif(lakonl(4:4).eq.'2') then
70  nope=20
71  elseif(lakonl(4:4).eq.'8') then
72  nope=8
73  elseif(lakonl(4:5).eq.'10') then
74  nope=10
75  elseif(lakonl(4:4).eq.'4') then
76  nope=4
77  elseif(lakonl(4:5).eq.'15') then
78  nope=15
79  elseif(lakonl(4:4).eq.'6') then
80  nope=6
81  elseif((lakon(i)(1:1).eq.'E').and.(lakon(i)(7:7).eq.'A'))then
82  inum(kon(indexe+1))=inum(kon(indexe+1))+1
83  inum(kon(indexe+2))=inum(kon(indexe+2))+1
84  cycle
85  elseif(lakonl(1:7).eq.'ESPRNGF') then
86  read(lakonl(8:8),'(i1)') nope
87  nope=nope+1
88  inum(kon(indexe+nope))=-1
89  cycle
90  else
91  cycle
92  endif
93 !
94 ! counting the number of elements a node belongs to
95 !
96  if(lakonl(7:8).ne.'LC') then
97  do j=1,nope
98  inum(kon(indexe+j))=inum(kon(indexe+j))+1
99  enddo
100  else
101  do j=1,nope*nlayer
102  inum(kon(indexe+nopeexp+j))=inum(kon(indexe+nopeexp+j))+1
103  enddo
104  endif
105 c Bernhardi start
106 c incompatible modes elements
107 c if(lakonl(1:5).eq.'C3D8I') then
108 c do j=1,3
109 c inum(kon(indexe+nope+j))=inum(kon(indexe+nope+j))+1
110 c enddo
111 c endif
112 c Bernhardi end
113 !
114  enddo
115 !
116 ! for 1d and 2d elements only:
117 ! finding the solution in the original nodes
118 !
119  if((cflag.ne.' ').and.(cflag.ne.'E')) then
120  nfield=0
121  call map3dto1d2d(yn,ipkon,inum,kon,lakon,nfield,nk,ne,cflag,co,
122  & vold,force,mi)
123  endif
124 !
125  return
subroutine map3dto1d2d(yn, ipkon, inum, kon, lakon, nfield, nk, ne, cflag, co, vold, force, mi)
Definition: map3dto1d2d.f:21
Hosted by OpenAircraft.com, (Michigan UAV, LLC)