28 logical nodalthickness,composite
32 character*80 matname(*),orname(*),material,orientation
33 character*81 set(*),elset
34 character*132 textpart(16)
36 integer mi(*),istartset(*),iendset(*),ialset(*),ielmat(mi(3),*),
37 & ielorien(mi(3),*),kon(*),ipkon(*),indexe,irstrt,nset,nmat,
38 & norien,nlayer,iset,icomposite,nelcon(2,*),
39 & istep,istat,n,key,i,j,k,l,imaterial,iorientation,ipos,
40 & iline,ipol,inl,ipoinp(2,*),inp(3,*),iaxial,ipoinpc(0:*)
42 real*8 thicke(mi(3),*),
thickness,offset(2,*),offset1
44 if((istep.gt.0).and.(irstrt.ge.0))
then 46 &
'*ERROR reading *SHELL SECTION: *SHELL SECTION should' 47 write(*,*)
' be placed before all step definitions' 51 nodalthickness=.false.
58 if(textpart(i)(1:9).eq.
'MATERIAL=')
then 59 material=textpart(i)(10:89)
60 elseif(textpart(i)(1:12).eq.
'ORIENTATION=')
then 61 orientation=textpart(i)(13:92)
62 elseif(textpart(i)(1:6).eq.
'ELSET=')
then 63 elset=textpart(i)(7:86)
67 elseif(textpart(i)(1:14).eq.
'NODALTHICKNESS')
then 69 elseif(textpart(i)(1:7).eq.
'OFFSET=')
then 70 read(textpart(i)(8:27),
'(f20.0)',iostat=istat) offset1
71 if(istat.gt.0)
call inputerror(inpc,ipoinpc,iline,
73 elseif(textpart(i)(1:9).eq.
'COMPOSITE')
then 77 &
'*WARNING reading *SHELL SECTION: parameter not recognized:' 79 & textpart(i)(1:index(textpart(i),
' ')-1)
87 if(.not.composite)
then 89 if(matname(i).eq.material)
exit 93 &
'*ERROR reading *SHELL SECTION: nonexistent material' 99 elseif(material(1:1).ne.
' ')
then 100 write(*,*)
'*ERROR reading *SHELL SECTION: COMPOSITE and' 101 write(*,*)
' MATERIAL are mutually exclusive parameters' 107 if(orientation(1:1).eq.
' ')
then 109 elseif(nelcon(1,i).eq.2)
then 110 write(*,*)
'*INFO reading *SOLID SECTION: an orientation' 111 write(*,*)
' is for isotropic materials irrelevant' 117 if(orname(i).eq.orientation)
exit 121 &
'*ERROR reading *SHELL SECTION: nonexistent orientation' 132 if(set(i).eq.elset)
exit 136 write(*,*)
'*ERROR reading *SHELL SECTION: element set ',elset
137 write(*,*)
' has not yet been defined. ' 144 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
145 & ipoinp,inp,ipoinpc)
149 if(.not.composite)
then 150 if(.not.nodalthickness)
then 151 read(textpart(1)(1:20),
'(f20.0)',iostat=istat)
thickness 154 &
'*ERROR reading *SHELL SECTION: shell thickness is lacking' 159 do j=istartset(iset),iendset(iset)
160 if(ialset(j).gt.0)
then 161 if(lakon(ialset(j))(1:1).ne.
'S')
then 163 &
'*ERROR reading *SHELL SECTION: *SHELL SECTION can' 165 &
' only be used for shell elements.' 166 write(*,*)
' Element ',ialset(j),
167 &
' is not a shell element.' 170 indexe=ipkon(ialset(j))
174 ielmat(1,ialset(j))=imaterial
175 ielorien(1,ialset(j))=iorientation
176 offset(1,ialset(j))=offset1
181 if(k.ge.ialset(j-1))
exit 182 if(lakon(k)(1:1).ne.
'S')
then 184 &
'*ERROR reading *SHELL SECTION: *SHELL SECTION can' 186 &
' only be used for shell elements.' 187 write(*,*)
' Element ',k,
188 &
' is not a shell element.' 195 ielmat(1,k)=imaterial
196 ielorien(1,k)=iorientation
201 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
202 & ipoinp,inp,ipoinpc)
206 if(nodalthickness)
then 207 write(*,*)
'*ERROR reading shellsections: for composite' 208 write(*,*)
' materials is the parameter NODAL' 209 write(*,*)
' THICKNESS not allowed' 216 read(textpart(1)(1:20),
'(f20.0)',iostat=istat)
thickness 219 &
'*ERROR reading *SHELL SECTION: shell thickness is lacking' 227 read(textpart(3)(1:80),
'(a80)',iostat=istat) material
230 &
'*ERROR reading *SHELL SECTION: no material defined' 238 if(matname(i).eq.material)
exit 242 &
'*ERROR reading *SHELL SECTION: nonexistent material' 253 read(textpart(4)(1:80),
'(a80)',iostat=istat) orientation
258 if(orientation(1:1).ne.
' ')
then 260 if(orname(i).eq.orientation)
exit 264 &
'*ERROR reading *SHELL SECTION: nonexistent orientation' 275 do j=istartset(iset),iendset(iset)
276 if(ialset(j).gt.0)
then 277 if((lakon(ialset(j))(1:3).ne.
'S8R').and.
278 & (lakon(ialset(j))(1:2).ne.
'S6'))
then 280 &
'*ERROR reading *SHELL SECTION: *SHELL SECTION' 282 &
' with the option COMPOSITE can' 284 &
' only be used for S8R or S6 shell elements.' 285 write(*,*)
' Element ',ialset(j),
286 &
' is not a S8R nor a S6 shell element.' 289 indexe=ipkon(ialset(j))
293 ielmat(nlayer,ialset(j))=imaterial
294 ielorien(nlayer,ialset(j))=iorientation
295 offset(1,ialset(j))=offset1
296 if(nlayer.gt.1) lakon(ialset(j))(8:8)=
'C' 301 if(k.ge.ialset(j-1))
exit 302 if((lakon(k)(1:3).ne.
'S8R').and.
303 & (lakon(k)(1:2).ne.
'S6'))
then 305 &
'*ERROR reading *SHELL SECTION: *SHELL SECTION' 307 &
' with the option COMPOSITE can' 309 &
' only be used for S8R or S6 shell elements.' 310 write(*,*)
' Element ',k,
311 &
' is not a S8R nor a S6 shell element.' 318 ielmat(nlayer,k)=imaterial
319 ielorien(nlayer,k)=iorientation
321 if(nlayer.gt.1) lakon(k)(8:8)=
'C' 326 call getnewline(inpc,textpart,istat,n,key,iline,ipol,inl,
327 & ipoinp,inp,ipoinpc)
328 if((istat.lt.0).or.(key.eq.1))
then 329 if(nlayer.gt.1) icomposite=1
subroutine getnewline(inpc, textpart, istat, n, key, iline, ipol, inl, ipoinp, inp, ipoinpc)
Definition: getnewline.f:21
subroutine thickness(dgdx, nobject, nodedesiboun, ndesiboun, objectset, xo, yo, zo, x, y, z, nx, ny, nz, co, ifree, ndesia, ndesib, iobject, ndesi, dgdxglob, nk)
Definition: thickness.f:22