1 引言
如果用户清楚某个部分网格划分的误差相对影响较小时(如应力水平较低且变化较小),可以将这些区域从自适应网格划分中排除以加快分析速度。同样,用户也许想将接近应力奇异点的部分(如集中载荷)排除掉。选择逻辑操作可以解决这类问题,如图1所示效果。
图1 选择自适应能改进有应力集中的模型
当用户选择了一个关键点集,ADAPT宏仍将包含进所有的关键点(在选择的和未选择的关键点都作网格改动),除非将ADAPT命令(Main Menu>Solution>Adaptive Mesh)中KYKPS设为1。
如果用户选择了一个面或体集,ADAPT宏将只在选择的区域调整网格大小。此时必须在激活ADAPT宏之前在PREP7中对整个模型进行网格划分。
2 关于用户子程序-定制ADAPT宏
针对具体分析问题特点,标准的ADAPT宏往往并不能满足分析需要。例如,用户可能想同时对面和体进行网格划分,这在标准宏当中是不可以的。对于这种或其他一些类似情况,可以对ADAPT宏进行修改使之适用于特定的分析。ANSYS程序用宏这种方式完成自适应网格划分,本身就使得用户可以对其进行相应的修改以适应不同的要求。方便的是,用户不用总是通过修改ADAPT代码的方式来定制宏。宏的三个部分可以用用户子程序的方法来修改,这个方法将ADAPT宏和用户文件分开,用户可以生成子程序由ADAPT宏来调用。这三个部分是:网格划分命令序列,边界条件命令序列和求解命令序列。相应的用户子程序名分别是ADAPTMSH.MAC、ADAPTBC.MAC和ADAPTSOL.MAC。
2.1 关于生成用户网格划分子程序-ADAPTMSH.MAC
在ANSYS平台缺省情况下,如果模型中包含一个或多个体时,ADAPT宏将只对体划分网格而不对面进行划分。如果当前选择集中没有体,宏才对面进行划分。如果要同时对面和体进行划分的话,就要生成用户子程序ADAPTMSH.MAC来提供相应的操作。在重新划分网格之前要清楚所有这些实体中划分过网格的实体。子程序主要命令行大致如下:
C*** Subroutine ADATMSH.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宏正确地调用了用户子程序。
2.2 关于生成用户边界条件子程序-ADAPTBC.MAC
ADAPT宏在每次求解循环时都要清除并重新划分网格,因此模型的结点和单元也要不断的改变。这就使得所有的有限单元载荷,自由度固连,约束方程等施加在结点和单元的边界条件都不能使用。如果要包含这些有限单元约束时,就要使用用户子程序,ADAPTBC.MAC。在这个子程序中,可以选择结点然后定义有限单元载荷,自由度固连和约束方程。子程序主要命令行大致如下:
C*** Subroutine ADAPTBC.MAC-Your name-Hob Name-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 !选择所有结点
2.3 关于生成用户求解子程序-ADAPTSOL.MAC
ADAPT宏中的求解命令序列很简单:
/SOLU
SOLVE
FINISH
这个缺省的命令序列只能求解单个载荷步。分析用户可以将其他的命令序列加入用户子程序ADAPTSOL.MAC中。
3 自适应网格划分其他说明
用户可以象生成其他文件一样生成这些子程序。就是说可以用APDL语言的*CREATE命令(Utility Menu>Macro>Create Macro)和APDL的*END命令生成子程序,也可以用外部的文件编辑器生成子程序。当ADAPT宏调用这些子程序时,软件先搜索ANSYS根目录,再搜索用户根目录,最后是当前目录。因此,要确保其他目录中不包括与所用文件同名的文件。解释行(C***)会在输出文件中出现,可以通过它来检查是否使用了正确的文件。另外,通过在运行ADAPT宏之前用/PSEARCH,OFF(Utility Menu>Macro>Macro Search Path)指定软件只搜索ANSYS根目录和用户当前目录可以从某种程度上减少文件混用的可能。不管这些子程序在什么位置,它们都能被找到,除非将ADAPT命令的KYMAC选项设为1。
3.1 定制ADAPT宏说明
有些情况下用户需要修改ADAPT宏但不能通过单独的用户子程序的方式,那么就需要直接修改ADAPT宏的主体。但是,因为某些原因,我们不推荐直接对ADAPT宏进行修改,因此,建议在ANSYS安装中支持一个宏的拷贝文件UADAPT.MAC,便于用户修改。
如果对UADAPT.MAC文件进行了修改,最好对修改后的文件取一个新的文件名。然后在调用时输入这个文件名。要知道的是,如果新文件名是一个“unknown command”,ANSYS将搜索上级目录,然后是登录的目录,最后是工作目录,直到找到这个宏为止。如果修改的宏只能为一个用户使用,那么存储的位置应在用户登录目录的层次之下(不能等于或高于这个目录层次)。这样,存储的低层次的文件可以通过*USE命令(Utility Menu>macro>Execute Data Block)来调用。
3.2 自适应网格划分说明
在使用自适应网格时应对以下两点有所了解:
不需指定初始网格大小,但指定大小可能有利于自适应收敛。如果用户指定了关键点网格大小,ADAPT宏在第一次循环时使用这个值,然后在随后的循环中进行调整。用下列命令指定单元大小:
Command: KESIZE
GUI:Main Menu>Preprocessor>-Meshing-Size>Cntrls>Keypoints-All KPs
如果定义了线分段数或大小比例,ADAPT宏将在每次循环中都使用这个数值而不作改变。如果没有定义任何形式的网格份数,在初始网格划分时将使用缺省的网格大小[参见SMRTSIZE和DESIZE命令]。用下列方法指定线分段数或大小比例:
Command: LESIZE
GUI: Main Menu>Preprocessor>-Meshing-Size Cntrls>-Lines-All Lines
关于网格划分,还应对以下内容有所了解:
映射网格划分适用于2-D实体和3-D壳单元。但面的映射划分效果不明显。
映射网格划分适用于3-D实体。对体进行映射划分比自由划分效果要好的多。
总体上说,在自适应网格中有中间结点的单元比线性单元要好。
不要用集中载荷或尖角等引起奇异性的结构,因为此时ADAPT在这些奇异点处能量值将不收敛。如果模型中有集中载荷时,将其用施加在一个小面上的压力等效。(或通过选择将奇异部分排除在自适应网格划分之外。)
在许多情况下,用一系列相对小的区域替代少数几个大的区域将得到更好的网格划分。
如果最大响应位置已知或事先可以推测,就在附近放置一个关键点。
如果是在交互方式下运行ADAPT,而ANSYS在没有提示出错信息时突然退出,可以在Jobmame.ADPT文件中查看自适应网格划分部分以确定出错原因。同样,在批处理方式下运行ADAPT时,可以看Jobname.ADPT确定出错原因。
如果模型中有些区域有过度的扭曲时,在网格划分中就会出错。在这种情况下,用KESIZE命令(Main Menu>Preprocessor>-Meshing-Size Cntrls>-Keypoints-Picked KPs)中SIZE域指定扭曲区域附近关键点的最大单元长度。同时,ADAPT命令中的FACMX将设为1,阻止过度扭曲部分单元大小增加。
应当存储结果文件(Jobname.RST或Jobname.RTH)。在ADAPT运行过程中程序如果发生中断,结果文件中将保存ADAPT过程已完成求解的内容。
在自适应网格运行之前应输入SAVE命令(Utility Menu>File>Save as Jobname.db)。在程序出错中断时,可以用Jobname.db重新启动计算。
4 总结
ANSY自适应网格技术在使用时需用户熟悉ANSYS-APDL语言的语法特点,因为针对不同问题需要进行特定子程序的模块开发,如果没有一定APDL宏程序的开发经验,在使用时会无从下手,这同时表明要想用好ANSYS,需要学习的东西很多且相互联系,付出总有回报,兴趣是最好的老师!
|