In [1]:
from operator import itemgetter
import numpy as np
from scipy.optimize import leastsq

In reference [1], Lamport et al tabulated \(f_{cu}\) (MPa) from 2 inch cube tests with measured \(E_g\) (MPa). The following fits a power law model to the data for the estimation of \(E_g\) from \(f_{cu}\).

In [2]:
fc_vs_Eg = [(27.1,   19995.9),
            (27.4,   19995.9),
            (27.7,   15169.3),
            (30.2,   19995.9),
            (28.3,   15169.3),
            (29.0,   15169.3),
            (41.3,   25512.0),
            (39.9,   25512.0),
            (42.1,   25512.0),
            (34.0,   22064.4),
            (37.8,   22064.4),
            (39.1,   22064.4),
            (32.8,   22753.9),
            (34.5,   22753.9),
            (36.9,   22753.9),
            (45.7,   24132.9),
            (76.7,   32407.1),
            (73.6,   32407.1)]
In [3]:
fc_vs_Eg = sorted(fc_vs_Eg, key=itemgetter(0))

The model is of the form \(E_g = \alpha {f_{cu}^\prime}^\beta\)

In [4]:
def model(constant, exponent, x):
    return constant*x**exponent
In [5]:
def residual(vars, x, data):
    constant = vars[0]
    exponent = vars[1]
    return (data - model(constant, exponent, x))
In [9]:
vars = [4550.0, 0.45]
x = [z[0] for z in fc_vs_Eg]
y = [z[1] for z in fc_vs_Eg]
out = leastsq(residual, vars, args=(x, y), full_output=True)
#print out
vars = out[0]
print('constant: {} exponent: {}'.format(vars[0],vars[1]))
fit = model(vars[0], vars[1], x)
s_u = 46.0
E_g = model(vars[0], vars[1], s_u)
s_y = 25.7/38.5*s_u
s_f = 0.2*s_u
s_t =  2.5/38.5*s_u
print('E_g: {0} s_y: {1} s_u: {2} s_f: {3} s_t: {4}'.format(E_g, s_y, s_u, s_f, s_t))
constant: 2771.70096771 exponent: 0.575040431518
E_g: 25055.2854245 s_y: 30.7064935065 s_u: 46.0 s_f: 9.2 s_t: 2.98701298701

Properties and predictions for Ducorit grouts

The model seems to perform better with lower strength grouts. That should be expected since the majority of the Lamport data are relatively low strength.

In [12]:
ducorit_d4 = (200.0, 70000.0)
print('Ducorit D4 predicted: {}'.format(model(vars[0], vars[1], ducorit_d4[0])))
ducorit_s5 = (130.0, 55000.0)
print('Ducorit S5 predicted: {}'.format(model(vars[0], vars[1], ducorit_s5[0])))
ducorit_s2 = ( 90.0, 40000.0)
print('Ducorit S2 predicted: {}'.format(model(vars[0], vars[1], ducorit_s2[0])))
ducorit_s1 = (110.0, 35000.0)
print('Ducorit S1 predicted: {}'.format(model(vars[0], vars[1], ducorit_s1[0])))
Ducorit D4 predicted: 58335.3294773
Ducorit S5 predicted: 45535.4120618
Ducorit S2 predicted: 36856.5626643
Ducorit S1 predicted: 41364.6833416

In [10]:
plt.plot(x,fit,color='b')
plt.plot(x,y,marker='+', color='r', ls='')
plt.ylim([0,40000])
plt.xlabel(r'\(f^\prime_c\)')
plt.ylabel(r'\(E_g\)')
plt.show()
  1. W. Lamport, J. Jirsa, and J. Yura. Grouted pile-to-sleeve connection tests. In Offshore Technology Conference, number OTC 5485, pages 19–26, 1987.