32 character*80 matname(*),orname(*),material,orientation
33 character*81 set(*),elset
34 character*132 textpart(16)
36 integer istartset(*),iendset(*),ialset(*),mi(*),ielmat(mi(3),*),
38 & ielorien(mi(3),*),ipkon(*),iline,ipol,inl,ipoinp(2,*),
39 & inp(3,*),nset,nmat,norien,istep,istat,n,key,i,j,k,l,imaterial,
40 & iorientation,ipos,m,iponor(2,*),ixfree,
41 & indexx,indexe,irstrt,nelcon(2,*)
43 real*8 thicke(mi(3),*),thickness1,thickness2,p(3),xnor(*),
47 if((istep.gt.0).and.(irstrt.ge.0))
then 49 &
'*ERROR reading *BEAM SECTION: *BEAM SECTION should' 50 write(*,*)
' be placed before all step definitions' 62 if(textpart(i)(1:9).eq.
'MATERIAL=')
then 63 material=textpart(i)(10:89)
64 elseif(textpart(i)(1:12).eq.
'ORIENTATION=')
then 65 orientation=textpart(i)(13:92)
66 elseif(textpart(i)(1:6).eq.
'ELSET=')
then 67 elset=textpart(i)(7:86)
71 elseif(textpart(i)(1:8).eq.
'SECTION=')
then 72 if(textpart(i)(9:12).eq.
'CIRC')
then 74 elseif(textpart(i)(9:12).eq.
'RECT')
then 78 &
'*ERROR reading *BEAM SECTION: unknown section' 81 elseif(textpart(i)(1:8).eq.
'OFFSET1=')
then 82 read(textpart(i)(9:28),
'(f20.0)',iostat=istat) offset1
83 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
85 elseif(textpart(i)(1:8).eq.
'OFFSET2=')
then 86 read(textpart(i)(9:28),
'(f20.0)',iostat=istat) offset2
87 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
91 &
'*WARNING reading *BEAM SECTION: parameter not recognized:' 93 & textpart(i)(1:index(textpart(i),
' ')-1)
101 if(section.eq.
' ')
then 102 write(*,*)
'*ERROR reading *BEAM SECTION: no section defined' 109 if(matname(i).eq.material)
exit 112 write(*,*)
'*ERROR reading *BEAM SECTION: nonexistent material' 123 elseif(nelcon(1,i).eq.2)
then 124 write(*,*)
'*INFO reading *SOLID SECTION: an orientation' 125 write(*,*)
' is for isotropic materials irrelevant' 131 if(orname(i).eq.orientation)
exit 135 &
'*ERROR reading *BEAM SECTION: nonexistent orientation' 145 if(set(i).eq.elset)
exit 149 write(*,*)
'*ERROR reading *BEAM SECTION: element set ',
151 write(*,*)
' has not yet been defined. ' 160 do j=istartset(i),iendset(i)
161 if(ialset(j).gt.0)
then 162 if(lakon(ialset(j))(1:1).ne.
'B')
then 164 &
'*ERROR reading *BEAM SECTION: *BEAM SECTION can' 165 write(*,*)
' only be used for beam elements.' 166 write(*,*)
' Element ',ialset(j),
' is not a beam el 170 ielmat(1,ialset(j))=imaterial
171 ielorien(1,ialset(j))=iorientation
172 offset(1,ialset(j))=offset1
173 offset(2,ialset(j))=offset2
174 if(section.eq.
'RECT')
then 175 lakon(ialset(j))(8:8)=
'R' 177 lakon(ialset(j))(8:8)=
'C' 183 if(k.ge.ialset(j-1))
exit 184 if(lakon(k)(1:1).ne.
'B')
then 186 &
'*ERROR reading *BEAM SECTION: *BEAM SECTION can' 187 write(*,*)
' only be used for beam elements.' 188 write(*,*)
' Element ',k,
' is not a beam element 192 ielmat(1,k)=imaterial
193 ielorien(1,k)=iorientation
196 if(section.eq.
'RECT')
then 205 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
206 & ipoinp,inp,ipoinpc)
210 read(textpart(1)(1:20),
'(f20.0)',iostat=istat) thickness1
213 &
'*ERROR reading *BEAM SECTION: first beam thickness is lacking' 218 read(textpart(2)(1:20),
'(f20.0)',iostat=istat) thickness2
221 &
'*ERROR reading *BEAM SECTION: ',
222 &
'second beam thickness is lacking' 227 thickness2=thickness1
229 do j=istartset(i),iendset(i)
230 if(ialset(j).gt.0)
then 231 indexe=ipkon(ialset(j))
233 thicke(1,indexe+l)=thickness1
234 thicke(2,indexe+l)=thickness2
240 if(k.ge.ialset(j-1))
exit 243 thicke(1,indexe+l)=thickness1
244 thicke(2,indexe+l)=thickness2
250 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
251 & ipoinp,inp,ipoinpc)
252 if((istat.lt.0).or.(key.eq.1))
return 257 read(textpart(1)(1:20),
'(f20.0)',iostat=istat) p(1)
258 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
260 read(textpart(2)(1:20),
'(f20.0)',iostat=istat) p(2)
261 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
263 read(textpart(3)(1:20),
'(f20.0)',iostat=istat) p(3)
264 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
266 dd=dsqrt(p(1)*p(1)+p(2)*p(2)+p(3)*p(3))
267 if(dd.lt.1.d-10)
then 269 &
'*ERROR reading *BEAM SECTION: normal in direction 1' 270 write(*,*)
' has zero size' 276 do j=istartset(i),iendset(i)
277 if(ialset(j).gt.0)
then 278 indexe=ipkon(ialset(j))
280 if(indexx.eq.-1)
then 287 iponor(1,indexe+l)=indexx
293 if(k.ge.ialset(j-1))
exit 296 if(indexx.eq.-1)
then 303 iponor(1,indexe+l)=indexx
309 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
310 & ipoinp,inp,ipoinpc)
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21