ANSYS程序提供了近似的技术自动估计特定分析类型中因为网格划分带来的误差。通过这种误差估计,程序可以确定网格是否足够细。如果不够的话,程序将自动细化网格以减少误差。这一自动估计网格划分误差并细化网格的过程就叫做自适应网格划分,然后通过一系列的求解过程使得误差低于用户指定的数值(或直到用户指定的最大求解次数)。
ANSYS软件中包含一个预先写好的宏,ADAPT.MAC,用来完成自适应网格划分的功能。用户的模型在使用这个宏之前必须满足一些特定的条件。(在一些情况下,不满足要求的模型也可以用修正的过程完成自适应网格划分,下面还要讨论。)这些要求包括:
² 标准的ADAPT过程只适用于单次求解的线性静力结构分析和线性稳态热分析。
² 模型最好应该使用一种材料类型,因为误差计算是根据平均结点应力进行的,在不同材料过渡位置往往不能进行计算。而且单元的能量误差是受材料的弹性模量影响的。因此,在两个相邻单元应力连续的情况下,其能量误差也可能由于材料特性不同而不一样。在模型中同样应该避免壳厚突变,这也可能造成在应力平均是发生问题。
² 模型必须使用支持误差计算的单元类型。
² 模型必须是可以划分网格的:即模型中不能有引起网格划分出错的部分。
表1 支持自适应网格的单元
单元类型 | 单元 | 描述 |
二维结构单元 | PLANE25 | 轴对称谐响应4节点结构单元 |
PLANE42 | 二维结构单元 | |
PLANE82 | 二维8节点结构单元 | |
PLANE83 | 轴对称谐响应8节点结构单元 | |
PLANE183 | 2维8节点结构单元 | |
三维结构单元 | SOLID45 | 三维结构单元 |
SOLID92 | 3维10节点4面体结构单元 | |
SOLID95 | 3维20节点结构单元 | |
三维壳单元 | SHELL43 | 4节点大应变壳单元 |
SHELL63 | 线弹性壳单元 | |
SHELL93 | 8节点结构壳单元 | |
二维热单元 | PLANE35 | 2维6节点三角形热单元 |
PLANE75 | 轴对称谐响应4节点热单元 | |
PLANE77 | 2维8节点热单元 |
进行自适应网格划分的基本过程包括如下步骤:
1)像其它线性静力分析或稳态热分析一样,先进入前处理器(/PREP7或MainMenu>Preprocessor)。然后指定单元类型,实参数和材料特性,要满足上面提到的条件。
2)用实体建模过程建立模型,用户可以划分网格的面或体建模。用户不需指定单元大小也不用划分网格,ADAPT宏会自动划分网格。(如果要同时需要划分面和体网格,会生成ADAPTMSH.MAC用户子程序。)
3)在PREP7中或在SOLUTION(/SOLU或MainMenu>Solution)中指定分析类型,分析选项,载荷和载荷步选项。在一个载荷步中仅施加实体模型荷载和惯性荷载(加速度,角加速度和角速度)。(通过ADAPTBC.MAC用户子程序,可以施加有限单元载荷,固连和约束方程。通过ADAPTSOL.MAC用户子程序。可以加入多个载荷步)
4)如果在PREP7中,退出前处理器单击FINISH。(可以在SOLUTION或在初始状态下激活ADAPT宏)。
5)用下列方法激活自适应求解。
命令:ADAPT
GUI:Main Menu>Solution>Solve>AdaptiveMesh
注意:可以在热或结构分析中使用ADAPT宏,但不能在一次自适应分析中同时进行这两种不同类型的计算。在自适应网格划分的迭代过程中,单元的大小将作调整(在FACMN和FACMX指定的范围内)以减小或增加单元能量误差,直到误差满足指定的数值(或指定的最大求解次数)为止。
当自适应网格计算收敛时,程序自动将单元形状检查打开SHPP,ON。然后返回SOLUTION或初始状态,这取决于激活ADAPT的状态。接下来可以进入POST1用标准操作进行后处理。
如果用户清楚某个部分网格划分的误差相对影响较小时(如应力水平较低且变化较小),可以将这些区域从自适应网格划分中排除以加快分析速度。同样,用户也许想将接近应力奇异点的部分(如集中载荷)排除掉。选择逻辑操作可以解决这类问题。
如果用户选择了一个关键点集,ADAPT宏仍将包含进所有的关键点(在选择的和未选择的关键点都作网格改动),除非将ADAPT命令(Main Menu>Solution>Adaptive Mesh)中KYKPS设为1。如果用户选择了一个面或体集,ADAPT宏将只在选择的区域调整网格大小。此时必须在激活ADAPT宏之前在PREP7中对整个模型进行网格划分。
标准的ADAPT宏并不总能总满足特定的分析需要。例如,用户可能想同时对面和体进行网格划分,这在标准宏当中是不可以的。对于这种或其他一些类似情况,可以对ADAPT宏进行修改使之适用于特定的分析。ANSYS程序用宏这种方式完成自适应网格划分,本身就使得用户可以对其进行相应的修改以适应不同的要求。方便的是,用户不用总是通过修改ADAPT代码的方式来定制宏。宏的三个部分可以用用户子程序的方法来修改,这个方法将ADAPT宏和用户文件分开,用户可以生成子程序由ADAPT宏来调用。这三个部分是:网格划分命令序列,边界条件命令序列和求解命令序列。相应的用户子程序名为ADAPTMSH.MAC,ADAPTBC.MAC和ADAPTSOL.MAC。下面看一下这三个子程序的功能:
默认情况下,如果模型中包含一个或多个体时,ADAPT宏将只对体划分网格而不对面进行划分。如果当前选择集中没有体,宏才对面进行划分。如果要同时对面和体进行划分的话,就要生成用户子程序ADAPTMSH.MAC来提供相应的操作。在重新划分网格之前要清楚所有这些实体中划分过网格的实体。子程序大致如下:
C*** SubroutineADATMSH.MAC-Your name-Job Name-Data Created
TYPE,1 !指定划分网格的单元类型属性
ACLEAR,3,5,2 !清除本程序中要重新划分网格的面和体的网格
VCLEAR,ALL
AMESH,3,5,2 !对面3和5划分网格(ADAPT不对其他面划分网格)
TYPE,2 !改变单元类型,划分体
VMESH,ALL !对所有体划分网格
我们建议将C***行包含在文件中以区别不同的宏。这一行将在任务的输出中出现,就可以确认ADAPT宏正确地调用了用户子程序。
ADAPT宏在每次求解循环时都要清除并重新划分网格,因此模型的结点和单元也要不断的改变。这就使得所有的有限单元载荷,自由度固连,约束方程等施加在结点和单元的边界条件都不能使用。如果要包含这些有限单元约束时,就要使用用户子程序,ADAPTBC.MAC。在这个子程序中,可以选择结点然后定义有限单元载荷,自由度固连和约束方程。下面是一个ADAPTBC.MAC的例子:
C*** Subroutine ADAPTBC.MAC-Your name-HobName-Data CReated
NSEL,S,LOC,X,0 !选择X坐标为0的结点
D,ALL,UX,0 !使选择的所有结点UX为0
NSEL,S,LOC,Y,0 !选择Y坐标为0的结点
D,ALL,UX,0 !使选择的所有结点UY为0
NSEL,ALL !选择所有结点
生成用户求解子程序(ADAPTSOL.MAC)
ADAPT宏中的求解命令序列很简单:
/SOLU
SOLVE
FINISH
这个默认的命令序列只能求解单个载荷步。用户可以将其他的命令序列加入用户子程序ADAPTSOL.MAC中。
5.3关于用户子程序的一些其他说明
用户可以像生成其他文件一样生成这些子程序。就是说可以用APDL语言的*CREATE命令(Menu>Macro>Create Macro)和APDL的*END命令,也可以用外部的文件编辑器。当ADAPT宏调用这些子程序时,软件先搜索ANSYS根目录,再搜索用户根目录,最后是当前目录。因此,要确保其他目录中不包括与所用文件同名的文件。解释行(C***)会在输出文件中出现,可以通过它来检查是否使用了正确的文件。另外,通过在运行ADAPT宏之前用/PSEARCH,OFF(Utility Menu>Macro>MacroSearch Path)指定软件只搜索ANSYS根目录和用户当前目录可以从某种程度上减少文件混用的可能。不管这些子程序在什么位置,它们都能被找到,除非将ADAPT命令的KYMAC选项设为1。
问题描述:
求解如下图结构,在承受热载荷时E点的温度。几何尺寸和材料特性等参数见下图所示。
1)定义文件名字
GUI:File>ChangeJobname>zishiying
2)定义单元类型
GUI:Main Menu>Preprocessor>ElementType>Add/Edit/Delete
选择PLANE55单元。
3)定义材料参数
定义材料的热传导系数:
GUI:MainMenu>Preprocessor>Material Props>MaterialModels>Thermal>Conductivity>Isotropic,输入52.0。
4)定义关键点
GUI:Main Menu>Preprocessor>Modeling>Create>Keypoints>In Active CS
第一个关键点, X=0, Y=0, 单击Apply ; 第二个关键点, X=0.6,Y=0, 单击Apply;
第三个关键点, X=0.6, Y=1.0, 单击Apply;第四个关键点, X=0, Y=1.0, 单击Apply;
第五个关键点, X=0.6, Y=0.2, 单击OK。
5)生成模型的简图
GUI:MainMenu>Preprocessor>Modeling>Create>Areas>Arbitrary>Through KPs
按顺序选择1,2,5,3,4来生成模型。
6)定义载荷
GUI:Main Menu>Solution>DefineLoads>Apply>Thermal>Temperature>On Keypoints,选择1和2号关键点输入100。
7)定义边界条件
GUI:Main Menu>Solution>DefineLoads>Apply>Thermal>Convection>On Lines,选择L2,L3和L4输入图2中的数据。
图2 定义对流换热边界条件
8)求解
选择自适应求解:
GUI:Main Menu>Solution>Solve>Adaptive Mesh,输入图3的数据,单击OK。
图3 自适应求解的控制框
9)查看温度云图
GUI:MainMenu>General Postproc>Plot Results>Contour Plot>Nodal Solu>DOF Solution>NodalTemperature。图4到图9给出了不同网格密度的模型温度云图。
10)在命令流输入窗口中输入E=NODE(0,0.2,0),来提取E处的节点号。
11)查看E处的节点号
GUI:Utility Menu>Parameters>Scalar>Parameters
12)查看E处的温度值
GUI:Main Menu>General Postproc>ListResults>Nodal Solution,在列表中查看E处的节点温度,表9-1给出了三种划分网格密度的E处的温度值。
表3 不同网格密度E点处温度
网格重划次数 | 1 | 2 | 3 |
E点处的温度值 | 76.281 | 75.185 | 75.106 |
命令流:
/PREP7 !进入前处理器、
/TITLE,HEAT TRANSFER !定义标题
ANTYPE,STATIC !定义求解类型为静态 、
ET,1,PLANE55 !定义单元
MP,KXX,1,52.0 !定义材料的热传导系数
!定义模型的关键点
K,1
K,2,.6
K,3,.6,1.0
K,4,,1.0
K,5,.6,.2
!通过关键点生成线模型
L,1,2
L,2,5
L,5,3
L,3,4
L,4,1
!通过线生成面
AL,ALL
DK,1,TEMP,100,,1!定义线1温度为100度
DK,2,TEMP,100,,1!定义线2温度为100度
SFL,2,CONV,750.0,,20.0!定义线2的对流系数为50,外界空气温度为20
SFL,3,CONV,750.0,,20.0!定义线3的对流系数为50,外界空气温度为20
SFL,4,CONV,750.0,,20.0!定义线4的对流系数为50,外界空气温度为20
FINISH
ADAPT,5,,1,0.25,2 !误差为5%,循环5次,网格大小比例在0.2到1之间LOOPS
/POST1
PLNSOL,TEMP !绘出模型的温度云图
*SET,E,NODE(0,0.2,0)!提取E处的节点号
PRNSOL,TEMP !列表查看所有节点的温度值
注:新版软件遇到上述部分命令无法识别时请自行做相应修改。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删