34 integer nelem,nactdog(0:3,*),node1,node2,nodem,numf,
35 & ielprop(*),nodef(*),idirf(*),index,iflag,
36 & inv,ipkon(*),kon(*),number,kgas,nelemswirl,
37 & nodea,nodeb,iaxial,mi(*),i,itype
41 real*8 prop(*),v(0:mi(2),*),xflow,f,
df(*),kappa,r,a,d,dl,
42 & p1,p2,t1,aeff,
c1,c2,c3,cd,cp,physcon(*),p2p1,km1,dvi,
43 & kp1,kdkm1,tdkp1,km1dk,x,y,ca1,cb1,ca2,cb2,dt1,alambda,
44 & rad,beta,reynolds,theta,k_phi,c2u_new,u,pi,xflow_oil,
45 & ps1pt1,uref,cd_chamf,angle,vid,cdcrit,t2,radius,
46 & initial_radius,co(3,*),vold(0:mi(2),*),offset,ttime,time,
47 & x_tab(15), y_tab(15),x_tab2(15),y_tab2(15),curve,xmach
55 if(nactdog(2,node1).ne.0)
then 57 elseif(nactdog(2,node2).ne.0)
then 59 elseif(nactdog(1,nodem).ne.0)
then 63 elseif(iflag.eq.1)
then 71 if(lakon(nelem)(2:5).eq.
'ORFL')
then 72 nodea=nint(prop(index+1))
73 nodeb=nint(prop(index+2))
75 radius=dsqrt((co(1,nodeb)+vold(1,nodeb)-
76 & co(1,nodea)-vold(1,nodea))**2)-offset
77 initial_radius=dsqrt((co(1,nodeb)-co(1,nodea))**2)-offset
86 t1=v(0,node1)-physcon(1)
91 t1=v(0,node2)-physcon(1)
104 xflow=inv*p1*aeff*dsqrt(2.d0*kdkm1*p2p1**(2.d0/kappa)
105 & *(1.d0-p2p1**(1.d0/kdkm1))/r)/dsqrt(t1)
107 xflow=inv*p1*aeff*dsqrt(kappa/r)*tdkp1**(kp1/(2.d0*km1))/
111 elseif(iflag.eq.2)
then 123 xflow=v(1,nodem)*iaxial
124 t1=v(0,node1)-physcon(1)
133 xflow=-v(1,nodem)*iaxial
134 t1=v(0,node2)-physcon(1)
149 if(dabs(dvi).lt.1e-30)
then 150 write(*,*)
'*ERROR in orifice: ' 151 write(*,*)
' no dynamic viscosity defined' 152 write(*,*)
' dvi= ',dvi
158 if((lakon(nelem)(4:5).ne.
'BT').and.
159 & (lakon(nelem)(4:5).ne.
'PN').and.
160 & (lakon(nelem)(4:5).ne.
'C1').and.
161 & (lakon(nelem)(4:5).ne.
'FL') )
then 166 nelemswirl=nint(prop(index+8))
167 if(nelemswirl.eq.0)
then 173 if(lakon(nelemswirl)(2:5).eq.
'ORPN')
then 174 uref=prop(ielprop(nelemswirl)+5)
176 else if((lakon(nelemswirl)(2:5).eq.
'ORMM').or.
177 & (lakon(nelemswirl)(2:5).eq.
'ORMA').or.
178 & (lakon(nelemswirl)(2:5).eq.
'ORPM').or.
179 & (lakon(nelemswirl)(2:5).eq.
'ORPA'))
then 180 uref=prop(ielprop(nelemswirl)+7)
182 elseif(lakon(nelemswirl)(2:5).eq.
'VOFO')
then 183 uref=prop(ielprop(nelemswirl)+7)
185 elseif(lakon(nelemswirl)(2:5).eq.
'VOFR')
then 186 uref=prop(ielprop(nelemswirl)+9)
188 elseif(lakon(nelemswirl)(2:4).eq.
'MRG')
then 189 uref=prop(ielprop(nelemswirl)+10)
191 elseif((lakon(nelemswirl)(2:4).eq.
'ROR').or.
192 & (lakon(nelemswirl)(2:4).eq.
'ROA'))
then 193 uref=prop(ielprop(nelemswirl)+6)
195 elseif(lakon(nelemswirl)(2:4).eq.
'RCV')
then 196 uref=prop(ielprop(nelemswirl)+5)
199 write(*,*)
'*ERROR in orifice:' 200 write(*,*)
' element',nelemswirl
201 write(*,*)
' refered by element',nelem
202 write(*,*)
' is not a swirl generating element' 217 if((lakon(nelem)(2:5).eq.
'ORBG'))
then 225 elseif(lakon(nelem)(2:5).eq.
'ORMA')
then 238 if(angle.gt.0.d0)
then 243 elseif(lakon(nelem)(2:5).eq.
'ORMM')
then 249 reynolds=dabs(xflow)*d/(dvi*a)
255 call cd_ms_ms(p1,p2,t1,rad,d,dl,kappa,r,reynolds,u,vid,cd)
259 write(*,*)
'**WARNING**' 260 write(*,*)
'in RESTRICTOR ',nelem
261 write(*,*)
'Calculation using' 262 write(*,*)
' McGreehan and Schotsch method:' 263 write(*,*)
' Cd=',cd,
'>1 !' 264 write(*,*)
'Calcultion will proceed will Cd=1' 265 write(*,*)
'l/d=',dl/d,
'r/d=',rad/d,
'u/vid=',u/vid
271 if(angle.gt.0.d0)
then 276 elseif (lakon(nelem)(2:5).eq.
'ORPA')
then 285 reynolds=dabs(xflow)*d/(dvi*a)
296 if(angle.gt.0.d0)
then 301 elseif(lakon(nelem)(2:5).eq.
'ORPM')
then 309 reynolds=dabs(xflow)*d/(dvi*a)
311 call cd_pk_ms(rad,d,dl,reynolds,p2,p1,beta,kappa,cd,
320 if(angle.gt.0.d0)
then 325 elseif(lakon(nelem)(2:5).eq.
'ORC1')
then 328 reynolds=dabs(xflow)*d/(dvi*a)
331 elseif(lakon(nelem)(2:5).eq.
'ORBT')
then 336 curve=nint(prop(index+3))
337 number=nint(prop(index+4))
339 if(number.ne.0.d0)
then 341 x_tab(i)=prop(index+2*i+3)
342 y_tab(i)=prop(index+2*i+4)
349 elseif(lakon(nelem)(2:5).eq.
'ORPN')
then 354 reynolds=dabs(xflow)*d/(dvi*a)
355 curve=nint(prop(index+4))
356 number=nint(prop(index+6))
357 if(number.ne.0.d0)
then 359 x_tab2(i)=prop(index+2*i+5)
360 y_tab2(i)=prop(index+2*i+6)
369 if(p2/p1.gt.(2/(kappa+1.d0))**(kappa/(kappa-1.d0)))
then 370 c2u_new=k_phi*cd*sin(theta*pi/180.d0)*r*
371 & dsqrt(2.d0*kappa/(r*(kappa-1)))*
372 & dsqrt(t1*(1.d0-(p2/p1)**((kappa-1)/kappa)))
375 c2u_new=k_phi*cd*sin(theta*pi/180.d0)*r*
376 & dsqrt(2.d0*kappa/(r*(kappa-1)))*
377 & dsqrt(t1*(1.d0-2/(kappa+1)))
379 prop(index+5)=c2u_new
381 elseif(lakon(nelem)(2:5).eq.
'ORFL')
then 382 nodea=nint(prop(index+1))
383 nodeb=nint(prop(index+2))
386 radius=dsqrt((co(1,nodeb)+vold(1,nodeb)-
387 & co(1,nodea)-vold(1,nodea))**2)-offset
389 initial_radius=dsqrt((co(1,nodeb)-co(1,nodea))**2)-offset
397 reynolds=dabs(xflow)*d/(dvi*a)
403 Write(*,*)
'*WARNING:' 404 Write(*,*)
'In RESTRICTOR',nelem
405 write(*,*)
'Cd greater than 1' 406 write (*,*)
'Calculation will proceed using Cd=1' 420 c1=dsqrt(2.d0*kdkm1/r)*aeff
424 ca1=-
c1*x/(kappa*p1*y)
425 cb1=
c1*km1dk/(2.d0*p1)
426 ca2=-ca1*p2p1-xflow*dt1/(p1*p1)
428 f=xflow*dt1/p1-
c1*p2p1**(1.d0/kappa)*x
429 if(cb2.le.-(alambda+ca2)*x)
then 431 elseif(cb2.ge.(alambda-ca2)*x)
then 436 df(2)=xflow/(2.d0*p1*dt1)
438 if(cb1.le.-(alambda+ca1)*x)
then 440 elseif(cb1.ge.(alambda-ca1)*x)
then 446 c3=dsqrt(kappa/r)*(tdkp1)**(kp1/(2.d0*km1))*aeff
448 df(1)=-xflow*dt1/(p1)**2
449 df(2)=xflow/(2*p1*dt1)
456 elseif(iflag.eq.3)
then 463 xflow=v(1,nodem)*iaxial
464 t1=v(0,node1)-physcon(1)
465 t2=v(0,node2)-physcon(1)
470 xflow=-v(1,nodem)*iaxial
471 t1=v(0,node2)-physcon(1)
472 t2=v(0,node1)-physcon(1)
477 if(dabs(dvi).lt.1e-30)
then 478 write(*,*)
'*ERROR in orifice: ' 479 write(*,*)
' no dynamic viscosity defined' 480 write(*,*)
' dvi= ',dvi
490 if((lakon(nelem)(4:5).ne.
'BT').and.
491 & (lakon(nelem)(4:5).ne.
'PN').and.
492 & (lakon(nelem)(4:5).ne.
'C1'))
then 496 nelemswirl=nint(prop(index+8))
497 if(nelemswirl.eq.0)
then 503 if(lakon(nelemswirl)(2:5).eq.
'ORPN')
then 504 uref=prop(ielprop(nelemswirl)+5)
506 else if((lakon(nelemswirl)(2:5).eq.
'ORMM').or.
507 & (lakon(nelemswirl)(2:5).eq.
'ORMA').or.
508 & (lakon(nelemswirl)(2:5).eq.
'ORPM').or.
509 & (lakon(nelemswirl)(2:5).eq.
'ORPA'))
then 510 uref=prop(ielprop(nelemswirl)+7)
512 elseif(lakon(nelemswirl)(2:5).eq.
'VOFO')
then 513 uref=prop(ielprop(nelemswirl)+7)
516 elseif(lakon(nelemswirl)(2:5).eq.
'VOFR')
then 517 uref=prop(ielprop(nelemswirl)+9)
519 elseif(lakon(nelemswirl)(2:4).eq.
'MRG')
then 520 uref=prop(ielprop(nelemswirl)+10)
522 elseif((lakon(nelemswirl)(2:4).eq.
'ROR').or.
523 & (lakon(nelemswirl)(2:4).eq.
'ROA'))
then 524 uref=prop(ielprop(nelemswirl)+6)
526 elseif(lakon(nelemswirl)(2:4).eq.
'RCV')
then 527 uref=prop(ielprop(nelemswirl)+5)
529 write(*,*)
'*ERROR in orifice:' 530 write(*,*)
' element',nelemswirl
531 write(*,*)
'refered by element',nelem
532 write(*,*)
'is not a swirl generating element' 547 if((lakon(nelem)(2:5).eq.
'ORBG'))
then 551 reynolds=dabs(xflow)*d/(dvi*a)
557 elseif(lakon(nelem)(2:5).eq.
'ORMA')
then 562 reynolds=dabs(xflow)*d/(dvi*a)
568 if(angle.gt.0.d0)
then 573 elseif(lakon(nelem)(2:5).eq.
'ORMM')
then 579 reynolds=dabs(xflow)*d/(dvi*a)
581 call cd_ms_ms(p1,p2,t1,rad,d,dl,kappa,r,reynolds,u,vid,cd)
585 write(*,*)
'**WARNING**' 586 write(*,*)
'in RESTRICTOR ',nelem
587 write(*,*)
'Calculation using' 588 write(*,*)
' McGreehan and Schotsch method:' 589 write(*,*)
' Cd=',cd,
'>1 !' 590 write(*,*)
'Calcultion will proceed will Cd=1' 591 write(*,*)
'l/d=',dl/d,
'r/d=',rad/d,
'u/vid=',u/vid
597 if(angle.gt.0.d0)
then 602 elseif (lakon(nelem)(2:5).eq.
'ORPA')
then 611 reynolds=dabs(xflow)*d/(dvi*a)
618 if(angle.gt.0.d0)
then 623 elseif(lakon(nelem)(2:5).eq.
'ORPM')
then 631 reynolds=dabs(xflow)*d/(dvi*a)
633 call cd_pk_ms(rad,d,dl,reynolds,p2,p1,beta,kappa,cd,
638 if(angle.gt.0.d0)
then 643 elseif(lakon(nelem)(2:5).eq.
'ORC1')
then 646 reynolds=dabs(xflow)*d/(dvi*a)
649 elseif(lakon(nelem)(2:5).eq.
'ORBT')
then 654 reynolds=dabs(xflow)*d/(dvi*a)
656 curve=nint(prop(index+3))
657 number=nint(prop(index+4))
658 reynolds=dabs(xflow)*d/(dvi*a)
659 if(number.ne.0.d0)
then 661 x_tab(i)=prop(index+2*i+3)
662 y_tab(i)=prop(index+2*i+4)
669 elseif(lakon(nelem)(2:5).eq.
'ORPN')
then 674 reynolds=dabs(xflow)*d/(dvi*a)
675 curve=nint(prop(index+4))
676 number=nint(prop(index+6))
678 if(number.ne.0.d0)
then 680 x_tab2(i)=prop(index+2*i+5)
681 y_tab2(i)=prop(index+2*i+6)
690 if(p2/p1.gt.(2/(kappa+1.d0))**(kappa/(kappa-1.d0)))
then 691 c2u_new=k_phi*cd*sin(theta*pi/180.d0)*r*
692 & dsqrt(2.d0*kappa/(r*(kappa-1)))*
693 & dsqrt(t1*(1.d0-(p2/p1)**((kappa-1)/kappa)))
696 c2u_new=k_phi*cd*sin(theta*pi/180.d0)*r*
697 & dsqrt(2.d0*kappa/(r*(kappa-1)))*
698 & dsqrt(t1*(1.d0-2/(kappa+1)))
700 prop(index+5)=c2u_new
704 Write(*,*)
'*WARNING:' 705 Write(*,*)
'In RESTRICTOR',nelem
706 write(*,*)
'Cd greater than 1' 707 write(*,*)
'Calculation will proceed using Cd=1' 714 xmach=dsqrt(((p1/p2)**((kappa-1.d0)/kappa)-1.d0)*2.d0/
717 write(1,55)
' from node ',node1,
718 &
' to node ', node2,
' : air massflow rate = ' 720 &
', oil massflow rate = ',xflow_oil,
' ' 723 write(1,56)
' Inlet node ',node1,
' : Tt1 = ',t1,
724 &
' , Ts1 = ',t1,
' , Pt1 = ',p1,
' ' 726 write(1,*)
' Element ',nelem,lakon(nelem)
727 write(1,57)
' dyn.visc = ',dvi,
' , Re = ' 728 & ,reynolds,
', M = ',xmach
729 if(lakon(nelem)(2:5).eq.
'ORC1')
then 730 write(1,58)
' CD = ',cd
731 else if((lakon(nelem)(2:5).eq.
'ORMA').or.
732 & (lakon(nelem)(2:5).eq.
'ORMM').or.
733 & (lakon(nelem)(2:5).eq.
'ORPM').or.
734 & (lakon(nelem)(2:5).eq.
'ORPA'))
then 735 write(1,59)
' CD = ',cd,
' , C1u = ',u,
736 &
' , C2u = ', prop(index+7),
' ' 739 if(lakon(nelem)(2:5).eq.
'ORBT')
then 740 write(1,63)
' P2/P1 = ',p2/p1,
741 &
' , ps1pt1 = ', ps1pt1,
' , DAB = ',(1-p2/p1)/(1-ps1pt1),
742 &
' , curve N° = ', curve,
' , cd = ',cd
744 elseif(lakon(nelem)(2:5).eq.
'ORPN')
then 745 write(1,62)
' cd = ', cd,
746 &
' , C2u = ',c2u_new,
' ' 750 write(1,56)
' Outlet node ',node2,
' : Tt2 = ',t2,
751 &
' , Ts2 = ',t2,
' , Pt2 = ',p2,
' ' 753 else if(inv.eq.-1)
then 754 write(1,56)
' Inlet node ',node2,
': Tt1 = ',t1,
755 &
' , Ts1 = ',t1,
' , Pt1 = ',p1,
' ' 757 write(1,*)
' element R ',set(numf)(1:30)
758 write(1,57)
' dyn.visc. = ',dvi,
' , Re =' 759 & ,reynolds,
', M = ',xmach
760 if(lakon(nelem)(2:5).eq.
'ORC1')
then 761 write(1,58)
' CD = ',cd
762 else if((lakon(nelem)(2:5).eq.
'ORMA').or.
763 & (lakon(nelem)(2:5).eq.
'ORMM').or.
764 & (lakon(nelem)(2:5).eq.
'ORPM').or.
765 & (lakon(nelem)(2:5).eq.
'ORPA'))
then 766 write(1,59)
' CD = ',cd,
' , C1u = ',u,
767 &
' , C2u = ', prop(index+7),
' ' 770 if(lakon(nelem)(2:5).eq.
'ORBT')
then 771 write(1,63)
' P2/P1 = ',p2/p1,
772 &
' , ps1pt1 = ', ps1pt1,
' , DAB = ',(1-p2/p1)/(1-ps1pt1),
773 &
' , curve N° = ', curve,
' , cd = ',cd
775 elseif(lakon(nelem)(2:5).eq.
'ORPN')
then 776 write(1,*)
' cd = ', cd,
' , C2u = ' 780 write(1,56)
' Outlet node ',node1,
': Tt2 = ',t2,
781 &
' , Ts2 = ',t2,
' , Pt2 = ',p2,
' ' 788 55
format(1x,a,i6,a,i6,a,
e11.4,a,a,
e11.4,a)
789 56
format(1x,a,i6,a,
e11.4,a,
e11.4,a,
e11.4,a)
791 58
format(1x,a,
e11.4)
794 63
format(1x,a,
e11.4,a,
e11.4,a,
e11.4,a,i2,a,
e11.4)
subroutine df(x, u, uprime, rpar, nev)
Definition: subspace.f:133
subroutine cd_pk_ms(rad, d, xl, reynolds, p2, p1, beta, kappa, cd, u, T1, R)
Definition: cd_pk_ms.f:21
subroutine cd_ms_ms(p1, p2, T1, rad, d, xl, kappa, r, reynolds, u, vid, cd)
Definition: cd_ms_ms.f:20
subroutine cd_preswirlnozzle(ps2, pt1, number, curve, x_tab, y_tab, cd)
Definition: cd_preswirlnozzle.f:25
subroutine cd_pk_albers(rad, d, xl, reynolds, p2, p1, beta, kappa, cd, u, T1, R)
Definition: cd_pk_albers.f:23
static double * c1
Definition: mafillvcompmain.c:30
subroutine cd_bragg(cd, p2p1, cdbragg, itype)
Definition: cd_bragg.f:30
subroutine cd_own_albers(p1, p2, xl, d, cd, u, T1, R, kappa)
Definition: cd_own_albers.f:22
subroutine cd_bleedtapping(ps2, ps1, ps1pt1, nummer, curve, x_tab, y_tab, cd)
Definition: cd_bleedtapping.f:24
static double * e11
Definition: radflowload.c:42
subroutine cd_chamfer(l, d, p_up, p_down, angle, cd)
Definition: cd_chamfer.f:20