30 character*1 typeboun(*),inpc(*)
32 character*20 labmpc(*)
33 character*81 set(*),elset,noset
34 character*132 textpart(16)
36 integer istartset(*),iendset(*),ialset(*),ipompc(*),
38 & nset,nset_,nalset,nalset_,nmpc,nmpc_,mpcfree,nk,nk_,ikmpc(*),
39 & ilmpc(*),ipkon(*),kon(*),inoset,ielset,i,node,ielement,id,
40 & indexe,nope,istep,istat,n,irefnode,irotnode,ne_,
41 & j,idof,k,nodeboun(*),ndirboun(*),ikboun(*),ilboun(*),
42 & nboun,nboun_,key,iperturb,ipos,iline,ipol,inl,ipoinp(2,*),
43 & inp(3,*),ipoinpc(0:*),jmin,jmax
45 real*8 coefmpc(3,*),ctrl(*),co(3,*)
52 &
'*ERROR reading *RIGID BODY: *RIGID BODY should be placed' 53 write(*,*)
' before all step definitions' 60 if(iperturb.eq.1)
then 61 write(*,*)
'*ERROR reading *RIGID BODY: the *RIGID BODY option' 62 write(*,*)
' cannot be used in a perturbation step' 74 if(textpart(i)(1:6).eq.
'ELSET=')
then 75 if(noset(1:1).eq.
' ')
then 76 elset(1:80)=textpart(i)(7:86)
80 write(*,*)
'*ERROR reading *RIGID BODY: either NSET or' 81 write(*,*)
' ELSET can be specified, not both' 84 elseif(textpart(i)(1:8).eq.
'PINNSET=')
then 85 if(elset(1:1).eq.
' ')
then 86 noset(1:80)=textpart(i)(9:88)
90 write(*,*)
'*ERROR reading *RIGID BODY: either NSET or' 91 write(*,*)
' ELSET can be specified, not both' 94 elseif(textpart(i)(1:5).eq.
'NSET=')
then 95 if(elset(1:1).eq.
' ')
then 96 noset(1:80)=textpart(i)(6:85)
100 write(*,*)
'*ERROR reading *RIGID BODY: either NSET or' 101 write(*,*)
' ELSET can be specified, not both' 104 elseif(textpart(i)(1:8).eq.
'REFNODE=')
then 105 read(textpart(i)(9:18),
'(i10)',iostat=istat) irefnode
106 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
108 if(irefnode.gt.nk)
then 109 write(*,*)
'*ERROR reading *RIGID BODY: ref node',
111 write(*,*)
' has not been defined' 114 elseif(textpart(i)(1:8).eq.
'ROTNODE=')
then 115 read(textpart(i)(9:18),
'(i10)',iostat=istat) irotnode
116 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
118 if(irotnode.gt.nk)
then 119 write(*,*)
'*ERROR reading *RIGID BODY: rot node',
121 write(*,*)
' has not been defined' 126 &
'*WARNING reading *RIGID BODY: parameter not recognized:' 128 & textpart(i)(1:index(textpart(i),
' ')-1)
136 if((elset(1:1).eq.
' ').and.
137 & (noset(1:1).eq.
' '))
then 138 write(*,*)
'*WARNING reading *RIGID BODY: no set defined' 139 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
140 & ipoinp,inp,ipoinpc)
149 if(noset(1:1).ne.
' ')
then 151 if(set(i).eq.noset)
then 157 write(*,*)
'*WARNING reading *RIGID BODY: node set ',noset
158 write(*,*)
' does not exist' 159 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
160 & ipoinp,inp,ipoinpc)
165 if(elset(1:1).ne.
' ')
then 167 if(set(i).eq.elset)
then 173 write(*,*)
'*WARNING reading *RIGID BODY: element set ',
175 write(*,*)
' does not exist' 176 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
177 & ipoinp,inp,ipoinpc)
185 if(irefnode.eq.0)
then 188 write(*,*)
'*ERROR reading *RIGID BODY: increase nk_' 200 if(irotnode.eq.0)
then 203 write(*,*)
'*ERROR reading *RIGID BODY: increase nk_' 212 do i=istartset(inoset),iendset(inoset)
215 write(*,*)
'*ERROR reading *RIGID BODY: node ',node
216 write(*,*)
' belonging to set ',noset
217 write(*,*)
' has not been defined' 220 if((node.eq.irefnode).or.(node.eq.irotnode)) cycle
223 call nident(ikmpc,idof,nmpc,id)
225 if(ikmpc(id).eq.idof)
then 226 write(*,*)
'*WARNING reading *RIGID BODY: dof ',j
227 write(*,*)
' of node ',node,
' belonging' 228 write(*,*)
' to a rigid body is detected' 229 write(*,*)
' on the dependent side of ' 230 write(*,*)
' another equation; no rigid' 231 write(*,*)
' body constrained applied' 239 do i=istartset(ielset),iendset(ielset)
241 if(ielement.gt.ne_)
then 242 write(*,*)
'*ERROR reading *RIGID BODY: element ',
244 write(*,*)
' belonging to set ',elset
245 write(*,*)
' has not been defined' 248 if(ipkon(ielement).lt.0) cycle
249 indexe=ipkon(ielement)
250 if(lakon(ielement)(4:4).eq.
'2')
then 252 elseif(lakon(ielement)(4:4).eq.
'8')
then 254 elseif(lakon(ielement)(4:5).eq.
'10')
then 256 elseif(lakon(ielement)(4:4).eq.
'4')
then 258 elseif(lakon(ielement)(4:5).eq.
'15')
then 263 do k=indexe+1,indexe+nope
265 if((node.eq.irefnode).or.(node.eq.irotnode)) cycle
268 call nident(ikmpc,idof,nmpc,id)
270 if(ikmpc(id).eq.idof)
then 271 write(*,*)
'*WARNING reading *RIGID BODY: dof ',
272 &j,
'of node ',node,
' belonging to a' 273 write(*,*)
' rigid body is detected on th 274 &e dependent side of another' 275 write(*,*)
' equation; no rigid body cons 289 do i=istartset(inoset),iendset(inoset)
292 if((node.eq.irefnode).or.(node.eq.irotnode)) cycle
293 call rigidmpc(ipompc,nodempc,coefmpc,irefnode,irotnode,
294 & labmpc,nmpc,nmpc_,mpcfree,ikmpc,ilmpc,nk,nk_,
295 & nodeboun,ndirboun,ikboun,ilboun,nboun,nboun_,node,
296 & typeboun,co,jmin,jmax)
301 if(node.ge.ialset(i-1))
exit 302 if((node.eq.irefnode).or.(node.eq.irotnode)) cycle
303 call rigidmpc(ipompc,nodempc,coefmpc,irefnode,
304 & irotnode,labmpc,nmpc,nmpc_,mpcfree,ikmpc,ilmpc,
305 & nk,nk_,nodeboun,ndirboun,ikboun,ilboun,nboun,
306 & nboun_,node,typeboun,co,jmin,jmax)
315 do i=istartset(ielset),iendset(ielset)
317 if(ielement.gt.0)
then 318 if(ipkon(ielement).lt.0) cycle
319 indexe=ipkon(ielement)
320 if(lakon(ielement)(4:4).eq.
'2')
then 322 elseif(lakon(ielement)(4:4).eq.
'8')
then 324 elseif(lakon(ielement)(4:5).eq.
'10')
then 326 elseif(lakon(ielement)(4:4).eq.
'4')
then 328 elseif(lakon(ielement)(4:5).eq.
'15')
then 333 do k=indexe+1,indexe+nope
335 if((node.eq.irefnode).or.(node.eq.irotnode)) cycle
336 call rigidmpc(ipompc,nodempc,coefmpc,irefnode,
337 & irotnode,labmpc,nmpc,nmpc_,mpcfree,ikmpc,ilmpc,
338 & nk,nk_,nodeboun,ndirboun,ikboun,ilboun,nboun,
339 & nboun_,node,typeboun,co,jmin,jmax)
344 ielement=ielement-ialset(i)
345 if(ielement.ge.ialset(i-1))
exit 346 if(ipkon(ielement).lt.0) cycle
347 indexe=ipkon(ielement)
348 if(lakon(ielement)(4:4).eq.
'2')
then 350 elseif(lakon(ielement)(4:4).eq.
'8')
then 352 elseif(lakon(ielement)(4:5).eq.
'10')
then 354 elseif(lakon(ielement)(4:4).eq.
'4')
then 356 elseif(lakon(ielement)(4:5).eq.
'15')
then 361 do k=indexe+1,indexe+nope
363 if((node.eq.irefnode).or.(node.eq.irotnode)) cycle
364 call rigidmpc(ipompc,nodempc,coefmpc,irefnode,
365 & irotnode,labmpc,nmpc,nmpc_,mpcfree,ikmpc,
366 & ilmpc,nk,nk_,nodeboun,ndirboun,ikboun,ilboun,
367 & nboun,nboun_,node,typeboun,co,jmin,jmax)
374 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
375 & ipoinp,inp,ipoinpc)
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21
subroutine nident(x, px, n, id)
Definition: nident.f:26
subroutine rigidmpc(ipompc, nodempc, coefmpc, irefnode, irotnode, labmpc, nmpc, nmpc_, mpcfree, ikmpc, ilmpc, nk, nk_, nodeboun, ndirboun, ikboun, ilboun, nboun, nboun_, node, typeboun, co, jmin, jmax)
Definition: rigidmpc.f:22