Python implementation of iConsol program for computing nonlinear consolidation of soil.
Project description
Welcome to pyConsol
pyConsol is a nonlinear implicit finite difference solver for one-dimensional consolidation of compressible soil with secondary compression. pyConsol is the Python version of the Javascript package iConsol.js published by Brandenberg (2017).
Installation
pip install pyConsol
Input Parameters
General input parameters.
qo = initial vertical effective stress at the top of the layer
tol = convergence tolerance (optional, default = 1.0e-8)
gammaw = unit weight of water (optional, default = 9.81)
pa = atmospheric pressure (optional, default = 101.325)
drainagetype = 0 double drainage, 1 single drainage through the top, or 2 single drainage through the bottom (optional, default = 0)
Soil properties (uniform soil layer). All inputs are scalars
H = layer thickness
N = number of elements
Cc = virgin compression index
Cr = recompression index
sigvref = vertical effective stress of reference point on normal consolidation line
esigvref = void ratio of reference point on normal consolidation line
Gs = specific gravity of solids
Ck = coefficient of permeability variation
kref = hydraulic conductivity of reference point on e-logk curve
ekref = void ratio of reference point on e-logk curve
Ca = secondary compression index
tref = reference time corresponding to normal consolidation line
dsigv = total stress increment applied to top of soil layer
ocrvoidratiotype = 0 constant OCR, 1 constant eo, 2 constant maximum past pressure
ocrvoidratio = value of OCR, eo, or maximum past pressure, depending on value of ocrvoidratiotype
ru = initial excess pore pressure, prior to addition of dsigv (optional, default = 0.0)
Soil properties (layered profile). All inputs are lists or numpy arrays
depth = node locations
Cc = virgin compression index values
Cr = recompression index values
sigvref = vertical effective stresses for reference point on normal consolidation line
esigvref = void ratios for reference point on normal consolidation line
Gs = specific gravities of solids
Ck = coefficients of permeability variation
kref = hydraulic conductivities for reference point on e-logk curve
ekref = void ratios for reference point on e-logk curve
Ca = secondary compression indices
tref = reference times corresponding to normal consolidation line
dsigv = total stress increments applied at each depth
ocrvoidratiotype = 0 constant OCR, 1 constant eo, 2 constant maximum past pressure
ocrvoidratio = value of OCR, eo, or maximum past pressure, depending on value of ocrvoidratiotype
ru = initial excess pore pressures, prior to addition of dsigv (optional, default = 0.0)
Time input parameters (constant load increment)
Ntime = number of time increments
tmax = maximum time value
Time input parameters (time-dependent loading sequence)
time = list or array of time values
loadfactor = corresponding load factor values. Stress increment is load factor multiplied by dsigv.
Usage
import iConsol as icl
icl.compute(*args, **kwargs) # returns dictionary containing depth values, 'z', pore pressures, 'u', vertical effective stresses 'sigv', and void ratios 'e'
icl.get_inputs(*args, **kwargs) # reads inputs and returns [depth, Cc, Cr, sigvref, esigvref, Gs, kref, ekref, Ck, Ca, tref, qo, dsigv, ocrvoidratiotype,
# ocrvoidratio, ru, time, loadfactor, gammaw, tol, pa, drainagetype]
icl.get_initial(depth, Cc, Cr, sigvref, esigvref, Gs, kref, ekref, Ck, Ca, tref, qo, dsigv, ocrvoidratiotype, ocrvoidratio, ru, time, loadfactor, gammaw, tol, pa, drainagetype)
# returns dictionary containing initial void ratio 'eo', vertical effective stress 'sigvo', vertical effective stress with ru 'sigvo', and final effective stress 'sigvf'
icl.Logspace(tmin, tmax, Ntime, tstart) # returns time vector evenly distributed in log space between tmin and tmax
icl.get_ktest(etest,ekref,kref,Ck) # returns hydraulic conductivity for specified void ratio, etest
icl.get_avtest(elast, sigvlast, sigvtest, eref, sigvref, Cc, Cr) # returns coefficient of compressibility
icl.get_etest(etest, elast, eref, alpha, tref, sigvtest, sigvlast, sigvref, Cc, avtest, utest, ulast, dt)
# returns trial void ratio
icl.get_residual(ulast, utest, elast, etest, klast, ktest, avtest, zlast, ztest, sigvlast, sigvtest, gammaw, Ca, Cc, sigvref, esigvref, double dt, tref, drainagetype, N)
# returns array of residual values for trial pore pressure solution
icl.get_utest2(N, klast, ktest, zlast, ztest, avtest, elast, etest, ulast, utest, sigvlast, sigvtest, Res, dt, Cc, Cr, Ca, gammaw, ekref, kref, Ck, tref, esigvref, sigvref, dsigv, drainagetype, pa)
# returns trial pore pressure solution using Newton Raphson iteration
icl.get_utest(klast, ktest, avtest, zlast, ztest, ulast, sigvlast, sigvtest, elast, etest, Ca, Cc, sigvref, esigvref, dt, tref, drainagetype, N, gammaw)
# returns initial pore pressure solution using linear theory
Web version
A version of this software is available here for uniform soil, constant load and here for layered soil, time-varying load.
References
Brandenberg, S.J. (2017). "iConsol.js: A javascript implicit finite difference code for nonlinear consolidation and secondary compression." International Journal of Geomechanics, 17(6). [journal] [eScholarship]
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pyConsol-1.0.2-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36186768564394f563a44f03d31ceab8b97b15c19cbbbd9c704036a87f51e1c3 |
|
MD5 | f5d34f3affd6a8c93ae2f14214ef3029 |
|
BLAKE2b-256 | fd181aa9da9a31d0adfe3e12d7b16a317f1280b70583432755ec9954a49dff5a |