nogamiandli2003

Class summary

NogamiAndLi2003([reader, pkg_for_version]) Multi-layer vertical and radial consolidation using matrix transfer

Function summary

main() Run nogamiandli2003 as script

Module listing

Nogami and Li (2003) ‘Consolidation of Clay with a System of Vertical and Horizontal Drains’.

class geotecha.consolidation.nogamiandli2003.NogamiAndLi2003(reader=None, pkg_for_version='geotecha')[source]

Bases: geotecha.inputoutput.inputoutput.InputFileLoaderCheckerSaver

Multi-layer vertical and radial consolidation using matrix transfer

Partially implements the article by Nogami and Li (2003) [1]. While the article includes special treatment for sand layers and geotextile layers, this implementation only considers ‘soil’ layers. (Sand layers are just normal layers with high kv and low mv).

The coding is not of high quality. The main use is for verification of speccon models noting that Nogami and Li (2003) use rigourous methods where as speccon uses equal-strain assumptions for the radial flow part.

Features:

  • Multiple layers.
  • Vertical flow and radial flow to a central drain (no smear zone).
  • Load is uniform with depth but varies piecewise-linear with time.
  • No assumptions on radial distribution of strain (i.e. NOT equal-strain).
  • pore pressure vs depth at various times. Either at a particular radial coordinate or averaged in the radial direction.
  • Average pore pressure vs time. Average is over the entire soil layer.

Warning

The ‘Parameters’ and ‘Attributes’ sections below require further explanation. The parameters listed below are not used to explicitly initialize the object. Rather they are defined in either a multi-line string or a file-like object using python syntax. It is the file object or string object that is used to initialize the object. Each ‘parameter’ will be turned into an attribute that can be accessed using conventional python dot notation, after the object has been initialised. The attributes listed below are calculated values (i.e. they could be interpreted as results) which are accessible using dot notation after all calculations are complete.

Parameters:
z : list/array of float

Depth to calc pore pressure at.

t : list/array of float

Time values to calc average pore pressure at.

tpor : list/array of float

Time values to calc pore pressure profiles at.

h : list/array of float

Layer thicknesses.

nv, nh : tuple of 2 int, optional

Number of series terms to use in vertical and horizontal direction. Default nv=nh=5.

kv, kh : list/array of float

Layer vertical and horizontal permeability divided by unit weight of water.

mv : list/array of float

Layer volume compressibility.

bctop, bcbot : [0, 1]

Boundary condition. bctop=0 is free draining, bctop=1 is impervious.

surcharge_vs_time : PolyLine

Piecewise linear variation of surcharge with time

r1, r0 : float optional

drain influence zone and drain radius. If either is none then only vertical drainage will be considered.

rcalc : float, optional

Radial coordinate at which to calc pore pressure. Default rcalc=None i.e. pore pressure is averaged in the radial direction.

radial_roots_x0 : float, optional

Starting point for finding radial eigenvalues. Default radial_roots_x0=1e-3.

radial_roots_dx : float, optional

Starting increment for finding radial eigenvalues. Default radial_roots_dx=1e-3.

radial_roots_p : float, optional

Succesive increment length increase factor for finding radial eigenvalues. default radial_roots_p=1.05.

vertical_roots_x0 : float, optional

Starting point for finding vertical eigenvalues. Default vertical_roots_x0=1e-7.

vertical_roots_dx : float, optional

Starting increment for finding vertical eigenvalues. Default vertical_roots_dx=1e-7.

vertical_roots_p : float, optional

Succesive increment lenght increase factor for finding vertical eigenvalues. Default vertical_roots_p=1.05.

max_iter : int, optional

Max iterations when searching for eigenvalue intervals. Default max_iter=10000

show_vert_eigs : True/False, optional

If true a vertical eigen value plot will be made. Default show_vert_eigs=False

plot_properties : dict of dict, optional

dictionary that overrides some of the plot properties. Each member of plot_properties will correspond to one of the plots.

plot_properties description
por dict of prop to pass to pore pressure plot.
avp dict of prop to pass to average pore pressure plot.
set dict of prop to pass to settlement plot.

see geotecha.plotting.one_d.plot_vs_depth and geotecha.plotting.one_d.plot_vs_time for options to specify in each plot dict.

save_data_to_file : True/False, optional

If True data will be saved to file. Default save_data_to_file=False

save_figures_to_file : True/False

If True then figures will be saved to file. Default save_figures_to_file=False

show_figures : True/False, optional

If True the after calculation figures will be shown on screen. Default show_figures=False.

directory : string, optional

Path to directory where files should be stored. Default directory=None which will use the current working directory. Note if you keep getting directory does not exist errors then try putting an r before the string definition. i.e. directory = r’C:Users…’

overwrite : True/False, optional

If True then existing files will be overwritten. Default overwrite=False.

prefix : string, optional

Filename prefix for all output files. Default prefix= ‘out’

create_directory : True/Fase, optional

If True a new sub-folder with name based on prefix and an incremented number will contain the output files. Default create_directory=True.

data_ext : string, optional

File extension for data files. Default data_ext=’.csv’

input_ext : string, optional

File extension for original and parsed input files. default = “.py”

figure_ext : string, optional

File extension for figures. Can be any valid matplotlib option for savefig. Default figure_ext=”.eps”. Others include ‘pdf’, ‘png’.

title : str, optional

A title for the input file. This will appear at the top of data files. Default title=None, i.e. no title.

author : str, optional

Author of analysis. Default=’unknown’.

See also

geotecha.piecewise.piecewise_linear_1d.PolyLine
How to specify loadings

Notes

It is possbile to initialize the object without a file-like object or multi-line string, i.e. using the default reader=None. This is not recommended because you have to explicitly set each attribute. It will most likely be easier to use a string or file object and then do any custom modifications to the attributes afterwards.

This program relies on numerical root finding, which can be extremely troublesome in for the vertical eigenvalue case here (Mainly because I never figured out how to normalise in the z direction… but that is another story). You will probably need to fine tune the vertical_roots parameters to ensure the correct eigenvalues have been found, so:

  1. Run the program with the defaults. If it actually excecutes go to step 3.
  2. Increase a combo of vertical_roots_dx, vertical_roots_p and max_iter untill the program excecutes.
  3. Does your pore pressure vs depth plots look ok. If yes, then possibly accept the results. But better to check eigen values in step 4.
  4. Run the method _plot_vert_roots with enough points to smoothly show the characteristic curve. zoom in on the roots and check if all the roots are found (usually the problems occur with leftmost line. If not alter vertical_roots_dx, vertical_roots_p and max_iter untill all roots are captured. Basically if you choose vertical_roots_dx tiny, vertical_roots_p`=1, and `max_iter huge then you will find all the roots but it may take a long time.

Root finding is very hard when there are clumps of closely spaced roots but the clumps themselves are far apart.

Also note that there are errors in eq.24a and eq.24b in the published article of Nogami and Li. Also I could never get the vertical normalisation to work. Also I’ve done my own normalising for the radial part.

References

[1](1, 2) Nogami, Toyoaki, and Maoxin Li. ‘Consolidation of Clay with a System of Vertical and Horizontal Drains’. Journal of Geotechnical and Geoenvironmental Engineering 129, no. 9 (2003): 838-48. doi:10.1061/(ASCE)1090-0241(2003)129:9(838).
Attributes:
por : array of shape (len(z), len(tpor))

Pore pressure vs depth at various times. Only present if tpor defined. If rcalc defined then porepressure will be at r=rcalc. If rcalc is not defined then pore pressure is averaged radially

avp : array of shape (1, len(t))

Averge pore pressure of profile various times. Only present if t defined. If rcalc defined then pore pressure will be at r=rcalc. If rcalc is not defined then pore pressure is averaged radially

set : array of shape (1, len(t))

Surface settlement at various times. Only present if t defined. If rcalc defined then settlement will be at r=rcalc. If rcalc is not defined then settlement is averaged radially.

Methods

calc() Perform all calculations
check_input_attributes() Perform checks on attributes
make_all() Check input, make_output produce files and plots
make_output() make all output
produce_plots() produce plots of analysis
un_normalised(r) part of u(r, z, …) This version is normalised w.r.t.
un_normalised_average(s) u(r) part of u(r, z, t) = u(r) * phi(z) * T(t), averaged betw r0 r1
calc()[source]

Perform all calculations

make_all()[source]

Check input, make_output produce files and plots

make_output()[source]

make all output

produce_plots()[source]

produce plots of analysis

un_normalised(r) part of u(r, z, t) = u(r) * phi(z) * T(t)[source]

This version is normalised w.r.t. r0

un_normalised_average(s)[source]

u(r) part of u(r, z, t) = u(r) * phi(z) * T(t), averaged betw r0 r1

geotecha.consolidation.nogamiandli2003.main()[source]

Run nogamiandli2003 as script