Blog

Posted in Uncategorized

STADYN Wave Equation Program 1: HTML Formatted Output

This is the first installment of a new series on the development of the STADYN wave equation program for analyzing impact driven foundation piles. This program was the subject of this study and what you’ll see on this site is the sequel to that study.

The first in the series, however, isn’t really about technical aspects of the program and application, but something more mundane: formatting the output in a way that one can easily read the output. Although STADYN is written in FOTRAN 77 (with extensions) the techniques shown here are useful elsewhere and in other languages. In fact, techniques similar to these were used in the development of this routine, which is in PHP.

Engineers have done tabular output in regimented text format for many years. While it gets the job done, it’s not very pretty or easy to read, and requires some very regimented formatting to keep the columns straight. The simplest way to illustrate this is to use a worked example. Although ultimately the idea is to apply this to STADYN, the program used is a revision of the BENT1 program which is available on this site and goes back to the 1970’s.

BENT1 is a program designed to analyze pile groups for axial and lateral response to loading, and is in fact the ancestor of programs such as the COM624 series (it’s the first of those,) LPILE and APILE. It starts off with output that looks like this:

EX 1  COPANO BAY CAUSEWAY, ARKANSAS COUNTY TEXAS, US HIGHWAY 35    


          LIST OF INPUT DATA ---


          PV              PH             TM           TOL    KNPL KOSC
     0.8440E+06     0.3640E+05     0.1682E+08     0.1000E-02  4    0


        CONTROL DATA FOR PILES AT EACH LOCATION 

     PILE NO    DISTA        DISTB      BATTER         POTT       KS   KA
         1    -0.1260E+03  0.0000E+00 -0.2440E+00  0.1000E+01    1   1
         2    -0.9000E+02  0.0000E+00  0.0000E+00  0.2000E+01    1   1
         3     0.9000E+02  0.0000E+00  0.0000E+00  0.2000E+01    1   1
         4     0.1260E+03  0.0000E+00  0.2440E+00  0.1000E+01    1   1



  PILE NO.  NN         HH            DPS      NDEI   CONNECTION FDBET
     1     31    0.36000E+02    0.12000E+03    1      FIX    0.0000E+00
     2     31    0.36000E+02    0.12000E+03    1      FIX    0.0000E+00
     3     31    0.36000E+02    0.12000E+03    1      FIX    0.0000E+00
     4     31    0.36000E+02    0.12000E+03    1      FIX    0.0000E+00

Note the text is all caps (typical for the era) and formatted in a fixed-pitch format. The programmer had to exercise some care to get the columns and headers lined up properly, which in FORTRAN 77 could be a job.

HTML documents—which are still, in their various forms, what you see most often when you browse the web—are basically ASCII text documents with formatting markup. This is also true of XML documents as well. Just about any language can readily generate ASCII files, and FORTRAN 77 is no exception. One of the biggest changes in the Internet, however, is that, in the early days, HTML documents were generated by hand (including the markup) and were uploaded to a server as static web pages. Today virtually all pages are generated « dynamically » to varying degrees. (The major downside to dynamic generation is that many security flaws in web pages come from holes in the code, but that’s another post.) In a sense we’re going to make FORTRAN 77 become a dynamic page generator.

Getting back to the output above, the first line was generated by the following code:

 1111 FORMAT(20A4)
  100 READ(3,111,END=800) ANUM
      CALL UPPER(ANUM,72)
  111 FORMAT(72A1)
      READ(3,1111)IBUF
      CALL UPPER(IBUF,80)
...
  132 WRITE(4,111)(ANUM(IK),IK=KII,72)

Here the title is read one character at a time into a character array, converted to upper case using the « UPPER » routine, and then output to the file using the same format statement it was read with.

Turning to how to do this in HTML—and the HTML you’re going to see here is very old and basic—we start by generating the header for the page with this code:


 write(4,*)'<head><title>BENT2 Run for Case ',casenm,
&'</title></head><body>
<div align="center">' 

Just about all HTML pages have a header, and here we use the case name variable to « personalise » the title, which appears at the top of the page. Note also that, when we transition to the body portion of the page, we use a div tag to center all of the content. That’s a matter of personal preference. It’s also possible to put CSS in the head as well, which opens up possibilities to liven up the page. Whether you do that depends upon how deep into HTML you want to get. With twenty years of experience doing this, I could have done more, but what you’ll see will be an improvement.

From here we change the last line of the original code shown above to generate the title as follows:

 90 WRITE (4,*) '
<h2>',(anum(ik),ik=kii,72),'</h2>
'

The header tags (Level 2, I think Level 1 generally makes it too large) are placed at the start and end of line and the title is in the middle. We could have gotten rid of the all-caps business, but for starters we did not.

Now to the tabular data. The title and table immediately below the original code was generated using this:

     WRITE(4, 150)
 150 FORMAT ( // , 5X, ' LIST OF INPUT DATA ---'
    & /// 4X, ' PV PH '
    & , ' TM TOL KNPL KOSC')
     WRITE(4, 160) PV, PH, TM, TOL, KNPL, KOSC
 160 FORMAT (4E15.4, I3, I5)

This is a simple one-row table with a header above it. Doing this in HTML using HTML tables (which, I know, are hopelessly obsolete but in this case handy) results in the following:

 WRITE (4,110)
110 FORMAT ('
<table border="2" cellspacing="2" cellpadding="3">',
&'<caption>List of Input Data</caption>',
&'
<tr>
<td>Vertical Load on Foundation, kips</td>
',
&'
<td align="center">Horizontal Load on Foundation, kips</td>
',
&'
<td align="center">Moment on Foundation, in-kips',
&'</td>
<td align="center">Iteration Tolerance, in.',
&'</td>
<td align="center">Number of Pile Locations',
&'</td>
<td align="center">Solution Oscillation Control</td>
</tr>
')
WRITE (4,120) 0.001*pv,0.001*ph,0.001*tm,tol,knpl,kosc
120 FORMAT ('
<tr>
<td>',4(g15.4,'</td>
<td align="center">'),
&i3,'</td>
<td align="center">',i5,
&'</td>
</tr>
</table>
')

The last table shown earlier is only slightly harder to write. The original code (which includes the read statement) is as follows:

      WRITE(4, 170)
  170 FORMAT ( // , 5X, '   CONTROL DATA FOR PILES'
     &     , ' AT EACH LOCATION ' // 4X, ' PILE NO   '
     &     , ' DISTA        DISTB      BATTER         '
     &     , 'POTT       KS   KA')
      DO 200 K = 1, KNPL
      READ(3,*) LINNO, DISTA(K), DISTB(K), THETA(K),
     &      POTT(K), KS(K), KA(K)
      WRITE(4, 190)   K, DISTA(K), DISTB(K),
     &      THETA(K), POTT(K), KS(K), KA(K)
  180 FORMAT (4E10.4, 2I5)
  190 FORMAT (5X, I5, 1E15.4, 3E12.4, I5, I4)
  200 CONTINUE

The new table generation code looks like this:

 130 format ('
<table border="2" cellspacing="2" cellpadding="3">',
&'<caption>Control Data for Piles at Each Location</caption>',
&'
<tr>
<td>Pile Number',
&'</td>
<td align="center">Horizontal Coordinate of Pile Top, in.',
&'</td>
<td align="center">Vertical Coordinate of Pile Top, in.',
&'</td>
<td align="center">Batter, Degrees',
&'</td>
<td align="center">Number of Piles at Location',
&'</td>
<td align="center">p-y Curve Identifier',
&'</td>
<td align="center">t-z Curve Idenfifier',
&'</td>
<td align="center">Number of Pile Increments',
&'</td>
<td align="center">Increment Length, in.',
&'</td>
<td align="center">',
&'Distance from Pile Head to Soil Surface, in.',
&'</td>
<td align="center">Number of Flexural Stiffness Values',
&'</td>
<td align="center">Head Connection of Pile',
&'</td>
<td align="center">Rotational Restraint Value',
&'</td>
</tr>
')
DO 150 k=1,knpl
READ (3,*) linno,dista(k),distb(k),theta(k),
&pott(k),ks(k),ka(k)
150 CONTINUE
DO 180 i=1,knpl
READ (3,40) ibuf
CALL upper (ibuf, 80)
ieod=0
istrt=1
CALL iget (linno)
CALL iget (nn(i))
CALL fget (hh(i))
CALL fget (dps(i))
CALL iget (ndei(i))
CALL strget (tc(i), 3)
CALL fget (fdbet(i))
CALL fget (e(i))
WRITE (4,170) i,dista(i),distb(i),57.295779513*theta(i),
&pott(i),ks(i),ka(i),
&nn(i),hh(i),dps(i),ndei(i),tc(i),fdbet(i)
170 FORMAT ('
<tr>
<td>',i5,
&1('</td>
<td align="center">',g15.4),
&3('</td>
<td align="center">',g12.4),
&2('</td>
<td align="center">',i5),
&1('</td>
<td align="center">',i7),
&2('</td>
<td align="center">',g15.5),
&1('</td>
<td align="center">',i5),
&1('</td>
<td align="center">',a3),
&1('</td>
<td align="center">',g14.4),
&'</td>
</tr>
')
ndst=ndei(i)
DO 180 j=1,ndst
READ (3,*) linno,rri(i,j),xx1(i,j),xx2(i,j)
180 CONTINUE
write(4,*)'</table>
'

The biggest difference is the need to write multiple table rows. On the other hand, we were able to combine two tables into one, which makes for easier reading.

Note: WordPress (which powers this site) may power a quarter of the web, but it’s a very “vertical” format and doesn’t always “do horizontal” very well.  With non-mobile devices, the wider tables will bleed off to the right, but you can see them.  With mobile devices, it just cuts them off because these don’t have a left-right scroll.  Also, it doesn’t always reproduce FORTRAN 77 code very gracefully, we apologize for the inconvenience.

The final result of all of this coding looks like this:

EX 1 COPANO BAY CAUSEWAY, ARKANSAS COUNTY TEXAS, US HIGHWAY 35

List of Input Data

Vertical Load on Foundation, kips

Horizontal Load on Foundation, kips

Moment on Foundation, in-kips

Iteration Tolerance, in.

Number of Pile Locations

Solution Oscillation Control

844.0

36.40

0.1682E+05

0.1000E-02

4

0

Control Data for Piles at Each Location

Pile Number

Horizontal Coordinate of Pile Top, in.

Vertical Coordinate of Pile Top, in.

Batter, Degrees

Number of Piles at Location

p-y Curve Identifier

t-z Curve Idenfifier

Number of Pile Increments

Increment Length, in.

Distance from Pile Head to Soil Surface, in.

Number of Flexural Stiffness Values

Head Connection of Pile

Rotational Restraint Value

1

-126.0

0.0000

-13.98

1.000

1

1

31

36.000

120.00

1

FIX

0.0000

2

-90.00

0.0000

0.0000

2.000

1

1

31

36.000

120.00

1

FIX

0.0000

3

90.00

0.0000

0.0000

2.000

1

1

31

36.000

120.00

1

FIX

0.0000

4

126.0

0.0000

13.98

1.000

1

1

31

36.000

120.00

1

FIX

0.0000

So how does this look when implemented in STADYN? We’ll start with the case which compares STADYN’s output with Finno (1989,) and the output (after complete conversion to HTML) looks like this:

Output for STADYN Wave Equation Program

Case finno2, 7: 5:41:78 9 May 2017

Hammer Properties
Ram Mass, kg 0.295E+04
Hammer Equivalent Stroke, mm 914.
Hammer Efficiency, Percent 67.0
Ram Velocity at Impact, m/sec 3.46
Ram O.D., mm 286.
Ram I.D., mm 0.000
Cross-Sectional Area of Ram, mm**2 0.642E+05
Ram Length, mm 0.583E+04
Cap Properties
Mass of Cap, kg 465.
Cap O.D., mm 483.
Cap I.D., mm 0.000
Cap Body Thickness, mm 323.
Cushion Thickness, mm 127.
Cushion Material Micarta & Aluminium
Cushion Area Same as Ram
Pile Properties
Pile Length, m 15.5
Pile Length Immersed in Soil, m 15.2
Head Cross-Sectional Area, mm**2 0.134E+05
Head Impedance, kN-sec/m 541.
omega2 (c/L), 1/sec 330.
2L/c,msec 6.07
Number of Complete Cycles for Pile Stress Wave, L/c 8
Ratio of Actual to Ideal Interface Stiffness 4.00
Minimum Distance from Pile for Model Side, m 15.0
Width of Soil Box (x), m 15.2
Depth of Soil Box (y), m 30.5
Material Properties for Hammer and Pile Materials
Material Type Material Code Modulus of Elasticity, MP Poissons Ratio Density, kg/m^3 Cohesion, MPa Yield Strength MPa Phi Degrees Psi Degrees Acoustic speed, m/sec
Steel 1 0.207E+06 0.300 0.788E+04 0.131E+04 0.262E+04 0.000 0.000 0.512E+04
Concrete 2 0.275E+05 0.300 0.241E+04 50.0 100. 0.000 0.000 0.338E+04
Wood 3 0.965E+04 0.300 800. 75.0 150. 0.000 0.000 0.347E+04
Aluminium 4 0.690E+05 0.300 0.271E+04 0.100E+04 0.200E+04 0.000 0.000 0.504E+04
Micarta & Aluminium 5 0.241E+04 0.300 0.183E+04 100. 200. 0.000 0.000 0.115E+04
Data for Region 1 (Pile )
Number of Nodes in a Regional Row 2
Number of Full Element Columns 1
Geometric Squeeze in x-direction 1
Number of Nodes in a Regional Column 2
Number of Full Element Rows 1
Geometric Squeeze in y-direction 1
Region Material Steel
2(x = 219.1, y = -304.8), mm 10 3(x= 228.6, y= -304.8), mm
100 Corner Locations Nodes and Connectivity 100
1(x = 219.1, y = 0.0), mm 2 4(x = 228.6, y = 0.0), mm
Data for Region 2 (Pile )
Number of Nodes in a Regional Row 2
Number of Full Element Columns 1
Geometric Squeeze in x-direction 1
Number of Nodes in a Regional Column 16
Number of Full Element Rows 1
Geometric Squeeze in y-direction 1
Region Material Steel
2(x = 219.1, y = 0.0), mm 1 3(x= 228.6, y= 0.0), mm
100 Corner Locations Nodes and Connectivity 5
1(x = 219.1, y = 15211.4), mm 3 4(x = 228.6, y = 15211.4), mm
Data for Region 3 (Pile )
Number of Nodes in a Regional Row 2
Number of Full Element Columns 1
Geometric Squeeze in x-direction 1
Number of Nodes in a Regional Column 2
Number of Full Element Rows 1
Geometric Squeeze in y-direction 1
Region Material Steel
2(x = 219.1, y = 15211.4), mm 2 3(x= 228.6, y= 15211.4), mm
100 Corner Locations Nodes and Connectivity 6
1(x = 0.0, y = 15220.9), mm 4 4(x = 228.6, y = 15220.9), mm
Data for Region 4 (Pile )
Number of Nodes in a Regional Row 2
Number of Full Element Columns 1
Geometric Squeeze in x-direction 1
Number of Nodes in a Regional Column 2
Number of Full Element Rows 1
Geometric Squeeze in y-direction 1
Region Material Steel
2(x = 0.0, y = 15220.9), mm 3 3(x= 228.6, y= 15220.9), mm
100 Corner Locations Nodes and Connectivity 7
1(x = 0.0, y = 15240.0), mm 8 4(x = 228.6, y = 15240.0), mm
Data for Region 5 (Soil )
Number of Nodes in a Regional Row 21
Number of Full Element Columns 20
Geometric Squeeze in x-direction 3
Number of Nodes in a Regional Column 16
Number of Full Element Rows 3
Geometric Squeeze in y-direction 1
2(x = 228.6, y = 0.0), mm 100 3(x= 15240.0, y= 0.0), mm
2 Corner Locations Nodes and Connectivity 101
1(x = 228.6, y = 15211.4), mm 6 4(x = 15240.0, y = 15211.4), mm
Data for Region 6 (Soil )
Number of Nodes in a Regional Row 21
Number of Full Element Columns 20
Geometric Squeeze in x-direction 3
Number of Nodes in a Regional Column 2
Number of Full Element Rows 3
Geometric Squeeze in y-direction 1
2(x = 228.6, y = 15211.4), mm 5 3(x= 15240.0, y= 15211.4), mm
3 Corner Locations Nodes and Connectivity 101
1(x = 228.6, y = 15220.9), mm 7 4(x = 15240.0, y = 15220.9), mm
Data for Region 7 (Soil )
Number of Nodes in a Regional Row 21
Number of Full Element Columns 20
Geometric Squeeze in x-direction 3
Number of Nodes in a Regional Column 2
Number of Full Element Rows 3
Geometric Squeeze in y-direction 1
2(x = 228.6, y = 15220.9), mm 6 3(x= 15240.0, y= 15220.9), mm
4 Corner Locations Nodes and Connectivity 101
1(x = 228.6, y = 15240.0), mm 9 4(x = 15240.0, y = 15240.0), mm
Data for Region 8 (Soil )
Number of Nodes in a Regional Row 2
Number of Full Element Columns 1
Geometric Squeeze in x-direction 1
Number of Nodes in a Regional Column 21
Number of Full Element Rows 1
Geometric Squeeze in y-direction 3
2(x = 0.0, y = 15240.0), mm 4 3(x= 228.6, y= 15240.0), mm
100 Corner Locations Nodes and Connectivity 9
1(x = 0.0, y = 30480.0), mm 101 4(x = 228.6, y = 30480.0), mm
Data for Region 9 (Soil )
Number of Nodes in a Regional Row 21
Number of Full Element Columns 20
Geometric Squeeze in x-direction 3
Number of Nodes in a Regional Column 21
Number of Full Element Rows 3
Geometric Squeeze in y-direction 3
2(x = 228.6, y = 15240.0), mm 7 3(x= 15240.0, y= 15240.0), mm
8 Corner Locations Nodes and Connectivity 101
1(x = 228.6, y = 30480.0), mm 101 4(x = 15240.0, y = 30480.0), mm
Data for Region 10 (Hammer )
Number of Nodes in a Regional Row 2
Number of Full Element Columns 1
Geometric Squeeze in x-direction 1
Number of Nodes in a Regional Column 2
Number of Full Element Rows 1
Geometric Squeeze in y-direction 1
Region Material Steel
2(x = 219.1, y = -304.8), mm 11 3(x= 228.6, y= -304.8), mm
100 Corner Locations Nodes and Connectivity 100
1(x = 219.1, y = -304.8), mm 1 4(x = 228.6, y = -304.8), mm
Data for Region 11 (Hammer )
Number of Nodes in a Regional Row 2
Number of Full Element Columns 1
Geometric Squeeze in x-direction 1
Number of Nodes in a Regional Column 2
Number of Full Element Rows 1
Geometric Squeeze in y-direction 1
Region Material Steel
2(x = 14.3, y = -627.3), mm 14 3(x= 142.9, y= -627.3), mm
13 Corner Locations Nodes and Connectivity 12
1(x = 219.1, y = -304.8), mm 10 4(x = 228.6, y = -304.8), mm
Data for Region 12 (Hammer )
Number of Nodes in a Regional Row 2
Number of Full Element Columns 1
Geometric Squeeze in x-direction 1
Number of Nodes in a Regional Column 2
Number of Full Element Rows 1
Geometric Squeeze in y-direction 1
Region Material Steel
2(x = 142.9, y = -627.3), mm 100 3(x= 241.3, y= -627.3), mm
11 Corner Locations Nodes and Connectivity 100
1(x = 228.6, y = -304.8), mm 100 4(x = 241.3, y = -304.8), mm
Data for Region 13 (Hammer )
Number of Nodes in a Regional Row 2
Number of Full Element Columns 1
Geometric Squeeze in x-direction 1
Number of Nodes in a Regional Column 2
Number of Full Element Rows 1
Geometric Squeeze in y-direction 1
Region Material Steel
2(x = 0.0, y = -627.3), mm 100 3(x= 14.3, y= -627.3), mm
100 Corner Locations Nodes and Connectivity 11
1(x = 0.0, y = -304.8), mm 100 4(x = 219.1, y = -304.8), mm
Data for Region 14 (Hammer )
Number of Nodes in a Regional Row 2
Number of Full Element Columns 1
Geometric Squeeze in x-direction 1
Number of Nodes in a Regional Column 2
Number of Full Element Rows 1
Geometric Squeeze in y-direction 1
Region Material Micarta & Aluminium
2(x = 0.0, y = -627.3), mm 15 3(x= 142.9, y= -627.3), mm
100 Corner Locations Nodes and Connectivity 100
1(x = 14.3, y = -627.3), mm 11 4(x = 142.9, y = -627.3), mm
Data for Region 15 (Hammer )
Number of Nodes in a Regional Row 2
Number of Full Element Columns 1
Geometric Squeeze in x-direction 1
Number of Nodes in a Regional Column 7
Number of Full Element Rows 1
Geometric Squeeze in y-direction 1
Region Material Steel
2(x = 0.0, y = -6458.1), mm 100 3(x= 142.9, y= -6458.1), mm
100 Corner Locations Nodes and Connectivity 100
1(x = 0.0, y = -627.3), mm 14 4(x = 142.9, y = -627.3), mm
General Properties of Run
Total Number of Nodes 860
Maximum Number of Nodes Allowed 10000
Percent of Available Nodes Used 8.60
Number of Elements Used 789
Maximum Number of Elements Allowed 7500
Percent of Available Elements Used 10.5
Total Number of Degrees of Freedom 1660
Total Degrees of Freedom Available 20000
Percent of Available Used 8.30
Number of Stiffness Matrix Entries 88208
Total Stiffness Matrix Entries Available 2000000
Percent of Available Entries Used 4.41
Node at Pile Head 3
Node at Pile Middle 19
Node at Pile Toe 37
Element at Pile Toe 18
Node at Ram Point 847
Element at Soil Corner 759
Level of Water Table from Soil Surface, m 5.18
Estimated Time Steps Used in Dynamic vtk output 143
Parameters for Explicit Dynamic Analysis:
Number of Time Steps 38239
Time Step, msec 0.635E-03
Element for Minimum Time Step 779
Newmark Constants:
Beta 0.000
Gamma 0.500
c1 0.202E-12
c2 0.317E-06
c3 0.317E-06
c4 0.000
c5 0.635E-06
Results of Dynamic Run
Actual Time Steps for vtk Run 143
Pile Set, mm 16.9
Blowcount, blows/300 mm 17.7
Layer Data For Static Load Test
Layer Bottom y-coordinate, m xi eta E, kPa Poissons Ratio Unit Mass, kg/m**3 c, kPa Yield Strength, kPa Friction Angle, Deg. Dilitancy Angle, Deg. Acoustic Speed, m/sec Gs Total Stress, kPa u, kPa Effective Stress kPa xi Optimisation Index eta Optimisation Index
1 5.18 -1.00 -0.560 0.188E+05 0.250 0.161E+04 0.000 0.000 30.5 0.000 108. 2.65 81.8 0.000 81.8 1 2
2 7.32 -1.00 -0.560 0.188E+05 0.250 0.200E+04 0.000 0.000 30.5 0.000 108. 2.65 124. 20.9 103. 1 2
3 15.2 0.000 -0.600 0.180E+05 0.350 0.193E+04 28.0 56.0 15.1 0.000 111. 2.71 273. 98.6 175. 3 4
4 30.5 0.000 -0.600 0.180E+05 0.350 0.193E+04 28.0 56.0 15.1 0.000 111. 2.71 561. 248. 313. 5 6
Davisson and Randolph-Wroth Coefficients
Davisson Inverse Slope, N/m 0.179E+09
Davisson Offset, mm 7.81
Randolph & Wroth Inverse Slope, N/m 0.197E+09
Static Load Data
Meyerhof Maximum Pile Capacity, kN 0.153E+05
Number of Static Load Steps 1000
Load Increment per Step, kN 15.3
Maximum Number of Newton Steps 25000
Davisson Load, kN 976.
Brinch-Hansen 80% Load, kN 0.104E+04
Brinch-Hansen 90% Load, kN 996.
Maximum Curvature Load, kN 0.101E+04
Slope-Tangent Load, kN 946.

At the end, the page needs to be closed with a statement like this:

 write(4,*)'</div>
</body></html>'

 

In addition to the changes to the output, extensive changes were made to the input. The original code was a research type of code and the input was strictly from a file. Moving forward, the program was made more interactive to allow the program itself to generate the text file necessary for the input. Because of compiler limitations, for STADYN the dialogue is of a text type. It’s also possible to use dialog boxes and entry, depending upon the compiler and language you’re coding in. Many of the program’s options were « hard coded » into the program, as some preferences are fixed. Newer ones will be introduced, and discussed in later instalments.

Although all of what’s discussed here is fairly primitive, the result is considerably easier to read and understand. It can also be copied into either word processing or spreadsheet software with little difficulty.

As noted earlier, later instalments of this series will get into more technical aspects of the program, but improving the output will make these discussions easier for this or any program.

References

All references for this series are in the original study, unless otherwise noted.

Posted in Pile Driving Equipment

What Splash Lubrication Looks Like in Vibratory Hammers

Vibratory pile driving equipment has been used for many years for the construction of sheet pile and soldier walls and, in some cases, bearing foundations.  Most vibratory hammers built in the U.S. use a “splash” form of lubrication, where the rotation of the gears basically throws the oil around the inside of the case, reaching (hopefully) the bearings as well as the gears.

The XFlow CFD package recently rendered this depiction of both the flow and heat transfer of oil inside the case, which gives you an idea of what this really looks like:

Many American vibratory hammers used larger teeth than shown here, but Vulcan developed a vibratory using smaller teeth and a one-piece gear-eccentric design, and the teeth are comparable in side to what’s shown here.

HT Pointwise.

Posted in Uncategorized

Featured in Print: Materials Testing

Materials Testing CoverMost Soil Mechanics courses feature a lab course to go with them, either integral or separate.  The textbook manufacturers are quick to take advantage of that with expensive books and software.  ASTM specs are just about standard in the U.S., but trying to teach out of an ASTM spec is a trying business.

An alternative to this is Materials Testing, the print version of the U.S. Army’s FM 5-472.  In addition to the soils tests, it features many other items, some of which are not geotechnical tests at all:

  1. Materials Testing Overview
  2. Soils Testing
  3. Bituminous Mixtures Testing
  4. Concrete Testing
  5. Soil Stabilization

The soils tests in particular are as follows:

  • Moisture-Content Determination
  • Specific-Gravity-of-Solids Determination (ASTM D 854-92)
  • Grain-Size Analysis and Distribution (ASTM D 422-63 and ASTM 2217-85)
  • Liquid Limit, Plastic Limit, and Plasticity Index Determination (ASTM D 4318-95a)
  • Laboratory Compaction Characteristics of Soil Using Modified Effort (Compaction Test) (ASTM D 1557-91)
  • In-Place Density Determination
  • CBR Tests

You can view the table of contents below.

Pages from FM5-472_Page_1Pages from FM5-472_Page_2Pages from FM5-472_Page_3Pages from FM5-472_Page_4Pages from FM5-472_Page_5Pages from FM5-472_Page_6Pages from FM5-472_Page_7Pages from FM5-472_Page_8

Materials Testing is an excellent lab manual, supplementary textbook, or handy resource for the testing and improvement of soils, asphalt or concrete.

 

Posted in STADYN

Improved Methods for Forward and Inverse Solution of the Wave Equation for Piles

This slideshow requires JavaScript.

This doctoral research project at the University of Tennessee at Chattanooga is now complete, and we are pleased to present the following:

Abstract

This dissertation discusses the development of an improved method for the static and dynamic analysis of driven piles for both forward and inverse solutions. Wave propagation in piles, which is the result of pile head (or toe) impact and the distributed mass and elasticity of the pile, was analysed in two ways: forward (the hammer is modelled and the pile response and capacity for a certain blow count is estimated) or inverse (the force-time and velocity-or displacement-time history from driving data is used to estimate the pile capacity.) The finite element routine developed was a three dimensional model of the hammer, pile and soil system using the Mohr-Coulomb failure criterion, Newmark’s method for the dynamic solution and a modified Newton method for the static solution. Soil properties were aggregated to simplify data entry and analysis. The three-dimensional model allowed for more accurate modelling of the various parts of the system and phenomena that are not well addressed with current one-dimensional methods, including bending effects in the cap and shaft response of tapered piles. Soil layering was flexible and could either follow the grid generation or be manually input. The forward method could either model the hammer explicitly or use a given force-time history, analysing the pile response. The inverse method used an optimization technique to determine the aggregated soil properties of a given layering scheme. In both cases the static axial capacity of the pile was estimated using the same finite element model as the dynamic method and incrementally loaded. The results were then analysed using accepted load test interpretation criteria. The model was run in test cases against current methods to verify its features, one of which was based on actual field data using current techniques for both data acquisition and analysis, with reasonable correlation of the results. The routine was standalone and did not require additional code to use.

Dynamic Pile Testing Results
Crescent Foundation Demonstration Test Pile – Vulcan SC9 Hammer
Kenner, Louisiana

Brian Mondello and Sean Killingsworth
GRL
May 2014

This report presents the results from dynamic pile testing, and related data analysis, performed during the initial drive testing of the subject Test Pile on April 30, 2014, at the above referenced jobsite location in Kenner, Louisiana. The primary test objective was the monitoring of the hammer/driving system performance. Additionally, the testing objectives included the monitoring of dynamic pile driving stresses, pile structural integrity, and pile static bearing capacity. These objectives were met by means of a Pile Driving Analyzer® (PDA), Model PAX, which uses the Case Method for numerical computations. An additional analysis was performed on a selected test record using the CAPWAP® computer program. Discussions on the testing equipment, analytical procedures, theory, application, and limitations are presented in Appendix A. Testing and analysis results are presented in Appendix B.

A video of the SC-9 hammer featured in Mondello and Killingsworth:

Dynamic Response of Footings and Piles

Wing Tai Peter To
PhD Dissertation
University of Manchester
February 1985

Dynamic response analyses can be regarded as stress wave propagation problems. The solution of such by the finite element method entails more consideration than static problems, since sources of inaccuracies such as dispersion, spurious oscillations due to mesh gradation, wave reflection at transmitting boundaries, as well as instability or inaccuracy due to temporal operators and discretisation can arise. The criteria for formulating a finite element model for dynamic response analysis have been investigated. Using the relatively simple von Mises soil model (satisfactory for undrained saturated clay) three categories of problems have been investigated:

  1. The dynamic response analyses of surface footings subjected to periodic and impact loading have been performed in order to evaluate the finite element model design criteria. An approximate analysis is also performed in reducing a three-dimensional indirect impact problem to a two-dimensional analysis.
  2. Vibratory pile driving is a relatively new but somewhat unreliable technique of pile installation. Penetration is instantaneous if conditions are right, but with the high hire charges and uncertainty in success the technique is unpopular, especially in clays. In the work presented it is shown that vibratory installation is possible in cohesive soils at the fundamental frequency for vertical pile translation, if a high enough dynamic oscillatory force is provided. Penetration mechanisms have also been exploited.
  3. On the other hand, impact pile driving is reliable and widely adopted in terrestrial as well as offshore construction. Experience in one dimensional wave equation analysis is discussed, and further numerical evaluation of the parameters involved has been carried out by a more elaborate axisymmetric finite element model. In cohesive soils a closed-ended pile may be driven more easily than an equivalent open ended pile, depending on the level of the internal soil column and the soil properties. In the light of the growing popularity of nondestructive determination of the axial load-carrying capacity of piles by dynamic methods, the possibility of correlating the soil resistance mobilised in dynamic conditions to the ultimate static capacity is queried. The semi-empirical Case method has been assessed in detail.
Posted in STADYN

Lessons Learned From Writing Finite Element Code for Pile Dynamics

Back in 1936, Lazarus White (of Spencer, White and Prentis fame) wrote the following about the dynamic formulae:

I read some papers last night where some of these pile driving formulas were derived, and the result was that my sleep was very much disturbed.

While there are many reasons to lose sleep while writing a Ph.D. dissertation, dynamic formulae aren’t among them. However, in the course of researching, coding, debugging, and writing what ended up as Warrington (2016), it became clear that there are things that induce sleep loss in geotechnical engineering in general and pile dynamics in particular.

As the title indicates, this is intended to be a “lessons learned” type of presentation. Given the manifold uncertainties that accompany any geotechnical engineering topic, the dual temptations to either completely discard any past experience or to dogmatically defend the current “state of the art” should be avoided. Given the environment we work in, coming to “definitive” solutions is not an easy task. The industry’s/profession’s innate conservatism, especially in codifying methods and materials, is well founded. On the other hand, there comes a point where serious issues “out there” need to be discussed and new (or at least different) solutions need to be considered.

The current state of the technology of pile dynamics, which in practical terms begins with Smith (1960) and Rausche (1970), has advanced not only the design and installation of driven piles but, though high-speed dynamic testing applied to bored piles and pile integrity testing, deep foundations in general. Since both (and the improvements that have come since then) are numerical methods with computer implementation, to say that computer power has advanced in the intervening years states the obvious. Numerical methods that existed even then, such as those documented in Carnahan, Luther and Wilkes (1969) can be brought to bear on the problem in new ways. Plasticity in finite element analysis is well established, documented in works such as Owen and Hinton (1980). Optimization techniques such as those described in Gill, Murray and Wright (1981) can be used for signal matching techniques, which are crucial in determining the soil resistance to driving (SRD) from dynamic pile data.

So without further introduction, on to the lessons learned.

We Have Gone As Far with the Smith Model as We Can Go

Given the state of soil dynamics when Smith (1960) was published, it is remarkable that his model has survived and continued (with modifications) as the “standard” model for soil response in the one-dimensional wave equation for piles. It has been tested (although really meaningful testing is difficult) and has been used in many applications, both in forward (predictive) and inverse (interpretive) application of the wave equation to piles. It is relatively simple to implement and the quantities of quake and damping have been extensively correlated.

However, any numerical model of a physical phenomenon has weaknesses, and the Smith model is no exception. Some of these are as follows:

There is no really accepted correlation between the soil properties as determined using standard testing procedures and the Smith parameters. This is especially critical with the soil damping, which has been shown to be one of the most critical properties to properly quantify in a wave equation analysis (Meseck (1985)).

The Smith model in the forward mode virtually requires the use of static methods to determine the SRD, which have numerous problems of their own. (Their proliferation is reminiscent of that of the dynamic formulae.) An additional complication is the diffuse state of static load test interpretation. While most dynamic methods in the U.S. presume the use of Davisson’s Method, this method is not universal in application.

The nature of Smith damping has never been completely enunciated. When velocity-based damping is used in the modelling of a physical system, generally speaking it refers to some kind of viscous friction, such as in a “dashpot.” Most of the “damping” in a dynamic pile system is the radiation of energy into the distributed mass and elasticity (and plasticity) of the soil surrounding the pile.

There is no good way to integrate many phenomena experienced in pile driving into the Smith model. Perhaps the most important of these is pile set-up, which is currently the “hot” research topic. In most cases the goal of these studies is to determine the ratio of the SRD (used in the wave equation analysis) to the ultimate static capacity of the pile. What is needed is a method to predict pile set-up, principally through the computation of elevated pore water pressures.

The Smith model’s neat division of soil resistance into shaft and toe does not reflect the reality of many driven piles, especially tapered piles, piles with plugging and piles with non-planar toes.

There are many “add-ons” that we use in the application of the Smith model (and other purely 1D wave equation analyses. But many of these are just that: add-ons to a model that in itself does not take into account many of the phenomena experienced in pile driving. Like Vergil in the Divine Comedy, the Smith model has been a faithful guide, but now we must move on if we want to really advance the science of pile dynamics.

Mohr-Coulomb Isn’t Perfect, But For The Moment It’s The Best We Have

If you realize that I’m advocating for a “3D” model of the hammer-pile-soil system, you’re right. (If we stick with round, axisymmetric piles, we can use a 2D model.) But that raises as many questions as it answers. Some of these relate to the hammer, including the gas pressures in diesel hammers, the modelling of intextensible places such as the hammer-cushion, hammer-cap or cap-pile interfaces, and cushion plasticity. But the key question, as always, relates to the soil. What soil model will we use? How will we take into consideration the inherently non-linear nature of the soil? How will we model the inevitable plasticity? What soil properties will we use?

At this point, in spite of its limitations, the Mohr-Coulomb model, familiar to just about everyone in the geotechnical industry, is probably the best overall soil model to use in pile dynamics. It certainly has its limitations; it is, in some ways, an attempt to render an elasto-plastic simplification of a hyperbolic (Duncan and Chang (1970)) soil response. In that respect it justifies the characterization of Massarsch (1983) as “crude.” But it remains overall the best model to use (Abbo et.al. (2011); McCarron (2013)) for the following reasons:

It is suitable for a wide variety of soils, and piles are driven into diverse stratigraphies, both from one site to the next and along the length of the pile.

The current standard testing methodology is “designed” around Mohr-Coulomb. If we are serious about addressing the lack of correlation between properties used in pile dynamics and soil properties, we need to be able to test for these properties. Until we revise our standard testing methodologies, this limitation will stand.

It is well represented in finite element codes that are used for geotechnical analysis. Warrington (2016) represented the first application of a standalone finite element code for pile dynamics in over twenty years. There are advantages and disadvantages in both approaches, but implementation of Mohr-Coulomb in finite element code is well established.

For these and other reasons, Mohr-Coulomb remains the best model for failure and plasticity that we have available. Like everything else, this is not written in stone; but until other things advance in the industry, this is the best we have.

We Need To Understand Why Reducing Pile Head Data Is So Difficult

The ability to estimate static pile response from high-velocity dynamic data is the cornerstone of pile dynamics. Although it is “intuitively obvious” (a favourite phrase of academics,) quantifying it has been something of a challenge. Today methods in use for doing this estimation are basically signal-matching techniques. The concept is to have the model return the same force-time and velocity-time histories as come from the field. In processing the data, we compare the two “point by point;” if the sum of the differences (or the square of the differences) goes below some kind of tolerance criterion, we say the signals match and the model replicates the physical system.

Although the results have been reasonable problems remain, requiring a great deal of human intervention. So why is this problem so difficult? The answer, in terms of optimization techniques, is the presence of multiple local minima of the aforementioned “sums.” This is a “fancy” term that needs some explanation.

Optimization techniques attempt to find a minimum (or maximum) value for a function of several variables. Consider the example of the famous Rosenbrock Function, given (in a typical form) by the equation

R(x,y) = (1-x)2 + 100(y-x2)2

A plot of this is shown below.

Rosenbrock

This function is often used to test optimization techniques, by starting at a point which away from the known minimum and checking to see how well the technique converges on the actual minimum, which in this case is . Although the function is difficult, it is reasonably “regular.”

Now consider a topographical map of a hilly region, or better the soil profile for a Karst topography. Now there are many local minima; it is easy for an optimization technique looking for the “bottom” of the valley without realizing that there is yet another valley over the hill that is actually lower! Using an automated technique, especially one based on Newton’s Method, can easily get trapped in such a minimum, thinking it has found the solution to the problem when in fact it has not.

Getting to the real minimum has been a central frustration in the development of signal matching techniques for pile dynamics, because the inverse problem in pile dynamics, like the ground the piles are driven into, has many local minima. This problem has impeded the automation of the search process more than any other. The increase in computer power available to engineers is an opportunity to “get to the bottom” of the problem, although in doing so a consistently successful methodology is necessary.

We Need to Instrument Piles in More Places than the Pile Head

The earliest instrumented pile study was that of Glanville et.al. (1938), and the piles were instrumented at the head, middle and toe. Jorg Osterberg showed us how to test the piles with a load cell at the toe, and Fellenius (2014) has advocated instrumenting piles at locations other than the head for static testing. And yet today, eighty years after it was first done, we generally still instrument the pile head only for both static and dynamic testing. The need to do so for dynamic testing is, if anything, more urgent than with static testing, and with the expendable instrumentation we have available it should not be that big of a problem. Doing so would give us a more complete picture of what’s really going on during driving and make the search for an SRD much simpler.

The Advance of Numerical Methods Should Occasion Some Changes in Geotechnical Education

At this point we turn away somewhat from the problem at hand and look at geotechnical education in general. If we take a serious look at our basic geotechnical courses, much of the material we have is little different than that which was published in Terzaghi and Peck (1948). While we cannot denigrate those who went before us just because we have found out something new, nevertheless the environment we operate in is vastly different from that which those two giants strode in a half century and more ago. The biggest change is the introduction and proliferation of numerical methods.

Many geotechnical engineers are wary of the advance of these methods. Some will tell you that the results obtained from hand calculations based on experience are no worse (and many cases better) than those from numerical methods. Often this is correct. Part of the problem is that the numerical methods are based on the same theory as the closed form solutions. The advantage of numerical methods is not necessarily in underlying theory but in the ability to better simulate the physical system through geometric replication. But another part of the problem is that most numerical methods, presented in packages, are “black boxes” to many practitioners, who frequently do not have a complete grasp of their inner workings. The temptation is thus great to receive the results uncritically, without support from more conventional methods or experience. It is thus incumbent upon geotechnical educators, starting at the undergraduate level, to give students some understanding of how these methods work, and also in their strengths and weaknesses, so that they can form an intelligent opinion of the results.

The biggest difference between the way geotechnical professionals have employed theory in the past and the way numerical methods handle it is that, in the first case, elasticity and plasticity are handled separately, while in the second the two are simulated in the same model, which alternates from one to the other depending upon the system modelled and the loads placed upon it. For example, in settlement problems we frequently consider elastic settlement separate from consolidation settlement (primary and secondary,) which in turn is separate from bearing capacity. In physical reality all of these are taking place at the same time, and the model that can accurately simulate this is of value.

It is for this reason that this educator has shifted towards a text such as Verruijt and van Bars (2007). Such an approach emphasizes more of the “continuum mechanics” of soil mechanics than is customarily done. This is arguably a more “theoretical” approach to soil mechanics. It is not a complete solution to the problem, but it is a start.

Conclusion

These are some observations and proposals derived from a long (three year) study on the subject of pile dynamics. Geotechnical engineering tends to be a conservative field of study and practice, but we must not let that impede real progress towards foundations that are more economical and reliable than before. Ultimately numerical methods in general and finite element analysis in particular will advance in usage; if we implement them intelligently and educate our new engineers in their inner workings, the profession will advance.

If we can achieve that goal, we can all sleep better at night.

References

  • Abbo, A.J., Lyamin, A.V., Sloan, S.W. and Hambleton, J.P. (2011). “A C2 continuous approximation to the Mohr-Coulomb yield surface.” International Journal of Solids and Structures, 48(21), 3001-3010.
  • Carnahan, B., Luther, H.A. and Wilkes, J.O. (1969). Applied Numerical Methods, John Wiley & Sons, Inc., New York, NY
  • Duncan, J.M., and Chang, C.Y. (1970). “Nonlinear Analysis of Stress and Strain in Soils.” Journal of the Soil Mechanics and Foundations Division, American Society of Civil Engineers, 96(5), 1629-1653.
  • Fellenius, B.H. (2014) Basics of Foundation Design. http://www.fellenius.net (March 13, 2015)
  • Gill, P.E., Murray, W. and Wright, M.H. (1981). Practical Optimization, Academic Press, Inc., London, England.
  • Glanville, W.H., Grime, G., Fox, E.N, and Davies, W.W (1938). An Investigation of the Stresses in Reinforced Concrete Piles During Driving, Department of Scientific and Industrial Research, British Building Research Board, London, England.
  • Massarsch, K. R. (1983). “Vibration Problems in Soft Soils.” Proceedings of the Symposium on Recent Developments in Laboratory and Field Tests and Analysis of Geotechnical Problems, Asian Institute of Technology, A. A. Balkema, Rotterdam, 539-549.
  • McCarron, W.O. (2013). “Numerical Modeling Applications in Offshore Petroleum Developments.” Geo-Strata, 17(3), 34-39.
  • Meseck, H. (1985). “Application of a Wave Equation Programme to Establish the Bearing Capacity of Driven Piles.” Proceedings of the International Symposium on Penetrability and Drivability of Piles, Volume 2, Japanese Society of Soil Mechanics and Foundation Engineering, 84-90.
  • Owen, D.R.J., and Hinton, E. (1980). Finite Elements in Plasticity: Theory and Practice. Pineridge Press, Swansea, Wales.
  • Rausche, F. (1970). Soil Response from Dynamic Analysis and Measurements on Piles. Ph.D. Dissertation, Case Western Reserve University, Cleveland, OH.
  • Smith, E.A.L. (1960). “Pile-Driving Analysis by the Wave Equation.” Journal of the Soil Mechanics and Foundations Division, 127(1) 35-61.
  • Terzaghi, K., and Peck, R.B. (1948) Soil Mechanics in Engineering Practice, McGraw-Hill Company, New York, NY.
  • Verruijt, A., and van Bars, S. (2007). Soil Mechanics. VSSD, Delft, the Netherlands.
  • Warrington, D.C. (2016). Improved Methods For Forward And Inverse Solution Of The Wave Equation For Piles. Ph.D. Dissertation, University of Tennessee at Chattanooga, Chattanooga, TN.