Esempio n. 1
0
def test_print_as_full():
    xvar = sympy.var('xvar')
    yvar = sympy.var('yvar')
    res1 = '''
# m
# m_num=2
m[0, 0] += 1
m[0, 1] += 2*xvar + (yvar*yvar*yvar)
'''
    res1 = res1.strip()

    m = sympy.Matrix([[1, 2 * xvar + yvar**3]])
    assert mprint_as_dense(m, 'm') == res1

    res2 = '''
# subs
# yvar = xvar
# m
# m_num=2
m[0, 0] += 1
m[0, 1] += (yvar*yvar*yvar) + 2*yvar
'''
    res2 = res2.strip()
    assert mprint_as_dense(m, 'm', subs={xvar: yvar}) == res2
Esempio n. 2
0
               le2 * Matrix([nx2 * su2, ny2 * sv2, ny2 * su2 + nx2 * sv2]) +
               le3 * Matrix([nx3 * su3, ny3 * sv3, ny3 * su3 + nx3 * sv3]) +
               le4 * Matrix([nx4 * su4, ny4 * sv4, ny4 * su4 + nx4 * sv4]))

# bending

Bb = 1 / Ac * (
    le1 * Matrix([nx1 * sphix1, ny1 * sphiy1, ny1 * sphix1 + nx1 * sphiy1]) +
    le2 * Matrix([nx2 * sphix2, ny2 * sphiy2, ny2 * sphix2 + nx2 * sphiy2]) +
    le3 * Matrix([nx3 * sphix3, ny3 * sphiy3, ny3 * sphix3 + nx3 * sphiy3]) +
    le4 * Matrix([nx4 * sphix4, ny4 * sphiy4, ny4 * sphix4 + nx4 * sphiy4]))

K = Ac * (Bm.transpose() * A * Bm + Bm.transpose() * B * Bb +
          Bb.transpose() * B * Bm + Bb.transpose() * D * Bb)

mprint_as_dense(K, 'k0', dofpernode=5)

# transverse shear terms

sympy.var('a1, b1, c1, d1, Ac')

Tria1N1 = 1 / (2 * Ac) * Matrix([[0, 0, b1 - d1, Ac, 0],
                                 [0, 0, c1 - a1, 0, Ac]])

Tria1N2 = 1 / (2 * Ac) * Matrix([[0, 0, d1, a1 * d1 / 2, b1 * d1 / 2],
                                 [0, 0, -c1, -a1 * c1 / 2, -b1 * c1 / 2]])

Tria1N3 = 1 / (2 * Ac) * Matrix([[0, 0, -b1, -b1 * c1 / 2, -b1 * d1 / 2],
                                 [0, 0, a1, a1 * c1 / 2, a1 * d1 / 2]])

Bs = Matrix([Tria1N1.T, Tria1N2.T, Tria1N3.T]).T
Esempio n. 3
0
               le2 * Matrix([nx2 * su2, ny2 * sv2, ny2 * su2 + nx2 * sv2]) +
               le3 * Matrix([nx3 * su3, ny3 * sv3, ny3 * su3 + nx3 * sv3]) +
               le4 * Matrix([nx4 * su4, ny4 * sv4, ny4 * su4 + nx4 * sv4]))

# bending

Bb = 1 / Ac * (
    le1 * Matrix([nx1 * sphix1, ny1 * sphiy1, ny1 * sphix1 + nx1 * sphiy1]) +
    le2 * Matrix([nx2 * sphix2, ny2 * sphiy2, ny2 * sphix2 + nx2 * sphiy2]) +
    le3 * Matrix([nx3 * sphix3, ny3 * sphiy3, ny3 * sphix3 + nx3 * sphiy3]) +
    le4 * Matrix([nx4 * sphix4, ny4 * sphiy4, ny4 * sphix4 + nx4 * sphiy4]))

K = Ac * (Bm.transpose() * A * Bm + Bm.transpose() * B * Bb +
          Bb.transpose() * B * Bm + Bb.transpose() * D * Bb)

mprint_as_dense(K, 'k0', dofpernode=5)

# transverse shear terms

sympy.var('a1, b1, c1, d1, Ac1')
sympy.var('a2, b2, c2, d2, Ac2')

# Tria1: mid1 -> node1 -> node2
# Tria2: node1 -> mid2 -> node2

#mid 1
Tria1Mid1 = 1 / (2 * Ac1) * Matrix([[0, 0, b1 - d1, Ac1, 0],
                                    [0, 0, c1 - a1, 0, Ac1]])

#node 1
Tria1N1 = 1 / (2 * Ac1) * Matrix([[0, 0, d1, a1 * d1 / 2, b1 * d1 / 2],
Esempio n. 4
0
# ceyy = v              # membrane
# cgxy = u + v          # membrane
# ckxx = phix           # bending
# ckyy = phiy           # bending
# ckxy = phix + phiy    # bending

# transverse shear treated differently, by discrete shear gap (DSG)
# cgxz = w,x + phix       # membrane transverse shear
# cgyz = w,y + phiy       # membrane transverse shear

# exx eyy gxy kxx kyy kxy gxz gyz (8 strain components)
# dof = 5 for FSDT (u, v, w, phix, phiy)
# Bm, Bb matrices are 8 strain components x (N x dof)

# MATRIX FORM - membrane

ZERO = Matrix([[0] * su1.shape[1]])
Bm = 1 / Ac * (le1 * Matrix([
    nx1 * su1, ny1 * sv1, ny1 * su1 + nx1 * sv1, ZERO, ZERO, ZERO, ZERO, ZERO
]) + le2 * Matrix([
    nx2 * su2, ny2 * sv2, ny2 * su2 + nx2 * sv2, ZERO, ZERO, ZERO, ZERO, ZERO
]) + le3 * Matrix([
    nx3 * su3, ny3 * sv3, ny3 * su3 + nx3 * sv3, ZERO, ZERO, ZERO, ZERO, ZERO
]) + le4 * Matrix([
    nx4 * su4, ny4 * sv4, ny4 * su4 + nx4 * sv4, ZERO, ZERO, ZERO, ZERO, ZERO
]))

K = Ac * Bm.transpose() * A * Bm

mprint_as_dense(sympy.simplify(K), 'k0', dofpernode=5)