📄 ansys-vc++6.0.txt
字号:
AfxMessageBox("error!");
GetLastError();
} // 创建进程
3. 进程的终止
要终止进程的运行可以使用如下四种方法:①主线程的进入点函数返回;②进程中的一个线程调用ExitProcess函数;③另一个进程中的线程调用TerminateProcess函数;④所有进程中的线程自动终止运行(这种情况一般不会发生)。本文采用第一种方法终止所创建的进程,即当ANSYS计算结束时通过函数返回。
在WindowsXP系统中,如果ANSYS批处理程序运行完后,窗口标题会显示“ANSYS已完成”。本文程序开发便可通过这一特点来终止系统所创建的进程。当ANSYS计算模块运行完毕后,系统会弹出一个消息框提示ANSYS已计算完毕,可以进行后处理了。
3.3.3 用户界面接口模块
用户界面模块主要完成系统和用户的交互。用户界面模块包括计算参数输入和程序调用两部分。计算参数输入部分的主要功能是负责输入诸如地震波数据、是否调幅、时间步长等。计算输入是由对话框构成。计算参数输入对话框界面如下:
图3-4 计算参数输入界面
程序对各参数的输入范围都进行了设定,如果用户输入的参数超过了这一设定,系统就会弹出对话框以提醒用户输入错误,需要重新输入。ANSYS程序调用通过菜单方式进行。该菜单首先不处于激活状态,而是当三维数值模拟所需参数输入完成后才得到消息激活菜单。这样设计的优点:能够提醒用户输入并检查用于三维数值模拟的相关参数,避免用户在不输入参数的情况下直接调用ANSYS进行计算而造成错误。
程序设计采用文档读写的方式将输入的计算参数插入到用APDL语言进行二次开发的ANSYS计算模块。参数化设计的ANSYS计算模块就可以根据输入的参数进行数值模拟计算。
3.3.4 ANSYS后处理模块的二次开发
ANSYS软件提供了两个后处理器,可以对结果进行时间-历程后处理
和通用后处理。对于相互作用体系地震反应分析,它可以将模拟结果用应力图、等值线(面)、动画等形式输出与转换。其中POST1通用后处理器可用于观察整个模型或模型的一部分在某一时间的模拟结果,可显示结构在地震作用下的应力图和位移变形图;时间—历程后处理器POST26用于检查模型中指定点的分析结果与时间的函数关系,可显示模型上各个节点的各变量的时程曲线。可见,对于大多数的后处理分析我们可以直接使用ANSYS的后处理器。但由于ANSYS是一个通用软件,而对某些特殊领域的后处理分析无能为力或者不是很方便,因而,需要对其进行二次开发,以减轻后处理工作和提高后处理效率。
在相互作用体系地震反应分析中,有时除了关注各物理量时程曲线外,还关心其在结构高度方向的分布(如层间位移、层间剪力、层间加速度反应等)。解决这一问题的二次开发需要结合相互作用体系地震反应分析特点进行。
(1)物理量分析
在地震反应时程分析中,我们对楼层位移时程、加速度时程、柱应力应变时程 、剪力墙应力应变时程比较关心,同时还需要分析层间位移和层间加速度变化。考虑到本文将计算多种工况,本程序对常见的变量编写了后处理程序,具有通用性,极大地提高了后处理效率。
(2) 程序实现
基于上面分析,本程序是通过接口程序调用ANSYS,读入编写的后处理命令流,读取ANSYS计算的结果数据库,生成各变量的结果文件,然后用本程序的后处理模块进行读数绘图处理,进而生成结果图形。这一过程采用VC编程实现的,VC编程的算法流程图如图3-2的后处理模块。
问:在用patran等建立了几何模型,划分网格后,删除了几何模型,有何办法可以重新恢复几何模型,当然不是重新建点、线、面、体等。大家看有没有好的方法。
答:首先将有限元模型转换为ANSYS格式,然后可以利用ANSYS从实体单元的单元面再产生几何体。下面给出一个从四面体单元再产生几何实体的示例命令流(如果要转换六面体网格,可以通过修改下面的命令流实现。):
1. 转换未变形的网格:
esel,s,mat,,1 !假设单元材料号为1,先选择单元
*get,enum1,elem,0,count
*get,el,elem,0,num,min
ksel,all
*get,nkp1,kp,0,num,max
ksel,none
asel,none
vsel,none
/prep7
*do,i,1,enum1
*do,j,1,3
nd=nelem(el,j)
knum1=nkp1+4*(i-1)+j
k,knum1,nx(nd),ny(nd),nz(nd) !
*enddo
nd=nelem(el,j+2)
k,knum1+1,nx(nd),ny(nd),nz(nd)
v,knum1-2,knum1-1,knum1,knum1+1
el=elnext(el)
*enddo
numm,kp
cm,aal1,area
asel,r,ext
cm,aext,area
vdel,all
va,all
cmsel,s,aal1
cmsel,u,aext
adel,all,,,1
2. 如果需要转换变形后的网格:
esel,s,mat,,1 !假设单元材料号为1,先选择单元
*get,enum1,elem,0,count
*get,el,elem,0,num,min
ksel,all
*get,nkp1,kp,0,num,max
ksel,none
asel,none
vsel,none
/post1
set,last !输出最后一步变形后的网格
/prep7
SHPP,OFF
UPGEOM,1,LAST,LAST,'filname','rst',' ' !假设工作文件名为filname
*do,i,1,enum1
*do,j,1,3
nd=nelem(el,j)
knum1=nkp1+4*(i-1)+j
k,knum1,nx(nd),ny(nd),nz(nd) !
*enddo
nd=nelem(el,j+2)
k,knum1+1,nx(nd),ny(nd),nz(nd)
v,knum1-2,knum1-1,knum1,knum1+1
el=elnext(el)
*enddo
numm,kp
cm,aal1,area
asel,r,ext
cm,aext,area
vdel,all
va,all
cmsel,s,aal1
cmsel,u,aext
adel,all,,,1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -