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,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),bb(*),xbody(7,*),cgr(4,*),prop(*),
65 & t0(*),t1(*),prestr(6,mi(1),*),vold(0:mi(2),*),s(60,60),
66 & xstate(nstate_,mi(1),*),xstateini(nstate_,mi(1),*),ff(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_,*),
71 & plkcon(0:2*npmat_,ntmat_,*),thicke(mi(3),*),doubleglob(*),
72 & xstiff(27,mi(1),*),pi,theta,ti,tr,veold(0:mi(2),*),om,valu2,
73 &
value,dtime,walue,walu2,time,ttime,clearini(3,9,*),
74 & pslavsurf(3,*),pmastsurf(6,*)
82 write(*,*)
'*INFO in mafillsmcs: calculating nodal diameter',nm
83 write(*,*)
' for',cs(1,i),
'sectors' 84 write(*,*)
' (cyclic symmetry definition number',i,
')' 86 theta=nm*2.d0*pi/cs(1,i)
129 if(ipkon(i).lt.0) cycle
132 if(lakon(i)(4:5).eq.
'8I')
then 135 elseif(lakon(i)(4:5).eq.
'20')
then 137 elseif(lakon(i)(4:4).eq.
'2')
then 139 elseif(lakon(i)(4:4).eq.
'8')
then 141 elseif(lakon(i)(4:5).eq.
'10')
then 143 elseif(lakon(i)(4:4).eq.
'4')
then 145 elseif(lakon(i)(4:5).eq.
'15')
then 147 elseif(lakon(i)(4:4).eq.
'6')
then 149 elseif(lakon(i)(1:2).eq.
'ES')
then 150 read(lakon(i)(8:8),
'(i1)') nope
155 if(lakon(i)(7:7).eq.
'C')
then 164 if((nbody.gt.0).and.(lakon(i)(1:1).ne.
'E'))
then 172 if(ibody(1,j).eq.1)
then 181 index=ipobody(2,index)
186 call e_c3d(co,kon,lakon(i),p1,p2,om,bodyf,nbody,s,sm,ff,i,
187 & nmethod,elcon,nelcon,rhcon,nrhcon,alcon,nalcon,
188 & alzero,ielmat,ielorien,norien,orab,ntmat_,
189 & t0,t1,ithermal,vold,iperturb,nelemload,sideload,xload,
190 & nload,
idist,sti,stx,iexpl,plicon,
191 & nplicon,plkcon,nplkcon,xstiff,npmat_,
192 & dtime,matname,mi(1),ncmat_,mass,stiffness,buckling,rhsi,
193 & intscheme,ttime,time,istep,iinc,coriolis,xloadold,
194 & reltime,ipompc,nodempc,coefmpc,nmpc,ikmpc,ilmpc,veold,
195 & springarea,nstate_,xstateini,xstate,ne0,ipkon,thicke,
196 & integerglob,doubleglob,tieset,istartset,
197 & iendset,ialset,ntie,nasym,pslavsurf,pmastsurf,mortar,
198 & clearini,ielprop,prop,kscale)
206 jdof1=nactdof(k,node1)
210 if(ielcs(i).gt.0)
then 211 s(jj,ll)=(cs(1,(ielcs(i)+1))/cs(1,1))*s(jj,ll)
212 sm(jj,ll)=(cs(1,(ielcs(i)+1))/cs(1,1))*sm(jj,ll)
220 jdof2=nactdof(m,node2)
224 if((jdof1.gt.0).and.(jdof2.gt.0))
then 225 call add_sm_ei(au,ad,aub,adb,jq,irow,jdof1,jdof2,
226 & s(jj,ll),sm(jj,ll),jj,ll)
227 call add_sm_ei(au,ad,aub,adb,jq,irow,jdof1+ner,jdof2+ner,
228 & s(jj,ll),sm(jj,ll),jj,ll)
229 elseif((jdof1.gt.0).or.(jdof2.gt.0))
then 247 if(idof2.ne.2*(idof2/2))
then 257 inode=nodempc(1,index)
260 if(labmpc(id1)(1:6).eq.
'CYCLIC')
then 261 read(labmpc(id1)(7:20),
'(i14)') icomplex
262 elseif(labmpc(id1)(1:9).eq.
'SUBCYCLIC')
then 264 ilength=int(cs(4,ij))
266 call nident(ics(lprev+1),inode,ilength,id)
268 if(ics(lprev+id).eq.inode)
then 275 idof2=nactdof(nodempc(2,index),inode)
277 value=-coefmpc(index)*s(jj,ll)/coefmpc(ist)
278 valu2=-coefmpc(index)*sm(jj,ll)/
280 if(idof1.eq.idof2)
then 284 if(icomplex.eq.0)
then 286 & idof1,idof2,
value,valu2,i0,i0)
288 & idof1+ner,idof2+ner,
value,valu2,i0,i0)
290 walue=
value*cs(15,icomplex)
291 walu2=valu2*cs(15,icomplex)
293 & idof1,idof2,walue,walu2,i0,i0)
295 & idof1+ner,idof2+ner,walue,walu2,i0,i0)
296 if(idof1.ne.idof2)
then 297 walue=
value*cs(16,icomplex)
298 walu2=valu2*cs(16,icomplex)
300 & idof1,idof2+ner,walue,walu2,i0,i0)
304 & idof1+ner,idof2,walue,walu2,i0,i0)
308 index=nodempc(3,index)
328 if(idof1.ne.2*(idof1/2)) mpc1=1
329 if(idof2.ne.2*(idof2/2)) mpc2=1
331 if((mpc1.eq.1).and.(mpc2.eq.1))
then 341 index1=nodempc(3,ist)
342 if(index1.eq.0) cycle
344 inode1=nodempc(1,index1)
346 if(labmpc(id1)(1:6).eq.
'CYCLIC')
then 347 read(labmpc(id1)(7:20),
'(i14)') icomplex1
348 elseif(labmpc(id1)(1:9).eq.
'SUBCYCLIC')
then 350 ilength=int(cs(4,ij))
352 call nident(ics(lprev+1),inode1,
355 if(ics(lprev+id).eq.inode1)
then 362 idof1=nactdof(nodempc(2,index1),inode1)
365 inode2=nodempc(1,index2)
367 if(labmpc(id1)(1:6).eq.
'CYCLIC')
then 368 read(labmpc(id1)(7:20),
'(i14)') icomplex2
369 elseif(labmpc(id1)(1:9).eq.
'SUBCYCLIC')
then 371 ilength=int(cs(4,ij))
373 call nident(ics(lprev+1),inode2,
376 if(ics(lprev+id).eq.inode2)
then 383 idof2=nactdof(nodempc(2,index2),inode2)
384 if((idof1.gt.0).and.(idof2.gt.0))
then 385 value=coefmpc(index1)*coefmpc(index2)*
386 & s(jj,ll)/coefmpc(ist)/coefmpc(ist)
387 valu2=coefmpc(index1)*coefmpc(index2)*
388 & sm(jj,ll)/coefmpc(ist)/coefmpc(ist)
389 if((icomplex1.eq.0).and.
390 & (icomplex2.eq.0))
then 392 & irow,idof1,idof2,
value,valu2,i0,i0)
394 & irow,idof1+ner,idof2+ner,
value,
396 elseif((icomplex1.ne.0).and.
397 & (icomplex2.ne.0))
then 398 if(icomplex1.eq.icomplex2)
then 400 & irow,idof1,idof2,
value,valu2,i0,i0)
402 & irow,idof1+ner,idof2+ner,
value,
405 tr=cs(15,icomplex1)*cs(15,icomplex2)
406 & +cs(16,icomplex1)*cs(16,icomplex2)
411 & irow,idof1,idof2,walue,walu2,i0,i0)
413 & irow,idof1+ner,idof2+ner,walue,
415 ti=cs(15,icomplex1)*cs(16,icomplex2)
416 & -cs(15,icomplex2)*cs(16,icomplex1)
427 & ,idof1,idof2+ner,walue,walu2,i0,i0)
431 & ,idof1+ner,idof2,walue,walu2,i0,i0)
433 elseif((icomplex1.eq.0).or.
434 & (icomplex2.eq.0))
then 435 if(icomplex2.ne.0)
then 436 walue=
value*cs(15,icomplex2)
437 walu2=valu2*cs(15,icomplex2)
439 walue=
value*cs(15,icomplex1)
440 walu2=valu2*cs(15,icomplex1)
443 & idof1,idof2,walue,walu2,i0,i0)
445 & idof1+ner,idof2+ner,walue,walu2,i0,i0)
446 if(icomplex2.ne.0)
then 447 walue=
value*cs(16,icomplex2)
448 walu2=valu2*cs(16,icomplex2)
450 walue=-
value*cs(16,icomplex1)
451 walu2=-valu2*cs(16,icomplex1)
456 & idof1,idof2+ner,walue,walu2,i0,i0)
460 & idof1+ner,idof2,walue,walu2,i0,i0)
463 index2=nodempc(3,index2)
466 index1=nodempc(3,index1)
474 index1=nodempc(3,ist1)
475 if(index1.eq.0) cycle
477 inode1=nodempc(1,index1)
479 if(labmpc(id1)(1:6).eq.
'CYCLIC')
then 480 read(labmpc(id1)(7:20),
'(i14)') icomplex1
481 elseif(labmpc(id1)(1:9).eq.
'SUBCYCLIC')
then 483 ilength=int(cs(4,ij))
485 call nident(ics(lprev+1),inode1,
488 if(ics(lprev+id).eq.inode1)
then 495 idof1=nactdof(nodempc(2,index1),inode1)
497 index2=nodempc(3,ist2)
499 index1=nodempc(3,index1)
507 inode2=nodempc(1,index2)
509 if(labmpc(id2)(1:6).eq.
'CYCLIC')
then 510 read(labmpc(id2)(7:20),
'(i14)') icomplex2
511 elseif(labmpc(id2)(1:9).eq.
'SUBCYCLIC')
then 513 ilength=int(cs(4,ij))
515 call nident(ics(lprev+1),inode2,
518 if(ics(lprev+id).eq.inode2)
then 525 idof2=nactdof(nodempc(2,index2),inode2)
526 if((idof1.gt.0).and.(idof2.gt.0))
then 527 value=coefmpc(index1)*coefmpc(index2)*
528 & s(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
529 valu2=coefmpc(index1)*coefmpc(index2)*
530 & sm(jj,ll)/coefmpc(ist1)/coefmpc(ist2)
531 if(idof1.eq.idof2)
then 535 if((icomplex1.eq.0).and.
536 & (icomplex2.eq.0))
then 538 & irow,idof1,idof2,
value,valu2,i0,i0)
540 & irow,idof1+ner,idof2+ner,
value,
542 elseif((icomplex1.ne.0).and.
543 & (icomplex2.ne.0))
then 544 if(icomplex1.eq.icomplex2)
then 546 & irow,idof1,idof2,
value,valu2,i0,i0)
548 & irow,idof1+ner,idof2+ner,
value,
551 tr=cs(15,icomplex1)*cs(15,icomplex2)
552 & +cs(16,icomplex1)*cs(16,icomplex2)
557 & irow,idof1,idof2,walue,walu2,i0,i0)
559 & irow,idof1+ner,idof2+ner,walue,
561 ti=cs(15,icomplex1)*cs(16,icomplex2)
562 & -cs(15,icomplex2)*cs(16,icomplex1)
573 & ,idof1,idof2+ner,walue,walu2,i0,i0)
577 & ,idof1+ner,idof2,walue,walu2,i0,i0)
579 elseif((icomplex1.eq.0).or.
580 & (icomplex2.eq.0))
then 581 if(icomplex2.ne.0)
then 582 walue=
value*cs(15,icomplex2)
583 walu2=valu2*cs(15,icomplex2)
585 walue=
value*cs(15,icomplex1)
586 walu2=valu2*cs(15,icomplex1)
589 & idof1,idof2,walue,walu2,i0,i0)
591 & idof1+ner,idof2+ner,walue,walu2,i0,i0)
592 if(idof1.ne.idof2)
then 593 if(icomplex2.ne.0)
then 594 walue=
value*cs(16,icomplex2)
595 walu2=valu2*cs(16,icomplex2)
597 walue=-
value*cs(16,icomplex1)
598 walu2=-valu2*cs(16,icomplex1)
603 & irow,idof1,idof2+ner,walue,
608 & irow,idof1+ner,idof2,walue,
613 index2=nodempc(3,index2)
616 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
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 nident(x, px, n, id)
Definition: nident.f:26