31 character*1 typeboun(*)
32 character*20 sideload(*),labmpc(*)
34 integer nfabou,ifaext(*),nfaext,ielem,ielfa(4,*),ifa,jface,
35 & j,idof,ikboun(*),nboun,id,ilboun(*),iboun,nelemload(2,*),
36 & nload,isolidsurf(*),nsolidsurf,ifabou(*),i,nface,indexb,
37 & nodeboun(*),ndirboun(*),jsum,ig,ikmpc(*),ilmpc(*),nmpc,mpc,
38 & nactdohinv(*),compressible,iatleastonepressurebc,iface,
39 & ifaceblk,ipkonf(*),kon(*),konf(*),nblk,indexe
42 iatleastonepressurebc=0
52 ielem=nactdohinv(ielfa(1,ifa))
62 indexe=ipkonf(ielfa(1,ifa))
76 call nident(ikboun,idof,nboun,id)
78 if(ikboun(id).eq.idof)
then 80 if(typeboun(iboun).ne.
'F') cycle
81 if(ielfa(2,ifa).eq.0)
then 90 if(compressible.eq.0)
then 93 write(*,*)
'*WARNING in applyboun: a pressure 94 & SPC is being applied to' 95 write(*,*)
' face ',iface,
96 &
'of element ',ielem,
'for which all' 97 write(*,*)
' velocities are known (by 98 & SPCs or MPCs). The pressure' 99 write(*,*)
' SPC is discarded' 103 iatleastonepressurebc=1
108 ifabou(-ielfa(2,ifa)+j)=iboun
114 call nident(ikmpc,idof,nmpc,id)
116 if(ikmpc(id).eq.idof)
then 118 if(labmpc(mpc)(1:5).ne.
'FLUID') cycle
119 if(ielfa(2,ifa).eq.0)
then 122 else if(ifabou(-ielfa(2,ifa)+j).ne.0)
then 123 write(*,*)
'*ERROR in applyboun: MPC is applied' 124 write(*,*)
' to degree of freedom ',j
125 write(*,*)
' in face ',iface
126 write(*,*)
' of element ',ielem,
'.' 127 write(*,*)
' To this degree of freedom ' 128 write(*,*)
' another SPC or MPC has already' 129 write(*,*)
' been applied' 136 if(compressible.eq.0)
then 139 write(*,*)
'*WARNING in applyboun: a pressure 140 & MPC is being applied to' 141 write(*,*)
' face ',iface,
142 &
'of element ',ielem,
'for which all' 143 write(*,*)
' velocities are known (by 144 & SPCs or MPCs). The pressure' 145 write(*,*)
' MPC is discarded' 152 ifabou(-ielfa(2,ifa)+j)=-mpc
159 call nident2(nelemload,ielem,nload,id)
163 if(nelemload(1,id).eq.ielem)
then 164 if(sideload(id)(1:1).eq.
'S')
then 165 read(sideload(id)(2:2),
'(i1)') ig
167 if(ielfa(2,ifa).eq.0)
then 171 ifabou(-ielfa(2,ifa)+6)=id
186 call nident2(nelemload,ielem,nload,id)
191 if(nelemload(1,id).eq.ielem)
then 192 if(sideload(id)(1:1).eq.
'M')
then 193 read(sideload(id)(2:2),
'(i1)') ig
196 if(ielfa(2,ifa).eq.0)
then 201 ifabou(-ielfa(2,ifa)+5)=-1
216 call nident(isolidsurf,jface,nsolidsurf,id)
218 if(isolidsurf(id).eq.jface)
then 219 if(ielfa(2,ifa).eq.0)
then 224 if((ifabou(indexb+1).eq.0).or.
225 & (ifabou(indexb+2).eq.0).or.
226 & (ifabou(indexb+3).eq.0))
then 227 write(*,*)
'*ERROR in applyboun: face',iface
228 write(*,*)
' of element ',ielem,
'is defined' 229 write(*,*)
' as solid surface but not all' 230 write(*,*)
' velocity components are defined' 231 write(*,*)
' as boundary conditions' 248 if(ielfa(2,ifa).eq.0)
then 252 ielfa(3,ifa)=-ielfa(3,ifa)
253 elseif(ifabou(-ielfa(2,ifa)+5).ne.-1)
then 257 if((jsum.eq.0).or.(jsum.eq.4))
then 261 ielfa(3,ifa)=-ielfa(3,ifa)
subroutine nident2(x, px, n, id)
Definition: nident2.f:27
subroutine nident(x, px, n, id)
Definition: nident.f:26
subroutine identifyface(konl1, konl2, iface1, iface2)
Definition: identifyface.f:20