Skip to main content

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

pyConsol-1.0.3.tar.gz (210.4 kB view hashes)

Uploaded Source

Built Distribution

pyConsol-1.0.3-cp37-cp37m-win_amd64.whl (401.3 kB view hashes)

Uploaded CPython 3.7m Windows x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page