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 & nea,neb,kscale,iponoel(*),inoel(2,*),network,ndof
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,nzl,
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,nea,neb
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 122 if((nbody.ne.0).or.(ithermal(1).ne.0).or.
123 & (iprestr.ne.0).or.(nload.ne.0))
then 131 if((ithermal(1).le.1).or.(ithermal(1).eq.3))
then 137 if(ipkon(i).lt.0) cycle
140 if(lakon(i)(1:5).eq.
'C3D8I')
then 143 elseif(lakon(i)(4:5).eq.
'20')
then 147 elseif(lakon(i)(4:4).eq.
'8')
then 150 elseif(lakon(i)(4:5).eq.
'10')
then 153 elseif(lakon(i)(4:4).eq.
'4')
then 156 elseif(lakon(i)(4:5).eq.
'15')
then 159 elseif(lakon(i)(4:4).eq.
'6')
then 162 elseif((lakon(i)(1:2).eq.
'ES').and.(lakon(i)(7:7).ne.
'F'))
then 167 nope=ichar(lakon(i)(8:8))-47
174 if(lakon(i)(7:7).eq.
'C')
then 176 if(mortar.eq.1) nope=kon(indexe)
178 elseif(lakon(i)(1:4).eq.
'MASS')
then 181 elseif(lakon(i)(1:1).eq.
'U')
then 189 ndof=ichar(lakon(i)(7:7))
190 nope=ichar(lakon(i)(8:8))
197 if((nbody.gt.0).and.(lakon(i)(1:1).ne.
'E'))
then 209 if(ibody(1,j).eq.1)
then 220 elseif(ibody(1,j).eq.2)
then 221 bodyf(1)=bodyf(1)+xbody(1,j)*xbody(2,j)
222 bodyf(2)=bodyf(2)+xbody(1,j)*xbody(3,j)
223 bodyf(3)=bodyf(3)+xbody(1,j)*xbody(4,j)
227 elseif(ibody(1,j).eq.3)
then 228 call newton(icalccg,ne,ipkon,lakon,kon,t0,co,rhcon,
229 & nrhcon,ntmat_,physcon,i,cgr,bodyf,ielmat,ithermal,
232 index=ipobody(2,index)
237 if(lakon(i)(1:1).ne.
'U')
then 238 call e_c3d(co,kon,lakon(i),p1,p2,om,bodyf,nbody,s,sm,ff,i,
239 & nmethod,elcon,nelcon,rhcon,nrhcon,alcon,nalcon,
240 & alzero,ielmat,ielorien,norien,orab,ntmat_,
241 & t0,t1,ithermal,vold,iperturb,nelemload,sideload,xload,
242 & nload,
idist,sti,stx,iexpl,plicon,
243 & nplicon,plkcon,nplkcon,xstiff,npmat_,
244 & dtime,matname,mi(1),ncmat_,mass(1),stiffness,buckling,
245 & rhsi,intscheme,ttime,time,istep,iinc,coriolis,xloadold,
246 & reltime,ipompc,nodempc,coefmpc,nmpc,ikmpc,ilmpc,veold,
247 & springarea,nstate_,xstateini,xstate,ne0,ipkon,thicke,
248 & integerglob,doubleglob,tieset,istartset,
249 & iendset,ialset,ntie,nasym,pslavsurf,pmastsurf,mortar,
250 & clearini,ielprop,prop,kscale)
252 call e_c3d_u(co,kon,lakon(i),p1,p2,om,bodyf,nbody,s,sm,ff,i,
253 & nmethod,elcon,nelcon,rhcon,nrhcon,alcon,nalcon,
254 & alzero,ielmat,ielorien,norien,orab,ntmat_,
255 & t0,t1,ithermal,vold,iperturb,nelemload,sideload,xload,
256 & nload,
idist,sti,stx,iexpl,plicon,
257 & nplicon,plkcon,nplkcon,xstiff,npmat_,
258 & dtime,matname,mi(1),ncmat_,mass(1),stiffness,buckling,
259 & rhsi,intscheme,ttime,time,istep,iinc,coriolis,xloadold,
260 & reltime,ipompc,nodempc,coefmpc,nmpc,ikmpc,ilmpc,veold,
262 & integerglob,doubleglob,tieset,istartset,
263 & iendset,ialset,ntie,nasym,
273 jdof1=nactdof(k,node1)
281 jdof2=nactdof(m,node2)
285 if((jdof1.gt.0).and.(jdof2.gt.0))
then 286 if(stiffonly(1).eq.1)
then 287 call add_sm_st(au,ad,jq,irow,jdof1,jdof2,
290 call add_sm_ei(au,ad,aub,adb,jq,irow,jdof1,jdof2,
291 & s(jj,ll),sm(jj,ll),jj,ll)
293 elseif((jdof1.gt.0).or.(jdof2.gt.0))
then 306 if(idof2.ne.2*(idof2/2))
then 315 idof2=nactdof(nodempc(2,index),nodempc(1,index))
316 value=-coefmpc(index)*s(jj,ll)/coefmpc(ist)
317 if(idof1.eq.idof2)
value=2.d0*
value 319 if(stiffonly(1).eq.1)
then 323 valu2=-coefmpc(index)*sm(jj,ll)/
326 if(idof1.eq.idof2) valu2=2.d0*valu2
329 & idof1,idof2,
value,valu2,i0,i0)
332 index=nodempc(3,index)
342 elseif(nmethod.eq.2)
then 344 icolumn=neq(2)-idof2/2
345 call add_bo_st(au,jq,irow,idof1,icolumn,
value)
353 if(idof1.ne.2*(idof1/2)) mpc1=1
354 if(idof2.ne.2*(idof2/2)) mpc2=1
356 if((mpc1.eq.1).and.(mpc2.eq.1))
then 364 index1=nodempc(3,ist)
365 if(index1.eq.0) cycle
367 idof1=nactdof(nodempc(2,index1),
371 idof2=nactdof(nodempc(2,index2),
373 value=coefmpc(index1)*coefmpc(index2)*
374 & s(jj,ll)/coefmpc(ist)/coefmpc(ist)
375 if((idof1.gt.0).and.(idof2.gt.0))
then 376 if(stiffonly(1).eq.1)
then 378 & idof1,idof2,
value,i0,i0)
380 valu2=coefmpc(index1)*coefmpc(index2)*
381 & sm(jj,ll)/coefmpc(ist)/coefmpc(ist)
383 & irow,idof1,idof2,
value,valu2,i0,i0)
387 index2=nodempc(3,index2)
390 index1=nodempc(3,index1)
398 index1=nodempc(3,ist1)
399 if(index1.eq.0) cycle
401 idof1=nactdof(nodempc(2,index1),
404 index2=nodempc(3,ist2)
406 index1=nodempc(3,index1)
414 idof2=nactdof(nodempc(2,index2),
416 value=coefmpc(index1)*coefmpc(index2)*
417 & s(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
418 if(idof1.eq.idof2)
value=2.d0*
value 419 if((idof1.gt.0).and.(idof2.gt.0))
then 420 if(stiffonly(1).eq.1)
then 422 & idof1,idof2,
value,i0,i0)
424 valu2=coefmpc(index1)*coefmpc(index2)*
425 & sm(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
427 if(idof1.eq.idof2) valu2=2.d0*valu2
430 & irow,idof1,idof2,
value,valu2,i0,i0)
434 index2=nodempc(3,index2)
437 index1=nodempc(3,index1)
454 if(nmethod.eq.4) fnext(k,node1)=fnext(k,node1)+ff(jj)
459 if(idof1.ne.2*(idof1/2))
then 465 jdof1=nactdof(nodempc(2,index),
468 fext(jdof1)=fext(jdof1)
469 & -coefmpc(index)*ff(jj)
472 index=nodempc(3,index)
479 fext(jdof1)=fext(jdof1)+ff(jj)
487 if(ithermal(1).gt.1)
then 493 if(ipkon(i).lt.0) cycle
495 if(lakon(i)(4:5).eq.
'20')
then 497 elseif(lakon(i)(4:4).eq.
'8')
then 499 elseif(lakon(i)(4:5).eq.
'10')
then 501 elseif(lakon(i)(4:4).eq.
'4')
then 503 elseif(lakon(i)(4:5).eq.
'15')
then 505 elseif(lakon(i)(4:4).eq.
'6')
then 507 elseif((lakon(i)(1:1).eq.
'E').and.(lakon(i)(7:7).ne.
'A'))
then 511 nope=ichar(lakon(i)(8:8))-47
515 if(lakon(i)(7:7).eq.
'C')
then 516 if(mortar.eq.1) nope=kon(indexe)
518 elseif((lakon(i)(1:2).eq.
'D ').or.
519 & ((lakon(i)(1:1).eq.
'D').and.(network.eq.1)))
then 528 call e_c3d_th(co,nk,kon,lakon(i),s,sm,
529 & ff,i,nmethod,rhcon,nrhcon,ielmat,ielorien,norien,orab,
530 & ntmat_,t0,t1,ithermal,vold,iperturb,nelemload,
531 & sideload,xload,nload,
idist,iexpl,dtime,
532 & matname,mi(1),mass(2),stiffness,buckling,rhsi,intscheme,
533 & physcon,shcon,nshcon,cocon,ncocon,ttime,time,istep,iinc,
534 & xstiff,xloadold,reltime,ipompc,nodempc,coefmpc,nmpc,ikmpc,
535 & ilmpc,springarea,plkcon,nplkcon,npmat_,ncmat_,elcon,nelcon,
536 & lakon,pslavsurf,pmastsurf,mortar,clearini,plicon,nplicon,
537 & ipkon,ielprop,prop,iponoel,inoel,sti,xstateini,xstate,
538 & nstate_,network,ipobody,xbody,ibody)
545 jdof1=nactdof(0,node1)
552 jdof2=nactdof(0,node2)
556 if((jdof1.gt.0).and.(jdof2.gt.0))
then 557 if(stiffonly(2).eq.1)
then 558 call add_sm_st(au,ad,jq,irow,jdof1,jdof2,
561 call add_sm_ei(au,ad,aub,adb,jq,irow,jdof1,jdof2,
562 & s(jj,ll),sm(jj,ll),jj,ll)
564 elseif((jdof1.gt.0).or.(jdof2.gt.0))
then 577 if(idof2.ne.2*(idof2/2))
then 586 idof2=nactdof(nodempc(2,index),nodempc(1,index))
587 value=-coefmpc(index)*s(jj,ll)/coefmpc(ist)
588 if(idof1.eq.idof2)
value=2.d0*
value 590 if(stiffonly(2).eq.1)
then 594 valu2=-coefmpc(index)*sm(jj,ll)/
597 if(idof1.eq.idof2) valu2=2.d0*valu2
600 & idof1,idof2,
value,valu2,i0,i0)
603 index=nodempc(3,index)
613 elseif(nmethod.eq.2)
then 615 icolumn=neq(2)-idof2/2
616 call add_bo_st(au,jq,irow,idof1,icolumn,
value)
624 if(idof1.ne.2*(idof1/2)) mpc1=1
625 if(idof2.ne.2*(idof2/2)) mpc2=1
627 if((mpc1.eq.1).and.(mpc2.eq.1))
then 635 index1=nodempc(3,ist)
636 if(index1.eq.0) cycle
638 idof1=nactdof(nodempc(2,index1),
642 idof2=nactdof(nodempc(2,index2),
644 value=coefmpc(index1)*coefmpc(index2)*
645 & s(jj,ll)/coefmpc(ist)/coefmpc(ist)
646 if((idof1.gt.0).and.(idof2.gt.0))
then 647 if(stiffonly(2).eq.1)
then 649 & idof1,idof2,
value,i0,i0)
651 valu2=coefmpc(index1)*coefmpc(index2)*
652 & sm(jj,ll)/coefmpc(ist)/coefmpc(ist)
654 & irow,idof1,idof2,
value,valu2,i0,i0)
658 index2=nodempc(3,index2)
661 index1=nodempc(3,index1)
669 index1=nodempc(3,ist1)
670 if(index1.eq.0) cycle
672 idof1=nactdof(nodempc(2,index1),
675 index2=nodempc(3,ist2)
677 index1=nodempc(3,index1)
685 idof2=nactdof(nodempc(2,index2),
687 value=coefmpc(index1)*coefmpc(index2)*
688 & s(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
689 if(idof1.eq.idof2)
value=2.d0*
value 690 if((idof1.gt.0).and.(idof2.gt.0))
then 691 if(stiffonly(2).eq.1)
then 693 & idof1,idof2,
value,i0,i0)
695 valu2=coefmpc(index1)*coefmpc(index2)*
696 & sm(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
698 if(idof1.eq.idof2) valu2=2.d0*valu2
701 & irow,idof1,idof2,
value,valu2,i0,i0)
705 index2=nodempc(3,index2)
708 index1=nodempc(3,index1)
724 if(idof1.ne.2*(idof1/2))
then 730 jdof1=nactdof(nodempc(2,index),
733 fext(jdof1)=fext(jdof1)
734 & -coefmpc(index)*ff(jj)
737 index=nodempc(3,index)
744 fext(jdof1)=fext(jdof1)+ff(jj)
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 e_c3d_u(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, ne0, ipkon, thicke, integerglob, doubleglob, tieset, istartset, iendset, ialset, ntie, nasym, ielprop, prop)
Definition: e_c3d_u.f:31
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