• Games201-拉格朗日视角有限元


    概念

    Deformation 形变 and deformation gradients 形变梯度

    elastic 弹性

    Strain and stress

    Hyperelastic material model 超弹性模型

    线性有限元

    elastic 弹性的

    viscoelastic 粘性的

    elastoplastic 弹塑性的

    viscopplastic 粘塑性的

    有限元的教程

    链接:http://www.femdefo.org/

    mpm论文https://www.seas.upenn.edu/~cffjiang/research/mpmcourse/mpmcourse.pdf

    形变

    现在的材料位置和静止时的材料位置的变化

    deformation map:把静止位置映射到形变位置 描述形变,形变梯度也是十分重要的一个点

    按边形变的demo

    有限元方法弹性模拟,显式的 demo 有限元处理自碰撞难以处理

    弹性

    回复自己静止状态的性质,是很多材料的基础

    Hyperelasticity 超弹性

    Hyperelastic materials: materials whose stress–strain relationship is defined by a strain energy density function

    ψ = ψ(F)

    Intuitive understanding: ψ is a potential function that penalizes deformation.

    “Stress”: the material’s internal elastic forces. 应力

    “Strain”: just replace it with deformation gradients F for now 应变

    stress tensor 材料微元的施加的力,材料微元之间的相互作用

    可以看成一个3x3的矩阵

    有很多种stress tensor 几种tensor可以转化

    rest space 静止空间(对应的是形变以后的空间)

    traction 牵引力

    Young's modulus 杨氏模量E

    泊松比v 是正的,比较大,会接近不可压缩体积,橡皮筋中间越拉越细,也有材料有负的泊松比,3d打印会有负的泊松比,泊松比是0是表示橡皮筋中间不会随着拉长而变化,不会保持自己的体积

    一边回指定杨氏模量和泊松比,Bulk modulus一般是模拟可压缩液体时候用到

    常见的超弹性模型

    各项同性材质使用Neo-Hookean

    默认都是neo-hookean 如果形变很小会用Linear elasticity导出的一般都是线性方程,Linear elasticity的材料旋转有可能会出现旋转后体积变大而不受到任何物理惩罚的情况(势能不变)

    Fixed Corotated是对Linear elasticity的改进版本,为了解决旋转体积变大的问题

    FEM

    强行式在离散情况下描述物理系统不适用,逐点满足转化成方程的residual和test func的积分得到满足

    把空间分成很小的element ,单体,三角形,正方形,四面体,六面体

    PDE:偏微分方程式 (Partial differential equation)

    能量密度函数关于体积的积分积出来就是弹性势能

    Linear tetrahedral finite element

    线性三角元素的有限元

    形变梯度F是一个常量

    求弹性势能,力其实就是势能关于位置求导数 再乘上一个 负一

    B是两列的矩阵,一列是a_rest-c_rest 二列是b_rest-c_rest

    向量方程

    链式法则的求导吧

    势能关于顶点位置的导数再取一个负等于顶点受到的力,

    总的弹性势能等于所有的element弹性势能之和

    自动微分,非常重要,比起自己手动推公式,taichi可以通过定义势能然后可以自动求微分

    如果使用自动微分就只需要定义$ f_{t,i}=- frac{partial U } {part x_i}$,定义计算总的弹性能量的函数

    ti.Tape传入需要记录的能量变化,在每一次执行某个函数后记录一下能量微分

    隐式的有限元需要求二阶导数,非常复杂,自动微分不能求二阶导数

    求二阶导需要了解简化方法

  • 相关阅读:
    mybatis
    队列
    JDK中的Timer和TimerTask详解
    NIOGoodDemo
    24-C#笔记-异常处理
    23-C#笔记-正则表达式
    22-C#笔记-预编译指令
    21-C#笔记-名称空间
    20-C#笔记-接口
    19-C#笔记-多态性
  • 原文地址:https://www.cnblogs.com/FlyingZiming/p/14459037.html
Copyright © 2020-2023  润新知