38 integer imat,ndata,ntmat_,npmat_,nplcon(0:ntmat_,*),nelem,
39 & kin,k,j,k1,k2,ierror,ndata1,ndata2,itemp
41 real*8 eplmin,eplmax,depl,epla,plcon(0:2*npmat_,ntmat_,*),
42 & plconloc(802),dummy,temp,ep1,ep2,t1,t2,s1,s2,ratio
44 intent(in) plcon,nplcon,npmat_,ntmat_,
45 & imat,j,temp,nelem,kin
47 intent(inout) plconloc
52 ndata1=nplcon(j-1,imat)
56 ratio=(temp-t1)/(t2-t1)
67 ep2=plcon(2*k2,j,imat)
71 write(*,*)
'*ERROR in plmix: there exist two temperatures' 72 write(*,*)
' for which the hardening curves are' 73 write(*,*)
' disjunct' 76 elseif(ep2.gt.ep1)
then 78 ep1=plcon(2*k1,j-1,imat)
82 write(*,*)
'*ERROR in plmix: there exist two temperatures' 83 write(*,*)
' for which the hardening curves are' 84 write(*,*)
' disjunct' 90 s1=plcon(2*k1-1,j-1,imat)
91 s2=plcon(2*k2-1,j,imat)
92 ep1=plcon(2*k1,j-1,imat)
93 ep2=plcon(2*k2,j,imat)
95 if(dabs(ep1-ep2).lt.1.d-10)
then 98 elseif(k1.lt.ndata1)
then 102 if(ndata.gt.200)
then 107 plconloc(2*ndata-1)=ep1+ratio*(ep2-ep1)
108 plconloc(2*ndata)=s1+ratio*(s2-s1)
110 plconloc(399+2*ndata)=ep1+ratio*(ep2-ep1)
111 plconloc(400+2*ndata)=s1+ratio*(s2-s1)
119 if(ndata.gt.200)
then 123 call plinterpol(plcon,nplcon,j,s2,dummy,npmat_,ntmat_,
126 plconloc(2*ndata-1)=ep1
127 plconloc(2*ndata)=s1+ratio*(s2-s1)
129 plconloc(399+2*ndata)=ep1
130 plconloc(400+2*ndata)=s1+ratio*(s2-s1)
132 if(k1.lt.ndata1)
then 140 if(ndata.gt.200)
then 144 call plinterpol(plcon,nplcon,j-1,s1,dummy,npmat_,ntmat_,
147 plconloc(2*ndata-1)=ep2
148 plconloc(2*ndata)=s1+ratio*(s2-s1)
150 plconloc(399+2*ndata)=ep2
151 plconloc(400+2*ndata)=s1+ratio*(s2-s1)
153 if(k2.lt.ndata2)
then 167 plconloc(801)=
real(ndata)+0.5d0
169 plconloc(802)=
real(ndata)+0.5d0
173 eplmin=
max(plcon(2,j-1,imat),plcon(2,j,imat))
174 eplmax=
min(plcon(2*ndata1,j-1,imat),plcon(2*ndata2,j,imat))
176 depl=(eplmax-eplmin)/199.d0
178 epla=eplmin+(k-1)*depl
181 & dummy,npmat_,ntmat_,imat,nelem,epla)
184 & dummy,npmat_,ntmat_,imat,nelem,epla)
186 plconloc(2*k)=s1+ratio*(s2-s1)
188 plconloc(801)=200.5d0
190 eplmin=
max(plcon(2,j-1,imat),plcon(2,j,imat))
191 eplmax=
min(plcon(2*ndata1,j-1,imat),plcon(2*ndata2,j,imat))
193 depl=(eplmax-eplmin)/199.d0
195 epla=eplmin+(k-1)*depl
198 & dummy,npmat_,ntmat_,imat,nelem,epla)
201 & dummy,npmat_,ntmat_,imat,nelem,epla)
202 plconloc(399+2*k)=epla
203 plconloc(400+2*k)=s1+ratio*(s2-s1)
205 plconloc(802)=200.5d0
#define max(a, b)
Definition: cascade.c:32
#define min(a, b)
Definition: cascade.c:31
subroutine plinterpol(plcon, nplcon, itemp, f, df, npmat_, ntmat_, imat, nelem, epl)
Definition: plinterpol.f:20