stanpy.transfer_relation — stanpy 0.2.2 documentation

# stanpy.transfer_relation

## utils

### gamma_K

Top-level package for stanpy.

stanpy.gamma_K(**s)

  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)

  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)

  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))

  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)

  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)

  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)

  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)

  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)

  _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)

  _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)

  _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)

  _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.

previous

input

next

stanpy.reduction_method