46 logical mass(2),stiffness,buckling,rhsi,stiffonly(2),coriolis
49 character*20 sideload(*)
50 character*80 matname(*)
51 character*81 tieset(3,*)
53 integer kon(*),nodeboun(*),ndirboun(*),ipompc(*),nodempc(3,*),
54 & nodeforc(2,*),ndirforc(*),nelemload(2,*),icol(*),jq(*),ikmpc(*),
55 & ilmpc(*),ikboun(*),ilboun(*),mi(*),nstate_,ne0,nasym,
56 & nactdof(0:mi(2),*),konl(26),irow(*),icolumn,ialset(*),
57 & nelcon(2,*),nrhcon(*),nalcon(2,*),ielmat(mi(3),*),ntie,
58 & ielorien(mi(3),*),integerglob(*),istartset(*),iendset(*),
59 & ipkon(*),intscheme,ncocon(2,*),nshcon(*),ipobody(2,*),nbody,
60 & ibody(3,*),nk,ne,nboun,nmpc,nforc,nload,neq(2),nzl,nmethod,
61 & ithermal(2),iprestr,iperturb(*),nzs(3),i,j,k,l,m,
idist,jj,
62 & ll,id,id1,id2,ist,ist1,ist2,index,jdof1,jdof2,idof1,idof2,
63 & mpc1,mpc2,index1,index2,jdof,node1,node2,kflag,icalccg,
64 & ntmat_,indexe,nope,norien,iexpl,i0,ncmat_,istep,iinc,mortar,
65 & nplicon(0:ntmat_,*),nplkcon(0:ntmat_,*),npmat_,iactive(3),
66 & ielprop(*),iponoel(*),inoel(2,*),network
68 real*8 co(3,*),xboun(*),coefmpc(*),xforc(*),xload(2,*),p1(3),
69 & p2(3),ad(*),au(*),bodyf(3),fext(*),xloadold(2,*),reltime,
70 & t0(*),t1(*),prestr(6,mi(1),*),vold(0:mi(2),*),s(100,100),
71 & sti(6,mi(1),*),sm(100,100),stx(6,mi(1),*),adb(*),aub(*),
72 & elcon(0:ncmat_,ntmat_,*),rhcon(0:1,ntmat_,*),springarea(2,*),
73 & alcon(0:6,ntmat_,*),physcon(*),cocon(0:6,ntmat_,*),ff(100),
74 & xstate(nstate_,mi(1),*),xstateini(nstate_,mi(1),*),
75 & shcon(0:3,ntmat_,*),alzero(*),orab(7,*),xbody(7,*),cgr(4,*),
76 & plicon(0:2*npmat_,ntmat_,*),plkcon(0:2*npmat_,ntmat_,*),
77 & xstiff(27,mi(1),*),veold(0:mi(2),*),om,valu2,
value,dtime,ttime,
78 & time,thicke(mi(3),*),doubleglob(*),h0(3,*),st(60,60),smt(60,60),
79 & pslavsurf(3,*),pmastsurf(6,*),clearini(3,9,*),prop(*)
85 if(stiffness.and.(.not.mass(1)))
then 90 if(stiffness.and.(.not.mass(2)))
then 100 if(icol(i).gt.0)
then 142 if((ithermal(1).le.1).or.(ithermal(1).eq.3))
then 149 if(ipkon(i).lt.0) cycle
151 if(lakon(i)(4:5).eq.
'20')
then 153 elseif(lakon(i)(4:4).eq.
'8')
then 155 elseif(lakon(i)(4:5).eq.
'10')
then 157 elseif(lakon(i)(4:4).eq.
'4')
then 159 elseif(lakon(i)(4:5).eq.
'15')
then 161 elseif(lakon(i)(4:4).eq.
'6')
then 168 konl(j)=kon(indexe+j)
171 call e_c3d_em(co,konl,lakon(i),s,sm,ff,i,nmethod,
172 & ielmat,ntmat_,t1,ithermal,vold,
173 &
idist,matname,mi,mass(1),rhsi,
174 & ncmat_,elcon,nelcon,h0,iactive,
175 & alcon,nalcon,istartset,iendset,ialset)
183 jdof1=nactdof(k,node1)
191 jdof2=nactdof(m,node2)
195 if((jdof1.gt.0).and.(jdof2.gt.0))
then 196 if(stiffonly(1))
then 197 call add_sm_st(au,ad,jq,irow,jdof1,jdof2,
200 call add_sm_ei(au,ad,aub,adb,jq,irow,jdof1,jdof2,
201 & s(jj,ll),sm(jj,ll),jj,ll)
203 elseif((jdof1.gt.0).or.(jdof2.gt.0))
then 220 if(idof2.ne.2*(idof2/2))
then 230 idof2=nactdof(nodempc(2,index),nodempc(1,index))
231 value=-coefmpc(index)*s(jj,ll)/coefmpc(ist)
232 if(idof1.eq.idof2)
value=2.d0*
value 234 if(stiffonly(1))
then 238 valu2=-coefmpc(index)*sm(jj,ll)/
241 if(idof1.eq.idof2) valu2=2.d0*valu2
244 & idof1,idof2,
value,valu2,i0,i0)
247 index=nodempc(3,index)
257 elseif(nmethod.eq.2)
then 261 icolumn=neq(2)-idof2/2
262 call add_bo_st(au,jq,irow,idof1,icolumn,
value)
276 if(idof1.ne.2*(idof1/2)) mpc1=1
277 if(idof2.ne.2*(idof2/2)) mpc2=1
279 if((mpc1.eq.1).and.(mpc2.eq.1))
then 289 index1=nodempc(3,ist)
290 if(index1.eq.0) cycle
292 idof1=nactdof(nodempc(2,index1),
296 idof2=nactdof(nodempc(2,index2),
298 value=coefmpc(index1)*coefmpc(index2)*
299 & s(jj,ll)/coefmpc(ist)/coefmpc(ist)
300 if((idof1.gt.0).and.(idof2.gt.0))
then 301 if(stiffonly(1))
then 303 & idof1,idof2,
value,i0,i0)
305 valu2=coefmpc(index1)*coefmpc(index2)*
306 & sm(jj,ll)/coefmpc(ist)/coefmpc(ist)
308 & irow,idof1,idof2,
value,valu2,i0,i0)
312 index2=nodempc(3,index2)
315 index1=nodempc(3,index1)
323 index1=nodempc(3,ist1)
324 if(index1.eq.0) cycle
326 idof1=nactdof(nodempc(2,index1),
329 index2=nodempc(3,ist2)
331 index1=nodempc(3,index1)
339 idof2=nactdof(nodempc(2,index2),
341 value=coefmpc(index1)*coefmpc(index2)*
342 & s(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
343 if(idof1.eq.idof2)
value=2.d0*
value 344 if((idof1.gt.0).and.(idof2.gt.0))
then 345 if(stiffonly(1))
then 347 & idof1,idof2,
value,i0,i0)
349 valu2=coefmpc(index1)*coefmpc(index2)*
350 & sm(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
352 if(idof1.eq.idof2) valu2=2.d0*valu2
355 & irow,idof1,idof2,
value,valu2,i0,i0)
359 index2=nodempc(3,index2)
362 index1=nodempc(3,index1)
381 if(idof1.ne.2*(idof1/2))
then 388 jdof1=nactdof(nodempc(2,index),
391 fext(jdof1)=fext(jdof1)
392 & -coefmpc(index)*ff(jj)
395 index=nodempc(3,index)
402 fext(jdof1)=fext(jdof1)+ff(jj)
410 if(ithermal(1).gt.1)
then 416 if(ipkon(i).lt.0) cycle
421 if(int(elcon(2,1,ielmat(1,i))).ne.2) cycle
423 if(lakon(i)(4:5).eq.
'20')
then 425 elseif(lakon(i)(4:4).eq.
'8')
then 427 elseif(lakon(i)(4:5).eq.
'10')
then 429 elseif(lakon(i)(4:4).eq.
'4')
then 431 elseif(lakon(i)(4:5).eq.
'15')
then 433 elseif(lakon(i)(4:4).eq.
'6')
then 435 elseif((lakon(i)(1:1).eq.
'E').and.(lakon(i)(7:7).ne.
'A'))
then 439 read(lakon(i)(8:8),
'(i1)') nope
441 elseif((lakon(i)(1:2).eq.
'D ').or.
442 & ((lakon(i)(1:1).eq.
'D').and.(network.eq.1)))
then 451 call e_c3d_th(co,nk,kon,lakon(i),st,smt,
452 & ff,i,nmethod,rhcon,nrhcon,ielmat,ielorien,norien,orab,
453 & ntmat_,t0,t1,ithermal,vold,iperturb,nelemload,
454 & sideload,xload,nload,
idist,iexpl,dtime,
455 & matname,mi(1),mass(2),stiffness,buckling,rhsi,intscheme,
456 & physcon,shcon,nshcon,cocon,ncocon,ttime,time,istep,iinc,
457 & xstiff,xloadold,reltime,ipompc,nodempc,coefmpc,nmpc,ikmpc,
458 & ilmpc,springarea,plkcon,nplkcon,npmat_,ncmat_,elcon,nelcon,
459 & lakon,pslavsurf,pmastsurf,mortar,clearini,plicon,nplicon,
460 & ipkon,ielprop,prop,iponoel,inoel,sti,xstateini,xstate,
461 & nstate_,network,ipobody,xbody,ibody)
468 jdof1=nactdof(0,node1)
475 jdof2=nactdof(0,node2)
479 if((jdof1.gt.0).and.(jdof2.gt.0))
then 480 if(stiffonly(2))
then 481 call add_sm_st(au,ad,jq,irow,jdof1,jdof2,
484 call add_sm_ei(au,ad,aub,adb,jq,irow,jdof1,jdof2,
485 & st(jj,ll),smt(jj,ll),jj,ll)
487 elseif((jdof1.gt.0).or.(jdof2.gt.0))
then 504 if(idof2.ne.2*(idof2/2))
then 514 idof2=nactdof(nodempc(2,index),nodempc(1,index))
515 value=-coefmpc(index)*st(jj,ll)/coefmpc(ist)
516 if(idof1.eq.idof2)
value=2.d0*
value 518 if(stiffonly(2))
then 522 valu2=-coefmpc(index)*smt(jj,ll)/
525 if(idof1.eq.idof2) valu2=2.d0*valu2
528 & idof1,idof2,
value,valu2,i0,i0)
531 index=nodempc(3,index)
541 elseif(nmethod.eq.2)
then 545 icolumn=neq(2)-idof2/2
546 call add_bo_st(au,jq,irow,idof1,icolumn,
value)
560 if(idof1.ne.2*(idof1/2)) mpc1=1
561 if(idof2.ne.2*(idof2/2)) mpc2=1
563 if((mpc1.eq.1).and.(mpc2.eq.1))
then 573 index1=nodempc(3,ist)
574 if(index1.eq.0) cycle
576 idof1=nactdof(nodempc(2,index1),
580 idof2=nactdof(nodempc(2,index2),
582 value=coefmpc(index1)*coefmpc(index2)*
583 & st(jj,ll)/coefmpc(ist)/coefmpc(ist)
584 if((idof1.gt.0).and.(idof2.gt.0))
then 585 if(stiffonly(2))
then 587 & idof1,idof2,
value,i0,i0)
589 valu2=coefmpc(index1)*coefmpc(index2)*
590 & smt(jj,ll)/coefmpc(ist)/coefmpc(ist)
592 & irow,idof1,idof2,
value,valu2,i0,i0)
596 index2=nodempc(3,index2)
599 index1=nodempc(3,index1)
607 index1=nodempc(3,ist1)
608 if(index1.eq.0) cycle
610 idof1=nactdof(nodempc(2,index1),
613 index2=nodempc(3,ist2)
615 index1=nodempc(3,index1)
623 idof2=nactdof(nodempc(2,index2),
625 value=coefmpc(index1)*coefmpc(index2)*
626 & st(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
627 if(idof1.eq.idof2)
value=2.d0*
value 628 if((idof1.gt.0).and.(idof2.gt.0))
then 629 if(stiffonly(2))
then 631 & idof1,idof2,
value,i0,i0)
633 valu2=coefmpc(index1)*coefmpc(index2)*
634 & smt(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
636 if(idof1.eq.idof2) valu2=2.d0*valu2
639 & irow,idof1,idof2,
value,valu2,i0,i0)
643 index2=nodempc(3,index2)
646 index1=nodempc(3,index1)
665 if(idof1.ne.2*(idof1/2))
then 672 jdof1=nactdof(nodempc(2,index),
675 fext(jdof1)=fext(jdof1)
676 & -coefmpc(index)*ff(jj)
679 index=nodempc(3,index)
686 fext(jdof1)=fext(jdof1)+ff(jj)
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
subroutine e_c3d_em(co, konl, lakonl, s, sm, ff, nelem, nmethod, ielmat, ntmat_, t1, ithermal, vold, idist, matname, mi, mass, rhsi, ncmat_, elcon, nelcon, h0, iactive, alcon, nalcon, istartset, iendset, ialset)
Definition: e_c3d_em.f:25