32 character*80 matname(*),orientation,orname(*)
33 character*81 set(*),elset
34 character*132 textpart(16)
36 integer mi(*),nelcon(2,*),nmat,ntmat_,ntmat,npmat_,npmat,istep,
37 & n,key,i,nplicon(0:ntmat_,*),ncmat_,istat,istartset(*),
38 & iendset(*),irstrt,iline,ipol,inl,ipoinp(2,*),inp(3,*),nmat_,
39 & ialset(*),ipos,nset,j,k,ielmat(mi(3),*),ielorien(mi(3),*),
40 & ipoinpc(0:*),idof,iorientation,norien,idof2
42 real*8 plicon(0:2*npmat_,ntmat_,*),temperature,
43 & elcon(0:ncmat_,ntmat_,*)
53 if((istep.gt.0).and.(irstrt.ge.0))
then 54 write(*,*)
'*ERROR reading *SPRING: *SPRING should be placed' 55 write(*,*)
' before all step definitions' 60 if(nmat.gt.nmat_)
then 61 write(*,*)
'*ERROR reading *SPRING: increase nmat_' 64 matname(nmat)(1:6)=
'SPRING' 66 matname(nmat)(i:i)=
' ' 70 if(textpart(i)(1:9).eq.
'NONLINEAR')
then 72 elseif(textpart(i)(1:12).eq.
'ORIENTATION=')
then 73 orientation=textpart(i)(13:92)
74 elseif(textpart(i)(1:6).eq.
'ELSET=')
then 75 elset=textpart(i)(7:86)
81 &
'*WARNING reading *SPRING: parameter not recognized:' 83 & textpart(i)(1:index(textpart(i),
' ')-1)
89 if(orientation.eq.
' ')
then 93 if(orname(i).eq.orientation)
exit 97 &
'*ERROR reading *SPRING: nonexistent orientation' 112 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
113 & ipoinp,inp,ipoinpc)
114 if((istat.lt.0).or.(key.eq.1))
exit 125 if(textpart(1)(i:i).eq.
'.')
then 131 read(textpart(2)(1:10),
'(i10)',iostat=istat) idof2
132 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
136 write(*,*)
'*ERROR reading *SPRING: one degree' 137 write(*,*)
' of freedom was specified' 138 write(*,*)
' (no decimal point in entry),' 139 write(*,*)
' however, there are no' 140 write(*,*)
' SPRING1 elements' 141 write(*,*)
' in the input deck' 145 read(textpart(1)(1:20),
'(f20.0)',iostat=istat)
149 write(*,*)
'*ERROR reading *SPRING: two degrees' 150 write(*,*)
' of freedom were specified' 151 write(*,*)
' (no decimal point in entry),' 152 write(*,*)
' however, there are no' 153 write(*,*)
' SPRING2 elements' 154 write(*,*)
' in the input deck' 158 read(textpart(1)(1:20),
'(f20.0)',iostat=istat)
160 read(textpart(2)(1:20),
'(f20.0)',iostat=istat)
169 if(ntmat.gt.ntmat_)
then 170 write(*,*)
'*ERROR reading *SPRING: increase ntmat_' 174 read(textpart(i)(1:20),
'(f20.0)',iostat=istat)
175 & elcon(i,ntmat,nmat)
176 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
179 if(textpart(3)(1:1).ne.
' ')
then 180 read(textpart(3)(1:20),
'(f20.0)',iostat=istat)
181 & elcon(0,ntmat,nmat)
182 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
185 elcon(0,ntmat,nmat)=0.d0
194 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
195 & ipoinp,inp,ipoinpc)
196 if((istat.lt.0).or.(key.eq.1))
exit 207 if(textpart(1)(i:i).eq.
'.')
then 214 write(*,*)
'*ERROR reading *SPRING: a degree' 215 write(*,*)
' of freedom was specified' 216 write(*,*)
' (no decimal point in entry),' 217 write(*,*)
' however, there are neither' 218 write(*,*)
' SPRING1 nor SPRING2 elements' 219 write(*,*)
' in the input deck' 223 read(textpart(1)(1:20),
'(f20.0)',iostat=istat)
225 read(textpart(2)(1:20),
'(f20.0)',iostat=istat)
231 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) temperature
232 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
240 if(ntmat.gt.ntmat_)
then 241 write(*,*)
'*ERROR reading *SPRING: increase ntmat_' 244 nplicon(0,nmat)=ntmat
245 plicon(0,ntmat,nmat)=temperature
249 elseif(plicon(0,ntmat,nmat).ne.temperature)
then 252 if(ntmat.gt.ntmat_)
then 253 write(*,*)
'*ERROR reading *SPRING: increase ntmat_' 256 nplicon(0,nmat)=ntmat
257 plicon(0,ntmat,nmat)=temperature
260 read(textpart(i)(1:20),
'(f20.0)',iostat=istat)
261 & plicon(2*npmat+i,ntmat,nmat)
262 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
266 if(npmat.gt.npmat_)
then 267 write(*,*)
'*ERROR reading *SPRING: increase npmat_' 270 nplicon(ntmat,nmat)=npmat
275 write(*,*)
'*ERROR reading *SPRING: *SPRING card without data' 279 if(set(i).eq.elset)
exit 283 write(*,*)
'*ERROR reading *SPRING: element set ',elset
284 write(*,*)
' has not yet been defined. ' 292 do j=istartset(i),iendset(i)
293 if(ialset(j).gt.0)
then 294 ielmat(1,ialset(j))=nmat
295 ielorien(1,ialset(j))=iorientation
300 if(k.ge.ialset(j-1))
exit 302 ielorien(1,k)=iorientation
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21