Source code for eval_tl_forms

"""
Operators present in the FE discretization of hyperelastic terms in the total
Lagrangian formulation.
"""
from __future__ import print_function
from __future__ import absolute_import
import sympy as s

[docs]def main(): u1, u2, u3 = s.symbols(['u1', 'u2', 'u3'], commutative=False) u = s.Matrix([[u1], [u2], [u3]]) g1, g2, g3 = s.symbols(['g1', 'g2', 'g3'], commutative=False) gc = s.Matrix([[g1], [g2], [g3]]) aux = s.symbols(['u11', 'u12', 'u13', 'u21', 'u22', 'u23', 'u31', 'u32', 'u33'], commutative=False) u11, u12, u13, u21, u22, u23, u31, u32, u33 = aux aux = s.symbols(['f11', 'f12', 'f13', 'f21', 'f22', 'f23', 'f31', 'f32', 'f33'], commutative=False) f11, f12, f13, f21, f22, f23, f31, f32, f33 = aux print(gc) ## z = s.zeros((3, 1)) ## g = s.Matrix([[gc, z, z], ## [z, gc, z], ## [z, z, gc]]) g = s.Matrix([[g1, 0, 0], [g2, 0, 0], [g3, 0, 0], [0, g1, 0], [0, g2, 0], [0, g3, 0], [0, 0, g1], [0, 0, g2], [0, 0, g3]]) print(g) print(g * u) h = s.Matrix([[1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 1, 0, 1, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 1, 0, 1, 0]]) print(h) print('linear part:') print(h * g * u) print(h * g) a = s.Matrix([[u11, 0, 0, u21, 0, 0, u31, 0, 0], [0, u12, 0, 0, u22, 0, 0, u32, 0], [0, 0, u13, 0, 0, u23, 0, 0, u33], [u12, u11, 0, u22, u21, 0, u32, u31, 0], [u13, 0, u11, u23, 0, u21, u33, 0, u31], [0, u13, u12, 0, u23, u22, 0, u33, u32]]) print(a) print((h + a) * g * u) b = (h + a) * g s.pprint(b) a = s.Matrix([[u11+1, 0, 0, u21, 0, 0, u31, 0, 0], [0, u12, 0, 0, u22+1, 0, 0, u32, 0], [0, 0, u13, 0, 0, u23, 0, 0, u33+1], [u12, u11+1, 0, u22+1, u21, 0, u32, u31, 0], [u13, 0, u11+1, u23, 0, u21, u33+1, 0, u31], [0, u13, u12, 0, u23, u22+1, 0, u33+1, u32]]) print(a) print(a * g * u) b2 = a * g s.pprint(b2) print(b == b2) u11p, u22p, u33p = s.symbols(['u11p', 'u22p', 'u33p'], commutative=False) a = s.Matrix([[u11p, 0, 0, u21, 0, 0, u31, 0, 0], [0, u12, 0, 0, u22p, 0, 0, u32, 0], [0, 0, u13, 0, 0, u23, 0, 0, u33p], [u12, u11p, 0, u22p, u21, 0, u32, u31, 0], [u13, 0, u11p, u23, 0, u21, u33p, 0, u31], [0, u13, u12, 0, u23, u22p, 0, u33p, u32]]) print(a) print(a * g * u) b = a * g s.pprint(b)
if __name__ == '__main__': main()