28 character*132 textpart(16)
30 integer nelcon(2,*),nmat,ntmat,ntmat_,istep,istat,ipoinpc(0:*),
31 & n,key,i,j,k,ityp,iperturb(*),iend,jcoef(3,14),ncmat_,irstrt,
32 & iline,ipol,inl,ipoinp(2,*),inp(3,*)
34 real*8 elcon(0:ncmat_,ntmat_,*),um
40 data jcoef /3,0,0,3,0,0,2,0,0,3,0,0,5,6,0,7,8,9,3,0,0,
41 & 6,7,0,12,13,14,2,0,0,3,4,0,4,5,6,5,0,0,4,5,6/
46 write(*,*)
'*INFO reading *HYPERELASTIC: nonlinear geometric' 47 write(*,*)
' effects are turned on' 50 if((istep.gt.0).and.(irstrt.ge.0))
then 52 &
'*ERROR reading *HYPERELASTIC: *HYPERELASTIC should be' 53 write(*,*)
' placed before all step definitions' 59 &
'*ERROR reading *HYPERELASTIC: *HYPERELASTIC should be' 60 write(*,*)
' preceded by a *MATERIAL card' 67 if(textpart(i)(1:12).eq.
'ARRUDA-BOYCE')
then 69 elseif(textpart(i)(1:13).eq.
'MOONEY-RIVLIN')
then 71 elseif(textpart(i)(1:8).eq.
'NEOHOOKE')
then 73 elseif(textpart(i)(1:5).eq.
'OGDEN')
then 75 elseif(textpart(i)(1:10).eq.
'POLYNOMIAL')
then 77 elseif(textpart(i)(1:17).eq.
'REDUCEDPOLYNOMIAL')
then 79 elseif(textpart(i)(1:11).eq.
'VANDERWAALS')
then 81 elseif(textpart(i)(1:4).eq.
'YEOH')
then 83 elseif(textpart(i)(1:2).eq.
'N=')
then 84 if(textpart(i)(3:3).eq.
'1')
then 85 elseif(textpart(i)(3:3).eq.
'2')
then 88 elseif(ityp.eq.-7)
then 90 elseif(ityp.eq.-10)
then 93 write(*,*)
'*WARNING reading *HYPERELASTIC: N=2 is not 94 & applicable for this material type; ' 98 elseif(textpart(i)(3:3).eq.
'3')
then 101 elseif(ityp.eq.-7)
then 103 elseif(ityp.eq.-10)
then 106 write(*,*)
'*WARNING reading *HYPERELASTIC: N=3 is not 107 & applicable for this material type; ' 112 write(*,*)
'*WARNING reading *HYPERELASTIC: only N=1, N=2 113 &, or N=3 are allowed; ' 119 &
'*WARNING reading *HYPERELASTIC: parameter not recognized:' 121 & textpart(i)(1:index(textpart(i),
' ')-1)
129 if((ityp.ne.-6).and.(ityp.ne.-9))
then 130 if((ityp.eq.-3).or.(ityp.eq.-10))
then 132 elseif((ityp.eq.-1).or.(ityp.eq.-2).or.(ityp.eq.-4).or.
135 elseif(ityp.eq.-11)
then 137 elseif(ityp.eq.-13)
then 139 elseif((ityp.eq.-5).or.(ityp.eq.-12).or.(ityp.eq.-14))
then 141 elseif(ityp.eq.-8)
then 145 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
146 & ipoinp,inp,ipoinpc)
147 if((istat.lt.0).or.(key.eq.1))
exit 150 if(ntmat.gt.ntmat_)
then 151 write(*,*)
'*ERROR reading *HYPERELASTIC: increase ntmat_' 155 read(textpart(i)(1:20),
'(f20.0)',iostat=istat)
156 & elcon(i,ntmat,nmat)
157 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
160 read(textpart(iend+1)(1:20),
'(f20.0)',iostat=istat)
161 & elcon(0,ntmat,nmat)
162 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
167 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
168 & ipoinp,inp,ipoinpc)
169 if((istat.lt.0).or.(key.eq.1))
exit 172 if(ntmat.gt.ntmat_)
then 173 write(*,*)
'*ERROR reading *HYPERELASTIC: increase ntmat_' 177 read(textpart(i)(1:20),
'(f20.0)',iostat=istat)
178 & elcon(i,ntmat,nmat)
179 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
188 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
189 & ipoinp,inp,ipoinpc)
190 if((istat.lt.0).or.(key.eq.1))
then 192 &
'*ERROR reading *HYPERELASTIC: hyperelastic definition' 193 write(*,*)
' is not complete. ' 199 read(textpart(i)(1:20),
'(f20.0)',iostat=istat)
200 & elcon(8+i,ntmat,nmat)
201 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
204 read(textpart(iend+1)(1:20),
'(f20.0)',iostat=istat)
205 & elcon(0,ntmat,nmat)
206 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
222 elseif(ityp.eq.-2)
then 223 um=2.d0*(elcon(1,j,nmat)+elcon(2,j,nmat))
224 elseif(ityp.eq.-3)
then 225 um=2.d0*elcon(1,j,nmat)
226 elseif(ityp.eq.-4)
then 228 elseif(ityp.eq.-5)
then 229 um=elcon(1,j,nmat)+elcon(3,j,nmat)
230 elseif(ityp.eq.-6)
then 231 um=elcon(1,j,nmat)+elcon(3,j,nmat)+elcon(5,j,nmat)
232 elseif((ityp.eq.-7).or.(ityp.eq.-8).or.(ityp.eq.-9))
then 233 um=2.d0*(elcon(1,j,nmat)+elcon(2,j,nmat))
234 elseif((ityp.eq.-10).or.(ityp.eq.-11).or.(ityp.eq.-12))
then 235 um=2.d0*elcon(1,j,nmat)
236 elseif(ityp.eq.-13)
then 238 elseif(ityp.eq.-14)
then 239 um=2.d0*elcon(1,j,nmat)
245 if(dabs(elcon(k,j,nmat)).lt.1.d-10)
then 246 elcon(k,j,nmat)=(0.1d0/um)**i
248 &
'*WARNING reading *HYPERELASTIC: default value was' 249 write(*,*)
' used for compressibility coefficient 251 write(*,100) i,elcon(k,j,nmat)
256 100
format(
' D',i1,
' = ',
e11.4)
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21
static double * e11
Definition: radflowload.c:42