33 integer nelem,nactdog(0:3,*),node1,node2,nodem,numf,
34 & ielprop(*),nodef(*),idirf(*),index,iflag,iaxial,
35 & inv,ipkon(*),kon(*),t_chang,nelemswirl,mi(*)
37 real*8 prop(*),v(0:mi(2),*),xflow,f,
df(*),kappa,r,cp,
38 & p1,p2,t1,t2,km1,pi,ttime,time,r2d,r1d,eta,u1,
39 & c1u,c2u,cinput,
r1,r2,omega,k1,ciu,expon,
40 & ui,kr,cte1,cte2,qred_crit,a,xflow_oil
42 intent(in) nodem,nelem,lakon,kon,ipkon,
43 & nactdog,ielprop,iflag,v,
44 & cp,r,set,mi,ttime,time,iaxial
46 intent(out) identity,node1,node2,xflow,numf,nodef,idirf,prop,
52 if(nactdog(2,node1).ne.0)
then 54 elseif(nactdog(2,node2).ne.0)
then 56 elseif(nactdog(1,nodem).ne.0)
then 60 elseif(iflag.eq.1)
then 64 elseif(iflag.eq.2)
then 84 xflow=v(1,nodem)*iaxial
86 if(xflow.gt.0.d0)
then 100 elseif(xflow.lt.0.d0)
then 108 xflow=-v(1,nodem)*iaxial
126 if(lakon(nelem)(4:5).eq.
'FR')
then 135 nelemswirl=nint(prop(index+6))
141 t_chang=prop(index+8)
143 if(omega.gt.0.d0)
then 158 elseif(inv.lt.0)
then 164 elseif(nelemswirl.gt.0)
then 166 if(lakon(nelemswirl)(2:5).eq.
'ORPN')
then 167 cinput=prop(ielprop(nelemswirl)+5)
169 else if((lakon(nelemswirl)(2:5).eq.
'ORMM').or.
170 & (lakon(nelemswirl)(2:5).eq.
'ORMA').or.
171 & (lakon(nelemswirl)(2:5).eq.
'ORPM').or.
172 & (lakon(nelemswirl)(2:5).eq.
'ORPA'))
then 173 cinput=prop(ielprop(nelemswirl)+7)
175 elseif(lakon(nelemswirl)(2:5).eq.
'VOFO')
then 176 cinput=prop(ielprop(nelemswirl)+7)
178 elseif(lakon(nelemswirl)(2:5).eq.
'VOFR')
then 179 cinput=prop(ielprop(nelemswirl)+9)
181 elseif(lakon(nelemswirl)(2:4).eq.
'MRG')
then 182 cinput=prop(ielprop(nelemswirl)+10)
184 elseif((lakon(nelemswirl)(2:4).eq.
'ROR').or.
185 & (lakon(nelemswirl)(2:4).eq.
'ROA'))
then 186 cinput=prop(ielprop(nelemswirl)+6)
188 elseif(lakon(nelemswirl)(2:4).eq.
'RCV')
then 189 cinput=prop(ielprop(nelemswirl)+5)
191 write(*,*)
'*ERROR in vortex:' 192 write(*,*)
' element',nelemswirl
193 write(*,*)
' referred by element',nelem
194 write(*,*)
' is not a swirl generating element' 198 cinput=u1+k1*(cinput-u1)
203 elseif(inv.lt.0)
then 212 elseif(inv.lt.0)
then 220 elseif(
r1.ge.r2)
then 228 cte1=c1u**2/(2*cp*t1)
231 f=p2/p1-1d0-eta*((1+cte1*cte2)**expon-1d0)
235 df(2)=eta*expon*cte1/t1*cte2*
236 & (1+cte1*cte2)**(expon-1)
242 elseif(r2.lt.
r1)
then 244 cte1=c2u**2/(2*cp*t2)
247 f=p1/p2-1d0-eta*((1+cte1*cte2)**expon-1d0)
251 df(2)=eta*expon*cte1/t1*cte2*
252 & (1+cte1*cte2)**(expon-1)
262 elseif(lakon(nelem)(4:5).eq.
'FO')
then 272 t_chang=prop(index+6)
278 elseif(r2.lt.
r1)
then 287 elseif(inv.lt.0)
then 293 if(((r2.ge.
r1).and.(xflow.gt.0d0))
294 & .or.((r2.lt.
r1).and.(xflow.lt.0d0)))
then 296 cte1=(c1u)**2/(2*cp*t1)
299 f=p2/p1-1-eta*((1+cte1*cte2)**expon-1)
305 df(2)=eta*expon*cte1/t1*cte2*(1+cte1*cte2)**(expon-1)
313 elseif(((r2.lt.
r1).and.(xflow.gt.0d0))
314 & .or.((r2.gt.
r1).and.(xflow.lt.0d0)))
then 315 cte1=(c2u)**2/(2*cp*t2)
318 f=p1/p2-1-eta*((1+cte1*cte2)**expon-1)
324 df(2)=eta*expon*cte1/t2*cte2*(1+cte1*cte2)**(expon-1)
337 elseif(iflag.eq.3)
then 356 xflow=v(1,nodem)*iaxial
358 if(xflow.gt.0.d0)
then 372 elseif(xflow.lt.0.d0)
then 380 xflow=v(1,nodem)*iaxial
398 if(lakon(nelem)(4:5).eq.
'FR')
then 407 nelemswirl=nint(prop(index+6))
413 t_chang=prop(index+8)
415 if(omega.gt.0.d0)
then 429 elseif(inv.lt.0)
then 435 elseif(nelemswirl.gt.0)
then 439 if(lakon(nelemswirl)(2:5).eq.
'ORPN')
then 440 cinput=prop(ielprop(nelemswirl)+5)
442 elseif((lakon(nelemswirl)(2:5).eq.
'ORMM').or.
443 & (lakon(nelemswirl)(2:5).eq.
'ORMA').or.
444 & (lakon(nelemswirl)(2:5).eq.
'ORPM').or.
445 & (lakon(nelemswirl)(2:5).eq.
'ORPA'))
then 446 cinput=prop(ielprop(nelemswirl)+7)
448 elseif(lakon(nelemswirl)(2:5).eq.
'VOFO')
then 449 cinput=prop(ielprop(nelemswirl)+7)
451 elseif(lakon(nelemswirl)(2:5).eq.
'VOFR')
then 452 cinput=prop(ielprop(nelemswirl)+9)
454 elseif(lakon(nelemswirl)(2:4).eq.
'MRG')
then 455 cinput=prop(ielprop(nelemswirl)+10)
457 elseif((lakon(nelemswirl)(2:4).eq.
'ROR').or.
458 & (lakon(nelemswirl)(2:4).eq.
'ROA'))
then 459 cinput=prop(ielprop(nelemswirl)+6)
461 elseif(lakon(nelemswirl)(2:4).eq.
'RCV')
then 462 cinput=prop(ielprop(nelemswirl)+5)
464 write(*,*)
'*ERROR in vortex:' 465 write(*,*)
' element',nelemswirl
466 write(*,*)
' referred by element',nelem
467 write(*,*)
' is not a swirl generating element' 471 cinput=u1+k1*(cinput-u1)
476 elseif(inv.lt.0)
then 485 elseif(inv.lt.0)
then 493 elseif(
r1.ge.r2)
then 501 cte1=c1u**2/(2*cp*t1)
504 f=p2/p1-1d0-eta*((1+cte1*cte2)**expon-1d0)
508 df(2)=eta*expon*cte1/t1*cte2*
509 & (1+cte1*cte2)**(expon-1)
515 elseif(r2.lt.
r1)
then 517 cte1=c2u**2/(2*cp*t2)
520 f=p1/p2-1d0-eta*((1+cte1*cte2)**expon-1d0)
524 df(2)=eta*expon*cte1/t1*cte2*
525 & (1+cte1*cte2)**(expon-1)
535 elseif(lakon(nelem)(4:5).eq.
'FO')
then 545 t_chang=prop(index+6)
554 elseif(r2.lt.
r1)
then 563 elseif(inv.lt.0)
then 573 write(1,55)
' from node ',node1,
574 &
' to node ', node2,
' : air massflow rate = ',xflow,
' ',
575 &
' , oil massflow rate = ',xflow_oil,
' ' 578 write(1,56)
' Inlet node ',node1,
' : Tt1 = ',t1,
579 &
' , Ts1 = ',t1,
' , Pt1 = ',p1
580 write(1,*)
' Element ',nelem,lakon(nelem)
581 write(1,57)
' C1u = ',c1u,
583 write(1,56)
' Outlet node ',node2,
' : Tt2 = ',t2,
584 &
' , Ts2 = ',t2,
' , Pt2 = ',p2
586 else if(inv.eq.-1)
then 587 write(1,56)
' Inlet node ',node2,
': Tt1 = ',t1,
588 &
' , Ts1 = ',t1,
' , Pt1 = ',p1
589 write(1,*)
' Element ',nelem,lakon(nelem)
590 write(1,57)
' C1u = ',c1u,
592 write(1,56)
' Outlet node ',node1,
' Tt2 = ',
593 & t2,
' , Ts2 = ',t2,
' , Pt2 = ',p2
597 55
format(1x,a,i6,a,i6,a,
e11.4,a,a,
e11.4,a)
598 56
format(1x,a,i6,a,
e11.4,a,
e11.4,a,
e11.4,a,
e11.4)
599 57
format(1x,a,
e11.4,a,
e11.4,a)
subroutine df(x, u, uprime, rpar, nev)
Definition: subspace.f:133
static double * r1
Definition: filtermain.c:48
static double * e11
Definition: radflowload.c:42