**The Effective Flexural Modulus of Filament Wound GRP Tapered Poles**December 2020, Technical Gazette 27(6):1894-1903

DOI: 10.17559/TV-20191108160438

https://hrcak.srce.hr/file/361327

Skender, Ana; Domitran, Zoran; Krokar, Jakov

University of Zagreb

Faculty of Civil Engineering

Faculty of Mechanical Engineering and Naval Architecture

Abstract: The composite lighting poles are filament wound GRP tapered tubes with a variable wall thickness across the length. In this study, the effective flexural properties of GRP poles have been determined, experimentally and theoretically. Cantilever bending tests were performed on full-scale GRP tubes and the effective flexural modulus was calculated from the initial slope of the flexural stress-strain curve based on the classical beam theory. The results show that the strain range corresponding to the linear behaviour is the same as under three-point and four-point tests with smaller specimens. Unlike other methods, the proposed method considers the variation of the cross-sectional properties across the pole length. The effective properties of GRP tubes were further determined considering the orthotropic and unsymmetrical layup of the wall segment. A sensitivity analysis was performed at the lamina as well as the laminate level in order to evaluate the influence of material properties of the matrix and the fibres, the amount and orientation of the fibres as well as the layer thickness. Finally, the effective (replacement) flexural modulus of a filament wound tube was determined based on the classical lamination theory and compared to experimentally determined values. It was concluded that the replacement flexural modulus is a matrix dominated property highly influenced by the fibre volume fraction.

]]>For more info see our presentation.

149/Jorgen

]]>I want to share a code with the polymer modeling community and figured your website is probably a good medium to try that out. Please review my message below and share if you agree.

Regards,

Travis

In 2017, I ran into an issue that required me to rely on crosshead (ie. grip) displacement to compute strain in rubber dumbbells in uniaxial tension. To prevent the grips from fracturing the specimen at very low strain (a big problem at high temperatures), I had to grip the dumbbell at a section that was much wider than the gage section. Of course, this results in large errors in the strain calculation. To circumvent the problem, I came up with a method to correct stress-strain data when a dumbbell is gripped at a wide section and direct measurement of strain is not possible. Since then, a surprising number of people have come to me with the same problem. Therefore, I am sharing my code here. The code is, hopefully, commented sufficiently well for general use, but I will follow up later with a full publication on the concept.

Disclaimer: Nobody has peer-reviewed the code for accuracy, but it has worked for 4 case studies. Use discretion when using the code. The author appreciates any feedback on bugs or issues encountered with the code.

PROGRAM nBlock10 ! v10.0]]>

!

! ********************************************************************

! Author: Travis Hohenberger

! Date: 2019-11-04

! E-mail: twhohen@gmail.com

! System: Windows 10

! Software: Netbeans IDE Dev (201804200002)

! Java 1.8.0_101; Java Hotspot 64 Bit Server VM 25.101-b13

! Java Runtime Environment 1.8.0_101-b13

! ********************************************************************

!

! Dumbbells are often stretched in uniaxial extension to collect stre-

! ss-strain data. When a dumbbell is gripped at a section wider than

! its gage section, and strain is computed from displacement of the g-

! rips, the calculated strain is lower than the actual strain in the

! gage section. This program corrects stress-strain data when direct

! measurement of strain (for instance, with a video extensometer) in

! the gage section is not possible, and therefore must be estimated f-

! rom grip (ie. crosshead) displacement. The program decomposes a dum-

! bbell into a series of blocks as illustrated in SCHEMATIC 1. As cur-

! rently written, the code creates 200 'n-blocks' between the upper (

! ie. tab) and lower (ie. gage) sections.

! ____________________

! &&&&&&&&&&&&&&&&&& | |

! &&&&&&&&&&&&&&&&&& | |

! &&&&&&&&&&&&&&&&&& | |

! &&&&&&&&&&&&&&&&&& | UPPER |

! &&&&&&&&&&&&&&&&&& ==> Tab section | BLOCK |

! &&&&&& TAB &&&&&&& | index = 202 |

! &&&&&&&&&&&&&&&&&& | in code |

! &&&&&&&&&&&&&&&&&& |__________________|

! &&&&&&&&&&&&&&&&& |_________________|

! &&&&&&&&&&&&&&&& ==> Smooth radius |________________|

! &&&&&&&&&&&&&&& |_______________|

! &&&&&&&&&&&&& ==> Tangent of radii |_____________| Seven

! &&&&&&&&&&&& |___________| ==> n-Block

! &&&&&&&&&&& ==> Smooth radius |_________| transitions,

! &&&&&&&&& |________| index = 2, 3, .

! &&&&&&&& | | .., 201 in code

! &&&&&&&& | |

! &&&&&&&& | |

! &&&&&&&& | LOWER |

! & GAGE & | BLOCK |

! &&&&&&&& | |

! &&&&&&&& ==> Gage section | index |

! &&&&&&&& | = 1 |

! &&&&&&&& | in |

! &&&&&&&& | code |

! &&&&&&&& |_______|

!

! (a) (b)

!

! SCHEMATIC 1: (a) Quarter-dumbbell with "smooth" geometry;

! (b) dumbbell decomposed into "block" geometry

!

! ********************************************************************

!

! The code uses the incompressible form of the generalized Yeoh strai-

! n-energy function:

!

! W = K1*(I1-3)^m + K2*(I1-3)^p + K3*(I1-3)^q

!

! which can be replaced by the user by changing the force equation.

!

! Reference:

!

! Hohenberger et al (2019). A constitutive model for both low and hig-

! h strain nonlinearities in highly filled elastomers and implementat-

! ion with user-defined material subroutines in Abaqus. Rubber Chemis-

! try and Technology, 92 (4), 653-686.

!

! Disclaimer: This code is not computationally optimal, but it has wo-

! ked for multiple cases tested by the author. More detai-

! ls will be shared in a journal publication.

!

! ********************************************************************

!

IMPLICIT NONE

!

REAL K1 , K2 , K3 , deL(202), w(202) , t , Delta ,&

Fo , Lam0 , F(202), Lam(202), ErrF(202), delNew, Fout ,&

deLtot, ErrDel, R1 , R2 , w0 , wTab , SigOut,&

alpha , h1 , h2 , L0 , dh1 , dh2 , y(202),&

Lgrip , Lbell , em , pe , qu , MxErrF, DelEnd,&

SigStore(200) , LamStore(200) , LamFact , ForcFac

!

INTEGER i, j, k, int1, int2

!

! ******************************************************************

! - MATERIAL MODEL PARAMETERS FOR GEN-YEOH STRAIN-ENERGY FUNCTION --

! ******************************************************************

!

K1 = 5.38 ! MPa

K2 = -2.85 ! MPa

K3 = 0.40 ! MPa

em = 0.89

pe = 1.08

qu = 1.85

!

! ******************************************************************

! ------ CONVERGENCE FACTORS FOR STRETCH AND FORCE ITERATIONS ------

! ******************************************************************

!

LamFact = 10. ! Increasing values speed up convergence but can

ForcFac = 0.1 ! result in unacceptable error. Monitor 'ErrDel'

! ! and 'MaxErrF' in the output window to ensure

! ! they remain << 1.

!

! ******************************************************************

! ----------- DUMBBELL DIMENSIONS (mm), SEE SCHEMATIC 2 ------------

! ******************************************************************

!

Lbell = 57.5 ! Dumbbell length (half-length, die C = 57.5)

Lgrip = 27.899 ! Grip separation (half-length)

L0 = 16.5 ! Gage length (half-length, die C = 16.5)

w0 = 3.12305 ! Width of gage section (half-width)

wTab = 12.5 ! Width of tab (half-width, die C = 12.5)

t = 2.3335 ! Dumbbell thickness (not illustrated)

R1 = 14. ! Dumbbell radius at gage (die C = 14)

R2 = 25. ! Dumbbell radius at tab (die C = 25)

Delta = 0.078 ! Initial displacement for starting iterations

DelEnd = 32. ! Target end displacement (half-displacement)

!

! | |

! |<--- wTab ---->| Delta, DelEnd

! | | ^

! -------------------- &&&&&&&&&&&&&&&&& |

! ^ &&&&&&&&&&&&&&&&& |

! | &&&&&&&&&&&&&&&&& |

! | &&&&&&&&&&&&&&&&& |

! | &&&&&&&&&&&&&&&&& |

! | ----------- &***************& ------------

! | ^ &&&&&&&&&&&&&&&&&

! | | &&&&&&&&&&&&&&&&&

! | | &&&&&&&&&&&&&&&& <---- R2

! | | &&&&&&&&&&&&&&&

! | | &&&&&&&&&&&&&

! Lbell | &&&&&&&&&&&&

! | | &&&&&&&&&& <---------- R1

! | | &&&&&&&&&

! | Lgrip &&&&&&&& -----------

! | | &&&&&&&& ^

! | | &&&&&&&& |

! | | &&&&&&&& |

! | | &&&&&&&& |

! | | --->& w0 &<--- L0

! | | &&&&&&&& |

! | | &&&&&&&& |

! v v &&&&&&&& v

! -------------------- &&&&&&&& -----------

!

! SCHEMATIC 2: Illustration of dimensions to be input by user

!

! ******************************************************************

! ------------------- INITIALIZE SOME VARIABLES --------------------

! ******************************************************************

!

! NOTE: The guess values for 'Lam0' and 'Fo' affect convergence and

! in addition to 'LamFact' & 'ForcFac', may result in unaccep-

! table error if they are too large. If large errors are enco-

! untered even with very small 'LamFact' & 'ForcFac', try red-

! ucing the initial guess values for 'Lam0' and 'Fo'.

!

Lam0 = 1.000001 ! Initial guess value for stretch

Fo = 0.1 ! Initial load increment (units = Newtons)

Lam = Lam0 ! Initialize all Lam(i)'s to Lam0

F = 0. ! Initialize pulling force to 0

ErrF = 500. ! Initialize force error to a large value

!

! ******************************************************************

! ---------- CALCULATION OF HEIGHTS & WIDTHS OF n-BLOCKS -----------

! ******************************************************************

int1 = 100 ! Number of intervals in which to decompose dumbbell

int2 = 100 ! radius transitions. This code must be updated if

! '100' is not specified for 'int1' or 'int2'. When

! ! testing the code, 100 intervals was found to give

! ! less than 0.1% discretization error.

!

! The geometric calculations below do not require modification if t-

! he default dimensioning scheme for an ASTM dumbbell applies.

!

alpha = ACOS((R1+R2+w0-wTab)/(R1+R2)) ! Angle b/t horizontal and

! the line connecting the

! centers of R1 & R2.

!

h1 = L0 + R1*SIN(alpha) ! Height to tangent of R1 and R2

h2 = h1 + R2*SIN(alpha) ! Height to transition b/t R2 & wTab

dh1 = (h1-L0) / int1 ! n-block interval height in R1 zone

dh2 = (h2-h1) / int2 ! n-block interval height in R2 zone

y(1) = L0 ! Set y(1) equal to gage length

w(1) = w0 ! Set w(1) equal to gage width

w(202) = wTab ! Set w(202) equal to tab width

!

DO i=2,101 ! Loop to calculate the height to

IF (i.EQ.2) THEN ! the n-blocks and respective wid-

y(i) = y(i-1) + dh1/2. ! ths in the R1 transition zone.

ELSE

y(i) = y(i-1) + dh1

END IF

w(i) = -((R1**2 - (y(i)-L0)**2))**0.5 + w0 + R1

END DO

!

DO i=102,201 ! Loop to calculate the height to

IF (i.EQ.102) THEN ! the n-blocks and respective wid-

y(i) = h1 + dh2/2. ! ths in the R2 transition zone.

ELSE

y(i) = y(i-1)+dh2

END IF

w(i) = (R2**2 - (y(i) - (L0 + (R1+R2)*SIN(alpha)))**2)**0.5&

+ wTab - R2

END DO

!

IF (Lgrip.GT.h2) THEN ! Compute the height of the upper tab se-

y(202) = Lgrip - h2 ! ction. Neglect this section if the grip

ELSE ! location is below the upper tab region.

y(202) = 0.

END IF

!

! ******************************************************************

! --------- ITERATIVE CALCULATIONS FOR FORCE AND STRETCH -----------

! ******************************************************************

!

k = 1 ! Index k is used for data storage / output.

!

220 j = 1 ! Restart location if the the current target displ-

! ! acement, 'Delta', has not been reached after for-

! ! ce and stretch iterations.

!

210 DO i = j,202 ! Loop for force calculations in each n-block.

!

! Force from generalized Yeoh strain-energy function:

!

F(i) = 2*w(i)*t*(Lam(i)-1/(Lam(i)**2))*&

(em * K1 * (Lam(i)**2 + 2/Lam(i) - 3)**(em-1.) + &

pe * K2 * (Lam(i)**2 + 2/Lam(i) - 3)**(pe-1.) + &

qu * K3 * (Lam(i)**2 + 2/Lam(i) - 3)**(qu-1.))

!

ErrF(i) = Fo - F(i) ! Residual force error

!

IF (ErrF(i).GT.500.0) THEN ! Convergence check

WRITE(*,*) 'ErrF = ' , ErrF(i)

WRITE(*,*)

WRITE(*,*) 'Force error > 500. Try adjusting Fo.'

STOP

END IF

!

IF (ErrF(i).GT.0.) THEN ! If error in force

IF (ErrF(i).LT.0.05) THEN ! is positive, incr-

Lam(i) = Lam(i) + 0.000001*LamFact ! ement stretch and

ELSE IF (ErrF(i).LT.0.5) THEN ! use the GOTO stat-

Lam(i) = Lam(i) + 0.00001*LamFact ! ement to recalcul-

ELSE IF (ErrF(i).LT.5.) THEN ! ate the force unt-

Lam(i) = Lam(i) + 0.0001*LamFact ! il the force resi-

ELSE IF (ErrF(i).LT.50.) THEN ! dual, 'ErrF(i)',

Lam(i) = Lam(i) + 0.001*LamFact ! becomes negative.

ELSE IF (ErrF(i).LT.500.) THEN

Lam(i) = Lam(i) + 0.01*LamFact

END IF

GO TO 210

END IF

!

j = j+1 ! Increment j so that later, if necessary, the outer

END DO ! loop will restart until the final target displacem-

! ! ent, 'DelEnd', is reached or exceeded.

!

deL(1) = L0*(Lam(1)-1) ! Displacement of gage section

deL(202) = y(202)*(Lam(202)-1) ! Displacement of tab section

!

DO i=2,101 ! Displacement of each n-block

deL(i) = dh1*(Lam(i)-1) ! in R1 section

END DO

!

DO i=102,201 ! Displacement of each n-block

deL(i) = dh2*(Lam(i)-1) ! in R2 section

END DO

!

DO i = 2,201 ! Set each n-block displacement

IF (y(i).GT.Lgrip) THEN ! to 0 if the n-block is above

deL(i) = 0. ! the grip location.

END IF

END DO

!

deLtot = 0. ! Initialize total displacement.

!

DO i=1,202 ! Compute total displacement.

deLtot = deLtot + deL(i)

END DO

!

ErrDel = Delta - deLtot ! Compare the sum of all n-block

! ! displacements to the target d-

IF (ErrDel.GT.0.) THEN ! isplacement, 'Delta'. If error

IF (ErrDel.LT.0.1) THEN ! is positive, increment force &

Fo = Fo + 0.01*ForcFac ! restart the force and stretch

ELSE IF (ErrDel.LT.1.) THEN ! iteration loops with the GOTO

Fo = Fo + 0.1*ForcFac ! statement.

ELSE IF (ErrDel.LT.10.) THEN

Fo = Fo + 1.0*ForcFac

ELSE IF (ErrDel.LT.100.) THEN

Fo = Fo + 10.*ForcFac

ELSE IF (ErrDel.LT.1000.) THEN

Fo = Fo + 100.*ForcFac

END IF

GO TO 220

END IF

!

! ******************************************************************

! --------- END OF ITERATION LOOPS FOR FORCE AND STRETCH -----------

! ******************************************************************

!

DO i = 1,202 ! Store the maximum force er-

IF (ErrF(i+1).LT.ErrF(i)) THEN ! ror of all the n-blocks.

MxErrF = ErrF(i+1)

ELSE

MxErrF = ErrF(i)

END IF

END DO

!

Fout = F(1) ! Store the force in the gage section.

SigOut = F(1)/w(1)/t ! Store the stress in the gage section.

!

LamStore(k) = Lam(1) ! Store stress and stretch as output that

SigStore(k) = SigOut ! the user can copy from output window.

!

! This next sequence of commands may seem confusing. The desired st-

! ress & stretch outputs are stored in arrays LamStore(k) & SigStor-

! e(k), but a stress corresponding to an n-block corrected stretch

! is stored one increment behind the current increment due to the m-

! anner in which this code increments displacement from 'Delta' to

! 'DelEnd'. Specifically, stress and stretch during the first itera-

! tion are not n-block corrected. The code forces the crosshead str-

! etch at iteration 'k+1' to equal the gage stretch at iteration 'k'

! , and then maps the updated gage stretch (at 'k+1') to the stress

! at 'k', creating an n-block corrected (stretch, stress) pair.

!

IF (k.EQ.1) THEN ! Write headings for stress & stretch outputs.

WRITE(*,*)

WRITE(*,*) ' Gage Stretch' , ' Nominal Stress / MPa',&

' ErrDel ' , ' MaxErrF '

WRITE(*,*) ' ------------ ' , '--------------------',&

' ------------ ' , '-------------'

ELSE

WRITE(*,360) LamStore(k),SigStore(k-1),& ! Write stress, str-

ErrDel,MxErrF ! etch, and errors.

END IF

!

k = k+1 ! Increment k for the next target di-

! ! displacement, 'Delta'.

!

delNew = Lgrip*(Lam(1)-1.) ! Set the next displacement incremen-

! ! t, 'Delta', so that the stretch ba-

IF (delNew.LT.delEnd) THEN ! sed on crosshead displacement in i-

Delta = delNew ! ncrement 'k+1' is equal to the str-

Fo = Fout ! etch in the gage section at increm-

GO TO 220 ! ent 'k'. If the total target displ-

END IF ! acement, 'DelEnd', has not been re-

! ! ached, conduct another iteration of

! ! the entire sequence.

WRITE(*,*)

WRITE(*,*) 'Final errors, force, displacement, & average stretch'

WRITE(*,*) '----------------------------------------------------'

WRITE(*,310) 'ErrDel = ' , ErrDel ,' mm Max. displacement error'

WRITE(*,320) 'MxErrF = ' , MxErrF ,'N' , 'Max. force error'

WRITE(*,330) 'F = ' , Fout ,'N' , 'Pulling force'

WRITE(*,340) 'Delta = ', Delta ,'mm','Crosshead displacement'

WRITE(*,350) 'LamT = ' , Delta/Lgrip+1.,'Crosshead (avg) stretch'

WRITE(*,*)

!

310 FORMAT(A10,F12.6,A29)

320 FORMAT(A10,F12.6,A3,A19)

330 FORMAT(A10,F12.3,A3,A16)

340 FORMAT(A10,F12.3,A3,A25)

350 FORMAT(A10,F12.4,A29)

360 FORMAT(F12.4,F18.3,F26.6,F17.6)

!

END PROGRAM nBlock10

!

! *********************************************************************

! --------------------- USER GUIDE / INSTRUCTIONS ---------------------

! *********************************************************************

!

! 1. Plot uniaxial tension stress-strain data with strain based on grip

! (ie. crosshead) displacement.

!

! 2. Fit a strain-energy function to the stress-strain data and record

! model parameters.

!

! 3. Input model parameters in the n-block code, and update the force

! equation if the generalized Yeoh strain-energy function is not us-

! ed.

!

! 4. Run the program to generate corrected stress-strain data for the

! material. If more data points are desired, adjust inputs 'Delta'

! and 'DelEnd' to result in different starting and ending points in

! the calculator. See SCHEMATIC 3 for an illustration of n-block co-

! rrected stress-strain data.

!

!

! | / /

! | Hyperelastic model _/ __/

! | fit to stress-strain ___ __/ ____/

! | data based on cross- | ___/ ____/

! | head displacement | ___/ ____/

! | __V___/ _______/

! S | ___/ _____/ ^

! T | __/ ___/ |

! R | __/ ___/ |__ n-block corrected

! E | __/ ___/ stress-strain output

! S | _/ __/

! S | _/ __/

! | _/ _/

! | / /

! | / _/

! | / _/

! | / /

! | /_/

! |/_______________________________________________________________

! STRAIN

!

! SCHEMATIC 3: Illustration of n-block corrected stress-strain data

! which, via a hyperelastic material model, shifts st-

! ress-strain data based on grip (ie. crosshead) disp-

! lacement.

There are some Polyurethane compression test specimens (According to ASTM-D575 standard - 12mm thickness) in 3 hardness 55, 65 and 75 ShoreA. The test results are reported in the form of time-force-displacement and now I'm trying to plot true stress-strain curve of compression behavior of these specimens. If the strain will be calculated using "delta l / l" formula (engineering strain), the strain range will be 0-100% that is physically sensible but using the strain integration (integral of "dl/l") (true strain), the strain is from 0 to near 300% (the specimens compressed about 11.8 mm). Now, my question is that, this range for true strain is correct? and what does physically means?

Thanks in advance, best regards.

]]>I am doing high speed tensile test for paperboard materials. The materials are very thin (around 0.2 thickness!!! ) and pretty soft with fracture force of just 200 !!

In this reason, we have always such a kind of local fracture near to the clamping area due to soft and thin material response. **We are looking to find the best method for clamping device to prevent this local defects.**

Maybe, somebody has any good suggestion or issue for clamping method to overcome this problem during this high speed tensile test.

I would be happy to hear from your side,

With my bests,

]]>