C++ CodeSample Programming Codes

Calculation of pile downdrag force based on Neutral Plane Method – C++ Code

 

Long-term consolidation, seismic dry sand and liquefaction-induced settlements of a soil deposit can impart significant amount of downward load to piles. This load, called downdrag or negative skin friction, is caused by the friction between the pile and the downward moving soil. The magnitude of this force can be estimated by using neutral plane method which was briefly described in my previous post (click here). As shown in Figure 1 below a plot of “pile head load + negative skin friction” is developed and compared against a plot of “positive skin friction + mobilized pile tip resistance”. Neutral plane is the location where the two profile of pile forces intersect. This location is also where relative movement between the pile and surrounding soil is zero.

Figure 1. Neutral Plane Method (Siegel et al. 2014).

The pile head load should NOT be factored (service load type), and it should represent sustained structural loads which is typically dead load plus some percentage of live load. You should check your local building code to find out what percentage is required. As discussed in my previous post (click here), per ASCE 7-10 (United States), the percentage for long term loads is 50% so sustained load would be D+0.5L.

Generic t-z and Q-z curves are required to calculate positive friction and mobilized pile tip resistance as a function of soil-pile relative movement. An iterative analysis should be carried out which involves assuming a mobilized tip resistance and then determining its compatibility with the loads mobilized along the pile as well as the pile head load (Siegel et al. 2014). I have incorporated this iterative process in a C++ programming code for drilled shafts and driven piles. Ultimate skin friction and ultimate end bearing capacity are determined based on the approach of Bustamante and Gianeselli (1982) which adopts CPT data to estimate the capacity. The code uses the t-z and Q-z curves outlined in American Petroleum Institute (API). In case you have a site-specific curves you can incorporate the formulations into the functions “Q_z”, “t_z_Clay”, and “t_z_Sand”.

The C++ code uses  CPT data which should contain depth (ft) in column 1, uncorrected cone resistance (tsf) in column 2, sleeve friction (tsf) in column 3, and pore pressure (psi) in column 4. In addition, the user should input another set of  data which should include depth in column 1, q_{c1N,cs} in column 2, factor of safety against liquefaction in column 3, and free-field settlement in column 4.

You can download the “.cpp” and “.hpp” files here (last updated: 03/11/18):  Neutral-Plane-Analysis-Approach.zip

A sample main file is also included to clarify how to properly use the class and its functions. The code has been verified, however, it is highly recommended that you carry out your own verification. Please read the “Notes” included in the files carefully before using the spreadsheets.

Some additional notes:

  • The code calculate; (i) downdrag force, (ii) neutral plane depth, and (iii) record profile of depth, pile axial force, total pile settlement, and free field settlement in a user-defined output file.
  • Free-field soil settlement profile can be obtained from CLiq or the C++ code posted here.
  • In case the analysis failed to converge, please try either of the followings:
    1. increase the allowable load difference at pile head. In my opinion a value of 5 to 10 kips would provide reliable results.
    2. if the load is too high for a given column depth, the code may fail to converge because of insufficient bearing capacity. In such cases, you need to either reduce the sustained loads or increase pile depth.

Write comments if you have any questions.

Leave a Reply

Your email address will not be published. Required fields are marked *