43 integer mi(*),ieg(*),nflow,i,ielmat(mi(3),*),ntmat_,node1,node2,
44 & nelem,index,nshcon(*),ipkon(*),kon(*),nodem,imat,ielprop(*),
45 & nrhcon(*),neighbor,ichange,iponoel(*),inoel(2,*),indexe,
46 & itg(*),ntg,node,imin,imax,iel,nodemnei,ierror,nelemnei,
47 & nodenei,ibranch,numel,noderef,nelemref,ierr
49 real*8 prop(*),shcon(0:3,ntmat_,*),xflow,v(0:mi(2),*),cp,r,
50 & dvi,rho,rhcon(0:1,ntmat_,*),kappa,cti,ti,ri,ro,p1zp2,omega,
51 & p2zp1,xmin,xmax,fluxtot,ratio,pref,prefnew
71 if(kon(ipkon(nelem)+2).eq.node) cycle
75 if(v(2,node).gt.0.d0) cycle
81 write(*,*)
'*ERROR in preinitialnet:' 82 write(*,*)
' node',node,
83 &
' is an inlet or outlet, yet' 84 write(*,*)
' no initial pressure was assigned' 90 & iponoel,inoel,ipkon,kon)
92 write(*,*)
'*ERROR in preinitialnet:' 93 write(*,*)
' node',node,
94 &
' is an inlet or outlet, yet' 95 write(*,*)
' no initial pressure was assigned' 102 write(*,*)
'*ERROR in preinitialnet:' 103 write(*,*)
' node',node,
104 &
' belongs to more than 2 network elements, yet' 105 write(*,*)
' no initial pressure was assigned' 109 if(ierror.eq.1)
call exit(201)
119 if(lakon(nelem)(2:3).eq.
'OR')
then 123 if(v(1,nodem).eq.0.d0) v(1,nodem)=1.d-30
124 elseif(lakon(nelem)(2:4).eq.
'LAB')
then 128 if((lakon(nelem)(5:6).eq.
'SP').or.
129 & (lakon(nelem)(6:7).eq.
'SP'))
then 130 if(v(1,nodem).eq.0.d0) v(1,nodem)=1.d-30
132 elseif(lakon(nelem)(2:3).eq.
'RE')
then 136 if((lakon(nelem)(4:5).eq.
'EL').or.
137 & (lakon(nelem)(4:5).eq.
'CO').or.
138 & (lakon(nelem)(4:7).eq.
'WAOR').or.
139 & (lakon(nelem)(4:5).eq.
'EN').or.
140 & (lakon(nelem)(4:5).eq.
'EX'))
then 141 if(v(1,nodem).eq.0.d0) v(1,nodem)=1.d-30
143 elseif(lakon(nelem)(4:5).eq.
'BR')
then 147 if((lakon(nelem)(6:6).eq.
'J').or.
148 & (lakon(nelem)(6:6).eq.
'S'))
then 149 if(v(1,nodem).eq.0.d0) v(1,nodem)=1.d-30
151 elseif(lakon(nelem)(2:7).eq.
'CROSPL')
then 155 if(v(1,nodem).eq.0.d0) v(1,nodem)=1.d-30
156 elseif(lakon(nelem)(2:3).eq.
'MR')
then 160 if(v(1,nodem).eq.0.d0) v(1,nodem)=1.d-30
181 if(((v(2,node1).ne.0.d0).and.(v(2,node2).eq.0.d0)).or.
182 & ((v(2,node1).eq.0.d0).and.(v(2,node2).ne.0.d0)))
then 184 if(lakon(nelem)(2:3).eq.
'VO')
then 191 if(prop(index+1).lt.prop(index+2))
then 195 if(v(0,node2).ne.0.d0)
then 199 if(lakon(nelem)(4:5).eq.
'FO')
then 208 & r,dvi,rhcon,nrhcon,rho)
213 if(lakon(nelem)(4:5).eq.
'FO')
then 217 p1zp2=(1.d0+cti**2*((ro/ri)**2-1.d0)/
218 & (2.d0*cp*ti))**(kappa/(kappa-1.d0))
223 p1zp2=(1.d0+cti**2*(1.d0-(ri/ro)**2)/
224 & (2.d0*cp*ti))**(kappa/(kappa-1.d0))
227 if(v(2,node1).eq.0.d0)
then 228 v(2,node1)=v(2,node2)*p1zp2
230 v(2,node2)=v(2,node1)/p1zp2
238 if(v(0,node1).ne.0.d0)
then 242 if(lakon(nelem)(4:5).eq.
'FO')
then 251 & r,dvi,rhcon,nrhcon,rho)
256 if(lakon(nelem)(4:5).eq.
'FO')
then 260 p2zp1=(1.d0+cti**2*((ro/ri)**2-1.d0)/
261 & (2.d0*cp*ti))**(kappa/(kappa-1.d0))
266 p2zp1=(1.d0+cti**2*(1.d0-(ri/ro)**2)/
267 & (2.d0*cp*ti))**(kappa/(kappa-1.d0))
270 if(v(2,node1).eq.0.d0)
then 271 v(2,node1)=v(2,node2)/p2zp1
273 v(2,node2)=v(2,node1)*p2zp1
278 elseif(v(1,nodem).ne.0.d0)
then 284 if(v(1,nodem).gt.0.d0)
then 285 if(v(2,node1).eq.0.d0)
then 286 v(2,node1)=v(2,node2)*1.01d0
288 & nodenei,ibranch,iponoel,inoel,ipkon,kon)
289 if(v(2,nodenei).le.v(2,node1)) ierror=1
291 v(2,node2)=v(2,node1)*0.99d0
293 & nodenei,ibranch,iponoel,inoel,ipkon,kon)
294 if(v(2,nodenei).ge.v(2,node2)) ierror=2
297 if(v(2,node1).eq.0.d0)
then 298 v(2,node1)=v(2,node2)*0.99d0
300 & nodenei,ibranch,iponoel,inoel,ipkon,kon)
301 if(v(2,nodenei).ge.v(2,node1)) ierror=1
303 v(2,node2)=v(2,node1)*1.01d0
305 & nodenei,ibranch,iponoel,inoel,ipkon,kon)
306 if(v(2,nodenei).le.v(2,node2)) ierror=2
323 & nodenei,ibranch,iponoel,inoel,ipkon,kon)
324 if((ibranch.eq.1).or.(nodenei.eq.0))
exit 335 indexe=ipkon(nelemref)
336 if(kon(indexe+1).eq.noderef)
then 350 if(lakon(nelem)(2:3).eq.
'VO')
then 351 ratio=ratio*v(2,node)/v(2,noderef)
359 & nodenei,ibranch,iponoel,inoel,ipkon,kon)
360 if((ibranch.eq.1).or.(nodenei.eq.0))
exit 361 if(lakon(nelemnei)(2:3).eq.
'VO')
then 362 if((v(2,node).eq.0.d0).or.
363 & (v(2,nodenei).eq.0.d0))
then 367 ratio=ratio*v(2,nodenei)/v(2,node)
381 ratio=(v(2,node)/(v(2,noderef)*ratio))
387 indexe=ipkon(nelemref)
388 if(kon(indexe+1).eq.noderef)
then 396 if(lakon(nelem)(2:3).ne.
'VO')
then 397 v(2,node)=v(2,noderef)*ratio
402 & nodenei,ibranch,iponoel,inoel,ipkon,kon)
403 if((ibranch.eq.1).or.(nodenei.eq.0))
exit 404 if(lakon(nelemnei)(2:3).eq.
'VO')
then 406 v(2,nodenei)=v(2,node)*v(2,nodenei)/pref
410 v(2,nodenei)=v(2,node)*ratio
444 if(dabs(v(1,nodem)).le.1.d-30)
then 457 if(inoel(2,inoel(2,index)).eq.0)
then 461 if(inoel(1,index).eq.nelem)
then 462 neighbor=inoel(1,inoel(2,index))
464 neighbor=inoel(1,index)
469 xflow=v(1,kon(ipkon(neighbor)+2))
471 if(dabs(v(1,nodem)).gt.0.d0)
then 475 if(dabs(xflow).gt.1.d-30)
then 476 if(kon(ipkon(neighbor)+1).eq.node1)
then 488 if(dabs(xflow).gt.0.d0)
then 489 if(kon(ipkon(neighbor)+1).eq.node1)
then 505 if(inoel(1,index).ne.nelem)
then 507 nodemnei=kon(ipkon(iel)+2)
508 if(dabs(v(1,nodemnei)).le.1.d-30)
exit 512 if(kon(ipkon(iel)+1).eq.node1)
then 513 fluxtot=fluxtot-v(1,nodemnei)
515 fluxtot=fluxtot+v(1,nodemnei)
518 if(inoel(2,index).eq.0)
then 537 if(inoel(2,inoel(2,index)).eq.0)
then 541 if(inoel(1,index).eq.nelem)
then 542 neighbor=inoel(1,inoel(2,index))
544 neighbor=inoel(1,index)
549 xflow=v(1,kon(ipkon(neighbor)+2))
551 if(dabs(v(1,nodem)).gt.0.d0)
then 555 if(dabs(xflow).gt.1.d-30)
then 556 if(kon(ipkon(neighbor)+3).eq.node2)
then 568 if(dabs(xflow).gt.0.d0)
then 569 if(kon(ipkon(neighbor)+3).eq.node2)
then 585 if(inoel(1,index).ne.nelem)
then 587 nodemnei=kon(ipkon(iel)+2)
588 if(dabs(v(1,nodemnei)).le.1.d-30)
exit 592 if(kon(ipkon(iel)+3).eq.node2)
then 593 fluxtot=fluxtot-v(1,nodemnei)
595 fluxtot=fluxtot+v(1,nodemnei)
598 if(inoel(2,index).eq.0)
then 622 if(((v(0,node1).ne.0.d0).and.(v(0,node2).ne.0.d0)).or.
623 & ((v(0,node1).eq.0.d0).and.(v(0,node2).eq.0.d0))) cycle
628 if(lakon(nelem)(2:6).eq.
'GAPFA')
then 629 if(v(0,node1).eq.0.d0)
then 630 v(0,node1)=v(0,node2)
632 v(0,node2)=v(0,node1)
640 if(v(1,nodem).eq.0.d0)
then 645 elseif(v(1,nodem).gt.0.d0)
then 649 if(v(0,node1).eq.0.d0) cycle
653 v(0,node2)=v(0,node1)
660 if(v(0,node2).eq.0.d0) cycle
664 v(0,node1)=v(0,node2)
673 if(ichange.eq.0)
exit 682 if(dabs(v(1,nodem)).eq.1.d-30) v(1,nodem)=0.d0
696 if((index.eq.0).or.(inoel(2,index).eq.0)) cycle
705 if(lakon(nelem)(2:3).eq.
'VO') cycle loop
710 if(kon(indexe+1).ne.node)
then 711 neighbor=kon(indexe+1)
713 neighbor=kon(indexe+3)
715 if(neighbor.eq.0) cycle loop
719 if(dabs(v(2,neighbor)).lt.xmin)
then 720 xmin=dabs(v(2,neighbor))
722 elseif(dabs(v(2,neighbor)).gt.xmax)
then 723 xmax=dabs(v(2,neighbor))
734 if((imin.ne.node).and.(imax.ne.node))
then 745 if((index.eq.0).or.(inoel(2,index).eq.0)) cycle
747 if(v(2,node).lt.0.d0) v(2,node)=-v(2,node)
subroutine networkneighbor(nelem, node, nelemnei, nodenei, ibranch, iponoel, inoel, ipkon, kon)
Definition: networkneighbor.f:21
subroutine materialdata_tg(imat, ntmat_, t1l, shcon, nshcon, sph, r, dvi, rhcon, nrhcon, rho)
Definition: materialdata_tg.f:20