使用广义α方法(the generalized-α method)求解时变动力学问题

本文讲解如何使用使用广义α方法求解时变动力学问题,附带FEniCS代码

控制方程及其变分形式

首先我们定义我们需要求解的弹性力学方程
∇ ⋅ σ + ρ b = ρ u ¨ (1) \nabla\cdot\textcolor{red}{\sigma}+\rho b = \rho \ddot{u} \tag{1} σ+ρb=ρu¨(1)
其中 σ \sigma σ是应力张量, b b b是体元外力, ρ \rho ρ是密度, u ¨ \ddot{u} u¨表示位移 u u u对时间的 t t t的二阶导数,即加速度。在这个问题中,我们需要求解的是位移 u u u。应力张量 σ \sigma σ的表达式如下
σ = λ t r ( ϵ ) I + 2 μ ϵ ϵ = ∇ u + ( ∇ u ) T 2 λ = E ν ( 1 + ν ) ( 1 − 2 ν ) , μ = E 2 ( 1 + ν ) (2) \sigma = \lambda\mathrm{tr}(\epsilon)I+2\mu\epsilon \\ \epsilon=\frac{\nabla u+(\nabla u)^T}{2} \\ \lambda=\frac{E\nu}{(1+\nu)(1-2\nu)},\mu=\frac{E}{2(1+\nu)} \tag{2} σ=λtr(ϵ)I+2μϵϵ=2u+(u)Tλ=(1+ν)(12ν)Eν,μ=2(1+ν)E(2)
对于式(2)中的参数,杨氏模量 E = 1000 E=1000 E=1000,泊松比 ν = 0.3 \nu=0.3 ν=0.3,密度 ρ = 1 \rho=1 ρ=1 I I I是单位矩阵

上述的过程使用FEniCS实现如下

# 弹性参数
E  = 1000.0
nu = 0.3
mu    = Constant(E / (2.0*(1.0 + nu)))
lmbda = Constant(E*nu / ((1.0 + nu)*(1.0 - 2.0*nu)))
# 质量密度
rho = Constant(1.0)

# ε
def epsilon(u_):
    return sym(grad(u_))
# 应力张量σ
def sigma(u_):
    return 2.0*mu*epsilon(u_) + lmbda*tr(epsilon(u_))*Identity(len(u_))

对于式(1)我们写出其变分形式
∫ Ω ρ u ¨ ⋅ v d x − ∫ Ω ( ∇ ⋅ σ ) ⋅ v d x = ∫ Ω ρ b ⋅ v d x (3) \int_\Omega\rho\ddot{u}\cdot v dx-\int_\Omega\textcolor{red}{(\nabla\cdot\sigma)\cdot v} dx=\int_\Omega\rho b\cdot v dx \tag{3} Ωρu¨vdxΩ(σ)vdx=Ωρbvdx(3)
这里我们把待求量 u u u放左边,已知量放右边。对于式(3)中的部分我们进一步展开
( ∇ ⋅ σ ) ⋅ v = ∂ σ i j ∂ x i v j = ∂ ∂ x i ( σ i j v j ) − σ i j ∂ v j ∂ x i = ∇ ⋅ ( σ ⋅ v ) − σ ⋅ ∇ v (4) \begin{aligned} (\nabla\cdot\sigma)\cdot v&=\frac{\partial \sigma_{ij}}{\partial x_i}v_j\\ &=\frac{\partial}{\partial x_i}(\sigma_{ij}v_j)-\textcolor{red}{\sigma_{ij}\frac{\partial v_j}{\partial x_i}}\\ &=\nabla \cdot(\sigma\cdot v)-\sigma \cdot \nabla v \end{aligned} \tag{4} (σ)v=xiσijvj=xi(σijvj)σijxivj=(σv)σv(4)
式(4)中,最后一步的第二项可以写成
σ ⋅ ∇ v = σ ⋅ ( ∇ v ) T =

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值