33 logical axial,fixed,quadratic
35 character*1 type,typeboun(*)
37 character*20 labmpc(*),label
38 character*80 orname(*)
40 integer kon(*),ipkon(*),ne,iponor(2,*),knor(*),ntrans,
41 & inotr(2,*),nodefixz,norien,norien_,norieninput,iflag,
42 & ikboun(*),ilboun(*),nboun,nboun_,nodeboun(*),ndirboun(*),
43 & iamboun(*),nam,ipompc(*),nodempc(3,*),nmpc,nmpc_,mpcfree,
44 & ikmpc(*),ilmpc(*),nk,nk_,i,rig(*),nmethod,iperturb,ishift,
45 & indexe,j,nodel(8),indexx,indexk,k,nedge,
nodes(3,8),nodec(3,8),
46 & iamplitude,l,newnode,idir,idof,id,m,mpcfreenew,node,ithermal(2),
47 & jmin,jmax,idummy,mi(*),indexc,indexl,icomposite,ielmat(mi(3),*),
48 & nope,neworien(0:norien),iorien,ipos,ielorien(mi(3),*)
50 real*8 xnor(*),thicke(mi(3),*),offset(2,*),trab(7,*),xboun(*),
51 & coefmpc(*),co(3,*),thicks(8),xnors(3,8),dc,ds,val,orab(7,*),
52 & x,y,
thickness(8),vold(0:mi(2),*),xi,et,xl(3,8),xno(3),xs(3,7),
53 & shp(7,8),p(3),a(3,3),dd,e1(3),e2(3)
61 if(lakon(i)(1:2).eq.
'CA')
then 72 if((lakon(i)(2:2).eq.
'3').or.
73 & (lakon(i)(4:4).eq.
'3'))
then 78 elseif((lakon(i)(2:2).eq.
'4').or.
79 & (lakon(i)(4:4).eq.
'4'))
then 86 if((lakon(i)(3:3).eq.
'R').or.
87 & (lakon(i)(5:5).eq.
'R'))
then 92 elseif((lakon(i)(1:1).eq.
'S').or.(lakon(i)(1:1).eq.
'M'))
then 100 elseif((lakon(i)(2:2).eq.
'6').or.
101 & (lakon(i)(4:4).eq.
'6'))
then 106 elseif((lakon(i)(2:2).eq.
'8').or.
107 & (lakon(i)(4:4).eq.
'8'))
then 116 nodel(j)=kon(indexe+j)
117 kon(indexe+ishift+j)=nodel(j)
118 indexk=iponor(2,indexe+j)
121 thicks(j)=thicks(j)+thicke(k,indexe+j)
124 nodes(k,j)=knor(indexk+k)
131 if(lakon(i)(1:2).ne.
'CA')
then 134 indexx=iponor(1,indexe+j)
136 xnors(k,j)=xnor(indexx+k)
140 inotr(1,
nodes(k,j))=inotr(1,nodel(j))
148 kon(indexe+k)=
nodes(1,k)
151 co(j,
nodes(1,k))=co(j,nodel(k))
152 & -thicks(k)*xnors(j,k)*(.5d0+offset(1,i))
156 kon(indexe+nedge+k)=
nodes(3,k)
158 co(j,
nodes(3,k))=co(j,nodel(k))
159 & +thicks(k)*xnors(j,k)*(.5d0-offset(1,i))
167 kon(indexe+nedge+k)=
nodes(1,k)
169 co(j,
nodes(1,k))=co(j,nodel(k))
170 & -thicks(k)*xnors(j,k)*(.5d0+offset(1,i))
174 kon(indexe+2*nedge+k)=
nodes(3,k)
176 co(j,
nodes(3,k))=co(j,nodel(k))
177 & +thicks(k)*xnors(j,k)*(.5d0-offset(1,i))
181 kon(indexe+4*nedge+k)=
nodes(2,k)
183 co(j,
nodes(2,k))=co(j,nodel(k))
184 & -thicks(k)*xnors(j,k)*offset(1,i)
194 co(j,
nodes(2,k))=co(j,nodel(k))
195 & -thicks(k)*xnors(j,k)*offset(1,i)
206 co(j,
nodes(2,k))=co(j,nodel(k))
207 & -thicks(k)*xnors(j,k)*offset(1,i)
215 if(lakon(i)(8:8).eq.
'C')
then 219 indexc=indexe+2*nedge
222 if(ielmat(l,i).eq.0)
exit 228 nodec(k,j)=knor(iponor(2,indexe+j)+indexl+k)
235 kon(indexc+k)=nodec(1,k)
237 co(j,nodec(1,k))=co(j,nodel(k))+
238 & (
thickness(k)-thicks(k)*(.5d0+offset(1,i)))
246 kon(indexc+nedge+k)=nodec(3,k)
248 co(j,nodec(3,k))=co(j,nodel(k))+
250 & -thicks(k)*(.5d0+offset(1,i)))
258 kon(indexc+nedge+k)=nodec(1,k)
260 co(j,nodec(1,k))=co(j,nodel(k))+
261 & (
thickness(k)-thicks(k)*(.5d0+offset(1,i)))
269 kon(indexc+2*nedge+k)=
272 co(j,nodec(3,k))=co(j,nodel(k))+
274 & -thicks(k)*(.5d0+offset(1,i)))
282 kon(indexc+4*nedge+k)=
285 co(j,nodec(2,k))=co(j,nodel(k))+
287 & -thicks(k)*(.5d0+offset(1,i)))
301 dc=dcos(thicks(1)/2.d0)
302 ds=dsin(thicks(1)/2.d0)
304 indexk=iponor(2,indexe+j)
319 kon(indexe+4*nedge+j)=node
336 kon(indexe+nedge+j)=node
341 indexk=iponor(2,indexe+j)
349 kon(indexe+nedge+j)=node
355 kon(indexe+2*nedge+j)=node
364 if((lakon(i)(1:1).ne.
'S').and.(lakon(i)(1:1).ne.
'M'))
then 369 if(rig(nodel(j)).gt.0)
then 375 if(ithermal(2).ne.2)
then 378 if(nam.gt.0) iamplitude=0
381 call bounadd(nodefixz,k,k,val,nodeboun,
382 & ndirboun,xboun,nboun,nboun_,iamboun,
383 & iamplitude,nam,ipompc,nodempc,coefmpc,
384 & nmpc,nmpc_,mpcfree,inotr,trab,ntrans,
385 & ikboun,ilboun,ikmpc,ilmpc,co,nk,nk_,
386 & labmpc,
type,typeboun,nmethod,iperturb,
387 & fixed,vold,idummy,mi,label)
395 if(ithermal(2).le.1)
then 398 elseif(ithermal(2).eq.2)
then 409 if((idir.eq.3).and.(lakon(i)(1:3).eq.
'CPS'))
then 418 if(((lakon(i)(4:4).eq.
'3').or.
419 & (lakon(i)(4:4).eq.
'4')).and.
422 call nident(ikmpc,idof,nmpc,id)
423 if((id.le.0).or.(ikmpc(id).ne.idof))
then 425 if(nmpc.gt.nmpc_)
then 427 &
'*ERROR in gen3dfrom2d: increase nmpc_' 438 nodempc(1,mpcfree)=newnode
440 coefmpc(mpcfree)=1.d0
441 mpcfree=nodempc(3,mpcfree)
442 if(mpcfree.eq.0)
then 444 &
'*ERROR in gen3dfrom2d: increase memmpc_' 447 nodempc(1,mpcfree)=
nodes(3,j)
449 coefmpc(mpcfree)=1.d0
450 mpcfreenew=nodempc(3,mpcfree)
451 if(mpcfreenew.eq.0)
then 453 &
'*ERROR in gen3dfrom2d: increase memmpc_' 463 idof=8*(newnode-1)+idir
464 call nident(ikmpc,idof,nmpc,id)
465 if((id.le.0).or.(ikmpc(id).ne.idof))
then 467 if(nmpc.gt.nmpc_)
then 469 &
'*ERROR in gen3dfrom2d: increase nmpc_' 480 nodempc(1,mpcfree)=newnode
481 nodempc(2,mpcfree)=idir
482 coefmpc(mpcfree)=1.d0
483 mpcfree=nodempc(3,mpcfree)
484 if(mpcfree.eq.0)
then 486 &
'*ERROR in gen3dfrom2d: increase memmpc_' 489 nodempc(1,mpcfree)=
nodes(2,j)
490 if((lakon(i)(2:2).eq.
'A').and.(idir.eq.3))
494 nodempc(2,mpcfree)=idir
496 if(lakon(i)(2:2).eq.
'A')
then 499 elseif(idir.eq.3)
then 506 coefmpc(mpcfree)=-1.d0
509 coefmpc(mpcfree)=-1.d0
511 mpcfreenew=nodempc(3,mpcfree)
512 if(mpcfreenew.eq.0)
then 514 &
'*ERROR in gen3dfrom2d: increase memmpc_' 528 if(lakon(i)(1:1).eq.
'S')
then 543 if(ielmat(j,i).le.0)
exit 550 if(neworien(iorien).gt.0)
then 551 ielorien(j,i)=neworien(iorien)
561 if(lakon(i)(2:2).eq.
'3')
then 563 elseif(lakon(i)(2:2).eq.
'4')
then 565 elseif(lakon(i)(2:2).eq.
'6')
then 567 elseif(lakon(i)(2:2).eq.
'8')
then 574 node=kon(indexe+ishift+k)
581 call shape3tri(xi,et,xl,xno,xs,shp,iflag)
582 elseif(nope.eq.4)
then 583 call shape4q(xi,et,xl,xno,xs,shp,iflag)
584 elseif(nope.eq.6)
then 585 call shape6tri(xi,et,xl,xno,xs,shp,iflag)
587 call shape8q(xi,et,xl,xno,xs,shp,iflag)
590 dd=dsqrt(xno(1)*xno(1)+xno(2)*xno(2)+xno(3)*xno(3))
601 p(l)=p(l)+shp(4,k)*xl(l,k)
621 dd=a(1,1)*xno(1)+a(2,1)*xno(2)+a(3,1)*xno(3)
626 if(dabs(dd).gt.0.999999999536d0)
then 630 dd=a(1,3)*xno(1)+a(2,3)*xno(2)+a(3,3)*xno(3)
632 e1(l)=a(l,3)-dd*xno(l)
639 e1(l)=a(l,1)-dd*xno(l)
643 dd=dsqrt(e1(1)*e1(1)+e1(2)*e1(2)+e1(3)*e1(3))
650 e2(1)=xno(2)*e1(3)-e1(2)*xno(3)
651 e2(2)=xno(3)*e1(1)-e1(3)*xno(1)
652 e2(3)=xno(1)*e1(2)-e1(1)*xno(2)
655 if(norien.gt.norien_)
then 656 write(*,*)
'*ERROR in gen3dfrom2d: increase norien_' 666 ipos=index(orname(iorien),
' ')
667 orname(norien)(1:ipos-1)=orname(iorien)(1:ipos-1)
671 orname(norien)(ipos:ipos+6)=
'_shell_' 672 write(orname(norien)(ipos+7:ipos+16),
'(i10.10)') i
674 orname(norien)(l:l)=
' ' 679 orab(l+3,norien)=e2(l)
685 neworien(iorien)=norien
subroutine shape8q(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape8q.f:20
subroutine shape3tri(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape3tri.f:20
subroutine shape4q(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape4q.f:20
subroutine nident(x, px, n, id)
Definition: nident.f:26
subroutine nodes(inpc, textpart, co, nk, nk_, set, istartset, iendset, ialset, nset, nset_, nalset, nalset_, istep, istat, n, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: nodes.f:22
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
subroutine shape6tri(xi, et, xl, xsj, xs, shp, iflag)
Definition: shape6tri.f:20
subroutine thickness(dgdx, nobject, nodedesiboun, ndesiboun, objectset, xo, yo, zo, x, y, z, nx, ny, nz, co, ifree, ndesia, ndesib, iobject, ndesi, dgdxglob, nk)
Definition: thickness.f:22