31 logical identity,walltemp,temperaturebc,pressurebc,massflowbcall,
35 character*20 labmpc(*)
36 character*20 sideload(*)
39 integer itg(*),ntg,ntr,nelemload(2,*),ipkon(*),network,mi(*),
40 & kon(*),ielmat(mi(3),*),ne,i,j,k,l,index,id,node,nload,
42 & ifacet(6,4),ifacew(8,5),kontri3(3,1),kontri4(3,2),
43 & kontri6(3,4),kontri8(3,6),kontri(4,*),ntri,
44 & konf(8),nloadtr(*),nelem,nope,nopes,ig,nflow,ieg(*),
45 & ndirboun(*),nactdog(0:3,*),nboun,nodeboun(*),ntmat_,
46 & idir,ntq,nteq,nacteq(0:3,*),node1,node2,nodem,
47 & ielprop(*),idirf(8),iflag,imat,numf,nrhcon(*),nshcon(*),
48 & nmpc,nodempc(3,*),ipompc(*),ikboun(*)
50 real*8 prop(*),f,xflow,nodef(8),
df(8),v(0:mi(2),*),g(3),
51 & cp,r,physcon(*),shcon(0:3,ntmat_,*),rho,ttime,time,
52 & co(3,*),dvi,vold(0:mi(2),*),rhcon(*)
54 data ifaceq /4,3,2,1,11,10,9,12,
55 & 5,6,7,8,13,14,15,16,
57 & 2,3,7,6,10,19,14,18,
58 & 3,4,8,7,11,20,15,19,
59 & 4,1,5,8,12,17,16,20/
60 data ifacet /1,3,2,7,6,5,
64 data ifacew /1,3,2,9,8,7,0,0,
70 data kontri4 /1,2,4,2,3,4/
71 data kontri6 /1,4,6,4,5,6,4,2,5,6,5,3/
72 data kontri8 /1,5,8,8,5,7,8,7,4,5,2,6,5,6,7,7,6,3/
90 if(sideload(i)(3:4).eq.
'FC')
then 92 call nident(itg,nelemload(2,i),ntg,id)
94 if(itg(id).eq.nelemload(2,i))
then 95 nactdog(0,nelemload(2,i))=1
103 itg(id+1)=nelemload(2,i)
104 nactdog(0,nelemload(2,i))=1
106 elseif(sideload(i)(3:4).eq.
'NP')
then 107 call nident(itg,nelemload(2,i),ntg,id)
109 if(itg(id).eq.nelemload(2,i))
then 110 nactdog(2,nelemload(2,i))=1
118 itg(id+1)=nelemload(2,i)
119 nactdog(2,nelemload(2,i))=1
121 elseif(sideload(i)(3:4).eq.
'CR')
then 124 read(sideload(i)(2:2),
'(i1)') ig
128 if(lakon(nelem)(4:4).eq.
'2')
then 131 elseif(lakon(nelem)(4:4).eq.
'8')
then 134 elseif(lakon(nelem)(4:5).eq.
'10')
then 137 elseif(lakon(nelem)(4:4).eq.
'4')
then 140 elseif(lakon(nelem)(4:4).eq.
'6')
then 147 elseif(lakon(nelem)(4:5).eq.
'15')
then 158 if((nope.eq.20).or.(nope.eq.8))
then 160 konf(k)=kon(ipkon(nelem)+ifaceq(k,ig))
162 elseif((nope.eq.10).or.(nope.eq.4))
then 164 konf(k)=kon(ipkon(nelem)+ifacet(k,ig))
168 konf(k)=kon(ipkon(nelem)+ifacew(k,ig))
175 if((lakon(nelem)(4:4).eq.
'2').or.
176 & ((lakon(nelem)(4:5).eq.
'15').and.(ig.gt.2)))
then 180 kontri(l,ntri)=konf(kontri8(l,k))
184 elseif((lakon(nelem)(4:4).eq.
'8').or.
185 & ((lakon(nelem)(4:4).eq.
'6').and.(ig.gt.2)))
then 189 kontri(l,ntri)=konf(kontri4(l,k))
193 elseif((lakon(nelem)(4:5).eq.
'10').or.
194 & ((lakon(nelem)(4:5).eq.
'15').and.(ig.le.2)))
then 198 kontri(l,ntri)=konf(kontri6(l,k))
202 elseif((lakon(nelem)(4:4).eq.
'4').or.
203 & ((lakon(nelem)(4:4).eq.
'6').and.(ig.le.2)))
then 207 kontri(l,ntri)=konf(kontri3(l,k))
220 if(lakon(i)(1:1).eq.
'D')
then 221 if((lakon(i)(2:2).ne.
' ').and.(network.ne.1))
then 234 call nident(itg,node,ntg,id)
236 if(itg(id).eq.node)
then 255 if(lakon(i)(1:7).eq.
'ESPRNGF')
then 256 read(lakon(i)(8:8),
'(i1)') nopes
258 node=kon(ipkon(i)+nope)
260 call nident(itg,node,ntg,id)
262 if(itg(id).eq.node)
then 284 call nident(itg,node,ntg,id)
286 if(itg(id).eq.node)
then 290 if((lakon(ieg(i))(4:7).eq.
'CHSO').or.
291 & (lakon(ieg(i))(4:7).eq.
'CHWO').or.
292 & (lakon(ieg(i))(4:7).eq.
'CHDO')) cycle
306 if((lakon(ieg(i))(4:7).eq.
'CHSO').or.
307 & (lakon(ieg(i))(4:7).eq.
'CHWO').or.
308 & (lakon(ieg(i))(4:7).eq.
'CHDO')) cycle
318 call nident(itg,node,ntg,id)
320 if(itg(id).eq.node) cycle
331 if(lakon(ieg(i))(6:7).eq.
'GV')
then 332 index=ielprop(ieg(i))
333 if(prop(index+2).le.0.d0) nactdog(3,node)=1
334 elseif((lakon(ieg(i))(4:7).eq.
'CHSG').or.
335 & (lakon(ieg(i))(4:7).eq.
'CHWE').or.
336 & (lakon(ieg(i))(4:7).eq.
'CHDS'))
then 338 elseif(lakon(ieg(i))(2:7).eq.
'ACCTUB')
then 340 index=ielprop(ieg(i))
341 if(prop(index+1).eq.2)
then 344 elseif(prop(index+1).eq.3)
then 357 call nident(itg,node,ntg,id)
359 if(itg(id).eq.node)
then 363 if((lakon(ieg(i))(4:7).eq.
'CHSG').or.
364 & (lakon(ieg(i))(4:7).eq.
'CHWE').or.
365 & (lakon(ieg(i))(4:7).eq.
'CHDS')) cycle
379 if((lakon(ieg(i))(4:7).eq.
'CHSG').or.
380 & (lakon(ieg(i))(4:7).eq.
'CHWE').or.
381 & (lakon(ieg(i))(4:7).eq.
'CHDS')) cycle
394 node=nodempc(1,index)
395 call nident(itg,node,ntg,id)
397 if(itg(id).eq.node)
then 398 labmpc(i)(1:7)=
'NETWORK' 403 index=nodempc(3,index)
412 if(labmpc(i)(1:7).ne.
'NETWORK') cycle
416 node=nodempc(1,index)
417 call nident(itg,node,ntg,id)
419 if(itg(id).eq.node)
then 420 nactdog(nodempc(2,index),node)=1
421 index=nodempc(3,index)
437 nactdog(nodempc(2,index),node)=1
438 index=nodempc(3,index)
448 call nident(itg,node,ntg,id)
450 if (itg(id).eq.node)
then 455 elseif(idir.eq.2)
then 478 if ((nactdog(1,nodem).ne.0).or.(nactdog(3,nodem).ne.0))
then 481 if (nactdog(0,node2).ne.0)
then 487 elseif (node2.eq.0)
then 488 if ((nactdog(1,nodem).ne.0).or.(nactdog(3,nodem).ne.0))
then 491 if (nactdog(0,node1).ne.0)
then 499 if((nactdog(1,nodem).ne.0).or.(nactdog(3,nodem).ne.0))
then 505 call flux(node1,node2,nodem,nelem,lakon,kon,ipkon,
506 & nactdog,identity,ielprop,prop,iflag,v,xflow,f,
507 & nodef,idirf,
df,cp,r,rho,physcon,g,co,dvi,numf,
508 & vold,set,shcon,nshcon,rhcon,nrhcon,ntmat_,mi,ider,
511 if (.not.identity)
then 515 if (nactdog(0,node1).ne.0)
then 519 if (nactdog(0,node2).ne.0)
then 528 if((sideload(i)(3:4)).eq.
'FC')
then 530 if (nactdog(0,node).ne.0)
then 541 if(labmpc(i)(1:7).ne.
'NETWORK') cycle
543 idir=nodempc(2,index)
545 node=nodempc(1,index)
546 call nident(itg,node,ntg,id)
548 if(itg(id).eq.node)
then 560 if((nactdog(1,node).ne.0).or.(nactdog(3,node).ne.0))
then 561 massflowbcall=.false.
570 if(nactdog(2,node).ne.0)
then 571 pressurebcall=.false.
580 if(massflowbcall.and.((.not.pressurebc).or.(pressurebcall)))
then 584 if(network.gt.1) network=2
592 if(node1.ne.0) nactdog(2,node1)=0
593 if(node2.ne.0) nactdog(2,node2)=0
595 elseif((.not.temperaturebc).and.(.not.walltemp))
then 599 write(*,*)
'*INFO in envtemp: no thermal boundary conditions' 600 write(*,*)
' detected; the network is considered to be' 601 write(*,*)
' athermal and no gas temperatures will be' 602 write(*,*)
' calculated' 609 elseif((.not.temperaturebc).and.walltemp)
then 610 write(*,*)
'*ERROR in envtemp: at least one temperature' 611 write(*,*)
' boundary condition must be given' 613 elseif(.not.pressurebc)
then 614 write(*,*)
'*ERROR in envtemp: at least one pressure' 615 write(*,*)
' boundary condition must be given' 622 if(network.gt.2)
then 625 if((lakon(nelem)(2:3).eq.
'LI').or.
626 & (lakon(nelem)(2:3).eq.
'LP').or.
627 & (lakon(nelem)(2:3).eq.
' ')) cycle
631 write(*,*)
'*ERROR in envtemp: specific gas',
632 &
'constant is close to zero' 644 if (nacteq(j,node).ne.0)
then 660 if(labmpc(i)(1:7).eq.
'NETWORK') nteq=nteq+1
670 if (nactdog(j,node).ne.0)
then 691 write(*,*)
'*ERROR in envtemp:' 692 write(*,*)
'*****number of network equations is not equal to' 693 write(*,*)
' number of active degrees of freedom*****' 694 write(*,*)
' # of network equations = ',nteq
695 write(*,*)
' # of active degrees of freedom= ',ntq
714 if((lakon(nelem)(1:4).eq.
"DGAP")
715 & .and.(lakon(nelem)(6:6).eq.
"I"))
then 720 if((node1.eq.0).or.(node2.eq.0)) cycle
722 if(nacteq(0,node2).ne.0)
then 723 nacteq(3,node2)=node1
724 elseif(nacteq(0,node1).ne.0)
then 725 nacteq(3,node1)=node2
subroutine df(x, u, uprime, rpar, nev)
Definition: subspace.f:133
subroutine networkmpcs(inpc, textpart, ipompc, nodempc, coefmpc, nmpc, nmpc_, mpcfree, nk, ikmpc, ilmpc, labmpc, istep, istat, n, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: networkmpcs.f:22
subroutine flux(node1, node2, nodem, nelem, lakon, kon, ipkon, nactdog, identity, ielprop, prop, kflag, v, xflow, f, nodef, idirf, df, cp, R, rho, physcon, g, co, dvi, numf, vold, set, shcon, nshcon, rhcon, nrhcon, ntmat_, mi, ider, ttime, time, iaxial)
Definition: flux.f:24
subroutine nident(x, px, n, id)
Definition: nident.f:26