33 character*1 type,typeboun(*)
35 character*20 labmpc(*),label
38 integer iponoel(*),inoel(3,*),iponoelmax,kon(*),ipkon(*),ne,
39 & iponor(2,*),knor(*),ipompc(*),nodempc(3,*),nmpc,nmpc_,mpcfree,
40 & ikmpc(*),ilmpc(*),rig(*),ntrans,inotr(2,*),i,node,
41 & indexx,ielem,j,indexe,indexk,idir,nk,nk_,iamplitude,
42 & newnode,idof,id,mpcfreenew,k,nam,nmethod,iperturb,istartset(*),
43 & iendset(*),ialset(*),nset,ipos,l,idummy,ikboun(*),ilboun(*),
44 & nboun,nboun_,nodeboun(*),ndirboun(*),iamboun(*),mi(*)
46 real*8 coefmpc(*),trab(7,*),co(3,*),val,xboun(*),vold(0:mi(2),*)
52 ipos=index(set(i),
' ')
56 if(set(i)(ipos-1:ipos-1).ne.
'S') cycle
57 do l=istartset(i),iendset(i)
59 if(node.gt.iponoelmax) cycle
65 indexk=iponor(2,indexe+j)
67 if(rig(node).eq.0)
then 71 if(lakon(ielem)(7:7).eq.
'L')
then 72 newnode=knor(indexk+1)
74 idof=8*(newnode-1)+idir
75 call nident(ikmpc,idof,nmpc,id)
76 if((id.le.0).or.(ikmpc(id).ne.idof))
then 78 if(nmpc.gt.nmpc_)
then 80 &
'*ERROR in gen3dboun: increase nmpc_' 91 nodempc(1,mpcfree)=newnode
92 nodempc(2,mpcfree)=idir
94 mpcfree=nodempc(3,mpcfree)
97 &
'*ERROR in gen3dboun: increase memmpc_' 100 nodempc(1,mpcfree)=knor(indexk+3)
101 nodempc(2,mpcfree)=idir
102 coefmpc(mpcfree)=1.d0
103 mpcfree=nodempc(3,mpcfree)
104 if(mpcfree.eq.0)
then 106 &
'*ERROR in gen3dboun: increase memmpc_' 109 nodempc(1,mpcfree)=node
110 nodempc(2,mpcfree)=idir
111 coefmpc(mpcfree)=-2.d0
112 mpcfreenew=nodempc(3,mpcfree)
113 if(mpcfreenew.eq.0)
then 115 &
'*ERROR in gen3dboun: increase memmpc_' 122 elseif(lakon(ielem)(7:7).eq.
'B')
then 126 newnode=knor(indexk+1)
128 idof=8*(newnode-1)+idir
129 call nident(ikmpc,idof,nmpc,id)
130 if((id.le.0).or.(ikmpc(id).ne.idof))
then 132 if(nmpc.gt.nmpc_)
then 134 &
'*ERROR in gen3dboun: increase nmpc_' 145 nodempc(1,mpcfree)=newnode
146 nodempc(2,mpcfree)=idir
147 coefmpc(mpcfree)=1.d0
148 mpcfree=nodempc(3,mpcfree)
149 if(mpcfree.eq.0)
then 151 &
'*ERROR in gen3dboun: increase memmpc_' 155 nodempc(1,mpcfree)=knor(indexk+k)
156 nodempc(2,mpcfree)=idir
157 coefmpc(mpcfree)=1.d0
158 mpcfree=nodempc(3,mpcfree)
159 if(mpcfree.eq.0)
then 161 &
'*ERROR in gen3dboun: increase memmpc_' 165 nodempc(1,mpcfree)=node
166 nodempc(2,mpcfree)=idir
167 coefmpc(mpcfree)=-4.d0
168 mpcfreenew=nodempc(3,mpcfree)
169 if(mpcfreenew.eq.0)
then 171 &
'*ERROR in gen3dboun: increase memmpc_' 200 newnode=knor(indexk+2)
202 idof=8*(newnode-1)+idir
203 call nident(ikmpc,idof,nmpc,id)
204 if(((id.le.0).or.(ikmpc(id).ne.idof)).and.
207 if(nmpc.gt.nmpc_)
then 209 &
'*ERROR in gen3dmpc: increase nmpc_' 220 nodempc(1,mpcfree)=newnode
221 nodempc(2,mpcfree)=idir
222 coefmpc(mpcfree)=1.d0
223 mpcfree=nodempc(3,mpcfree)
224 if(mpcfree.eq.0)
then 226 &
'*ERROR in gen3dmpc: increase memmpc_' 229 nodempc(1,mpcfree)=node
230 nodempc(2,mpcfree)=idir
231 coefmpc(mpcfree)=-1.d0
232 mpcfreenew=nodempc(3,mpcfree)
233 if(mpcfreenew.eq.0)
then 235 &
'*ERROR in gen3dmpc: increase memmpc_' 247 if(nam.gt.0) iamplitude=0
249 call bounadd(node,k,k,val,nodeboun,
250 & ndirboun,xboun,nboun,nboun_,iamboun,
251 & iamplitude,nam,ipompc,nodempc,coefmpc,
252 & nmpc,nmpc_,mpcfree,inotr,trab,ntrans,
253 & ikboun,ilboun,ikmpc,ilmpc,co,nk,nk_,
254 & labmpc,
type,typeboun,nmethod,iperturb,
255 & fixed,vold,idummy,mi,label)
subroutine nident(x, px, n, id)
Definition: nident.f:26
subroutine bounadd(node, is, ie, val, nodeboun, ndirboun, xboun, nboun, nboun_, iamboun, iamplitude, nam, ipompc, nodempc, coefmpc, nmpc, nmpc_, mpcfree, inotr, trab, ntrans, ikboun, ilboun, ikmpc, ilmpc, co, nk, nk_, labmpc, type, typeboun, nmethod, iperturb, fixed, vold, nodetrue, mi, label)
Definition: bounadd.f:24