Source code for liquepy.field.cpt_file

import numpy as np
from liquepy.exceptions import deprecation
import ntpath


# def load_cpt_data(fname):
#     deprecation('Deprecated (load_cpt_data), should use load_cpt_from_file')
#
#     # import data from csv file
#     data = np.loadtxt(fname, skiprows=24, delimiter=";")
#     depth = data[:, 0]
#     q_c = data[:, 1] * 1e3  # should be in kPa
#     f_s = data[:, 2]
#     u_2 = data[:, 3]
#     gwl = None
#     infile = open(fname)
#     lines = infile.readlines()
#     for line in lines:
#         if "Assumed GWL:" in line:
#             gwl = float(line.split(";")[1])
#
#     return depth, q_c, f_s, u_2, gwl

[docs]def load_mpa_cpt_file(ffp, delimiter=",", a_ratio_override=None): # import data from csv file folder_path, file_name = ntpath.split(ffp) ncols = 4 try: data = np.loadtxt(ffp, skiprows=24, delimiter=delimiter, usecols=(0, 1, 2, 3)) except: ncols = 3 data = np.loadtxt(ffp, skiprows=24, delimiter=delimiter, usecols=(0, 1, 2)) depth = data[:, 0] q_c = data[:, 1] * 1e3 # convert to kPa f_s = data[:, 2] * 1e3 # convert to kPa if ncols == 4: u_2 = data[:, 3] * 1e3 # convert to kPa else: u_2 = np.zeros_like(depth) gwl = None a_ratio = 1.0 pre_drill = None infile = open(ffp) lines = infile.readlines() for line in lines: if "Assumed GWL:" in line: gwl = line.split(delimiter)[1] if gwl == '-': gwl = None else: gwl = float(line.split(delimiter)[1]) if "aratio" in line: try: a_ratio = float(line.split(delimiter)[1]) except ValueError: pass if "Pre-Drill:" in line: val = line.split(delimiter)[1] if val != '': pre_drill = float(val) if a_ratio_override: a_ratio = a_ratio_override if pre_drill is not None: if depth[0] < pre_drill: indy = np.argmin(abs(depth - pre_drill)) depth = depth[indy:] q_c = q_c[indy:] f_s = f_s[indy:] u_2 = u_2[indy:] return CPT(depth, q_c, f_s, u_2, gwl, a_ratio, folder_path=folder_path, file_name=file_name, delimiter=delimiter)
[docs]def load_cpt_from_file(ffp, delimiter=";"): deprecation('Use load_mpa_cpt_file() where file is all in MPa') # import data from csv file folder_path, file_name = ntpath.split(ffp) ncols = 4 try: data = np.loadtxt(ffp, skiprows=24, delimiter=delimiter, usecols=(0, 1, 2, 3)) except: ncols = 3 data = np.loadtxt(ffp, skiprows=24, delimiter=delimiter, usecols=(0, 1, 2)) depth = data[:, 0] q_c = data[:, 1] * 1e3 # should be in kPa f_s = data[:, 2] if ncols == 4: u_2 = data[:, 3] else: u_2 = np.zeros_like(depth) gwl = None a_ratio = None infile = open(ffp) lines = infile.readlines() for line in lines: if "Assumed GWL:" in line: gwl = float(line.split(delimiter)[1]) if "aratio" in line: try: a_ratio = float(line.split(delimiter)[1]) except ValueError: pass return CPT(depth, q_c, f_s, u_2, gwl, a_ratio, folder_path=folder_path, file_name=file_name, delimiter=delimiter)
[docs]class CPT(object): def __init__(self, depth, q_c, f_s, u_2, gwl, a_ratio=None, folder_path="<path-not-set>", file_name="<name-not-set>", delimiter=";"): """ A cone penetration resistance test Parameters ---------- depth: array_like depths from surface, properties are forward projecting (i.e. start at 0.0 for surface) q_c: array_like, [kPa] f_s: array_like, [kPa] u_2: array_like, [kPa] gwl: float, [m] ground water level a_ratio: float, Area ratio """ self.depth = depth self.q_c = q_c self.f_s = f_s self.u_2 = u_2 self.gwl = gwl self.a_ratio = a_ratio self.folder_path = folder_path self.file_name = file_name self.delimiter = delimiter @property def q_t(self): """ Pore pressure corrected cone tip resistance """ # qt the cone tip resistance corrected for unequal end area effects, eq 2.3 return self.q_c + ((1 - self.a_ratio) * self.u_2)