Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Deriving the non-linear plate 3D kinematics

1Deriving the non-linear plate 3D kinematics

from sympy import Function, Symbol, sqrt
from sympy import init_printing, simplify

x = Symbol('x')
y = Symbol('y')
z = Symbol('z')
u = Function('u')(x,y,z)
v = Function('v')(x,y,z)
w = Function('w')(x,y,z)

NL = 1 # NOTE set to 1 for full nonlinear relations, 0 for linear relations

# Global coordinates
X1 = x
X2 = y
X3 = z

# Local coordinates
x1 = x
x2 = y
x3 = z

H1 = sqrt(X1.diff(x1)**2 + X2.diff(x1)**2 + X3.diff(x1)**2)
H2 = sqrt(X1.diff(x2)**2 + X2.diff(x2)**2 + X3.diff(x2)**2)
H3 = sqrt(X1.diff(x3)**2 + X2.diff(x3)**2 + X3.diff(x3)**2)
                
w1 = ((H1*w).diff(x2) - (H2*v).diff(x3))/(2*H2*H3)
w2 = ((H1*u).diff(x3) - (H3*w).diff(x1))/(2*H1*H3)
w3 = ((H2*v).diff(x1) - (H1*u).diff(x2))/(2*H1*H2)

e11 = u.diff(x1)/H1 + v*H1.diff(x2)/(H1*H2) + w*H1.diff(x3)/(H1*H3)
e22 = u*H2.diff(x1)/(H1*H2) + v.diff(x2)/H2 + w*H2.diff(x3)/(H2*H3)
e33 = u*H3.diff(x1)/(H1*H3) + v*H3.diff(x2)/(H2*H3) + w.diff(x3)/H3
e12 = H1*(u/H1).diff(x2)/H2 + H2*(v/H2).diff(x1)/H1
e13 = H1*(u/H1).diff(x3)/H3 + H3*(w/H3).diff(x1)/H1
e23 = H2*(v/H2).diff(x3)/H3 + H3*(w/H3).diff(x2)/H2

ep11 = ((e13/2 - w2)**2 + (e12/2 + w3)**2 + e11**2)/2*NL + e11
ep22 = ((e23/2 + w1)**2 + (e12/2 - w3)**2 + e22**2)/2*NL + e22
ep33 = ((e23/2 - w1)**2 + (e13/2 + w2)**2 + e33**2)/2*NL + e33
ep12 = ((e23/2 + w1)*(e13/2 - w2) + e11*(e12/2 - w3) + e22*(e12/2 + w3))*NL + e12
ep13 = (e33*(e13/2 - w2) + e11*(e13/2 + w2) + (e23/2 - w1)*(e12/2 + w3))*NL + e13
ep23 = (e22*(e23/2 - w1) + e33*(e23/2 + w1) + (e13/2 + w2)*(e12/2 - w3))*NL + e23

exx = ep11
eyy = ep22
ezz = ep33
gxy = ep12
gxz = ep13
gyz = ep23

for _ in [exx, eyy, gxy, gxz, gyz]:
    print(_)
Derivative(u(x, y, z), x)**2/2 + Derivative(u(x, y, z), x) + Derivative(v(x, y, z), x)**2/2 + Derivative(w(x, y, z), x)**2/2
Derivative(u(x, y, z), y)**2/2 + Derivative(v(x, y, z), y)**2/2 + Derivative(v(x, y, z), y) + Derivative(w(x, y, z), y)**2/2
Derivative(u(x, y, z), x)*Derivative(u(x, y, z), y) + Derivative(u(x, y, z), y) + Derivative(v(x, y, z), x)*Derivative(v(x, y, z), y) + Derivative(v(x, y, z), x) + Derivative(w(x, y, z), x)*Derivative(w(x, y, z), y)
Derivative(u(x, y, z), x)*Derivative(u(x, y, z), z) + Derivative(u(x, y, z), z) + Derivative(v(x, y, z), x)*Derivative(v(x, y, z), z) + Derivative(w(x, y, z), x)*Derivative(w(x, y, z), z) + Derivative(w(x, y, z), x)
Derivative(u(x, y, z), y)*Derivative(u(x, y, z), z) + Derivative(v(x, y, z), y)*Derivative(v(x, y, z), z) + Derivative(v(x, y, z), z) + Derivative(w(x, y, z), y)*Derivative(w(x, y, z), z) + Derivative(w(x, y, z), y)

Printing kinematic equations

The following order is printed next:

εxx\varepsilon_{xx} εyy\varepsilon_{yy} εzz\varepsilon_{zz} γxy\gamma_{xy} γxz\gamma_{xz} γyz\gamma_{yz}

init_printing()
simplify(exx)
Loading...
simplify(eyy)
Loading...
simplify(ezz)
Loading...
simplify(gxy)
Loading...
simplify(gxz)
Loading...
simplify(gyz)
Loading...