stanpy.transfer_relation

utils

gamma_K

Top-level package for stanpy.

stanpy.gamma_K(**s)[source]

calculates gamma and K with the beam dictionary see Eq. (1)

Parameters

**s -- see below

Keyword Arguments
  • EI or E and I (float) -- Bending stiffness

  • GA or G and A (float) -- Shear stiffness

  • N (float) , defaults to 0 -- Normal Force (compression - negative)

Returns

gamma, K

Return type

(float, float)

(1)\[\gamma = \dfrac{1}{1 - N / G\tilde{A}}\qquad K = -\gamma\dfrac{N}{EI}\]
import stanpy as stp

s = {"EI":32000, "GA":20000, "N":-1000}
gamma, K = stp.gamma_K(**s)
print(gamma, K)
1.0526315789473684 -0.03289473684210526

aj(x)

Top-level package for stanpy.

stanpy.aj(x: numpy.ndarray, n: int = 5)[source]

calculates the aj coefficients published by Rubin [Rub93]

Parameters
  • x (np.ndarray, int, float or list) -- positions where to calculate the bj values

  • n (int, optional) -- aj with j from 0 to n (b0, b1, ..., bn) - defaults to 5

Returns

bj coefficients

Return type

np.ndarray

(2)\[\begin{split}x \geq 0&:\quad a_0 = 1,\quad a_j = \dfrac{x^j}{j!} \qquad\text{for}\qquad j=1,~2,~3,~...\\ x < 0&:\quad \text{all}\quad a_j=0\end{split}\]
import stanpy as stp

aj = stp.aj(x=[-1,0,2,3],n=5)
print(aj)
[[0.      0.      0.      0.      0.      0.     ]
 [1.      0.      0.      0.      0.      0.     ]
 [1.      2.      2.      1.33333 0.66667 0.26667]
 [1.      3.      4.5     4.5     3.375   2.025  ]]

bj(x)

Top-level package for stanpy.

stanpy.bj(x: numpy.ndarray = array([], dtype=float64), n: int = 5, t=50, **s)[source]

calculates the bj coefficients for straight beams with constant or non-constant cross sections published by Rubin [Rub93]

Parameters
  • x (np.ndarray, optional) -- positions where to calculate the bj values - when empty then bj at position l, defaults to np.array([])

  • n (int, optional) -- bj with j from 0 to n (b0, b1, ..., bn) - defaults to 5

  • t (int, optional) -- number of terms t in recursion formular, defaults to 50

Returns

bj functions

Return type

np.ndarray

for beams with constant crossections [Rub93]:

(3)\[b_j = \sum_{i=0}^{\infty}\beta_i \qquad \beta_i = \dfrac{K x^2}{(j+2i)(j+2i-1)}\beta_{i-1} \qquad \text{with}\qquad i=1,~2,~3,~...,~t\]
import stanpy as stp

s = {"EI":32000, "GA":20000, "N":-1000}
bj = stp.bj(x=[-1,0,2,3],**s)
print(bj)
[[0.      0.      0.      0.      0.      0.     ]
 [1.      0.      0.      0.      0.      0.     ]
 [0.93493 1.95643 1.97817 1.32459 0.66375 0.26583]
 [0.85559 2.85415 4.39007 4.43386 3.34187 2.01078]]

for beams with non-constant crossections [Rub93]:

(4)\[\begin{split}\beta_{0,0} &= 1,~\beta_{0,1}~\text{to}~\beta_{0,p-1}=0\\[1em] t &= 1,2,3...:~s=j+t,~e=\dfrac{x}{s-n}\\[1em] r &= 1~\text{to}~ p:\beta_{t,r}=e~\beta_{t-1, r-1}\\[1em] \beta_{t,0} &= K_i\beta_{t,2}-\sum_{r=1}^{p}\dfrac{(s-2)!}{(s-2-r)!}\beta_{t,r}\eta_r \qquad\text{with}\qquad \dfrac{EI}{EI_i}=\eta=1+\sum_{r=1}^{p}x^r\eta_r\\[1em] b_j^{(n)} &= a_{j-n} \sum_{i=0}^{\infty}\beta_{t,0}\end{split}\]

Note

for the \(\eta_r\) coefficients in (4) see stanpy.cross_section.cs()

import sympy as sym
import stanpy as stp

x = sym.Symbol("x")
E = 32000  # kN/m2
b = 0.2  # m
ha = hb = 0.3  # m
hc = 0.4  # m
l = 4  # m
hx = ha + (hc - hb) / l * x

cs_props = stp.cs(b=b, h=ha)
s = {"E": E, "cs": cs_props, "l": l}
bj = stp.bj(x=[-1,0,2,3,4],**s)
print(bj)
[[ 0.       0.       0.       0.       0.       0.     ]
 [ 1.       0.       0.       0.       0.       0.     ]
 [ 1.       2.       2.       1.33333  0.66667  0.26667]
 [ 1.       3.       4.5      4.5      3.375    2.025  ]
 [ 1.       4.       8.      10.66667 10.66667  8.53333]]

tr(x)

Top-level package for stanpy.

stanpy.tr(*args, x: numpy.ndarray = array([], dtype=float64))[source]

calculates the transferralation for one or more input dictionarys

Parameters

x (np.ndarray, optional) -- _description_, defaults to np.array([])

Returns

_description_

Return type

_type_

import stanpy as stp

l = 5 #m
s = {"EI":32000, "GA":20000, "l":l, "q":2}
Fik = stp.tr(s, x=[0,l/2,l])
print(Fik)
[[[ 1.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00]
  [ 0.00000e+00  1.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00]
  [ 0.00000e+00  0.00000e+00  1.00000e+00  0.00000e+00  0.00000e+00]
  [ 0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00  0.00000e+00]
  [ 0.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00]]

 [[ 1.00000e+00  2.50000e+00 -9.76563e-05  4.36198e-05 -2.10775e-04]
  [ 0.00000e+00  1.00000e+00 -7.81250e-05 -9.76563e-05  1.62760e-04]
  [ 0.00000e+00  0.00000e+00  1.00000e+00  2.50000e+00 -6.25000e+00]
  [ 0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00 -5.00000e+00]
  [ 0.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00]]

 [[ 1.00000e+00  5.00000e+00 -3.90625e-04 -4.01042e-04  3.77604e-04]
  [ 0.00000e+00  1.00000e+00 -1.56250e-04 -3.90625e-04  1.30208e-03]
  [ 0.00000e+00  0.00000e+00  1.00000e+00  5.00000e+00 -2.50000e+01]
  [ 0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00 -1.00000e+01]
  [ 0.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00]]]
import stanpy as stp

l = 5 #m
s1 = {"EI":32000, "GA":20000, "l":l, "q":2}
s2 = {"EI":32000, "GA":20000, "l":l, "q":2}
s = [s1,s2]

Fik = stp.tr(*s, x=np.linspace(0, 2*l, 3))
print(Fik)
[[[ 1.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00]
  [ 0.00000e+00  1.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00]
  [ 0.00000e+00  0.00000e+00  1.00000e+00  0.00000e+00  0.00000e+00]
  [ 0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00  0.00000e+00]
  [ 0.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00]]

 [[ 1.00000e+00  5.00000e+00 -3.90625e-04 -4.01042e-04  3.77604e-04]
  [ 0.00000e+00  1.00000e+00 -1.56250e-04 -3.90625e-04  1.30208e-03]
  [ 0.00000e+00  0.00000e+00  1.00000e+00  5.00000e+00 -2.50000e+01]
  [ 0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00 -1.00000e+01]
  [ 0.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00]]

 [[ 1.00000e+00  1.00000e+01 -1.56250e-03 -4.70833e-03  2.10417e-02]
  [ 0.00000e+00  1.00000e+00 -3.12500e-04 -1.56250e-03  1.04167e-02]
  [ 0.00000e+00  0.00000e+00  1.00000e+00  1.00000e+01 -1.00000e+02]
  [ 0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00 -2.00000e+01]
  [ 0.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00]]]

transfer relations constant cross-section

load integrals Q (shear-force-representation)

Top-level package for stanpy.

stanpy.calc_load_integral_Q(x: numpy.ndarray = array([], dtype=float64), return_all=False, **s)[source]

calculates the load integrals in shear-force-representation from Rubin [Rub93]

Parameters
  • x (np.ndarray, optional) -- positions where to calculate the load integrals - when empty then x is set to length l, defaults to np.array([])

  • return_all (bool, optional) -- return aj, bj, masks for faster computation, defaults to False

  • **s -- see below

Returns

load integrals

Return type

np.ndarray

Keyword Arguments
  • EI or E and I (float) -- Bending stiffness

  • GA or G and A (float), defaults to np.inf -- Shear stiffness

  • N (float) , defaults to 0 -- normal Force (compression - negative)

  • q (float) , defaults to 0 -- load distribution see (9), multiple inputs possible

  • w_0 (float) , defaults to 0 -- initial deformation see (10), (9)

  • psi_0 (float) , defaults to 0 -- initial deformation see (10), (9)

  • m_0 (sympy.polynomial) , defaults to 0 -- active moment dist \(m\)

  • kappa_0 (sympy.polynomial) , defaults to 0 -- active curvature polynomial \(\kappa^e\), multiple inputs possible

  • q_d (tuple) , defaults to (0,0) -- \(q_\Delta\) load distribution (magnitude, position0, position1), multiple inputs possible

  • P (tuple) , defaults to (0,0) -- \(P\) pointload (magnitude, position), multiple inputs possible

  • M_e (tuple) , defaults to (0,0) -- \(M^e\) active Moment (magnitude, position), multiple inputs possible

  • phi_e (tuple) , defaults to (0,0) -- \(\varphi^e\) active angle of rotation (magnitude, position), multiple inputs possible

  • W_e (tuple) , defaults to (0,0) -- \(W^e\) active displacement (magnitude, position), multiple inputs possible

import stanpy as stp

l = 5 #m
s = {"EI":32000, "GA":20000, "l":l, "q":2}
load_integral_Q = stp.calc_load_integral_Q(x=[0,l/2,l],**s)
print(load_integral_Q)
[[ 0.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00]
 [-2.10775e-04  1.62760e-04 -6.25000e+00 -5.00000e+00  1.00000e+00]
 [ 3.77604e-04  1.30208e-03 -2.50000e+01 -1.00000e+01  1.00000e+00]]
(5)\[\begin{split}w^Q &= \gamma\sum_0\left(\dfrac{b_{j+4}}{EI}-\dfrac{b_{j+2}}{G\tilde{A}}\right)~\overline{q_j}-\dfrac{\gamma}{EI}\sum_{0}b_{j+3}m_j-\gamma\sum_{0}b_{j+2}\kappa_j^e\\[1em] &+ \gamma\left(\dfrac{b_4^*-b_4^{**}}{EI}-\dfrac{b_2^*-b_2^{**}}{G\tilde{A}}\right)q_{\Delta}+\gamma\left(\dfrac{b_3^*}{EI}-\dfrac{b_1^*}{G\tilde{A}}\right)P-\gamma\dfrac{b_2^*}{EI}-\gamma b_1^*\phi^e+b_0^*W^e\end{split}\]
(6)\[\begin{split}\varphi^Q &= \dfrac{\gamma}{EI}\sum_0b_{j+3}~\overline{q_j}-\dfrac{1}{EI}\sum b_{j+2}m_j-\sum_0 b_{j+1}\kappa_j^e\\[1em] &+\gamma\dfrac{b_3^*-b_3^{**}}{EI}q_{\Delta}+\gamma\dfrac{b_2^*}{EI}P-\dfrac{b_1^*}{EI}M^e-b_0^*\phi^e+\dfrac{K}{\gamma}b_1^*W^e\end{split}\]
(7)\[\begin{split}M^Q &= -\gamma\sum_0 b_{j+2}~\overline{q_j}+\sum_0 b_{j+1} m_j - \gamma N \sum_0 b_{j+2} \kappa_j^e\\[1em] &-\gamma\left(b_2^*-b_2^{**}\right)q_{\Delta}-\gamma b_1^*P+b_0^*M^e-\gamma N b_1^*\phi^e + Nb_0^*W^e\end{split}\]
(8)\[\begin{split}Q^Q &= -\gamma\sum_0 b_{j+1}~\overline{q_j}+K\sum_0 b_{j+2}m_j+\gamma N \sum_0 b_{j+1}\kappa_j^e\\[1em] &-\gamma\left(b_1^*-b_1^{**}\right)q_{\Delta}-\gamma b_0^*P+K b_1^*M^e-\gamma N b_0^*\phi^e+N K b_1^* W^e\end{split}\]
(9)\[\overline{q_j} = q_j-N w_{j+2}^v\]
(10)\[w_1^V = \psi^0+4\dfrac{w^0}{l} \qquad w_2^V = -8\dfrac{w^0}{l^2}\]

field matrix Q (shear-force-representation)

Top-level package for stanpy.

stanpy.tr_Q(x: numpy.ndarray = array([], dtype=float64), **s)[source]

calculates the field matrix in shear-force-representation from Rubin [Rub93] see (21)

Parameters
  • x (np.ndarray, optional) -- positions where to calculate the field matrix - when empty then x is set to length l, defaults to np.array([])

  • **s -- see below

Returns

field matrix in shear-force-representation

Return type

np.ndarray

Keyword Arguments
  • EI or E and I (float) -- Bending stiffness

  • GA or G and A (float), defaults to np.inf -- Shear stiffness

  • N (float) , defaults to 0 -- normal Force (compression - negative)

  • q (float) , defaults to 0 -- load distribution see (9), multiple inputs possible

  • w_0 (float) , defaults to 0 -- initial deformation see (10), (9)

  • psi_0 (float) , defaults to 0 -- initial deformation see (10), (9)

  • m_0 (sympy.polynomial) , defaults to 0 -- active moment dist \(m\)

  • kappa_0 (sympy.polynomial) , defaults to 0 -- active curvature polynomial \(\kappa^e\), multiple inputs possible

  • q_d (tuple) , defaults to (0,0) -- \(q_\Delta\) load distribution (magnitude, position0, position1), multiple inputs possible

  • P (tuple) , defaults to (0,0) -- \(P\) pointload (magnitude, position), multiple inputs possible

  • M_e (tuple) , defaults to (0,0) -- \(M^e\) active Moment (magnitude, position), multiple inputs possible

  • phi_e (tuple) , defaults to (0,0) -- \(\varphi^e\) active angle of rotation (magnitude, position), multiple inputs possible

  • W_e (tuple) , defaults to (0,0) -- \(W^e\) active displacement (magnitude, position), multiple inputs possible

import stanpy as stp

l = 5 #m
s = {"EI":32000, "GA":20000, "l":l, "q":2}
Fik = stp.tr_Q(**s)
print(Fik)
[[ 1.00000e+00  5.00000e+00 -3.90625e-04 -9.01042e-04  3.77604e-04]
 [ 0.00000e+00  1.00000e+00 -3.90625e-04 -9.01042e-04  1.30208e-03]
 [ 0.00000e+00  0.00000e+00  1.00000e+00  5.00000e+00 -2.50000e+01]
 [ 0.00000e+00  0.00000e+00 -0.00000e+00  1.00000e+00 -1.00000e+01]
 [ 0.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00]]
(11)\[\begin{split}F_{ik}^Q = \begin{bmatrix} 1& x & -\gamma\dfrac{b_2}{EI}&-\gamma\left(\dfrac{b_3}{EI}-\dfrac{b_1}{G\tilde{A}}\right)&w^Q\\ 0& 1 & -\dfrac{b_1}{EI}&-\dfrac{b_2}{EI}&\varphi^Q\\ 0& 0 & b_0& b_1&M^Q\\ 0& 0 & K b_1& b_0&Q^Q\\ 0& 0 & 0& 0&1 \end{bmatrix}\end{split}\]

load integrals R (transverse-force-representation)

Top-level package for stanpy.

stanpy.calc_load_integral_R(x: numpy.ndarray = array([], dtype=float64), return_all=False, wv_j: Optional[object] = None, **s)[source]

calculates the load integrals in transversal-force-representation from Rubin [Rub93]

Parameters
  • x (np.ndarray, optional) -- positions where to calculate the load integrals - when empty then x is set to length l, defaults to np.array([])

  • return_all (bool, optional) -- return aj, bj, masks for faster computation, defaults to False

  • **s -- see below

Returns

load integrals in transversal-force-representation

Return type

np.ndarray

Keyword Arguments
  • EI or E and I (float) -- Bending stiffness

  • GA or G and A (float), defaults to np.inf -- Shear stiffness

  • N (float) , defaults to 0 -- normal Force (compression - negative)

  • q (float) , defaults to 0 -- load distribution see (9), multiple inputs possible

  • w_0 (float) , defaults to 0 -- initial deformation see (10), (9)

  • psi_0 (float) , defaults to 0 -- initial deformation see (10), (9)

  • m_0 (sympy.polynomial) , defaults to 0 -- active moment dist \(m\)

  • kappa_0 (sympy.polynomial) , defaults to 0 -- active curvature polynomial \(\kappa^e\), multiple inputs possible

  • q_d (tuple) , defaults to (0,0) -- \(q_\Delta\) load distribution (magnitude, position0, position1), multiple inputs possible

  • P (tuple) , defaults to (0,0) -- \(P\) pointload (magnitude, position), multiple inputs possible

  • M_e (tuple) , defaults to (0,0) -- \(M^e\) active Moment (magnitude, position), multiple inputs possible

  • phi_e (tuple) , defaults to (0,0) -- \(\varphi^e\) active angle of rotation (magnitude, position), multiple inputs possible

  • W_e (tuple) , defaults to (0,0) -- \(W^e\) active displacement (magnitude, position), multiple inputs possible

import stanpy as stp

l = 5 #m
s = {"EI":32000, "GA":20000, "l":l, "q":2, "N":-1000}
load_integral_R = stp.calc_load_integral_R(x=[0,l/2,l],**s)
print(load_integral_R)
[[ 0.00000e+00  0.00000e+00  0.00000e+00 -0.00000e+00  1.00000e+00]
 [-2.17002e-04  1.69574e-04 -6.46700e+00 -5.00000e+00  1.00000e+00]
 [ 4.38933e-04  1.31535e-03 -2.45611e+01 -1.00000e+01  1.00000e+00]]
(12)\[w^R = w^Q-\gamma\left(\dfrac{b_3}{EI}-\dfrac{b_1}{G\tilde{A}}\right)N w_1^V\]
(13)\[\varphi^R = \varphi^Q-\gamma\dfrac{b_2}{EI} N w_1^V\]
(14)\[M^R = M^Q+\gamma b_1 N w_1^V\]
(15)\[R^R = -\sum_0 a_{j+1}q_j-(a_1^*-a_1^{**})q_{\Delta}-a_0^*P\]

field matrix R (transverse-force-representation)

Top-level package for stanpy.

stanpy.tr_R(x: numpy.ndarray = array([], dtype=float64), **s)[source]

calculates the field matrix in transverse-force-representation from Rubin [Rub93] see (26)

Parameters
  • x (np.ndarray, optional) -- positions where to calculate the field matrix - when empty then x is set to length l, defaults to np.array([])

  • **s -- see below

Returns

field matrix in transverse-force-representation

Return type

np.ndarray

Keyword Arguments
  • EI or E and I (float) -- Bending stiffness

  • GA or G and A (float), defaults to np.inf -- Shear stiffness

  • N (float) , defaults to 0 -- normal Force (compression - negative)

  • q (float) , defaults to 0 -- load distribution see (9), multiple inputs possible

  • w_0 (float) , defaults to 0 -- initial deformation see (10), (9)

  • psi_0 (float) , defaults to 0 -- initial deformation see (10), (9)

  • m_0 (sympy.polynomial) , defaults to 0 -- active moment dist \(m\)

  • kappa_0 (sympy.polynomial) , defaults to 0 -- active curvature polynomial \(\kappa^e\), multiple inputs possible

  • q_d (tuple) , defaults to (0,0) -- \(q_\Delta\) load distribution (magnitude, position0, position1), multiple inputs possible

  • P (tuple) , defaults to (0,0) -- \(P\) pointload (magnitude, position), multiple inputs possible

  • M_e (tuple) , defaults to (0,0) -- \(M^e\) active Moment (magnitude, position), multiple inputs possible

  • phi_e (tuple) , defaults to (0,0) -- \(\varphi^e\) active angle of rotation (magnitude, position), multiple inputs possible

  • W_e (tuple) , defaults to (0,0) -- \(W^e\) active displacement (magnitude, position), multiple inputs possible

import stanpy as stp

l = 5 #m
s = {"EI":32000, "GA":20000, "l":l, "q":2, "N":-1000}
Fik = stp.tr_R(**s)
print(Fik)
[[ 1.00000e+00  4.57087e+00 -3.83767e-04 -4.29130e-04  4.38933e-04]
 [ 0.00000e+00  6.16233e-01 -1.35698e-04 -3.83767e-04  1.31535e-03]
 [ 0.00000e+00  4.57087e+03  6.16233e-01  4.57087e+00 -2.45611e+01]
 [ 0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00 -1.00000e+01]
 [ 0.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00]]
(16)\[\begin{split}F_{ik}^R = \begin{bmatrix} 1&\gamma b_1 & -\gamma\dfrac{b_2}{EI}&-\gamma\left(\dfrac{b_3}{EI}-\dfrac{b_1}{G\tilde{A}}\right)&w^R\\ 0& b_0 & -\dfrac{b_1}{EI}&-\gamma\dfrac{b_2}{EI}&\varphi^R\\ 0& \gamma N b_1 & b_0& \gamma b_1&M^R\\ 0& 0 & 0& 1&R^R\\ 0& 0 & 0& 0&1 \end{bmatrix}\end{split}\]

transfer relations non constant cross-section

load integrals Q (shear-force-representation)

Top-level package for stanpy.

stanpy.calc_load_integral_Q_poly(x: numpy.ndarray = array([], dtype=float64), bj=array([], dtype=float64), aj=array([], dtype=float64), eta=array([], dtype=float64), gamma=array([], dtype=float64), return_bj: bool = False, return_aj: bool = False, return_all: bool = False, wv_j=None, load_j_arrays=None, **s)[source]

_summary_

Parameters
  • x (np.ndarray, optional) -- _description_, defaults to np.array([])

  • bj (_type_, optional) -- _description_, defaults to np.array([])

  • aj (_type_, optional) -- _description_, defaults to np.array([])

  • eta (_type_, optional) -- _description_, defaults to np.array([])

  • gamma (_type_, optional) -- _description_, defaults to np.array([])

  • return_bj (bool, optional) -- _description_, defaults to False

  • return_aj (bool, optional) -- _description_, defaults to False

  • return_all (bool, optional) -- _description_, defaults to False

  • wv_j (_type_, optional) -- _description_, defaults to None

  • load_j_arrays (_type_, optional) -- _description_, defaults to None

Returns

_description_

Return type

_type_

import stanpy as stp

x = sym.Symbol("x")
E = 3*10**7  # kN/m2
b = 0.2  # m
hi = 0.3  # m
hk = 0.4  # m
l = 3  # m
hx = hi + (hk - hi) / l * x

cs_props = stp.cs(b=b, h=hx)
s = {"E": E, "cs": cs_props, "l": l, "q":10}
load_integral_Q = stp.calc_load_integral_Q_poly(x=[0,l/2,l],**s)

print(load_integral_Q)
[[ 0.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00]
 [ 1.18053e-04  2.94153e-04 -1.12500e+01 -1.50000e+01  1.00000e+00]
 [ 1.47479e-03  1.73666e-03 -4.50000e+01 -3.00000e+01  1.00000e+00]]

(17)\[\begin{split}w^Q &= \dfrac{1}{EI_i}\sum_0 b_{j+4}~\overline{q}_j-\dfrac{1}{EI_i}\sum_0 b_{j+3}~m_j-\kappa_i^e\sum_{r=0}^{p_\gamma}b_{r+2}~\gamma_r\\ &+\left(\dfrac{b_4^*}{EI^*}-\dfrac{b_4^{**}}{EI^{**}}\right)q_\Delta+\dfrac{b_3^*}{EI^*}P-\dfrac{b_2^*}{EI^*}M^e-b_1^*\phi^e+b_0^*W^e\end{split}\]
(18)\[\begin{split}\varphi^Q &= \dfrac{1}{EI_i}\sum_0 b'_{j+4}~\overline{q}_j-\dfrac{1}{EI_i}\sum_0 b'_{j+3}~m_j-\kappa_i^e\sum_{r=0}^{p_\gamma}b'_{r+2}~\gamma_r\\ &+\left(\dfrac{b_4^{'*}}{EI^*} -\dfrac{b_4^{'**}}{EI^{**}}\right)q_\Delta+\dfrac{b_3^{'*}}{EI^*}P-\dfrac{b_2^{'*}}{EI^*}M^e-b_1^{'*}\phi^e+b_0^{'*}W^e\end{split}\]
(19)\[M^Q = -\sum_0 a_{j+2}\overline{q}_j+\sum_0 a_{j+1}m_j-\left(a_2^*-a_2^{**}\right)q_\Delta-a_1^*P+a_0^*M^e-N w^Q\]
(20)\[Q^Q = -\sum_0 a_{j+1}\overline{q}_j-\left(a_1^*-a_1^{**}\right)q_\Delta-a_0^*P-N \varphi^Q\]

field matrix Q (shear-force-representation)

Top-level package for stanpy.

stanpy.tr_Q_poly(x: numpy.ndarray = array([], dtype=float64), eta: numpy.ndarray = array([], dtype=float64), gamma: numpy.ndarray = array([], dtype=float64), rotation_axis='y', **s)[source]

_summary_

Parameters
  • x (np.ndarray, optional) -- _description_, defaults to np.array([])

  • eta (np.ndarray, optional) -- _description_, defaults to np.array([])

  • gamma (np.ndarray, optional) -- _description_, defaults to np.array([])

  • rotation_axis (str, optional) -- _description_, defaults to "y"

Returns

_description_

Return type

_type_

import stanpy as stp

x = sym.Symbol("x")
E = 3*10**7  # kN/m2
b = 0.2  # m
hi = 0.3  # m
hk = 0.4  # m
l = 3  # m
hx = hi + (hk - hi) / l * x

cs_props = stp.cs(b=b, h=hx)
s = {"E": E, "cs": cs_props, "l": l, "q":10}

Fik = stp.tr_Q_poly(**s)
print(Fik)
[[ 1.00000e+00  3.00000e+00 -2.50000e-04 -2.15168e-04  1.47479e-03]
 [ 0.00000e+00  1.00000e+00 -1.45833e-04 -1.87500e-04  1.73666e-03]
 [ 0.00000e+00  0.00000e+00  1.00000e+00  3.00000e+00 -4.50000e+01]
 [ 0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00 -3.00000e+01]
 [ 0.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00]]
(21)\[\begin{split}F_{ik}^Q = \begin{bmatrix} 1& x & -\dfrac{b_2}{EI_i}&-\dfrac{b_3}{EI_i} & w^Q\\ 0& 1 & -\dfrac{b'_2}{EI_i}&-\dfrac{b'_3}{EI_i}& \varphi^Q\\ 0& 0 & b_0& b_1&M^Q\\ 0& 0 & K b'_0& b'_1&Q^Q\\ 0& 0 & 0& 0&1 \end{bmatrix}\end{split}\]

load integrals R (transverse-force-representation)

Top-level package for stanpy.

stanpy.calc_load_integral_R_poly(x: numpy.ndarray = array([], dtype=float64), eta: numpy.ndarray = array([], dtype=float64), gamma: numpy.ndarray = array([], dtype=float64), load_j_arrays=None, return_aj: bool = False, return_bj: bool = False, return_all: bool = False, wv_j: Optional[object] = None, **s)[source]

_summary_

Parameters
  • x (np.ndarray, optional) -- _description_, defaults to np.array([])

  • eta (np.ndarray, optional) -- _description_, defaults to np.array([])

  • gamma (np.ndarray, optional) -- _description_, defaults to np.array([])

  • load_j_arrays (_type_, optional) -- _description_, defaults to None

  • return_aj (bool, optional) -- _description_, defaults to False

  • return_bj (bool, optional) -- _description_, defaults to False

  • return_all (bool, optional) -- _description_, defaults to False

  • wv_j (object, optional) -- _description_, defaults to None

Returns

_description_

Return type

_type_

import stanpy as stp

x = sym.Symbol("x")
E = 3*10**7  # kN/m2
b = 0.2  # m
hi = 0.3  # m
hk = 0.4  # m
l = 3  # m
hx = hi + (hk - hi) / l * x

cs_props = stp.cs(b=b, h=hx)
s = {"E": E, "cs": cs_props, "l": l, "q":10, "N":-1000}
load_integral_R = stp.calc_load_integral_R_poly(x=[0,l/2,l],**s)

print(load_integral_R)
[[ 0.00000e+00  0.00000e+00  0.00000e+00 -0.00000e+00  1.00000e+00]
 [ 1.17545e-04  2.92291e-04 -1.11325e+01 -1.50000e+01  1.00000e+00]
 [ 1.45456e-03  1.70226e-03 -4.35454e+01 -3.00000e+01  1.00000e+00]]
(22)\[w^R = w^Q + \dfrac{b_3}{EI_i}N w_1^V\]
(23)\[\varphi^R = \varphi^Q + \dfrac{b'_3}{EI_i} N w_1^V\]
(24)\[M^R = M^Q - b_1 N w_1^V\]
(25)\[R^R = -\sum_0 a_{j+1}q_j-\left(a_1^*-a_1^{**}\right)q_\Delta-a_0^* P\]

field matrix R (transverse-force-representation)

Top-level package for stanpy.

stanpy.tr_R_poly(x: numpy.ndarray = array([], dtype=float64), eta: numpy.ndarray = array([], dtype=float64), gamma: numpy.ndarray = array([], dtype=float64), **s)[source]

_summary_

Parameters
  • x (np.ndarray, optional) -- _description_, defaults to np.array([])

  • eta (np.ndarray, optional) -- _description_, defaults to np.array([])

  • gamma (np.ndarray, optional) -- _description_, defaults to np.array([])

Returns

_description_

Return type

_type_

import stanpy as stp

x = sym.Symbol("x")
E = 3*10**7  # kN/m2
b = 0.2  # m
hi = 0.3  # m
hk = 0.4  # m
l = 3  # m
hx = hi + (hk - hi) / l * x

cs_props = stp.cs(b=b, h=hx)
s = {"E": E, "cs": cs_props, "l": l, "q":10, "N":-1000}

Fik = stp.tr_R_poly(**s)
print(Fik)
[[ 1.00000e+00  2.78942e+00 -2.40910e-04 -2.10583e-04  1.45456e-03]
 [ 0.00000e+00  8.18939e-01 -1.35638e-04 -1.81061e-04  1.70226e-03]
 [ 0.00000e+00  2.78942e+03  7.59090e-01  2.78942e+00 -4.35454e+01]
 [ 0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00 -3.00000e+01]
 [ 0.00000e+00  0.00000e+00  0.00000e+00  0.00000e+00  1.00000e+00]]
(26)\[\begin{split}F_{ik}^R = \begin{bmatrix} 1 & b_1 & -\dfrac{b_2}{EI_i} &-\dfrac{b_3}{EI_i} &w^Q\\ 0 & b'_1 & -\dfrac{b'_2}{EI_i} &-\dfrac{b'_3}{EI_i}&\varphi^Q\\ 0 & - N b_1 & b_0 & b_1 & M^Q\\ 0 & 0 & 0 & 1 & R^Q\\ 0 & 0 & 0 & 0 & 1 \end{bmatrix}\end{split}\]

Citations

Rub93(1,2,3,4,5,6,7,8)

Helmut Rubin. Stahlbau Handbuch Band 1 Teil A. Stahlbau_Verlagsgesellschaft mbH, 1993.