30 character*1 typeboun(*)
31 character*20 labmpc(*)
33 integer ipompc(*),nodempc(3,*),nmpc,nmpc_,mpcfree,nk,nk_,
34 & ikmpc(*),idepnodes(*),k,ndepnodes,idim,n,matz,ier,i,
35 & ilmpc(*),node,id,mpcfreeold,j,idof,l,nodeboun(*),
36 & ndirboun(*),ikboun(*),ilboun(*),nboun,nboun_,irefnode,
37 & irotnode,iexpnode,istep,ispcnode,inode
39 real*8 coefmpc(*),co(3,*),xboun(*),e(3,3,3),dc(3,3,3),s(3,3),
40 & w(3),z(3,3),fv1(3),fv2(3),e1(3),e2(3),t1(3),sx,sy,sz,sxx,
41 & sxy,sxz,syy,syz,szz,u2(3,3),u3(3,3)
45 data e /0.,0.,0.,0.,0.,-1.,0.,1.,0.,
46 & 0.,0.,1.,0.,0.,0.,-1.,0.,0.,
47 & 0.,-1.,0.,1.,0.,0.,0.,0.,0./
51 data dc /0.,0.,0.,0.,0.,1.,0.,-1.,0.,
52 & 0.,0.,-1.,0.,0.,0.,1.,0.,0.,
53 & 0.,1.,0.,-1.,0.,0.,0.,0.,0./
60 if((istep.gt.1).and.(k.eq.1))
then 83 sxx=sxx+co(1,node)*co(1,node)
84 sxy=sxy+co(1,node)*co(2,node)
85 sxz=sxz+co(1,node)*co(3,node)
86 syy=syy+co(2,node)*co(2,node)
87 syz=syz+co(2,node)*co(3,node)
88 szz=szz+co(3,node)*co(3,node)
91 sxx=sxx-sx*sx/ndepnodes
92 sxy=sxy-sx*sy/ndepnodes
93 sxz=sxz-sx*sz/ndepnodes
94 syy=syy-sy*sy/ndepnodes
95 syz=syz-sy*sz/ndepnodes
96 szz=szz-sz*sz/ndepnodes
115 call rs(n,n,s,w,matz,z,fv1,fv2,ier)
117 write(*,*)
'*ERROR in knotmpc while calculating the' 118 write(*,*)
' eigenvalues/eigenvectors' 130 if((w(1).lt.1.d-10).and.(w(2).lt.1.d-10))
then 133 elseif(w(1).lt.1.d-10)
then 153 if(t1(1)*(e1(2)*e2(3)-e1(3)*e2(2))-
154 & t1(2)*(e1(1)*e2(3)-e1(3)*e2(1))+
155 & t1(3)*(e1(1)*e2(2)-e1(2)*e2(1)).lt.0.d0)
then 178 write(*,*)
'*ERROR in knotmpc: increase nk_' 184 if((idim.eq.1).or.(idim.eq.3))
then 190 call nident(ikmpc,idof,nmpc,id)
192 if(ikmpc(id).eq.idof)
then 197 if(nmpc.gt.nmpc_)
then 198 write(*,*)
'*ERROR in knotmpc: increase nmpc_' 204 write(labmpc(nmpc)(5:5),
'(i1)') idim
213 nodempc(1,mpcfree)=inode
215 coefmpc(mpcfree)=1.d0
216 mpcfree=nodempc(3,mpcfree)
220 nodempc(1,mpcfree)=irefnode
222 coefmpc(mpcfree)=-1.d0
223 mpcfree=nodempc(3,mpcfree)
227 nodempc(1,mpcfree)=iexpnode
230 coefmpc(mpcfree)=co(j,irefnode)-co(j,inode)
232 mpcfree=nodempc(3,mpcfree)
236 nodempc(1,mpcfree)=irotnode
239 coefmpc(mpcfree)=dc(j,1,1)*(co(1,irefnode)-co(1,inode))+
240 & dc(j,2,1)*(co(2,irefnode)-co(2,inode))+
241 & dc(j,3,1)*(co(3,irefnode)-co(3,inode))
243 mpcfree=nodempc(3,mpcfree)
244 nodempc(1,mpcfree)=irotnode
247 coefmpc(mpcfree)=dc(j,1,2)*(co(1,irefnode)-co(1,inode))+
248 & dc(j,2,2)*(co(2,irefnode)-co(2,inode))+
249 & dc(j,3,2)*(co(3,irefnode)-co(3,inode))
251 mpcfree=nodempc(3,mpcfree)
252 nodempc(1,mpcfree)=irotnode
255 coefmpc(mpcfree)=dc(j,1,3)*(co(1,irefnode)-co(1,inode))+
256 & dc(j,2,3)*(co(2,irefnode)-co(2,inode))+
257 & dc(j,3,3)*(co(3,irefnode)-co(3,inode))
259 mpcfree=nodempc(3,mpcfree)
260 nodempc(1,mpcfree)=ispcnode
262 coefmpc(mpcfree)=1.d0
264 mpcfree=nodempc(3,mpcfree)
265 nodempc(3,mpcfreeold)=0
266 idof=8*(ispcnode-1)+j
267 call nident(ikboun,idof,nboun,id)
269 if(nboun.gt.nboun_)
then 270 write(*,*)
'*ERROR in knotmpc: increase nboun_' 273 nodeboun(nboun)=ispcnode
280 ikboun(l)=ikboun(l-1)
281 ilboun(l)=ilboun(l-1)
286 elseif(idim.eq.2)
then 292 u2(i,j)=2.d0*e1(i)*e1(j)
293 u3(i,j)=2.d0*e2(i)*e2(j)
299 call nident(ikmpc,idof,nmpc,id)
301 if(ikmpc(id).eq.idof)
then 306 if(nmpc.gt.nmpc_)
then 307 write(*,*)
'*ERROR in knotmpc: increase nmpc_' 312 labmpc(nmpc)=
'KNOT2 ' 321 nodempc(1,mpcfree)=inode
323 coefmpc(mpcfree)=1.d0
324 mpcfree=nodempc(3,mpcfree)
328 nodempc(1,mpcfree)=irefnode
330 coefmpc(mpcfree)=-1.d0
331 mpcfree=nodempc(3,mpcfree)
338 nodempc(1,mpcfree)=iexpnode
340 coefmpc(mpcfree)=0.d0
341 mpcfree=nodempc(3,mpcfree)
343 nodempc(1,mpcfree)=iexpnode
345 coefmpc(mpcfree)=u2(j,1)*(co(1,irefnode)-co(1,inode))+
346 & u2(j,2)*(co(2,irefnode)-co(2,inode))+
347 & u2(j,3)*(co(3,irefnode)-co(3,inode))
348 mpcfree=nodempc(3,mpcfree)
350 nodempc(1,mpcfree)=iexpnode
352 coefmpc(mpcfree)=u3(j,1)*(co(1,irefnode)-co(1,inode))+
353 & u3(j,2)*(co(2,irefnode)-co(2,inode))+
354 & u3(j,3)*(co(3,irefnode)-co(3,inode))
355 mpcfree=nodempc(3,mpcfree)
359 nodempc(1,mpcfree)=irotnode
362 coefmpc(mpcfree)=dc(j,1,1)*(co(1,irefnode)-co(1,inode))+
363 & dc(j,2,1)*(co(2,irefnode)-co(2,inode))+
364 & dc(j,3,1)*(co(3,irefnode)-co(3,inode))
366 mpcfree=nodempc(3,mpcfree)
367 nodempc(1,mpcfree)=irotnode
370 coefmpc(mpcfree)=dc(j,1,2)*(co(1,irefnode)-co(1,inode))+
371 & dc(j,2,2)*(co(2,irefnode)-co(2,inode))+
372 & dc(j,3,2)*(co(3,irefnode)-co(3,inode))
374 mpcfree=nodempc(3,mpcfree)
375 nodempc(1,mpcfree)=irotnode
378 coefmpc(mpcfree)=dc(j,1,3)*(co(1,irefnode)-co(1,inode))+
379 & dc(j,2,3)*(co(2,irefnode)-co(2,inode))+
380 & dc(j,3,3)*(co(3,irefnode)-co(3,inode))
382 mpcfree=nodempc(3,mpcfree)
383 nodempc(1,mpcfree)=ispcnode
385 coefmpc(mpcfree)=1.d0
387 mpcfree=nodempc(3,mpcfree)
388 nodempc(3,mpcfreeold)=0
389 idof=8*(ispcnode-1)+j
390 call nident(ikboun,idof,nboun,id)
392 if(nboun.gt.nboun_)
then 393 write(*,*)
'*ERROR in knotmpc: increase nboun_' 396 nodeboun(nboun)=ispcnode
403 ikboun(l)=ikboun(l-1)
404 ilboun(l)=ilboun(l-1)
#define min(a, b)
Definition: cascade.c:31
subroutine rs(nm, n, a, w, matz, z, fv1, fv2, ierr)
Definition: rs.f:27
subroutine nident(x, px, n, id)
Definition: nident.f:26