30 character*132 textpart(16)
32 integer nelcon(2,*),nmat,ntmat,ntmat_,istep,istat,ipoinpc(0:*),
33 & n,key,i,ityp,ncmat_,irstrt,iline,ipol,inl,ipoinp(2,*),inp(3,*)
35 real*8 elcon(0:ncmat_,ntmat_,*),e1,e2,e3,un12,un21,un13,un31,
40 if((istep.gt.0).and.(irstrt.ge.0))
then 41 write(*,*)
'*ERROR reading *ELASTIC: *ELASTIC should be placed' 42 write(*,*)
' before all step definitions' 48 &
'*ERROR reading *ELASTIC: *ELASTIC should be preceded' 49 write(*,*)
' by a *MATERIAL card' 56 if(textpart(i)(1:5).eq.
'TYPE=')
then 57 if(textpart(i)(6:8).eq.
'ISO')
then 59 elseif(textpart(i)(6:10).eq.
'ORTHO')
then 62 elseif(textpart(i)(6:25).eq.
'ENGINEERINGCONSTANTS')
then 65 elseif(textpart(i)(6:10).eq.
'ANISO')
then 71 &
'*WARNING reading *ELASTIC: parameter not recognized:' 73 & textpart(i)(1:index(textpart(i),
' ')-1)
83 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
85 if((istat.lt.0).or.(key.eq.1))
return 88 if(ntmat.gt.ntmat_)
then 89 write(*,*)
'*ERROR reading *ELASTIC: increase ntmat_' 93 write(*,*)
'*ERROR reading *ELASTIC: not enough' 94 write(*,*)
' constants on the input line' 99 read(textpart(i)(1:20),
'(f20.0)',iostat=istat)
100 & elcon(i,ntmat,nmat)
101 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
104 if(textpart(3)(1:1).ne.
' ')
then 105 read(textpart(3)(1:20),
'(f20.0)',iostat=istat)
106 & elcon(0,ntmat,nmat)
107 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
110 elcon(0,ntmat,nmat)=0.d0
113 elseif(ityp.eq.9)
then 115 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
116 & ipoinp,inp,ipoinpc)
117 if((istat.lt.0).or.(key.eq.1))
return 120 if(ntmat.gt.ntmat_)
then 121 write(*,*)
'*ERROR reading *ELASTIC: increase ntmat_' 125 write(*,*)
'*ERROR reading *ELASTIC: not enough' 126 write(*,*)
' constants on the input line' 131 read(textpart(i)(1:20),
'(f20.0)',iostat=istat)
132 & elcon(i,ntmat,nmat)
133 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
137 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
138 & ipoinp,inp,ipoinpc)
139 if((istat.lt.0).or.(key.eq.1))
then 141 &
'*ERROR reading *ELASTIC: orthotropic definition' 142 write(*,*)
' is not complete. ' 148 read(textpart(i)(1:20),
'(f20.0)',iostat=istat)
149 & elcon(8+i,ntmat,nmat)
150 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
153 if(textpart(2)(1:1).ne.
' ')
then 154 read(textpart(2)(1:20),
'(f20.0)',iostat=istat)
155 & elcon(0,ntmat,nmat)
156 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
159 elcon(0,ntmat,nmat)=0.d0
162 e1=elcon(1,ntmat,nmat)
163 e2=elcon(2,ntmat,nmat)
164 e3=elcon(3,ntmat,nmat)
165 un12=elcon(4,ntmat,nmat)
166 un13=elcon(5,ntmat,nmat)
167 un23=elcon(6,ntmat,nmat)
171 gam=1.d0/(1.d0-un12*un21-un23*un32-un31*un13
172 & -2.d0*un21*un32*un13)
173 elcon(1,ntmat,nmat)=e1*(1.d0-un23*un32)*gam
174 elcon(2,ntmat,nmat)=e1*(un21+un31*un23)*gam
175 elcon(3,ntmat,nmat)=e2*(1.d0-un13*un31)*gam
176 elcon(4,ntmat,nmat)=e1*(un31+un21*un32)*gam
177 elcon(5,ntmat,nmat)=e2*(un32+un12*un31)*gam
178 elcon(6,ntmat,nmat)=e3*(1.d0-un12*un21)*gam
181 elseif(ityp.eq.21)
then 183 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
184 & ipoinp,inp,ipoinpc)
185 if((istat.lt.0).or.(key.eq.1))
return 188 if(ntmat.gt.ntmat_)
then 189 write(*,*)
'*ERROR reading *ELASTIC: increase ntmat_' 193 write(*,*)
'*ERROR reading *ELASTIC: not enough' 194 write(*,*)
' constants on the input line' 199 read(textpart(i)(1:20),
'(f20.0)',iostat=istat)
200 & elcon(i,ntmat,nmat)
201 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
205 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
206 & ipoinp,inp,ipoinpc)
207 if((istat.lt.0).or.(key.eq.1))
then 209 &
'*ERROR reading *ELASTIC: anisotropic definition' 210 write(*,*)
' is not complete. ' 216 write(*,*)
'*ERROR reading *ELASTIC: not enough' 217 write(*,*)
' constants on the input line' 222 read(textpart(i)(1:20),
'(f20.0)',iostat=istat)
223 & elcon(8+i,ntmat,nmat)
224 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
228 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
229 & ipoinp,inp,ipoinpc)
230 if((istat.lt.0).or.(key.eq.1))
then 232 &
'*ERROR reading *ELASTIC: anisotropic definition' 233 write(*,*)
' is not complete. ' 239 write(*,*)
'*ERROR reading *ELASTIC: not enough' 240 write(*,*)
' constants on the input line' 245 read(textpart(i)(1:20),
'(f20.0)',iostat=istat)
246 & elcon(16+i,ntmat,nmat)
247 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
250 if(textpart(6)(1:1).ne.
' ')
then 251 read(textpart(6)(1:20),
'(f20.0)',iostat=istat)
252 & elcon(0,ntmat,nmat)
253 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
256 elcon(0,ntmat,nmat)=0.d0
261 if(ntmat.eq.0) nelcon(1,nmat)=0
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21