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

Go to the source code of this file.

Functions/Subroutines

subroutine carbon_seal (node1, node2, nodem, nelem, lakon, nactdog, identity, ielprop, prop, iflag, v, xflow, f, nodef, idirf, df, R, physcon, dvi, numf, set, mi, ttime, time, iaxial)
 

Function/Subroutine Documentation

◆ carbon_seal()

subroutine carbon_seal ( integer  node1,
integer  node2,
integer  nodem,
integer  nelem,
character*8, dimension(*)  lakon,
integer, dimension(0:3,*)  nactdog,
logical  identity,
integer, dimension(*)  ielprop,
real*8, dimension(*)  prop,
integer  iflag,
real*8, dimension(0:mi(2),*)  v,
real*8  xflow,
real*8  f,
integer, dimension(*)  nodef,
integer, dimension(*)  idirf,
real*8, dimension(*)  df,
real*8  R,
real*8, dimension(*)  physcon,
real*8  dvi,
integer  numf,
character*81, dimension(*)  set,
integer, dimension(*)  mi,
real*8  ttime,
real*8  time,
integer  iaxial 
)
22 !
23 ! carbon seal element calculated with Richter method
24 ! Richter "Rohrhydraulik", Springer ,1971,p. 175
25 !
26 ! author: Yannick Muller
27 !
28  implicit none
29 !
30  logical identity
31  character*8 lakon(*)
32  character*81 set(*)
33 !
34  integer nelem,nactdog(0:3,*),node1,node2,nodem,numf,
35  & ielprop(*),nodef(*),idirf(*),index,iflag,
36  & inv,mi(*),iaxial
37 !
38  real*8 prop(*),v(0:mi(2),*),xflow,f,df(*),r,d,dl,
39  & p1,p2,t1,physcon(*),dvi,pi,s,t2,ttime,time
40 !
41  if(iflag.eq.0) then
42  identity=.true.
43 !
44  if(nactdog(2,node1).ne.0)then
45  identity=.false.
46  elseif(nactdog(2,node2).ne.0)then
47  identity=.false.
48  elseif(nactdog(1,nodem).ne.0)then
49  identity=.false.
50  endif
51 !
52  elseif(iflag.eq.1)then
53 !
54  index=ielprop(nelem)
55  d=prop(index+1)
56  s=prop(index+2)
57  dl=prop(index+3)
58  pi=4.d0*datan(1.d0)
59 !
60  p1=v(2,node1)
61  p2=v(2,node2)
62  if(p1.ge.p2) then
63  inv=1
64  t1=v(0,node1)-physcon(1)
65  else
66  inv=-1
67  p1=v(2,node2)
68  p2=v(2,node1)
69  t1=v(0,node2)-physcon(1)
70  endif
71 !
72  if(lakon(nelem)(2:6).eq.'CARBS') then
73 !
74 ! gapflow
75 ! Richter "Rohrhydraulik", Springer ,1971,p. 175
76 !
77  xflow=inv*pi*d*s**3*(p1**2-p2**2)/(24.d0*r*t1*dvi*dl)
78 
79  elseif(lakon(nelem)(2:6).ne.'CARBS') then
80  write(*,*) '*WARNING in Carbon_seal.f'
81  write(*,*) 'unable to perform carbon seal calculation'
82  write(*,*) 'check input file'
83  endif
84 !
85  elseif(iflag.eq.2)then
86 !
87  numf=4
88  p1=v(2,node1)
89  p2=v(2,node2)
90  if(p1.ge.p2) then
91  inv=1
92  xflow=v(1,nodem)*iaxial
93  t1=v(0,node1)-physcon(1)
94  nodef(1)=node1
95  nodef(2)=node1
96  nodef(3)=nodem
97  nodef(4)=node2
98  else
99  inv=-1
100  p1=v(2,node2)
101  p2=v(2,node1)
102  xflow=-v(1,nodem)*iaxial
103  t1=v(0,node2)-physcon(1)
104  nodef(1)=node2
105  nodef(2)=node2
106  nodef(3)=nodem
107  nodef(4)=node1
108  endif
109 !
110  idirf(1)=2
111  idirf(2)=0
112  idirf(3)=1
113  idirf(4)=2
114 !
115  index=ielprop(nelem)
116  d=prop(index+1)
117  s=prop(index+2)
118  dl=prop(index+3)
119  pi=4.d0*datan(1.d0)
120 
121 !
122  if(lakon(nelem)(2:6).eq.'CARBS') then
123 !
124  f=xflow*t1-pi*d*s**3*(p1**2-p2**2)/(24.d0*r*dvi*dl)
125 !
126  df(1)=-(pi*d*s**3*p1)/(12.d0*r*dvi*dl)
127  df(2)=xflow
128  df(3)=t1
129  df(4)=(pi*d*s**3*p2)/(12.d0*r*dvi*dl)
130 !
131  endif
132 
133  elseif(iflag.eq.3) then
134  p1=v(2,node1)
135  p2=v(2,node2)
136  if(p1.ge.p2) then
137  inv=1
138  xflow=v(1,nodem)*iaxial
139  t1=v(0,node1)-physcon(1)
140  t2=v(0,node2)-physcon(1)
141  nodef(1)=node1
142  nodef(2)=node1
143  nodef(3)=nodem
144  nodef(4)=node2
145  else
146  inv=-1
147  p1=v(2,node2)
148  p2=v(2,node1)
149  xflow=-v(1,nodem)*iaxial
150  t1=v(0,node2)-physcon(1)
151  t2=v(0,node1)-physcon(1)
152  nodef(1)=node2
153  nodef(2)=node2
154  nodef(3)=nodem
155  nodef(4)=node1
156  endif
157 
158  write(1,*) ''
159  write(1,55) ' from node',node1,
160  &' to node', node2,': air massflow rate=',xflow
161  55 FORMAT(1x,a,i6,a,i6,a,e11.4,a,a,e11.4,a)
162 
163  if(inv.eq.1) then
164  write(1,56)' Inlet node ',node1,': Tt1=',t1,
165  & ' , Ts1=',t1,' , Pt1=',p1
166 
167  write(1,*)' Element',nelem,lakon(nelem)
168 
169  write(1,56)' Outlet node ',node2,': Tt2=',t2,
170  & ' , Ts2=',t2,' , Pt2=',p2
171 !
172  else if(inv.eq.-1) then
173  write(1,56)' Inlet node ',node2,': Tt1=',t1,
174  & ' , Ts1=',t1,' , Pt1=',p1
175  &
176  write(1,*)' Element',nelem,lakon(nelem)
177 
178  write(1,56)' Outlet node ',node1,': Tt2=',t2,
179  & ' , Ts2=',t2,' , Pt2=',p2
180 
181  endif
182 
183  56 FORMAT(1x,a,i6,a,e11.4,a,e11.4,a,e11.4,a)
184  endif
185 !
186  xflow=xflow/iaxial
187  df(3)=df(3)*iaxial
188 !
189  return
subroutine df(x, u, uprime, rpar, nev)
Definition: subspace.f:133
static double * e11
Definition: radflowload.c:42
Hosted by OpenAircraft.com, (Michigan UAV, LLC)