41 integer mass(2),stiffness,buckling,rhsi,stiffonly(2),coriolis
44 character*20 sideload(*)
45 character*80 matname(*)
46 character*81 tieset(3,*)
48 integer kon(*),nodeboun(*),ndirboun(*),ipompc(*),nodempc(3,*),
49 & nodeforc(2,*),ndirforc(*),nelemload(2,*),icol(*),jq(*),ikmpc(*),
50 & ilmpc(*),ikboun(*),ilboun(*),mi(*),nstate_,ne0,nasym,
51 & nactdof(0:mi(2),*),irow(*),icolumn,ialset(*),ielprop(*),
52 & nelcon(2,*),nrhcon(*),nalcon(2,*),ielmat(mi(3),*),ntie,
53 & ielorien(mi(3),*),integerglob(*),istartset(*),iendset(*),
54 & ipkon(*),intscheme,ncocon(2,*),nshcon(*),ipobody(2,*),nbody,
55 & ibody(3,*),nk,ne,nboun,nmpc,nforc,nload,neq(2),nzl,nmethod,
56 & ithermal(2),iprestr,iperturb(*),nzs(3),i,j,k,l,m,
idist,jj,
57 & ll,id,id1,id2,ist,ist1,ist2,index,jdof1,jdof2,idof1,idof2,
58 & mpc1,mpc2,index1,index2,jdof,node1,node2,kflag,icalccg,
59 & ntmat_,indexe,nope,norien,iexpl,i0,ncmat_,istep,iinc,
60 & nplicon(0:ntmat_,*),nplkcon(0:ntmat_,*),npmat_,mortar,
61 & kscale,iponoel(*),inoel(2,*),network
63 real*8 co(3,*),xboun(*),coefmpc(*),xforc(*),xload(2,*),p1(3),
64 & p2(3),ad(*),au(*),bodyf(3),fext(*),xloadold(2,*),reltime,
65 & t0(*),t1(*),prestr(6,mi(1),*),vold(0:mi(2),*),s(60,60),
66 & ff(60),fnext(0:mi(2),*),
67 & sti(6,mi(1),*),sm(60,60),stx(6,mi(1),*),adb(*),aub(*),
68 & elcon(0:ncmat_,ntmat_,*),rhcon(0:1,ntmat_,*),springarea(2,*),
69 & alcon(0:6,ntmat_,*),physcon(*),cocon(0:6,ntmat_,*),prop(*),
70 & xstate(nstate_,mi(1),*),xstateini(nstate_,mi(1),*),
71 & shcon(0:3,ntmat_,*),alzero(*),orab(7,*),xbody(7,*),cgr(4,*),
72 & plicon(0:2*npmat_,ntmat_,*),plkcon(0:2*npmat_,ntmat_,*),
73 & xstiff(27,mi(1),*),veold(0:mi(2),*),om,valu2,
value,dtime,ttime,
74 & time,thicke(mi(3),*),doubleglob(*),clearini(3,9,*),
75 & pslavsurf(3,*),pmastsurf(6,*)
77 intent(in) co,nk,kon,ipkon,lakon,ne,nodeboun,ndirboun,
79 & ipompc,nodempc,coefmpc,nmpc,nodeforc,ndirforc,xforc,
80 & nforc,nelemload,sideload,nload,xbody,ipobody,nbody,
81 & nactdof,icol,jq,irow,neq,
82 & ikmpc,ilmpc,ikboun,ilboun,elcon,nelcon,rhcon,
83 & nrhcon,alcon,nalcon,alzero,ielmat,ielorien,norien,orab,ntmat_,
84 & t0,t1,ithermal,prestr,
85 & iprestr,vold,iperturb,sti,nzs,stx,iexpl,plicon,
86 & nplicon,plkcon,nplkcon,xstiff,npmat_,dtime,
87 & matname,mi,ncmat_,mass,stiffness,buckling,rhsi,intscheme,
88 & physcon,shcon,nshcon,cocon,ncocon,ttime,time,istep,iinc,
89 & coriolis,ibody,xloadold,reltime,veold,nstate_,
90 & xstateini,thicke,integerglob,doubleglob,
91 & tieset,istartset,iendset,ialset,ntie,nasym,pslavsurf,pmastsurf,
92 & mortar,clearini,ielprop,prop,ne0,iponoel,inoel
94 intent(inout) fext,ad,au,adb,aub,xload,nmethod,cgr,springarea,
106 if((stiffness.eq.1).and.(mass(1).eq.0).and.(buckling.eq.0))
then 111 if((stiffness.eq.1).and.(mass(2).eq.0).and.(buckling.eq.0))
then 121 if(icol(i).gt.0)
then 129 if(buckling.ne.1)
then 143 if((mass(1).eq.1).or.(buckling.eq.1))
then 151 if(mass(2).eq.1)
then 165 if((nbody.ne.0).or.(ithermal(1).ne.0).or.
166 & (iprestr.ne.0).or.(nload.ne.0))
then 174 if((ithermal(1).le.1).or.(ithermal(1).eq.3))
then 180 if(ipkon(i).lt.0) cycle
183 if(lakon(i)(1:5).eq.
'C3D8I')
then 185 elseif(lakon(i)(4:5).eq.
'20')
then 188 elseif(lakon(i)(4:4).eq.
'8')
then 190 elseif(lakon(i)(4:5).eq.
'10')
then 192 elseif(lakon(i)(4:4).eq.
'4')
then 194 elseif(lakon(i)(4:5).eq.
'15')
then 196 elseif(lakon(i)(4:4).eq.
'6')
then 198 elseif((lakon(i)(1:2).eq.
'ES').and.(lakon(i)(7:7).ne.
'F'))
then 204 nope=ichar(lakon(i)(8:8))-47
211 if(lakon(i)(7:7).eq.
'C')
then 213 if(mortar.eq.1) nope=kon(indexe)
221 if((nbody.gt.0).and.(lakon(i)(1:1).ne.
'E'))
then 233 if(ibody(1,j).eq.1)
then 244 elseif(ibody(1,j).eq.2)
then 245 bodyf(1)=bodyf(1)+xbody(1,j)*xbody(2,j)
246 bodyf(2)=bodyf(2)+xbody(1,j)*xbody(3,j)
247 bodyf(3)=bodyf(3)+xbody(1,j)*xbody(4,j)
251 elseif(ibody(1,j).eq.3)
then 252 call newton(icalccg,ne,ipkon,lakon,kon,t0,co,rhcon,
253 & nrhcon,ntmat_,physcon,i,cgr,bodyf,ielmat,ithermal,
256 index=ipobody(2,index)
261 call e_c3d(co,kon,lakon(i),p1,p2,om,bodyf,nbody,s,sm,ff,i,
262 & nmethod,elcon,nelcon,rhcon,nrhcon,alcon,nalcon,
263 & alzero,ielmat,ielorien,norien,orab,ntmat_,
264 & t0,t1,ithermal,vold,iperturb,nelemload,sideload,xload,
265 & nload,
idist,sti,stx,iexpl,plicon,
266 & nplicon,plkcon,nplkcon,xstiff,npmat_,
267 & dtime,matname,mi(1),ncmat_,mass(1),stiffness,buckling,
268 & rhsi,intscheme,ttime,time,istep,iinc,coriolis,xloadold,
269 & reltime,ipompc,nodempc,coefmpc,nmpc,ikmpc,ilmpc,veold,
270 & springarea,nstate_,xstateini,xstate,ne0,ipkon,thicke,
271 & integerglob,doubleglob,tieset,istartset,
272 & iendset,ialset,ntie,nasym,pslavsurf,pmastsurf,mortar,
273 & clearini,ielprop,prop,kscale)
281 jdof1=nactdof(k,node1)
289 jdof2=nactdof(m,node2)
293 if((jdof1.gt.0).and.(jdof2.gt.0))
then 294 if(stiffonly(1).eq.1)
then 295 call add_sm_st(au,ad,jq,irow,jdof1,jdof2,
298 call add_sm_ei(au,ad,aub,adb,jq,irow,jdof1,jdof2,
299 & s(jj,ll),sm(jj,ll),jj,ll)
301 elseif((jdof1.gt.0).or.(jdof2.gt.0))
then 318 if(idof2.ne.2*(idof2/2))
then 328 idof2=nactdof(nodempc(2,index),nodempc(1,index))
329 value=-coefmpc(index)*s(jj,ll)/coefmpc(ist)
330 if(idof1.eq.idof2)
value=2.d0*
value 332 if(stiffonly(1).eq.1)
then 336 valu2=-coefmpc(index)*sm(jj,ll)/
339 if(idof1.eq.idof2) valu2=2.d0*valu2
342 & idof1,idof2,
value,valu2,i0,i0)
345 index=nodempc(3,index)
355 elseif(nmethod.eq.2)
then 359 icolumn=neq(2)-idof2/2
360 call add_bo_st(au,jq,irow,idof1,icolumn,
value)
374 if(idof1.ne.2*(idof1/2)) mpc1=1
375 if(idof2.ne.2*(idof2/2)) mpc2=1
377 if((mpc1.eq.1).and.(mpc2.eq.1))
then 387 index1=nodempc(3,ist)
388 if(index1.eq.0) cycle
390 idof1=nactdof(nodempc(2,index1),
394 idof2=nactdof(nodempc(2,index2),
396 value=coefmpc(index1)*coefmpc(index2)*
397 & s(jj,ll)/coefmpc(ist)/coefmpc(ist)
398 if((idof1.gt.0).and.(idof2.gt.0))
then 399 if(stiffonly(1).eq.1)
then 401 & idof1,idof2,
value,i0,i0)
403 valu2=coefmpc(index1)*coefmpc(index2)*
404 & sm(jj,ll)/coefmpc(ist)/coefmpc(ist)
406 & irow,idof1,idof2,
value,valu2,i0,i0)
410 index2=nodempc(3,index2)
413 index1=nodempc(3,index1)
421 index1=nodempc(3,ist1)
422 if(index1.eq.0) cycle
424 idof1=nactdof(nodempc(2,index1),
427 index2=nodempc(3,ist2)
429 index1=nodempc(3,index1)
437 idof2=nactdof(nodempc(2,index2),
439 value=coefmpc(index1)*coefmpc(index2)*
440 & s(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
441 if(idof1.eq.idof2)
value=2.d0*
value 442 if((idof1.gt.0).and.(idof2.gt.0))
then 443 if(stiffonly(1).eq.1)
then 445 & idof1,idof2,
value,i0,i0)
447 valu2=coefmpc(index1)*coefmpc(index2)*
448 & sm(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
450 if(idof1.eq.idof2) valu2=2.d0*valu2
453 & irow,idof1,idof2,
value,valu2,i0,i0)
457 index2=nodempc(3,index2)
460 index1=nodempc(3,index1)
498 if(nmethod.eq.4) fnext(k,node1)=fnext(k,node1)+ff(jj)
506 if(idof1.ne.2*(idof1/2))
then 513 jdof1=nactdof(nodempc(2,index),
516 fext(jdof1)=fext(jdof1)
517 & -coefmpc(index)*ff(jj)
520 index=nodempc(3,index)
527 fext(jdof1)=fext(jdof1)+ff(jj)
535 if(ithermal(1).gt.1)
then 541 if(ipkon(i).lt.0) cycle
543 if(lakon(i)(4:5).eq.
'20')
then 545 elseif(lakon(i)(4:4).eq.
'8')
then 547 elseif(lakon(i)(4:5).eq.
'10')
then 549 elseif(lakon(i)(4:4).eq.
'4')
then 551 elseif(lakon(i)(4:5).eq.
'15')
then 553 elseif(lakon(i)(4:4).eq.
'6')
then 555 elseif((lakon(i)(1:1).eq.
'E').and.(lakon(i)(7:7).ne.
'A'))
then 560 nope=ichar(lakon(i)(8:8))-47
565 if(lakon(i)(7:7).eq.
'C')
then 566 if(mortar.eq.1) nope=kon(indexe)
568 elseif((lakon(i)(1:2).eq.
'D ').or.
569 & ((lakon(i)(1:1).eq.
'D').and.(network.eq.1)))
then 578 call e_c3d_th(co,nk,kon,lakon(i),s,sm,
579 & ff,i,nmethod,rhcon,nrhcon,ielmat,ielorien,norien,orab,
580 & ntmat_,t0,t1,ithermal,vold,iperturb,nelemload,
581 & sideload,xload,nload,
idist,iexpl,dtime,
582 & matname,mi(1),mass(2),stiffness,buckling,rhsi,intscheme,
583 & physcon,shcon,nshcon,cocon,ncocon,ttime,time,istep,iinc,
584 & xstiff,xloadold,reltime,ipompc,nodempc,coefmpc,nmpc,ikmpc,
585 & ilmpc,springarea,plkcon,nplkcon,npmat_,ncmat_,elcon,nelcon,
586 & lakon,pslavsurf,pmastsurf,mortar,clearini,plicon,nplicon,
587 & ipkon,ielprop,prop,iponoel,inoel,sti,xstateini,xstate,
588 & nstate_,network,ipobody,xbody,ibody)
595 jdof1=nactdof(0,node1)
603 jdof2=nactdof(0,node2)
607 if((jdof1.gt.0).and.(jdof2.gt.0))
then 608 if(stiffonly(2).eq.1)
then 609 call add_sm_st(au,ad,jq,irow,jdof1,jdof2,
612 call add_sm_ei(au,ad,aub,adb,jq,irow,jdof1,jdof2,
613 & s(jj,ll),sm(jj,ll),jj,ll)
615 elseif((jdof1.gt.0).or.(jdof2.gt.0))
then 632 if(idof2.ne.2*(idof2/2))
then 642 idof2=nactdof(nodempc(2,index),nodempc(1,index))
643 value=-coefmpc(index)*s(jj,ll)/coefmpc(ist)
644 if(idof1.eq.idof2)
value=2.d0*
value 646 if(stiffonly(2).eq.1)
then 650 valu2=-coefmpc(index)*sm(jj,ll)/
653 if(idof1.eq.idof2) valu2=2.d0*valu2
656 & idof1,idof2,
value,valu2,i0,i0)
659 index=nodempc(3,index)
669 elseif(nmethod.eq.2)
then 673 icolumn=neq(2)-idof2/2
674 call add_bo_st(au,jq,irow,idof1,icolumn,
value)
688 if(idof1.ne.2*(idof1/2)) mpc1=1
689 if(idof2.ne.2*(idof2/2)) mpc2=1
691 if((mpc1.eq.1).and.(mpc2.eq.1))
then 701 index1=nodempc(3,ist)
702 if(index1.eq.0) cycle
704 idof1=nactdof(nodempc(2,index1),
708 idof2=nactdof(nodempc(2,index2),
710 value=coefmpc(index1)*coefmpc(index2)*
711 & s(jj,ll)/coefmpc(ist)/coefmpc(ist)
712 if((idof1.gt.0).and.(idof2.gt.0))
then 713 if(stiffonly(2).eq.1)
then 715 & idof1,idof2,
value,i0,i0)
717 valu2=coefmpc(index1)*coefmpc(index2)*
718 & sm(jj,ll)/coefmpc(ist)/coefmpc(ist)
720 & irow,idof1,idof2,
value,valu2,i0,i0)
724 index2=nodempc(3,index2)
727 index1=nodempc(3,index1)
735 index1=nodempc(3,ist1)
736 if(index1.eq.0) cycle
738 idof1=nactdof(nodempc(2,index1),
741 index2=nodempc(3,ist2)
743 index1=nodempc(3,index1)
751 idof2=nactdof(nodempc(2,index2),
753 value=coefmpc(index1)*coefmpc(index2)*
754 & s(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
755 if(idof1.eq.idof2)
value=2.d0*
value 756 if((idof1.gt.0).and.(idof2.gt.0))
then 757 if(stiffonly(2).eq.1)
then 759 & idof1,idof2,
value,i0,i0)
761 valu2=coefmpc(index1)*coefmpc(index2)*
762 & sm(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
764 if(idof1.eq.idof2) valu2=2.d0*valu2
767 & irow,idof1,idof2,
value,valu2,i0,i0)
771 index2=nodempc(3,index2)
774 index1=nodempc(3,index1)
820 if(idof1.ne.2*(idof1/2))
then 827 jdof1=nactdof(nodempc(2,index),
830 fext(jdof1)=fext(jdof1)
831 & -coefmpc(index)*ff(jj)
834 index=nodempc(3,index)
841 fext(jdof1)=fext(jdof1)+ff(jj)
855 if(ndirforc(i).gt.3) cycle
860 if(nmethod.eq.4) fnext(ndirforc(i),nodeforc(1,i))=
861 & fnext(ndirforc(i),nodeforc(1,i))+xforc(i)
863 jdof=nactdof(ndirforc(i),nodeforc(1,i))
865 fext(jdof)=fext(jdof)+xforc(i)
876 if(jdof.ne.2*(jdof/2))
then 883 jdof=nactdof(nodempc(2,index),nodempc(1,index))
885 fext(jdof)=fext(jdof)-
886 & coefmpc(index)*xforc(i)/coefmpc(ist)
888 index=nodempc(3,index)
subroutine newton(icalccg, ne, ipkon, lakon, kon, t0, co, rhcon, nrhcon, ntmat_, physcon, nelem, cgr, bodyf, ielmat, ithermal, vold, mi)
Definition: newton.f:22
subroutine e_c3d(co, kon, lakonl, p1, p2, omx, bodyfx, nbody, s, sm, ff, nelem, nmethod, elcon, nelcon, rhcon, nrhcon, alcon, nalcon, alzero, ielmat, ielorien, norien, orab, ntmat_, t0, t1, ithermal, vold, iperturb, nelemload, sideload, xload, nload, idist, sti, stx, iexpl, plicon, nplicon, plkcon, nplkcon, xstiff, npmat_, dtime, matname, mi, ncmat_, mass, stiffness, buckling, rhsi, intscheme, ttime, time, istep, iinc, coriolis, xloadold, reltime, ipompc, nodempc, coefmpc, nmpc, ikmpc, ilmpc, veold, springarea, nstate_, xstateini, xstate, ne0, ipkon, thicke, integerglob, doubleglob, tieset, istartset, iendset, ialset, ntie, nasym, pslavsurf, pmastsurf, mortar, clearini, ielprop, prop, kscale)
Definition: e_c3d.f:31
subroutine add_bo_st(au, jq, irow, i, j, value)
Definition: add_bo_st.f:20
subroutine add_sm_ei(au, ad, aub, adb, jq, irow, i, j, value, valuem, i0, i1)
Definition: add_sm_ei.f:21
static ITG * idist
Definition: radflowload.c:39
subroutine add_sm_st(au, ad, jq, irow, i, j, value, i0, i1)
Definition: add_sm_st.f:20
subroutine e_c3d_th(co, nk, kon, lakonl, s, sm, ff, nelem, nmethod, rhcon, nrhcon, ielmat, ielorien, norien, orab, ntmat_, t0, t1, ithermal, vold, iperturb, nelemload, sideload, xload, nload, idist, iexpl, dtime, matname, mi, mass, stiffness, buckling, rhsi, intscheme, physcon, shcon, nshcon, cocon, ncocon, ttime, time, istep, iinc, xstiff, xloadold, reltime, ipompc, nodempc, coefmpc, nmpc, ikmpc, ilmpc, springarea, plkcon, nplkcon, npmat_, ncmat_, elcon, nelcon, lakon, pslavsurf, pmastsurf, mortar, clearini, plicon, nplicon, ipkon, ielprop, prop, iponoel, inoel, sti, xstateini, xstate, nstate_, network, ipobody, xbody, ibody)
Definition: e_c3d_th.f:31