37       logical identity,gravity,gaspipe
    40       character*20 labmpc(*)
    43       integer mi(*),ieg(*),nflow,i,j,ntg,ielmat(mi(3),*),ntmat_,
    44      &     node1,node2,ider,iaxial,nmpc,ipompc(*),nodempc(3,*),
    45      &     nelem,index,nshcon(*),ipkon(*),kon(*),ikboun(*),nboun,idof,
    46      &     nodem,idirf(8),nactdog(0:3,*),imat,ielprop(*),id1,id2,
    47      &     nodef(8),ndirboun(*),nodeboun(*),itg(*),node,kflag,ipiv(*),
    48      &     nrhs,info,idof1,idof2,nteq,nrhcon(*),ipobody(2,*),ibody(3,*),
    49      &     nbody,numf,network,iin_abs,icase,index2,index1,nelem1,nelem2,
    50      &     node11,node21,node12,node22,istep,iit,ineighe(*),iponoel(*),
    51      &     ilboun(*),idir,channel,inoel(2,*),indexe,iel
    53       real*8 ac(nteq,nteq), bc(nteq),prop(*),shcon(0:3,ntmat_,*),
    54      &     f,
df(8),xflow,xbounact(*),v(0:mi(2),*),cp,r,tg1,
    55      &     tg2,gastemp,physcon(*),pressmin,dvi,rho,g(3),
z1,z2,
    56      &     rhcon(0:1,ntmat_,*),co(3,*),xbodyact(7,*),kappa,
    57      &     a,tt,pt,ts,pressmax,constant,vold(0:mi(2),*),
    58      &     coefmpc(*),ttime,time,xflow360
    68          v(ndirboun(j),nodeboun(j))=xbounact(j)
    75          if(lakon(nelem)(2:5).eq.
'LICH') 
then    97      &     ielmat,ntmat_,shcon,nshcon,rhcon,nrhcon,mi,iponoel,inoel,
   109             if(v(2,node).lt.1.d-10) 
then   112                if(pressmin.lt.0.d0) 
then   114                elseif(v(2,node).lt.pressmin) 
then   118                if(v(2,node).gt.pressmax)
then   125          if(pressmin.lt.0.d0) 
then   127      &           
'*ERROR in initialnet: minimum initial pressure'   128             write(*,*) 
'       is smaller than zero'   142             call nident(itg,node1,ntg,id1)
   143             call nident(itg,node2,ntg,id2)
   145             if(iin_abs.eq.0) 
then   146                if ((lakon(nelem)(2:5).eq.
'GAPF').or.
   147      &             ((lakon(nelem)(2:3).eq.
'RE')
   148      &              .and.(lakon(nelem)(2:7).ne.
'REWAOR')).or.
   149      &             (lakon(nelem)(2:3).eq.
'UP')) 
then    159                      if (ineighe(id1).ge.0) 
then   162                            ineighe(id1)=ineighe(id1)+1
   167                      if (ineighe(id2).ge.0) 
then   169                            ineighe(id2)=ineighe(id2)+1
   190             if((node1.eq.0).or.(node2.eq.0)) cycle
   191             if(v(2,node1).lt.1.d-10) 
then   192                v(2,node1)=v(2,node1)-1.d0
   194             if(v(2,node2).lt.1.d-10) 
then   195                v(2,node2)=v(2,node2)-1.d0
   208             if(nactdog(2,node).eq.0) 
then    212             if((nactdog(2,node).ne.0)
   213      &           .and.(v(2,node).gt.0d0)) 
then   217             if(abs(v(2,node)+1.d0).lt.1.d-10) 
then   233                   if((node1.eq.0).or.(node2.eq.0)) 
exit   237                if(((node1.eq.node).and.(v(1,nodem).ge.0.d0)).or.
   238      &            ((node2.eq.node).and.(v(1,nodem).le.0.d0))) 
then   239                   v(2,node)=0.95d0*pressmin
   240                   pressmin=0.95d0*pressmin
   242                   v(2,node)=1.05d0*pressmax
   243                   pressmax=1.05d0*pressmax
   254             if(nactdog(2,node).eq.0) 
then    255                v(2,node)=dtan(v(2,node)
   256      &              *constant/pressmax) 
   258             elseif(v(2,node).gt.0d0) 
then   259                v(2,node)=dtan(v(2,node)
   260      &              *constant/pressmax) 
   269                if(nactdog(j,node).ne.0) 
then   275                if(nactdog(j,node).ne.0) 
then   289             if((node1.eq.0).or.(node2.eq.0)) cycle
   290             idof1=nactdog(2,node1)
   291             idof2=nactdog(2,node2)
   293                if(v(2,node1).gt.0.d0) 
then   298                   ac(idof1,idof1)=ac(idof1,idof1)+1.d0
   299                   if(v(2,node2).gt.0.d0) 
then   301                      bc(idof1)=bc(idof1)+v(2,node2)
   303                      ac(idof1,idof2)=ac(idof1,idof2)-1.d0
   308                if(v(2,node2).gt.0.d0) 
then   313                   ac(idof2,idof2)=ac(idof2,idof2)+1.d0
   314                   if(v(2,node1).gt.0.d0) 
then   316                      bc(idof2)=bc(idof2)+v(2,node1)
   318                      ac(idof2,idof1)=ac(idof2,idof1)-1.d0
   328             if(nactdog(2,node).ne.0) 
then   330                if(ac(idof,idof).eq.0.d0) 
then   341       if(network.ne.4) 
then   351             if((node1.eq.0).or.(node2.eq.0)) cycle
   352             idof1=nactdog(0,node1)
   353             idof2=nactdog(0,node2)
   355                if(v(0,node1).gt.0.d0) 
then   363                elseif(v(1,nodem).lt.0.d0) 
then   364                   ac(idof1,idof1)=ac(idof1,idof1)+1.d0
   365                   if(v(0,node2).gt.0.d0) 
then   367                      bc(idof1)=bc(idof1)+v(0,node2)
   369                      ac(idof1,idof2)=ac(idof1,idof2)-1.d0
   374                if(v(0,node2).gt.0.d0) 
then   383                elseif(v(1,nodem).ge.0.d0) 
then   384                   ac(idof2,idof2)=ac(idof2,idof2)+1.d0
   385                   if(v(0,node1).gt.0.d0) 
then   387                      bc(idof2)=bc(idof2)+v(0,node1)
   389                      ac(idof2,idof1)=ac(idof2,idof1)-1.d0
   399             if(nactdog(0,node).ne.0) 
then   401                if(ac(idof,idof).eq.0.d0) 
then   412          if(dabs(ac(j,j)).lt.1.d-20) ac(j,j)=1.d0
   419          call dgesv(nteq,nrhs,ac,nteq,ipiv,bc,nteq,info)
   421             write(*,*) 
'*ERROR in initialnet: singular matrix'   429       if(network.gt.2) 
then   432             if(nactdog(2,node).eq.0) 
then   434      &              *datan(v(2,node))/constant
   438      &           *datan(bc(nactdog(2,node)))/constant
   445       if(network.ne.4) 
then   448             if(nactdog(0,node).ne.0) v(0,node)=bc(nactdog(0,node))
   458          if(lakon(i)(2:5).ne.
'REBR') cycle
   461          nelem1=nint(prop(index+2))
   466          nelem2=nint(prop(index+3))
   471          if(node11.eq.node12) 
then   474          elseif(node11.eq.node22) 
then   477          elseif(node21.eq.node12) 
then   480          elseif(node21.eq.node22) 
then   485          if(lakon(i)(6:6).eq.
'S') 
then   489             if(v(2,node1).ge.v(2,node2)) 
then   490                v(2,node2)=v(2,node1)
   492                v(2,node1)=v(2,node2)
   494          elseif(lakon(i)(6:6).eq.
'J') 
then   498             if(v(2,node1).ge.v(2,node2)) 
then   499                v(2,node1)=v(2,node2)
   501                v(2,node2)=v(2,node1)
   511       if((network.le.2).and.(iin_abs.eq.0)) 
then   514             if((lakon(nelem)(2:3).eq.
'LP').or.
   515      &           (lakon(nelem)(2:3).eq.
'LI')) cycle
   520                call nident(itg,node1,ntg,id1)
   524                call nident(itg,node2,ntg,id2)
   546             if((node1.eq.0).or.(node2.eq.0)) cycle
   551             if((nactdog(1,nodem).eq.0).and.(nactdog(3,nodem).eq.0)) 
   556             if(lakon(nelem)(2:3).eq.
'LI') 
then   566                      if(ibody(1,j).eq.2) 
then   567                         g(1)=g(1)+xbodyact(1,j)*xbodyact(2,j)
   568                         g(2)=g(2)+xbodyact(1,j)*xbodyact(3,j)
   569                         g(3)=g(3)+xbodyact(1,j)*xbodyact(4,j)
   570                         z1=-g(1)*co(1,node1)-g(2)*co(2,node1)
   572                         z2=-g(1)*co(1,node2)-g(2)*co(2,node2)
   576                      index=ipobody(2,index)
   580                if(.not.gravity) 
then   582      &                 
'*ERROR in initialnet: no gravity vector'   584      &                 
'       was defined for liquid element',nelem
   597             if((lakon(nelem)(2:3).ne.
'LP').and.
   598      &           (lakon(nelem)(2:3).ne.
'LI')) 
then   599                gastemp=(tg1+tg2)/2.d0
   611      &           r,dvi,rhcon,nrhcon,rho)
   617             if(((lakon(nelem)(2:3).ne.
'LI').and.
   618      &           (v(2,node1).eq.v(2,node2))).or.
   620      &           ((lakon(nelem)(2:3).eq.
'LI').and.
   621      &           (v(2,node1)+
z1.eq.v(2,node2)+z2))) 
then   626                if((nactdog(2,node1).eq.0)
   627      &           .and.(nactdog(2,node2).eq.0)) 
then   628                   WRITE(*,*) 
'**************************************'   629                   write(*,*) 
'*ERROR: in subroutine initialnet.f'   630                   write(*,*) 
'        no pressure gradient'   631                   write(*,*) 
'        in element', nelem
   632                   write(*,*) 
'        Inlet and outlet pressures are '   633                   write(*,*) 
'        boundary conditions '   634                   write(*,*) 
'        node1',node1,
' pressure',
   636                   write(*,*) 
'        node2',node2,
' pressure',
   642                else if((nactdog(2,node1).ne.0)
   643      &                 .and.(nactdog(2,node2).eq.0))
then   644                   WRITE(*,*) 
'**************************************'   645                   write(*,*) 
'*WARNING: in subroutine initialnet.f'   646                   write(*,*) 
'          no pressure gradient'   647                   write(*,*) 
'          in element', nelem
   649      &               
'          Inlet pressure initial condition '   650                   write(*,*) 
'          is changed '   651                   write(*,*) 
'          node1',node1,
   652      &                 
' given initial pressure',v(2,node1)
   653                   v(2,node1)=1.1*v(2,node1)
   654                   write(*,*) 
'          node1',node1,
   655      &                 
' new initial pressure',v(2,node1)
   656                   write(*,*) 
'          node2',node2,
' pressure',
   661                else if((nactdog(2,node1).eq.0)
   662      &                 .and.(nactdog(2,node2).ne.0))
then   663                   WRITE(*,*) 
'**************************************'   664                   write(*,*) 
'*WARNING: in subroutine initialnet.f'   665                   write(*,*) 
'          no pressure gradient'   666                   write(*,*) 
'          in element', nelem
   668      &                 
'          Outlet pressure initial condition '   669                   write(*,*) 
'          is changed '   670                   write(*,*) 
'          node1',node1,
' pressure'   672                   write(*,*) 
'          node2',node2,
   673      &                 
'given intial pressure',
   675                   v(2,node2)=0.9*v(2,node2)
   676                   write(*,*) 
'          node2',node2,
   677      &                 
' new initial pressure',v(2,node2)
   681                else if((nactdog(2,node1).ne.0)
   682      &                 .and.(nactdog(2,node2).ne.0))
then   683                   WRITE(*,*) 
'**************************************'   684                   write(*,*) 
'*WARNING: in subroutine initialnet.f'   685                   write(*,*) 
'          no pressure gradient'   686                   write(*,*) 
'          in element', nelem
   687                   write(*,*) 
'          Inlet and outlet pressure '   688                   write(*,*) 
'          initial condition are changed '   689                   write(*,*) 
'          node1',node1,
   690      &                 
' given initial pressure',v(2,node1)  
   691                   v(2,node1)=1.05*v(2,node2)
   692                   write(*,*) 
'          node1',node1,
   693      &                 
' new intial pressure',v(2,node1)
   694                   write(*,*) 
'          node2',node2,
   695      &                 
' given initial pressure',v(2,node2)
   696                   v(2,node2)=0.95*v(2,node2)
   697                   write(*,*) 
'          node2',node2,
   698      &                 
' new intial pressure',v(2,node2)
   705             if((nactdog(1,nodem).ne.0).and.(v(1,nodem).eq.0.d0)) 
then   706                call flux(node1,node2,nodem,nelem,lakon,kon,ipkon,
   707      &           nactdog,identity,ielprop,prop,kflag,v,xflow,f,
   708      &           nodef,idirf,
df,cp,r,rho,physcon,g,co,dvi,numf,
   709      &           vold,set,shcon,nshcon,rhcon,nrhcon,ntmat_,mi,ider,
   714             if((lakon(nelem)(2:4).ne.
'LIP').and.
   715      &         (lakon(nelem)(2:3).ne.
'VO').and.
   716      &         (lakon(nelem)(2:4).ne.
'ATR').and.
   717      &         (lakon(nelem)(2:4).ne.
'RTA')) 
then   718                if(v(1,nodem).eq.0d0) 
then   719                   WRITE(*,*) 
'**************************************'   720                   write(*,*) 
'*ERROR: in subroutine initialnet.f'   721                   write(*,*) 
'        in element', nelem,
   723                   write(*,*) 
'        mass flow rate value = 0 !'   724                   write(*,*) 
'        node1',node1,
' pressure',
   726                   write(*,*) 
'        node2',node2,
' pressure',
   730                if (v(1,nodem)*(v(2,node1)-v(2,node2)).lt.0) 
then   731                   WRITE(*,*) 
'**************************************'   732                   write(*,*) 
'*WARNING: in subroutine initialnet.f'   733                   write(*,*) 
'          in element', nelem
   735      &                 
'          initial mass flow rate value does not'   736                   write(*,*) 
'          correspond to pressure gradient'   737                   write(*,*) 
'          node1',node1,
'pressure',
   739                   write(*,*) 
'          node2',node2,
'pressure',
   741                   write(*,*) 
'          nodem',nodem,
'mass flow',
   744      &               
'          the sign of the initial mass flow'   745                   write(*,*) 
'          rate will be changed'   752      &     ielmat,ntmat_,shcon,nshcon,rhcon,nrhcon,mi,iponoel,inoel,
   758       if (gaspipe.and.(iin_abs.eq.0)) 
then   764             if(ineighe(i).gt.2) 
then   766                write(*,*) 
'*WARNING :in subroutine initialnet.f'   767                write(*,*) 
'          more than 2 elements GASPIPE'   768                write(*,*) 
'          or RESTRICTOR are connected '   769                write(*,*) 
'          to node',itg(i),
'. The common'   771      &              
'          node is converted into a chamber.'   772                write(*,*) 
'          Total and static parameters are'   782             call nident(itg,node1,ntg,id1)
   783             call nident(itg,node2,ntg,id2)
   794                if((ineighe(id1).eq.1).or.
   795      &              (ineighe(id1).eq.2)) 
then   803                if((ineighe(id2).eq.1).or.
   804      &              (ineighe(id2).eq.2)) 
then   817             if(ineighe(i).gt.0) 
then    821                nodem=kon(ipkon(nelem)+2)
   825      &              shcon,nshcon,cp,r,dvi,rhcon,nrhcon,rho)
   831                if(lakon(nelem)(2:5).eq.
'GAPF') 
then   833                   if(lakon(nelem)(2:6).eq.
'GAPFA') 
then   835                   elseif(lakon(nelem)(2:6).eq.
'GAPFI') 
then   839                elseif(lakon(nelem)(2:3).eq.
'RE') 
then   843                   if(lakon(nelem)(4:5).eq.
'EX') 
then   844                      if(lakon(nint(prop(index+4)))(2:6).eq.
'GAPFA')
   848      &                   (lakon(nint(prop(index+4)))(2:6).eq.
'GAPFI') 
   856                   if(lakon(nelem)(4:5).eq.
'BE') 
then   859                   elseif(lakon(nelem)(4:5).eq.
'BR') 
then   860                      if(lakon(nelem)(4:6).eq.
'BRJ') 
then   861                         if(nelem.eq.nint(prop(index+2)))
then   863                         elseif(nelem.eq.nint(prop(index+3))) 
then   866                      elseif(lakon(nelem)(4:6).eq.
'BRS') 
then   867                         if(nelem.eq.nint(prop(index+2)))
then   869                         elseif(nelem.eq.nint(prop(index+3))) 
then   875                      if(node.eq.node1) 
then   877                      elseif(node.eq.node2) 
then   881                elseif(lakon(nelem)(2:3).eq.
'UP') 
then   891                if(v(3,node).eq.0.d0) 
then   892                   xflow360=xflow*iaxial
   893                   call ts_calc(xflow360,tt,pt,kappa,r,a,ts,icase)
   908          if(ineighe(i).eq.-1) v(3,itg(i))=v(0,itg(i))
 static double * z1
Definition: filtermain.c:48
 
subroutine df(x, u, uprime, rpar, nev)
Definition: subspace.f:133
 
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 preinitialnet(ieg, lakon, v, ipkon, kon, nflow, prop, ielprop, ielmat, ntmat_, shcon, nshcon, rhcon, nrhcon, mi, iponoel, inoel, itg, ntg)
Definition: preinitialnet.f:22
 
subroutine ts_calc(xflow, Tt, Pt, kappa, r, A, Ts, icase)
Definition: ts_calc.f:20
 
subroutine dgesv(N, NRHS, A, LDA, IPIV, B, LDB, INFO)
Definition: dgesv.f:58
 
subroutine postinitialnet(ieg, lakon, v, ipkon, kon, nflow, prop, ielprop, ielmat, ntmat_, shcon, nshcon, rhcon, nrhcon, mi, iponoel, inoel, itg, ntg)
Definition: postinitialnet.f:22
 
subroutine nident(x, px, n, id)
Definition: nident.f:26
 
subroutine materialdata_tg(imat, ntmat_, t1l, shcon, nshcon, sph, r, dvi, rhcon, nrhcon, rho)
Definition: materialdata_tg.f:20