基于Python的CAE后处理二次开发-ANSYS篇
Anterior Cruciate Ligament (ACL) 前交叉韧带仿真分析
背景:运动和汽车事故是韧带损伤的重要原因,前交叉韧带(ACL)的损伤是最常见的韧带损伤。在将人的膝盖关节固定在一起的许多韧带中,ACL尤为重要,因为它可以保持膝盖的稳定性,并通过限制关节运动来帮助防止对膝盖的伤害。ACL主要由连接股骨和胫骨的密集堆积的胶原纤维组成。ACL位于膝盖关节内部,如下图所示:
问题描述:由于较大的变形和旋转,ACL表现出高度的非线性和各向异性,并表现出明显的应变率相关性。各向异性行为是由排列在柔软材料基质中的胶原纤维族引起的。韧带是粘弹性的,因此表现出与时间有关和与载荷历史有关的机械性能。韧带的粘弹性行为具有临床意义,因为它们有助于防止韧带的疲劳衰竭。
有限元模型:ACL使用SOLID187单元进行网格画分。股骨使用刚性面的。在股骨表面和ACL之间定义了标准接触(KEYOPT(12)= 0)。
材料模型:使用各向异性超弹性材料模型用于ACL仿真。各向异性超弹性是一种基于势的函数,具有用于定义体积部分,等容部分和材料方向的参数。各向异性超弹性的应变能势由下式给出:
各向异性超弹材料模型常数:
ANSYS求解文件材料模型参数化:
边界条件和载荷:ACL模型的胫骨(底部)侧保持固定,并约束所有自由度。膝关节可弯曲,伸展和旋转。因此,分析考察了ACL在单轴弯曲,拉伸和旋转下的行为这三个工况。
工况二:弯曲
在最大应力处容易发生损伤撕裂。
工况三:旋转
Anterior Cruciate Ligament (ACL) 前交叉韧带参数优化
# -*- coding: utf-8 -*-
"""
Created on Fri Mar 12 09:38:40 2021
@author: Ansyent
"""
import pyansys as pa
import numpy as np
import matplotlib.pyplot as plt
rst = pa.read_binary('F:/06_SoftWare_Temp/31_Python_CAE_Temp/python-ansys/ansys_case/acl_tension.rst')
def VonMises(s):
stressmatrix = np.array([[s[0],s[3],s[5]],[-s[3],s[1],s[4]],[-s[5],-s[4],s[2]]])
ps = np.linalg.eig(stressmatrix)[0]
misesstress = (((ps[0]-ps[1])**2 + (ps[1]-ps[2])**2 + (ps[2]-ps[0])**2)/2)**0.5
return misesstress
这里定义了一个求米塞斯应力强度的函数,因为通过Python直接读取的rst结果中只有基础解,即节点的6分应力分量。如果需要考察主应力、等效应力强度等需要对基础解进行计算即可。
numresults = rst.n_results
stresslist = []
strainlist = []
stresslist1 = []
nnum, stress = rst.nodal_stress(-1)
for i in range(len(nnum)):
if np.isnan(stress[i][0]):
stresslist1.append(0)
else:
stresslist1.append(VonMises(stress[i]))
maxnodeid = stresslist1.index(max(stresslist1))
for i in range(numresults):
stre = VonMises(rst.nodal_stress(i)[1][maxnodeid])
stra = rst.nodal_elastic_strain(i)[1][maxnodeid][6]
stresslist.append(stre)
strainlist.append(stra)
这里将应力应变写到stresslist和strainlist列表中。
width,height=10,7
plt.rcParams['figure.figsize'] = width, height
plt.plot(strainlist,stresslist,'r',label='simulation-stress',marker='o')
plt.title("Stress-Strain")
plt.xlabel("Strain[-]")
plt.ylabel("Stress[Mpa]")
plt.legend()
plt.show()
在spyder中运行的效果,优化联合时后台运行即可。
注:
1.ANSYS批处理提交命令语法为:“ANSYS_Install_Path\ANSYSxxx.exe” -np 2 -b -i acl_tension.dat -o acl_tension.out。
2.读取ANSYS输入文件、结果文件需要安装pyansys库。库功能介绍:
*Interactively control an instance of ANSYS v14.5 + using Python on Linux, >=17.0 on Windows.
*Extract data directly from binary ANSYS v14.5+ files and to display or animate them.
*Rapidly read in binary result (.rst), binary mass and stiffness (.full), and ASCII block archive (.cdb) files.
3.文中云图不是PS的,均为在后处理软件中完成的。