nogamiandli2003¶
Class summary¶
NogamiAndLi2003 ([reader, pkg_for_version]) |
Multi-layer vertical and radial consolidation using matrix transfer |
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) [R12]. 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:
- Run the program with the defaults. If it actually excecutes go to step 3.
- Increase a combo of vertical_roots_dx, vertical_roots_p and max_iter untill the program excecutes.
- 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.
- 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
[R12] (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