37 character*20 sideload(*)
38 character*80 matname(*)
40 integer kon(*),ipompc(*),nodempc(3,*),ipobody(2,*),nbody,
41 & nodeforc(2,*),ndirforc(*),nelemload(2,*),ikmpc(*),mi(*),
42 & ilmpc(*),nactdof(0:mi(2),*),konl(20),nelcon(2,*),ibody(3,*),
43 & nrhcon(*),nalcon(2,*),ielmat(mi(3),*),ielorien(mi(3),*),
44 & ipkon(*),ielprop(*),nstate_,
45 & nk,ne,nmpc,nforc,nload,neq,nmethod,nom,m,idm,
46 & ithermal,iprestr,iperturb,i,j,k,
idist,jj,
47 & id,ist,index,jdof1,jdof,node1,ntmat_,indexe,nope,norien,
48 & iexpl,idof1,iinc,istep,icalccg,nplicon(0:ntmat_,*),
49 & nplkcon(0:ntmat_,*),npmat_,ikactmech(*),nactmech
51 real*8 co(3,*),coefmpc(*),xforc(*),xload(2,*),p1(3,2),
52 & p2(3,2),fext(*),bodyf(3),elcon(0:21,ntmat_,*),
53 & rhcon(0:1,ntmat_,*),xloadold(2,*),reltime,prop(*),
54 & alcon(0:6,ntmat_,*),alzero(*),orab(7,*),xbody(7,*),cgr(4,*),
55 & t0(*),t1(*),vold(0:mi(2),*),ff(60),time,ttime,dtime,
56 & plicon(0:2*npmat_,ntmat_,*),plkcon(0:2*npmat_,ntmat_,*),
57 & om(2),physcon(*),veold(0:mi(2),*),sti(6,mi(1),*),
58 & xstate(nstate_,mi(1),*),xstateini(nstate_,mi(1),*)
62 if((nmethod.ge.4).and.(iperturb.lt.2).and.(nactmech.lt.neq/2))
then 68 fext(ikactmech(i)+1)=0.d0
82 if((nbody.ne.0).or.(nload.ne.0))
then 89 if(((ithermal.le.1).or.(ithermal.eq.3)).and.(
idist.ne.0))
then 95 if(ipkon(i).lt.0) cycle
97 if(lakon(i)(4:4).eq.
'2')
then 99 elseif(lakon(i)(4:4).eq.
'8')
then 101 elseif(lakon(i)(4:5).eq.
'10')
then 103 elseif(lakon(i)(4:4).eq.
'4')
then 105 elseif(lakon(i)(4:5).eq.
'15')
then 107 elseif(lakon(i)(4:4).eq.
'6')
then 114 konl(j)=kon(indexe+j)
131 if(ibody(1,j).eq.1)
then 134 write(*,*)
'*ERROR in rhs: no more than two centri-' 135 write(*,*)
' fugal loading cards allowed' 148 elseif(ibody(1,j).eq.2)
then 149 bodyf(1)=bodyf(1)+xbody(1,j)*xbody(2,j)
150 bodyf(2)=bodyf(2)+xbody(1,j)*xbody(3,j)
151 bodyf(3)=bodyf(3)+xbody(1,j)*xbody(4,j)
155 elseif(ibody(1,j).eq.3)
then 156 call newton(icalccg,ne,ipkon,lakon,kon,t0,co,rhcon,
157 & nrhcon,ntmat_,physcon,i,cgr,bodyf,ielmat,ithermal,
160 index=ipobody(2,index)
166 &
call e_c3d_rhs(co,nk,konl,lakon(i),p1,p2,om,bodyf,nbody,
167 & ff,i,nmethod,rhcon,ielmat,ntmat_,vold,iperturb,
168 & nelemload,sideload,xload,nload,
idist,ttime,time,istep,
169 & iinc,dtime,xloadold,reltime,ipompc,nodempc,coefmpc,nmpc,
170 & ikmpc,ilmpc,veold,matname,mi,ielprop,prop)
175 if((nmethod.ge.4).and.(iperturb.lt.2))
then 182 jdof1=nactdof(k,node1)
187 if(dabs(ff(jj)).lt.1.d-30) cycle
191 call nident(ikmpc,idof1,nmpc,id)
192 if((id.gt.0).and.(ikmpc(id).eq.idof1))
then 197 jdof1=nactdof(nodempc(2,index),
200 fext(jdof1)=fext(jdof1)
201 & -coefmpc(index)*ff(jj)/coefmpc(ist)
202 call nident(ikactmech,jdof1-1,nactmech,
206 if(ikactmech(idm).eq.jdof1-1)
exit 209 do m=nactmech,idm+2,-1
210 ikactmech(m)=ikactmech(m-1)
212 ikactmech(idm+1)=jdof1-1
216 index=nodempc(3,index)
223 fext(jdof1)=fext(jdof1)+ff(jj)
224 call nident(ikactmech,jdof1-1,nactmech,
228 if(ikactmech(idm).eq.jdof1-1)
exit 231 do m=nactmech,idm+2,-1
232 ikactmech(m)=ikactmech(m-1)
234 ikactmech(idm+1)=jdof1-1
250 jdof1=nactdof(k,node1)
258 call nident(ikmpc,idof1,nmpc,id)
259 if((id.gt.0).and.(ikmpc(id).eq.idof1))
then 264 jdof1=nactdof(nodempc(2,index),
267 fext(jdof1)=fext(jdof1)
268 & -coefmpc(index)*ff(jj)/coefmpc(ist)
270 index=nodempc(3,index)
277 fext(jdof1)=fext(jdof1)+ff(jj)
285 elseif((ithermal.eq.2).and.(nload.gt.0))
then 291 if(ipkon(i).lt.0) cycle
293 if(lakon(i)(4:4).eq.
'2')
then 295 elseif(lakon(i)(4:4).eq.
'8')
then 297 elseif(lakon(i)(4:5).eq.
'10')
then 299 elseif(lakon(i)(4:4).eq.
'4')
then 301 elseif(lakon(i)(4:5).eq.
'15')
then 303 elseif(lakon(i)(4:4).eq.
'6')
then 310 konl(j)=kon(indexe+j)
315 & ff,i,nmethod,t0,t1,vold,nelemload,
316 & sideload,xload,nload,
idist,dtime,
317 & ttime,time,istep,iinc,xloadold,reltime,
318 & ipompc,nodempc,coefmpc,nmpc,ikmpc,ilmpc,mi,
319 & ielprop,prop,sti,xstateini,xstate,nstate_)
324 if((nmethod.ge.4.and.(iperturb.lt.2)))
then 330 jdof1=nactdof(0,node1)
335 if(dabs(ff(jj)).lt.1.d-30) cycle
339 call nident(ikmpc,idof1,nmpc,id)
340 if((id.gt.0).and.(ikmpc(id).eq.idof1))
then 345 jdof1=nactdof(nodempc(2,index),
348 fext(jdof1)=fext(jdof1)
349 & -coefmpc(index)*ff(jj)/coefmpc(ist)
350 call nident(ikactmech,jdof1-1,nactmech,
354 if(ikactmech(idm).eq.jdof1-1)
exit 357 do m=nactmech,idm+2,-1
358 ikactmech(m)=ikactmech(m-1)
360 ikactmech(idm+1)=jdof1-1
364 index=nodempc(3,index)
371 fext(jdof1)=fext(jdof1)+ff(jj)
372 call nident(ikactmech,jdof1-1,nactmech,
376 if(ikactmech(idm).eq.jdof1-1)
exit 379 do m=nactmech,idm+2,-1
380 ikactmech(m)=ikactmech(m-1)
382 ikactmech(idm+1)=jdof1-1
398 jdof1=nactdof(0,node1)
406 call nident(ikmpc,idof1,nmpc,id)
407 if((id.gt.0).and.(ikmpc(id).eq.idof1))
then 412 jdof1=nactdof(nodempc(2,index),
415 fext(jdof1)=fext(jdof1)
416 & -coefmpc(index)*ff(jj)/coefmpc(ist)
418 index=nodempc(3,index)
425 fext(jdof1)=fext(jdof1)+ff(jj)
439 if((nmethod.ge.4).and.(iperturb.lt.2))
then 441 if(ndirforc(i).gt.3) cycle
442 if(dabs(xforc(i)).lt.1.d-30) cycle
443 jdof=nactdof(ndirforc(i),nodeforc(1,i))
445 fext(jdof)=fext(jdof)+xforc(i)
446 call nident(ikactmech,jdof-1,nactmech,
450 if(ikactmech(idm).eq.jdof-1)
exit 453 do m=nactmech,idm+2,-1
454 ikactmech(m)=ikactmech(m-1)
456 ikactmech(idm+1)=jdof-1
465 jdof=8*(nodeforc(1,i)-1)+ndirforc(i)
466 call nident(ikmpc,jdof,nmpc,id)
468 if(ikmpc(id).eq.jdof)
then 473 jdof=nactdof(nodempc(2,index),nodempc(1,index))
475 fext(jdof)=fext(jdof)-
476 & coefmpc(index)*xforc(i)/coefmpc(ist)
477 call nident(ikactmech,jdof-1,nactmech,
481 if(ikactmech(idm).eq.jdof-1)
exit 484 do m=nactmech,idm+2,-1
485 ikactmech(m)=ikactmech(m-1)
487 ikactmech(idm+1)=jdof-1
491 index=nodempc(3,index)
503 if(ndirforc(i).gt.3) cycle
504 jdof=nactdof(ndirforc(i),nodeforc(1,i))
506 fext(jdof)=fext(jdof)+xforc(i)
513 jdof=8*(nodeforc(1,i)-1)+ndirforc(i)
514 call nident(ikmpc,jdof,nmpc,id)
516 if(ikmpc(id).eq.jdof)
then 521 jdof=nactdof(nodempc(2,index),nodempc(1,index))
523 fext(jdof)=fext(jdof)-
524 & coefmpc(index)*xforc(i)/coefmpc(ist)
526 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
static ITG * idist
Definition: radflowload.c:39
subroutine nident(x, px, n, id)
Definition: nident.f:26
subroutine e_c3d_rhs_th(co, nk, konl, lakonl, ff, nelem, nmethod, t0, t1, vold, nelemload, sideload, xload, nload, idist, dtime, ttime, time, istep, iinc, xloadold, reltime, ipompc, nodempc, coefmpc, nmpc, ikmpc, ilmpc, mi, ielprop, prop, sti, xstateini, xstate, nstate_)
Definition: e_c3d_rhs_th.f:25
subroutine e_c3d_rhs(co, nk, konl, lakonl, p1, p2, omx, bodyfx, nbody, ff, nelem, nmethod, rhcon, ielmat, ntmat_, vold, iperturb, nelemload, sideload, xload, nload, idist, ttime, time, istep, iinc, dtime, xloadold, reltime, ipompc, nodempc, coefmpc, nmpc, ikmpc, ilmpc, veold, matname, mi, ielprop, prop)
Definition: e_c3d_rhs.f:24