ipyconsol#
ipyconsol is a nonlinear implicit finite difference solver for one-dimensional consolidation of compressible soil with secondary compression. ipyconsol is the Python version of the Javascript package iConsol.js published by Brandenberg (2017). This code is an extension of Brandenberg (2017) because it the soil can be non-uniform and the loading can vary in time. For spatially variable soil, material constants are entered as arrays, where the array length is equal to the number of nodes. For time-varying loading, a loadfactor array is specified and has a length equal to the time array.
Brandenberg, S. J. (2017) “iConsol. js: JavaScript implicit finite-difference code for nonlinear consolidation and secondary compression.” International Journal of Geomechanics, 17(6)
Installation#
pip install ucla_geotech_tools
Requirements#
numpy >= 1.22
C compiler (e.g., gcc, Visual Studio Build Tools)
Functions#
compute(**kwargs)
get_initial(depth,Cc,Cr,sigvref,esigvref,Gs,kref,ekref,Ck,Ca,tref,qo,dsigv,ocrvoidratiotype,ocrvoidratio,ru,time,loadfactor,gammaw,tol,pa,drainagetype)
get_inputs(**kwargs)
Variables#
There are two options for soil inputs (uniform and non-uniform) and two options for loading (constant and time-varying).
soil property options: option 1: soil is uniform (i.e., material parameters are constants) option 2: soil is non-uniform (i.e., material parameters are arrays, with array lengths equal to number of nodes)
load stage options: option A: constant load applied at time=0 option B: time-varying load
The options may be combined in any manner (e.g., [option 1, option A], [option 1, option B], [option 2, option A], [option 2, option B]) Uniform soil has constant model coefficients, and either void ratio, OCR, or maximum past pressure is constant.
Keyword Args:#
parameter |
type |
description |
required |
default |
|---|---|---|---|---|
|
int |
number of elements |
required for option 1 |
|
|
float |
thickness of soil layer |
required for option 1 |
|
|
numpy array, dtype = float |
array of depth values |
required for option 2 |
|
|
float |
number of time steps |
required for option A |
|
|
float |
maximum time value |
required for option A |
|
|
numpy array, dtype = float |
array of time values |
required for option B |
|
|
numpy array, dtype = float |
array of load factor values where stress increment = loadfactor*dsigv |
required for option B |
|
|
float or numpy array |
virgin compression index |
required |
|
|
float or numpy array |
recompression index |
required |
|
|
float or numpy array |
vertical effective stress for a point on the normal consolidation line |
required |
|
|
float or numpy array |
void ratio for point on normal consolidation line corresponding to esigvref |
required |
|
|
float or numpy array |
specific gravity of solids |
required |
|
|
float or numpy array |
hydraulic conductivity for a point on the e-logk line |
required |
|
|
float or numpy array |
void ratio for point on the e-logk like corresponding to kref |
||
|
float or numpy array |
coefficient of permeability variation defined as slope of e-logk relationship de/dlogk |
required |
|
|
float or numpy array |
coefficient of secondary compression |
required |
|
|
float or numpy array |
time associated with normal consolidation line following Bjerrum’s time-line concept |
required |
|
|
float |
initial vertical effective stress at top of soil |
required |
|
|
float or numpy array |
change in total stress |
required |
|
|
float or numpy array |
0 OCR, 1 eo, 2 maximum past pressure |
required |
|
|
float or numpy array |
value of OCR, eo, or maximum past pressure, depending on value of ocrvoidratiotype |
required |
|
|
float |
unit weight of water |
9.81 |
|
|
float |
convergence tolerance |
1.0e-8 |
|
|
float |
atmospheric pressure |
101.325 |
|
|
float |
0 = double-drained, 1 = single-drained through top, 2 = single-drained through bottom |
0 |
Example Commands#
The example command below is for a uniform soil layer and constant loading. For other examples, see the test_ipyconsol.py file in the GitHub repository.
import ucla_geotech_tools.ipyconsol as pcl
output = pcl.compute(
Cc=5.729,
Cr=0.532,
sigvref=50.0,
esigvref=8.763,
Gs=1.686,
kref=1.0e-7,
ekref=8.344,
Ck=200.0,
Ca=0.0,
tref=3070.0,
qo=10.0,
dsigv=400.0,
ocrvoidratiotype=0,
ocrvoidratio=1.5,
drainagetype=0,
ru=0.0,
pa=101.325,
tol=1.0e-8,
N=100,
H=4.35,
Ntime=500,
tmax=35532000.0
)