Metadata-Version: 2.1
Name: pyConsol
Version: 1.0.2
Summary: Python implementation of iConsol program for computing nonlinear consolidation of soil.
Home-page: UNKNOWN
Author: Scott J. Brandenberg
Author-email: sjbrandenberg@ucla.edu
License: UNKNOWN
Platform: UNKNOWN
Description-Content-Type: text/markdown

# 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  
```bash
pip install pyConsol
```

## Input Parameters

### General input parameters.
```bash
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
```bash
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
```bash
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)
```bash
Ntime = number of time increments
tmax = maximum time value
```
### Time input parameters (time-dependent loading sequence)
```bash
time = list or array of time values
loadfactor = corresponding load factor values. Stress increment is load factor multiplied by dsigv.
```

## Usage

```python
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](https://www.uclageo.com/Consolidation) for uniform soil, constant load and [here](https://www.uclageo.com/Consolidaiton2) 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](http://ascelibrary.org/doi/abs/10.1061/%28ASCE%29GM.1943-5622.0000843)] [[eScholarship](https://escholarship.org/uc/item/0wh3q8jh)]


