31 character*80 matname(*)
32 character*132 textpart(16)
34 integer nelcon(2,*),nmat,ntmat_,ntmat,istep,npmat_,nstate_,
35 & n,key,i,j,iplas,iperturb(*),istat,nplicon(0:ntmat_,*),ncmat_,
36 & k,id,irstrt,iline,ipol,inl,ipoinp(2,*),inp(3,*),ipoinpc(0:*),
39 real*8 temperature,elcon(0:ncmat_,ntmat_,*),t1l,
40 & plicon(0:2*npmat_,ntmat_,*)
45 if((istep.gt.0).and.(irstrt.ge.0))
then 46 write(*,*)
'*ERROR reading *CREEP: *CREEP should be placed' 47 write(*,*)
' before all step definitions' 52 write(*,*)
'*ERROR reading *CREEP: *CREEP should be preceded' 53 write(*,*)
' by a *MATERIAL card' 62 if((nelcon(1,nmat).ne.2).and.(nelcon(1,nmat).ne.-51))
then 67 if((nelcon(1,nmat).ne.9).and.(nelcon(1,nmat).ne.-114))
then 68 write(*,*)
'*ERROR reading *CREEP: *CREEP should be' 69 write(*,*)
' preceded by an *ELASTIC,TYPE=ISO card,' 70 write(*,*)
' or an *ELASTIC,TYPE=ORTHO card' 76 if(nelcon(1,nmat).ne.-114)
then 84 if(textpart(i)(1:8).eq.
'LAW=USER')
then 89 if(nelcon(1,nmat).eq.-109)
then 95 nstate_=
max(nstate_,7)
96 if(matname(nmat)(70:80).ne.
' ')
then 97 write(*,*)
'*ERROR reading *CREEP: the material name' 98 write(*,*)
' for an elastically anisotropic' 99 write(*,*)
' material with isotropic creep must' 100 write(*,*)
' not exceed 69 characters' 104 matname(nmat)(i:i)=matname(nmat)(i-11:i-11)
106 matname(nmat)(1:11)=
'ANISO_CREEP' 108 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
109 & ipoinp,inp,ipoinpc)
117 nstate_=
max(nstate_,14)
118 do i=1,nelcon(2,nmat)
119 elcon(10,i,nmat)=0.d0
120 elcon(11,i,nmat)=0.d0
121 elcon(12,i,nmat)=0.d0
123 if(matname(nmat)(71:80).ne.
' ')
then 124 write(*,*)
'*ERROR reading *CREEP: the material name' 125 write(*,*)
' for an elastically anisotropic' 126 write(*,*)
' material with Norton creep' 127 write(*,*)
' must not exceed 70 characters' 131 matname(nmat)(i:i)=matname(nmat)(i-10:i-10)
133 matname(nmat)(1:10)=
'ANISO_PLAS' 143 if(textpart(i)(1:8).eq.
'LAW=USER')
then 144 write(*,*)
'*ERROR reading *CREEP: for an elastically' 145 write(*,*)
' anisotropic material with von' 146 write(*,*)
' Mises plasticity only Norton creep' 147 write(*,*)
' is allowed (no user subroutine)' 157 if(nelcon(1,nmat).ne.-114)
then 163 if(nelcon(1,nmat).ne.-51)
then 171 plicon(0,1,nmat)=0.d0
172 plicon(1,1,nmat)=0.d0
173 plicon(2,1,nmat)=0.d0
174 plicon(3,1,nmat)=0.d0
175 plicon(4,1,nmat)=10.d10
181 nstate_=
max(nstate_,13)
184 if(textpart(i)(1:8).eq.
'LAW=USER')
then 185 do j=1,nelcon(2,nmat)
186 elcon(3,j,nmat)=-1.d0
188 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
189 & ipoinp,inp,ipoinpc)
191 elseif(textpart(i)(1:10).eq.
'LAW=NORTON')
then 197 &
'*WARNING reading *CREEP: parameter not recognized:' 199 & textpart(i)(1:index(textpart(i),
' ')-1)
211 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
212 & ipoinp,inp,ipoinpc)
213 if((istat.lt.0).or.(key.eq.1))
exit 215 if(ntmat.gt.ntmat_)
then 216 write(*,*)
'*ERROR reading *CREEP: increase ntmat_' 220 read(textpart(i)(1:20),
'(f20.0)',iostat=istat)
221 & elcon(i+5,ntmat,nmat)
222 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
225 if(elcon(6,ntmat,nmat).le.0.d0)
then 226 write(*,*)
'*ERROR reading *CREEP: parameter A' 227 write(*,*)
' in the Norton law is nonpositive' 230 if(elcon(7,ntmat,nmat).le.0.d0)
then 231 write(*,*)
'*ERROR reading *CREEP: parameter n' 232 write(*,*)
' in the Norton law is nonpositive' 235 if(textpart(4)(1:1).ne.
' ')
then 236 read(textpart(4)(1:20),
'(f20.0)',iostat=istat)
238 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
243 elcon(9,ntmat,nmat)=temperature
247 write(*,*)
'*ERROR reading *CREEP: Norton law assumed,' 248 write(*,*)
' yet no constants given' 255 write(*,*)
'*INFO: interpolating the creep data at the' 256 write(*,*)
' elastic temperature data points;' 257 write(*,*)
' please note that it is preferable' 258 write(*,*)
' to use exactly the same temperature' 259 write(*,*)
' data points for the elastic and creep' 260 write(*,*)
' data (if not already done so)' 262 write(*,*)
'interpolated creep data' 263 write(*,*)
'temperature A n m' 265 do i=1,nelcon(2,nmat)
267 call ident2(elcon(9,1,nmat),t1l,ntmat,ncmat_+1,id)
270 elseif((ntmat.eq.1).or.(id.eq.0))
then 271 elcon(3,i,nmat)=elcon(6,1,nmat)
272 elcon(4,i,nmat)=elcon(7,1,nmat)
273 elcon(5,i,nmat)=elcon(8,1,nmat)
274 elseif(id.eq.ntmat)
then 275 elcon(3,i,nmat)=elcon(6,id,nmat)
276 elcon(4,i,nmat)=elcon(7,id,nmat)
277 elcon(5,i,nmat)=elcon(8,id,nmat)
280 elcon(k,i,nmat)=elcon(k+3,id,nmat)+
281 & (elcon(k+3,id+1,nmat)-elcon(k+3,id,nmat))*
282 & (t1l-elcon(9,id,nmat))/
283 & (elcon(9,id+1,nmat)-elcon(9,id,nmat))
286 write(*,*) t1l,(elcon(k,i,nmat),k=3,5)
296 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
297 & ipoinp,inp,ipoinpc)
298 if((istat.lt.0).or.(key.eq.1))
exit 300 if(ntmat.gt.ntmat_)
then 301 write(*,*)
'*ERROR reading *CREEP: increase ntmat_' 305 read(textpart(i)(1:20),
'(f20.0)',iostat=istat)
306 & elcon(i+15,ntmat,nmat)
307 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
310 if(textpart(3)(1:1).ne.
' ')
then 311 read(textpart(3)(1:20),
'(f20.0)',iostat=istat)
313 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
318 elcon(19,ntmat,nmat)=temperature
329 write(*,*)
'*INFO: interpolating the creep data at the' 330 write(*,*)
' elastic temperature data points;' 331 write(*,*)
' please note that it is preferable' 332 write(*,*)
' to use exactly the same temperature' 333 write(*,*)
' data points for the elastic and creep' 334 write(*,*)
' data (if not already done so)' 336 write(*,*)
'interpolated creep data' 337 write(*,*)
'temperature A n m' 340 write(*,*)
'*ERROR reading *CREEP: Norton law assumed,' 341 write(*,*)
' yet no constants given' 345 do i=1,nelcon(2,nmat)
347 call ident2(elcon(19,1,nmat),t1l,ntmat,ncmat_+1,id)
350 elseif((ntmat.eq.1).or.(id.eq.0))
then 351 elcon(13,i,nmat)=elcon(16,1,nmat)
352 elcon(14,i,nmat)=elcon(17,1,nmat)
353 elcon(15,i,nmat)=elcon(18,1,nmat)
354 elseif(id.eq.ntmat)
then 355 elcon(13,i,nmat)=elcon(16,id,nmat)
356 elcon(14,i,nmat)=elcon(17,id,nmat)
357 elcon(15,i,nmat)=elcon(18,id,nmat)
360 elcon(k,i,nmat)=elcon(k+3,id,nmat)+
361 & (elcon(k+3,id+1,nmat)-elcon(k+3,id,nmat))*
362 & (t1l-elcon(19,id,nmat))/
363 & (elcon(19,id+1,nmat)-elcon(19,id,nmat))
366 write(*,*) t1l,(elcon(k,i,nmat),k=13,15)
#define max(a, b)
Definition: cascade.c:32
subroutine ident2(x, px, n, ninc, id)
Definition: ident2.f:27
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21