• No se han encontrado resultados

PRIMER CURSO

In document Boletín Oficial de Castilla y León (página 87-92)

Procedures for carrying out checks on the results of an analysis, of necessity involve algebra and logic and symbolic names, colloquially variables. The following are those used.

Segment coordinates at start & end xcs ycs xce yce displacements at start & end xds yds zrs xde yde zre forces at start & end fxs fys mzs fxe fye mze nodes at start & end nst nen

Original & final length, dirn. cosines lo lf cx cy

Start/end displ. in global x, y & z: xds' yds' zrs' xde' yde' zre' Start/end displ. in local x, y & z dirn: xds yds zrs xde yde zre Elastic, shearing moduli, member props e g ax ay iz Member springs stiffness at start & end ks ke

The various checks, numbered 1 to 8 follow:

Equilibrium check: net moment nl1 balancing moment ch1 Flexure: change in slope nl2 balancing slope ch2 change in displacement nl3 balancing displacement ch3 Axial: net length nl4 should equal ch4 Energy audit: strain energy nl5 external work done ch5 ΣX=0 ΣX reactions nl6 Σapplied loads in X dirn. ch6 ΣY=0 ΣY reactions nl7 Σapplied loads in Y dirn. ch7 ΣM=0 ΣM about origin nl8 ΣM from applied loads ch8 For the last three checks, as Σreactions and Σapplied loads have opposite signs, the negative of ch6, ch7 & ch8 are taken when computing the percentage differences.

Although in the following discussion, values are assigned directly to nl(1:8) & ch(1:8) for a single member or segment, to keep the summary of percentage differences short, the values for each effect are accumulated by e.g. nl1=nl1+... ch1=ch1+... nl2=nl2+...

ch2=ch2+... and so on, thus avoiding thousands of pages of summary when the engineer has chosen 100 segments per member for a structure that has say 10,000 members, resulting in 8,000,000 lines cf. 8 lines when each effect is accumulated.

Let us consider a plane frame member number mn, having nsg segments, with start node number j, and end node number k, with its own local axes, subjected to a uniformly distributed load wx along the member i.e. in the direction of local x, and a uniformly distributed load wy normal to the member, i.e. in the direction of local y. We need to consider wx, as uniformly distributed loads applied to inclined members are frequently applied in the global Y direction thus generating components in both local x and local y directions.

local y

│ ┌wy load/unit length │▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲

j►►►►►►►►►►►►►►►►►►k ───local x └wx load/unit length

To check the results of the structural analysis for the member against the particular solution for the member, we need to extract: coordinates, member forces and displacement at ends j & k from the results. After the command SOLVE has been processed, all the results of the analysis are available in arrays. A formal description of the arrays' file is given in table B.1 in appendix B.

For member number mn, the start & end nodes, nst & nen, are found from:

nst=ARR(1,mn,1) nen=ARR(1,nm,2).

Having found the node numbers, the start & end coordinates are found from:

xcs=ARR(8,nst,3) ycs=ARR(8,nst,4) xce=ARR(8,nen,3) yce=ARR(8,nen,4)

The member properties for a plane frame are:

ax=ARR(11,mn,1) ay=ARR(11,mn,2) iz=ARR(11,mn,6).

ARR(8,1,n) holds the joint number for node n, and ARR(8,2,j) holds the node number for joint j; we need these as the original joint numbers, i.e. the joint numbers used in the data and results, are mapped internally to a set of node numbers to minimise the bandwidth of the stiffness matrix. Array 6 holds the joint displacements in npd rows, where npd is the product of number of joints and number of degrees of freedom per joint, 3 for a plane frame. The row number in Array 6 for displacement in the global X direction, for node number nst, is rn=3*(nst-1)+1, the next row being for the Y direction, the next again being for: about Z. Thus the displacements at the start & end of member number mn in the global directions (denoted by ') for loading nli are:

rn=3*(nst-1)+1 xds'=ARR(6,rn,nli) rn=rn+1 yds'=ARR(6,rn,nli) rn=rn+1 zrs'=ARR(6,rn,nli) rn=3*(nen-1)+1 xde'=ARR(6,rn,nli) rn=rn+1 yde'=ARR(6,rn,nli) rn=rn+1 zre'=ARR(6,rn,nli).

Finally we need the forces at the member ends, these are held in Array 13, which has nls*nm rows, where nls is the product of the total number of loadings and the number of increments per loading. Thus the forces at start & end of member number mn of nm members, for loading increment nli (fxs fys mzs fxe fye mze) are given by:

nr=(nli-1)*nm+mn fxs=ARR(13,nr,1) fys=ARR(13,nr,2) mzs=ARR(13,nr,3) fxe=ARR(13,nr,4) fye=ARR(13,nr,5) mze=ARR(13,nr,6)

which completes the basic values needed to do an equilibrium & compatibility check and energy audit on member number mn.

Having found the member forces & displacements at the ends of each segment, equilibrium, compatibility & energy checks may be carried out. The names of variables given above are used in the following checks, the * as generally used in computer programs denotes multiplication. Firstly some necessary algebra; the original member length:

lo=SQR((xce-xcs)^2+(yce-ycs)^2); and final length:

lf=SQR((xce+xde'-xcs-xds')^2+(yce+yde'-ycs-yds')^2).

Direction cosines for the member:

cx=(xce+xde'-xcs-xds')/lf cy=(yce+yde'-ycs-yds')/lf

End displacements in local axes:

xds=cx*xds'+cy*yds' xde=cx*xde'+cy*yde' yds=-cy*xds'+cx*yds' yde=-cy*xde'+cx*yde'.

Equilibrium check

Essentially this check is making sure that bending moments about the start end of each member balance.

Net moment nl1=mzs+mze

Balancing moment ch1=fye*lf+wy(mn)*lo*lf/2

i.e. the balancing moment is the end shear times the final length plus the bending moment from the total udl i.e. wy(mn)*lo times half the final member length.

Flexure checks

To take into account shear strain energy, a shear deformation coefficient s is defined as follows: for zero shear area s=1, else shear deformation coefficient

s=1/(1+12*e*iz/(lf^2*g*ay)).

The derivation of s and the stiffness matrices for 2D & 3D structures are given in the NL-STRESS reference manual. For plane frames, from the stiffness matrix, where mz

& rz denote moment & rotation respectively about the z axis; suffixes s & e denote the start & end of a segment, and lo denotes the segment original length:

e*iz ┌ ┐ mzs = ──── │ 6*yds*s/lo+zrs*(1+3*s)-6*yde*s/lo+zre*(3*s-1) │ lo └ ┘ e*iz ┌ ┐ mze = ──── │ 6*yds*s/lo+zrs*(3*s-1)-6*yde*s/lo+zre*(1+3*s) │ lo └ ┘ e*iz ┌ ┐

Subtracting, mzs-mze = ──── │ 2*zrs-2*zre │ lo └ ┘

thus change in slope (zrs-zre)=(mzs-mze)*lo/(2*e*iz).

As expected, shear deformation has no influence on the change in slope, however the change in slope is influenced by any loading within the member. Although simply supported & continuous beams are subjected to partial uniform, triangular &

trapezoidal loads, general plane frame structures usually involve only distributed load components normal-to, and along the members. Obviously a udl along a member wx(mn) will not affect the change in slope between the ends of the member, the change in slope due to a udl wy(mn) normal to a member is wy(mn)*lo*lf^2/(12*e*iz) therefore:

change in slope nl2=zrs-zre

should equal ch2=lf*(mzs-mze)/(2*e*iz)+wy(mn)*lo*lf^2/(12*e*iz).

From the stiffness matrix, where mz & zr denote moment & rotation respectively about the z axis; suffixes s & e denote the start & end of a segment, and lf denotes segment final length.

e*iz ┌ ┐ mzs = ──── │ zrs*(1+3*s)+zre*(3*s-1)+6*s/lf*(yds-yde) │ lf └ ┘

e*iz ┌ ┐ mze = ──── │ zrs*(3*s-1)+zre*(1+3*s)+6*s/lf*(yds-yde) │ lf └ ┘ e*iz ┌ ┐ Adding, mzs+mze = ──── │ 6*s*(zrs+zre)+12*s*(yds-yde)/lf │ lf └ ┘ Rearranging: lf*(mzs+mze)/(e*iz)-6*s*(zrs+zre) =12*s*(yds-yde)/lf therefore yds-yde =lf^2*(mzs+mze)/(12*e*iz*s)-lf*(zrs+zre)/2, change in slope (zrs-zre)=(mzs-mze)*lf/(2*e*iz), therefore

change in displacement nl3=yds-yde

should equal ch3=lf^2*(mzs+mze)/(12*e*iz*s)-lf*(zrs+zre)/2.

Net length check nl4=lf

should equal ch4=lo+(fxe-fxs)/2*lf/(ax*e).

Strain energy check

For a straight bar of length L, of axial stiffness Ax.E, subjected to a compressive axial load P, the change in length is given by Hooke as δ=PL/(Ax.E) ...(a).

Axially loaded linear elastic materials behave as a spring, thus as the load is applied, the axial force increases from zero to P, thus the work done =(0+P).δ/2. By the principle of conservation of energy, the external work done on the bar must be stored within the bar as strain energy. Let the strain energy due to axial load be denoted Ua, then we can write Ua=P.δ/2. Substituting for δ in (a), then Ua=P²L/(2.Ax.E).

For a plane frame, the bending, shear and axial strain energy, must be considered in an energy audit. When the length of the bar is made sufficiently short (in the limit), we can write:

L L L ⌠ M².dl ⌠ F².dl ⌠ P².dl Bending, Ub= │ ────── Shear, Us= │ ────── Axial, Ua= │ ──────

⌡ 2.E.Iz ⌡ 2.Ay.G ⌡ 2.Ax.E 0 0 0

As the bending moment, shear force & axial load usually vary along a member, it is necessary to have values for all three strain energy components at various positions along each member. Although it is clear that bending moments & shear forces vary along members, axial loads also vary along members due to axial loading along members e.g. for two rafters meeting at a ridge subjected to distributed gravity loading on plan applied to the members, the axial compressive load in each rafter is a minimum at the ridge, increasing to a maximum at the eaves.

To obtain bending moments, shear forces & axial loads, at various positions along a member, NL-STRESS provides a command: NUMBER OF SEGMENTS <n>, where n may be any integer number in the range 1 to 100, at which forces & displacements at the ends of each segment of a member are evaluated. To save paper, all the additional

engineer can output displacements and forces at the intermediate joints by adding the keyword TRACE to the end of the NUMBER OF SEGMENTS command.

The higher the number of segments, the better the strain energy audit, for the computation of external work done by the distributed loads assumes that half the load, from each segment on either side of each internal joint, is lumped to the joint position between adjacent segments; start and end joints receiving only one half of the segment load. When members are segmented, NL-STRESS automatically renumbers the members, thus if nsg=4, then external member number 1 becomes internal members 1 to 4 in order, external member number 2 becomes internal members 5 to 8, and so on.

Henceforth mn refers to the internal member number.

Work done vs. strain energy

Work done ch5=ch5+fx*(xds'+xde')/2+fy*(yds'+yde')/2 fa=(fxs-fxe)/2 fy=(fys-fye)/2 mz=(mzs-mze)/2

St. energy nl5=nl5+fa^2*lf/(2*e*ax)+fy^2*lf/(2*g*ay)+mz^2*lf/(2*e*iz) Finally, overall equilibrium checks. For a plane frame, checking ΣX=0 ΣY=0 ΣMZ=0, are required, these are available as:

ΣX for the applied forces =ARR(12,4,10) ΣY for the applied forces =ARR(12,4,11) ΣM for the applied forces about the origin =ARR(12,4,12) ΣX reaction computed by NL-STRESS =ARR(12,4,13) ΣY reaction computed by NL-STRESS =ARR(12,4,14) ΣM for the reactions about the origin =ARR(12,4,15).

One hundred and eight structural models have been developed and verified for correctness. For each model, a thousand sets of data were generated using the system developed as part of this research; the results of running the data using the matrix stiffness method were compared with the results obtained by analysis using either a classical method or compatibility, equilibrium and energy checks discussed above.

The procedure for the above theory now follows; this procedure is contained in the file vmecp.ndf which is called from plane frame models which require it. The following should be read in conjunction with the forgoing explanation.

! va() udl along local x direction, vb() when times fac.

! vc() udl in local y dirn, vd() when times fac. ;meth=ARR(12,4,9)

! Check case 1 ;nli=ARR(12,4,1) lli=ARR(12,4,2) nsg=ARR(12,4,4) nmo=ARR(12,4,6) njo=ARR(12,4,7) fac=1 ;! Prorata lds. ;IF lli<nli fac=lli/nli ch9=0 ;ENDIF ;! Equil, com. & energy. ;mn=0

nm=nmo*nsg ;:698 ;mn=mn+1 k=INT((mn-1)/nsg)+1 vb(mn)=fac*va(k) vd(mn)=fac*vc(k) ;IF mn<nm GOTO 698 ! Incr. seg. loads with conc.

IF status=1E-36 GOTO 697 ;nc=0 ;:697 ;IF nc<1 GOTO 700 ;i=0 ;:699 i=i+1 sno=nc(i) mn=INT(nsg*cs(i)/s(sno)+0.5) ;IF mn<1 THEN mn=1 IF mn>nsg THEN mn=nsg ;mn=mn+nsg*(sno-1) ;vb'=fac*ct(i)*nsg/s(sno) vb(mn)=vb(mn)+vb' vd'=fac*cn(i)*nsg/s(sno)

vd(mn)=vd(mn)+vd' ;IF i<nc GOTO 699 ;:700 ;jn=0 ;:701 ;jn=jn+1 hjl(jn)=fac*hjl(jn) vjl(jn)=fac*vjl(jn) ;IF jn<njo GOTO 701

nl(1)=VEC(0)*8 ch(1)=VEC(0)*8 mn=0 ;:702 ;mn=mn+1 ;! End node Nos.

nst=ARR(1,mn,1) nen=ARR(1,mn,2) ;! Coordinates ;xcs=ARR(8,nst,3) ycs=ARR(8,nst,4) xce=ARR(8,nen,3) yce=ARR(8,nen,4) ;! Sectn props.

ax=ARR(11,mn,1) ay=ARR(11,mn,2) iz=ARR(11,mn,6) e=ARR(11,mn,11) g=ARR(11,mn,12) ;! Displ in global axes ;rn=3*(nst-1)+1

xds'=ARR(6,rn,lli) rn=rn+1 yds'=ARR(6,rn,lli) rn=rn+1

zrs'=ARR(6,rn,lli) rn=3*(nen-1)+1 xde'=ARR(6,rn,lli) rn=rn+1 yde'=ARR(6,rn,lli) rn=rn+1 zre'=ARR(6,rn,lli)

! The original member length ;lo=SQR((xce-xcs)^2+(yce-ycs)^2)

! Fin length ;lf=SQR((xce+xde'-xcs-xds')^2+(yce+yde'-ycs-yds')^2)

! Memb forces ;rn=(lli-1)*nm+mn xfs=ARR(13,rn,1) yfs=ARR(13,rn,2) zms=ARR(13,rn,3) xfe=ARR(13,rn,4) yfe=ARR(13,rn,5)

! Shear def. coeff. ;s=1 ;IF ay>0 THEN s=1/(1+12*e*iz/(lf^2*g*ay))

! Dir cosines ;cx=(xce+xde'-xcs-xds')/lf cy=(yce+yde'-ycs-yds')/lf

! Equilibrium check; Net mmt ;nl1=nl1+ABS(zms+zme) ch1=ch1+ABS(yfe*lf+vd(mn)*lo*lf/2) ;IF iz=0 GOTO 703

! Change in slope ;nl2=nl2+zrs-zre

ch2=ch2+lf*(zms-zme)/(2*e*iz)+vd(mn)*lo*lf^2/(12*e*iz)

! Change in displacement ;nl3=nl3+ABS(yds-yde)

ch3=ch3+ABS(lf^2*(zms+zme)/(12*e*iz*s)-lf/2*(zrs+zre)) ;:703

nl4=nl4+lf ch4=ch4+lo+(xfe-xfs)/2*lf/(ax*e) ;! Work vs. strain en.

fx=cx*vb(mn)*lo/2-cy*vd(mn)*lo/2 fy=cy*vb(mn)*lo/2+cx*vd(mn)*lo/2 ch5=ch5+fx*(xds'+xde')/2+fy*(yds'+yde')/2 fa=(xfs-xfe)/2 fyse=0 fy=(yfs-yfe)/2 mz=(zms-zme)/2 ;IF ay>0 THEN fyse=fy^2*lf/(2*g*ay) nl5'=0 ;IF iz>0 THEN nl5'=mz^2*lf/(2*e*iz)

nl5=nl5+fa^2*lf/(2*e*ax)+fyse+nl5'+nlp5 IF meth<>3 AND ks>0 THEN nl5=nl5+zms^2/ks/2 IF meth<>3 AND ke>0 THEN nl5=nl5+zme^2/ke/2

IF mn<nm GOTO 702 ;! Jnt w.d. ;jn=0 ;:705 ;jn=jn+1

nn=ARR(8,jn,2) rn=3*(nn-1)+1 xd=ARR(6,rn,lli) xsp=ARR(7,rn,1) rn=rn+1 yd=ARR(6,rn,lli) ysp=ARR(7,rn,1) rn=rn+1 zr=ARR(6,rn,lli) zsp=ARR(7,rn,1) ch5=ch5+hjl(jn)*xd/2+vjl(jn)*yd/2

! Jt spring energy ;IF xsp>0 THEN nl5=nl5+xsp*xd^2/2

IF ysp>0 THEN nl5=nl5+ysp*yd^2/2 ;IF zsp>0 THEN nl5=nl5+zsp*zr^2/2 IF jn<njo GOTO 705

! Eq. overall ;nl6=ARR(12,4,16) nl7=ARR(12,4,17) nl8=ARR(12,4,18) ch6=ARR(12,4,10) ch7=ARR(12,4,11) ch8=ARR(12,4,12) ;*/11

* Description of check for NL-STRESS Check %age

* totals for all members result value diff.

status=1 gtot=0 nur=0 d1=nl1 d2=ch1 iret=720

:710 ;z=0 ! Compute %age dif. 'tween d1 & d2 & write text message.

IF ABS(d1)<1E-8 AND ABS(d2)<1E-8 OR d1=d2 THEN z=1 d1=0 d2=0 IF ABS(d1-d2)<1E-4 THEN z=1 d1=0 d2=0

IF d1=0 AND d2<>0 OR d2=0 AND d1<>0 THEN z=2 ;IF z=0 THEN z=d1/d2 IF z<0 OR z>2 THEN z=2 ;IF z<1 THEN z=1/z ;IF z>2 THEN z=2

nur=nur+1 per=INT(ABS(100-100*z)+.5) d1=INT(per/10) d2=per-d1*10 IF d1=0 THEN d1=-1 ;IF per<100 THEN ok=(d1+1)*39+d2+1

IF per>99 THEN ok=$(NOT OK) ;IF per<1 THEN ok=0 ;gtot=gtot+per GOTO iret ;:720

* Equilibrium - net moment +nl1 +ch1 $ok d1=nl2 d2=ch2 ;iret=730 ;GOTO 710 ;:730

* Flexure change in slope +nl2 +ch2 $ok d1=nl3 d2=ch3 ;iret=740 ;GOTO 710 ;:740

* Change in displacement +nl3 +ch3 $ok d1=nl4 d2=ch4 ;iret=750 ;GOTO 710 ;:750

* Net length +nl4 +ch4 $ok d1=nl5 d2=ch5 ;iret=760 ;GOTO 710 ;:760

* Strain energy vs external work +nl5 +ch5 $ok d1=nl6 d2=-ch6 ;iret=770 ;GOTO 710 ;:770

* d React. X vs applied forces +nl6 +-ch6 $ok d1=nl7 d2=-ch7 ;iret=780 ;GOTO 710 ;:780

* d React. Y vs applied forces +nl7 +-ch7 $ok d1=nl8 d2=-ch8 ;iret=790 ;GOTO 710 ;:790

* d React. Z vs applied moments +nl8 +-ch8 $ok IF ch9=0 GOTO 810 ;nla=2*lli nlb=3*lli nl9=0 ch9=0 jn=0 ;:811 jn=jn+1 nn=ARR(8,jn,2) nr=(nn-1)*3+1 dela1=ARR(6,nr,nla) delb1=ARR(6,nr,nlb) nr=nr+1 dela2=ARR(6,nr,nla)

delb2=ARR(6,nr,nlb) nr=nr+1 dela3=ARR(6,nr,nla)

delb3=ARR(6,nr,nlb) jn'=njo+1-jn nl9=nl9+jn*(delb1+delb2+delb3) ch9=ch9+jn'*(dela1+dela2+dela3) IF jn<njo GOTO 811

d1=nl9 d2=ch9 ;iret=800 ;GOTO 710 ;:800

* Clerk Maxwell, Betti, Southwell +nl9 +ch9 $ok :810 ;IF ch10=0 GOTO 850 ;d1=nl10 d2=ch10 iret=820 ;GOTO 710 ;:820 :850

In document Boletín Oficial de Castilla y León (página 87-92)