41 logical mass,stiffness,buckling,rhsi,coriolis
44 character*20 labmpc(*),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,ielprop(*),
51 & nactdof(0:mi(2),*),irow(*),istartset(*),iendset(*),kscale,
52 & nelcon(2,*),nrhcon(*),nalcon(2,*),ielmat(mi(3),*),
53 & ielorien(mi(3),*),integerglob(*),ialset(*),ntie,
54 & ipkon(*),ics(*),ij,ilength,lprev,ipobody(2,*),nbody,
55 & ibody(3,*),nk,ne,nboun,nmpc,nforc,nload,neq,nzl,nmethod,
56 & ithermal,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,node1,node2,kflag,nasym,mortar,
59 & ntmat_,indexe,nope,norien,iexpl,i0,nm,inode,icomplex,
60 & inode1,icomplex1,inode2,icomplex2,ner,ncmat_,intscheme,istep,
61 & iinc,mcs,ielcs(*),nplicon(0:ntmat_,*),nplkcon(0:ntmat_,*),npmat_
63 real*8 co(3,*),xboun(*),coefmpc(*),xforc(*),xload(2,*),p1(3),
64 & p2(3),ad(*),au(*),bodyf(3),fext(*),xbody(7,*),cgr(4,*),
65 & t0(*),t1(*),prestr(6,mi(1),*),vold(0:mi(2),*),s(60,60),
67 & sti(6,mi(1),*),sm(60,60),stx(6,mi(1),*),adb(*),aub(*),
68 & elcon(0:ncmat_,ntmat_,*),rhcon(0:1,ntmat_,*),xloadold(2,*),
69 & alcon(0:6,ntmat_,*),cs(17,*),alzero(*),orab(7,*),reltime,
70 & springarea(2,*),plicon(0:2*npmat_,ntmat_,*),prop(*),
71 & plkcon(0:2*npmat_,ntmat_,*),thicke(mi(3),*),doubleglob(*),
72 & xstiff(27,mi(1),*),pi,theta,ti,tr,veold(0:mi(2),*),om,
73 & xstate(nstate_,mi(1),*),xstateini(nstate_,mi(1),*),
74 &
value,dtime,walue,time,ttime,clearini(3,9,*),
75 & pslavsurf(3,*),pmastsurf(6,*)
81 theta=nm*2.d0*pi/cs(1,i)
103 if(ipkon(i).lt.0) cycle
104 if(lakon(i)(1:2).ne.
'ES') cycle
106 read(lakon(i)(8:8),
'(i1)') nope
111 if(lakon(i)(7:7).eq.
'C')
then 112 if(mortar.eq.1) nope=kon(indexe)
117 call e_c3d(co,kon,lakon(i),p1,p2,om,bodyf,nbody,s,sm,ff,i,
118 & nmethod,elcon,nelcon,rhcon,nrhcon,alcon,nalcon,
119 & alzero,ielmat,ielorien,norien,orab,ntmat_,
120 & t0,t1,ithermal,vold,iperturb,nelemload,sideload,xload,
121 & nload,
idist,sti,stx,iexpl,plicon,
122 & nplicon,plkcon,nplkcon,xstiff,npmat_,
123 & dtime,matname,mi(1),ncmat_,mass,stiffness,buckling,rhsi,
124 & intscheme,ttime,time,istep,iinc,coriolis,xloadold,
125 & reltime,ipompc,nodempc,coefmpc,nmpc,ikmpc,ilmpc,veold,
126 & springarea,nstate_,xstateini,xstate,ne0,ipkon,thicke,
127 & integerglob,doubleglob,tieset,istartset,
128 & iendset,ialset,ntie,nasym,pslavsurf,pmastsurf,mortar,
129 & clearini,ielprop,prop,kscale)
137 jdof1=nactdof(k,node1)
141 if(ielcs(i).gt.0)
then 142 s(jj,ll)=(cs(1,(ielcs(i)+1))/cs(1,1))*s(jj,ll)
150 jdof2=nactdof(m,node2)
154 if((jdof1.gt.0).and.(jdof2.gt.0))
then 156 & s(jj,ll),jj,ll,nzs)
158 & s(jj,ll),jj,ll,nzs)
159 elseif((jdof1.gt.0).or.(jdof2.gt.0))
then 172 if(idof1.ne.2*(idof1/2))
then 182 inode=nodempc(1,index)
184 if(labmpc(id1)(1:6).eq.
'CYCLIC')
then 185 read(labmpc(id1)(7:20),
'(i14)') icomplex
186 elseif(labmpc(id1)(1:9).eq.
'SUBCYCLIC')
then 188 ilength=int(cs(4,ij))
190 call nident(ics(lprev+1),inode,ilength,
193 if(ics(lprev+id).eq.inode)
then 200 idof1=nactdof(nodempc(2,index),inode)
202 value=-coefmpc(index)*s(jj,ll)/
204 if(icomplex.eq.0)
then 206 & idof1,idof2,
value,i0,i0,nzs)
208 & idof1+ner,idof2+ner,
value,i0,i0,nzs)
210 walue=
value*cs(15,icomplex)
212 & idof1,idof2,walue,i0,i0,nzs)
214 & idof1+ner,idof2+ner,walue,i0,i0,nzs)
215 if(idof1.ne.idof2)
then 216 walue=
value*cs(16,icomplex)
218 & idof1,idof2+ner,walue,i0,i0,nzs)
221 & idof1+ner,idof2,walue,i0,i0,nzs)
225 index=nodempc(3,index)
239 if(idof2.ne.2*(idof2/2))
then 249 inode=nodempc(1,index)
251 if(labmpc(id1)(1:6).eq.
'CYCLIC')
then 252 read(labmpc(id1)(7:20),
'(i14)') icomplex
253 elseif(labmpc(id1)(1:9).eq.
'SUBCYCLIC')
then 255 ilength=int(cs(4,ij))
257 call nident(ics(lprev+1),inode,ilength,
260 if(ics(lprev+id).eq.inode)
then 267 idof2=nactdof(nodempc(2,index),inode)
269 value=-coefmpc(index)*s(jj,ll)/
271 if(icomplex.eq.0)
then 273 & idof1,idof2,
value,i0,i0,nzs)
275 & idof1+ner,idof2+ner,
value,i0,i0,nzs)
277 walue=
value*cs(15,icomplex)
279 & idof1,idof2,walue,i0,i0,nzs)
281 & idof1+ner,idof2+ner,walue,i0,i0,nzs)
282 if(idof1.ne.idof2)
then 283 walue=
value*cs(16,icomplex)
285 & idof1,idof2+ner,walue,i0,i0,nzs)
288 & idof1+ner,idof2,walue,i0,i0,nzs)
292 index=nodempc(3,index)
313 if(idof1.ne.2*(idof1/2)) mpc1=1
314 if(idof2.ne.2*(idof2/2)) mpc2=1
316 if((mpc1.eq.1).and.(mpc2.eq.1))
then 326 index1=nodempc(3,ist)
327 if(index1.eq.0) cycle
329 inode1=nodempc(1,index1)
332 if(labmpc(id1)(1:6).eq.
'CYCLIC')
then 333 read(labmpc(id1)(7:20),
'(i14)') icomplex1
334 elseif(labmpc(id1)(1:9).eq.
'SUBCYCLIC')
then 336 ilength=int(cs(4,ij))
338 call nident(ics(lprev+1),inode1,
341 if(ics(lprev+id).eq.inode1)
then 348 idof1=nactdof(nodempc(2,index1),inode1)
351 index2=nodempc(3,ist2)
353 index1=nodempc(3,index1)
362 inode2=nodempc(1,index2)
364 if(labmpc(id1)(1:6).eq.
'CYCLIC')
then 365 read(labmpc(id1)(7:20),
'(i14)') icomplex2
366 elseif(labmpc(id1)(1:9).eq.
'SUBCYCLIC')
then 368 ilength=int(cs(4,ij))
370 call nident(ics(lprev+1),inode2,
373 if(ics(lprev+id).eq.inode2)
then 380 idof2=nactdof(nodempc(2,index2),inode2)
381 if((idof1.gt.0).and.(idof2.gt.0))
then 382 value=coefmpc(index1)*coefmpc(index2)*
383 & s(jj,ll)/coefmpc(ist)/coefmpc(ist)
384 if((icomplex1.eq.0).and.
385 & (icomplex2.eq.0))
then 387 & irow,idof1,idof2,
value,i0,i0,nzs)
389 & irow,idof1+ner,idof2+ner,
value,
391 elseif((icomplex1.ne.0).and.
392 & (icomplex2.ne.0))
then 393 if(icomplex1.eq.icomplex2)
then 395 & irow,idof1,idof2,
value,i0,i0,nzs)
397 & irow,idof1+ner,idof2+ner,
value,
400 tr=cs(15,icomplex1)*cs(15,icomplex2)
401 & +cs(16,icomplex1)*cs(16,icomplex2)
404 & irow,idof1,idof2,walue,i0,i0,nzs)
406 & irow,idof1+ner,idof2+ner,walue,
408 ti=cs(15,icomplex1)*cs(16,icomplex2)
409 & -cs(15,icomplex2)*cs(16,icomplex1)
412 & ,idof1,idof2+ner,walue,i0,i0,nzs)
415 & ,idof1+ner,idof2,walue,i0,i0,nzs)
417 elseif((icomplex1.eq.0).or.
418 & (icomplex2.eq.0))
then 419 if(icomplex2.ne.0)
then 420 walue=
value*cs(15,icomplex2)
422 walue=
value*cs(15,icomplex1)
425 & idof1,idof2,walue,i0,i0,nzs)
427 & idof1+ner,idof2+ner,walue,i0,i0,nzs)
428 if(icomplex2.ne.0)
then 429 walue=
value*cs(16,icomplex2)
431 walue=-
value*cs(16,icomplex1)
434 & idof1,idof2+ner,walue,i0,i0,nzs)
437 & idof1+ner,idof2,walue,i0,i0,nzs)
440 index2=nodempc(3,index2)
443 index1=nodempc(3,index1)
451 index1=nodempc(3,ist1)
452 if(index1.eq.0) cycle
454 inode1=nodempc(1,index1)
456 if(labmpc(id1)(1:6).eq.
'CYCLIC')
then 457 read(labmpc(id1)(7:20),
'(i14)') icomplex1
458 elseif(labmpc(id1)(1:9).eq.
'SUBCYCLIC')
then 460 ilength=int(cs(4,ij))
462 call nident(ics(lprev+1),inode1,
465 if(ics(lprev+id).eq.inode1)
then 472 idof1=nactdof(nodempc(2,index1),inode1)
474 index2=nodempc(3,ist2)
476 index1=nodempc(3,index1)
484 inode2=nodempc(1,index2)
486 if(labmpc(id2)(1:6).eq.
'CYCLIC')
then 487 read(labmpc(id2)(7:20),
'(i14)') icomplex2
488 elseif(labmpc(id2)(1:9).eq.
'SUBCYCLIC')
then 490 ilength=int(cs(4,ij))
492 call nident(ics(lprev+1),inode2,
495 if(ics(lprev+id).eq.inode2)
then 502 idof2=nactdof(nodempc(2,index2),inode2)
503 if((idof1.gt.0).and.(idof2.gt.0))
then 504 value=coefmpc(index1)*coefmpc(index2)*
505 & s(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
506 if((icomplex1.eq.0).and.
507 & (icomplex2.eq.0))
then 509 & irow,idof1,idof2,
value,i0,i0,nzs)
511 & irow,idof1+ner,idof2+ner,
value,
513 elseif((icomplex1.ne.0).and.
514 & (icomplex2.ne.0))
then 515 if(icomplex1.eq.icomplex2)
then 517 & irow,idof1,idof2,
value,i0,i0,nzs)
519 & irow,idof1+ner,idof2+ner,
value,
522 tr=cs(15,icomplex1)*cs(15,icomplex2)
523 & +cs(16,icomplex1)*cs(16,icomplex2)
526 & irow,idof1,idof2,walue,i0,i0,nzs)
528 & irow,idof1+ner,idof2+ner,walue,
530 ti=cs(15,icomplex1)*cs(16,icomplex2)
531 & -cs(15,icomplex2)*cs(16,icomplex1)
534 & ,idof1,idof2+ner,walue,i0,i0,nzs)
537 & ,idof1+ner,idof2,walue,i0,i0,nzs)
539 elseif((icomplex1.eq.0).or.
540 & (icomplex2.eq.0))
then 541 if(icomplex2.ne.0)
then 542 walue=
value*cs(15,icomplex2)
544 walue=
value*cs(15,icomplex1)
547 & idof1,idof2,walue,i0,i0,nzs)
549 & idof1+ner,idof2+ner,walue,i0,i0,nzs)
550 if(idof1.ne.idof2)
then 551 if(icomplex2.ne.0)
then 552 walue=
value*cs(16,icomplex2)
554 walue=-
value*cs(16,icomplex1)
557 & irow,idof1,idof2+ner,walue,
561 & irow,idof1+ner,idof2,walue,
566 index2=nodempc(3,index2)
569 index1=nodempc(3,index1)
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
static ITG * idist
Definition: radflowload.c:39
subroutine nident(x, px, n, id)
Definition: nident.f:26
subroutine add_sm_st_as(au, ad, jq, irow, i, j, value, i0, i1, nzs)
Definition: add_sm_st_as.f:20