34 integer nelcon(2,*),nrhcon(*),nalcon(2,*),
35 & imat,iorien,ithermal,j,k,mattyp,kal(2,6),j1,j2,j3,j4,
36 & jj,ntmat_,istiff,nelconst,ihyper,kode,itemp,kin,nelas,
37 & iel,iint,mi(*),ncmat_,id,two,seven,
38 & nplicon(0:ntmat_,*),nplkcon(0:ntmat_,*),npmat_
40 real*8 elcon(0:ncmat_,ntmat_,*),rhcon(0:1,ntmat_,*),
41 & alcon(0:6,ntmat_,*),eth(6),xstiff(27,mi(1),*),
42 & orab(7,*),elas(21),alph(6),alzero(*),rho,t0l,t1l,
43 & skl(3,3),xa(3,3),elconloc(21),emax,pgauss(3),
44 & plicon(0:2*npmat_,ntmat_,*),plkcon(0:2*npmat_,ntmat_,*),
47 intent(in) elcon,nelcon,rhcon,nrhcon,alcon,nalcon,
48 & imat,amat,iorien,pgauss,orab,ntmat_,iel,ithermal,
49 & alzero,t0l,t1l,ihyper,istiff,kode,plicon,
50 & nplicon,plkcon,nplkcon,npmat_,mi,dtime,iint,
53 intent(inout) plconloc,eth,elconloc,elas,mattyp,rho
55 kal=reshape((/1,1,2,2,3,3,1,2,1,3,2,3/),(/2,6/))
66 if((nelas.lt.0).or.((nelas.ne.2).and.(iorien.ne.0))) nelas=21
71 if(ithermal.eq.0)
then 74 call ident2(rhcon(0,1,imat),t1l,nrhcon(imat),two,id)
75 if(nrhcon(imat).eq.0)
then 77 elseif(nrhcon(imat).eq.1)
then 81 elseif(id.eq.nrhcon(imat))
then 85 & (rhcon(1,id+1,imat)-rhcon(1,id,imat))*
86 & (t1l-rhcon(0,id,imat))/
87 & (rhcon(0,id+1,imat)-rhcon(0,id,imat))
96 elas(j)=xstiff(j,iint,iel)
105 emax=
max(emax,dabs(elas(j)))
108 if(dabs(elas(j)).gt.emax*1.d-10)
then 113 if(emax.gt.0.d0) nelas=9
120 elseif(nelas.le.9)
then 128 nelconst=nelcon(1,imat)
130 if(nelconst.lt.0)
then 134 if(nelconst.eq.-1)
then 136 elseif(nelconst.eq.-2)
then 138 elseif(nelconst.eq.-3)
then 140 elseif(nelconst.eq.-4)
then 142 elseif(nelconst.eq.-5)
then 144 elseif(nelconst.eq.-6)
then 146 elseif(nelconst.eq.-7)
then 148 elseif(nelconst.eq.-8)
then 150 elseif(nelconst.eq.-9)
then 152 elseif(nelconst.eq.-10)
then 154 elseif(nelconst.eq.-11)
then 156 elseif(nelconst.eq.-12)
then 158 elseif(nelconst.eq.-13)
then 160 elseif(nelconst.eq.-14)
then 162 elseif(nelconst.eq.-15)
then 164 elseif(nelconst.eq.-16)
then 166 elseif(nelconst.eq.-17)
then 168 elseif(nelconst.eq.-50)
then 170 elseif(nelconst.eq.-51)
then 172 elseif(nelconst.eq.-52)
then 174 elseif(nelconst.le.-100)
then 175 nelconst=-nelconst-100
184 if(ithermal.eq.0)
then 187 elconloc(k)=elcon(k,1,imat)
191 elconloc(k)=elcon(k,1,imat)
196 if((kode.lt.-50).and.(kode.gt.-100))
then 200 plconloc(801)=nplicon(1,imat)+0.5d0
201 plconloc(802)=nplkcon(1,imat)+0.5d0
205 if(nplicon(1,imat).ne.0)
then 207 call plcopy(plicon,nplicon,plconloc,npmat_,ntmat_,
208 & imat,itemp,iel,kin)
213 if(nplkcon(1,imat).ne.0)
then 215 call plcopy(plkcon,nplkcon,plconloc,npmat_,ntmat_,
216 & imat,itemp,iel,kin)
226 call ident2(alcon(0,1,imat),t1l,nalcon(2,imat),seven,id)
227 if(nalcon(2,imat).eq.0)
then 232 elseif(nalcon(2,imat).eq.1)
then 233 do k=1,nalcon(1,imat)
234 alph(k)=alcon(k,1,imat)*(t1l-alzero(imat))
237 do k=1,nalcon(1,imat)
238 alph(k)=alcon(k,1,imat)*(t1l-alzero(imat))
240 elseif(id.eq.nalcon(2,imat))
then 241 do k=1,nalcon(1,imat)
242 alph(k)=alcon(k,id,imat)*(t1l-alzero(imat))
245 do k=1,nalcon(1,imat)
246 alph(k)=(alcon(k,id,imat)+
247 & (alcon(k,id+1,imat)-alcon(k,id,imat))*
248 & (t1l-alcon(0,id,imat))/
249 & (alcon(0,id+1,imat)-alcon(0,id,imat)))
250 & *(t1l-alzero(imat))
256 call ident2(alcon(0,1,imat),t0l,nalcon(2,imat),seven,id)
257 if(nalcon(2,imat).eq.0)
then 259 elseif(nalcon(2,imat).eq.1)
then 260 do k=1,nalcon(1,imat)
261 alph(k)=alph(k)-alcon(k,1,imat)*(t0l-alzero(imat))
264 do k=1,nalcon(1,imat)
265 alph(k)=alph(k)-alcon(k,1,imat)*(t0l-alzero(imat))
267 elseif(id.eq.nalcon(2,imat))
then 268 do k=1,nalcon(1,imat)
269 alph(k)=alph(k)-alcon(k,id,imat)*(t0l-alzero(imat))
272 do k=1,nalcon(1,imat)
273 alph(k)=alph(k)-(alcon(k,id,imat)+
274 & (alcon(k,id+1,imat)-alcon(k,id,imat))*
275 & (t0l-alcon(0,id,imat))/
276 & (alcon(0,id+1,imat)-alcon(0,id,imat)))
277 & *(t0l-alzero(imat))
283 if(nalcon(1,imat).eq.1)
then 290 elseif(nalcon(1,imat).eq.3)
then 314 if((kode.lt.-50).and.(kode.gt.-100))
then 322 plconloc(801)=nplicon(1,imat)+0.5d0
323 plconloc(802)=nplkcon(1,imat)+0.5d0
327 if(nplicon(1,imat).ne.0)
then 329 if(nplicon(0,imat).eq.1)
then 332 call ident2(plicon(0,1,imat),t1l,
333 & nplicon(0,imat),2*npmat_+1,id)
336 if(nplicon(0,imat).eq.0)
then 338 elseif((nplicon(0,imat).eq.1).or.(id.eq.0).or.
339 & (id.eq.nplicon(0,imat)))
then 346 call plcopy(plicon,nplicon,plconloc,npmat_,
347 & ntmat_,imat,itemp,iel,kin)
348 if((id.eq.0).or.(id.eq.nplicon(0,imat)))
then 352 call plmix(plicon,nplicon,plconloc,npmat_,
353 & ntmat_,imat,id+1,t1l,iel,kin)
359 if(nplkcon(1,imat).ne.0)
then 361 if(nplkcon(0,imat).eq.1)
then 364 call ident2(plkcon(0,1,imat),t1l,
365 & nplkcon(0,imat),2*npmat_+1,id)
368 if(nplkcon(0,imat).eq.0)
then 370 elseif((nplkcon(0,imat).eq.1).or.(id.eq.0).or.
371 & (id.eq.nplkcon(0,imat)))
then 378 call plcopy(plkcon,nplkcon,plconloc,npmat_,
379 & ntmat_,imat,itemp,iel,kin)
380 if((id.eq.0).or.(id.eq.nplkcon(0,imat)))
then 384 call plmix(plkcon,nplkcon,plconloc,npmat_,
385 & ntmat_,imat,id+1,t1l,iel,kin)
393 call ident2(elcon(0,1,imat),t1l,nelcon(2,imat),ncmat_+1,id)
394 if(nelcon(2,imat).eq.0)
then 396 elseif(nelcon(2,imat).eq.1)
then 398 elconloc(k)=elcon(k,1,imat)
402 elconloc(k)=elcon(k,1,imat)
404 elseif(id.eq.nelcon(2,imat))
then 406 elconloc(k)=elcon(k,id,imat)
410 elconloc(k)=elcon(k,id,imat)+
411 & (elcon(k,id+1,imat)-elcon(k,id,imat))*
412 & (t1l-elcon(0,id,imat))/
413 & (elcon(0,id+1,imat)-elcon(0,id,imat))
420 if((iorien.ne.0).and.(nalcon(1,imat).gt.1))
then 445 & xa(j3,j4)*skl(j1,j3)*skl(j2,j4)
subroutine plcopy(plcon, nplcon, plconloc, npmat_, ntmat_, imat, itemp, nelem, kin)
Definition: plcopy.f:21
#define max(a, b)
Definition: cascade.c:32
subroutine ident2(x, px, n, ninc, id)
Definition: ident2.f:27
subroutine plmix(plcon, nplcon, plconloc, npmat_, ntmat_, imat, j, temp, nelem, kin)
Definition: plmix.f:21