有限元分析的子结构和子模型方法
子模型分析(Submodel Analysis)与子结构分析(substructural analysis)中具体应用的例子文件 .mac
如下:
子模型(Submodel)
子模型分析主要是针对单个模型或者小型的装配体,为获得模型局部的详细信息,除了对网格进一步细化之外,另一种方法就是将局部分割出来单独计算,即子模型法。
- 对结构中某一关键部位的仿真结果感兴趣,常见的为应力集中的区域或者出现屈服的位置;
- 用粗糙的网格求得计算后,选取关键部位重新进行网格的划分,利用粗糙模型中边界条件的解作为所选区域的边界条件,重新计算得到我们所想要的结果;
- 子模型的应用是基于圣维南原理,即如果实际分布载荷被等效载荷代替以后,应力和应变只在载荷施加的位置附近有改变,因此子模型的原理要求切割边界应远离应力集中区域;
- 子模型方法又称为切割边界位移法或特定边界位移法在,最大的优点是减少运算量,还可以验证网格划分尺寸对结果的影响程度;
- 子模型目前只能应用于板壳单元和体单元;

! http://www.1cae.com/a/ansys/55/ansys-9815.htm
! 子模型应用实例
! 内容:矩形平板中心开孔,承受横向拉力时的应力集中情况
! 由于对称,选取模型的四分之一进行分析
! ------------------------------------
! 建立整体模型
finish
/clear,nostart
/FILNAM,coarse ! 整体模型
/PREP7
smrt,off
/TITLE, STRESS CONCENTRATION AT A HOLE IN A PLATE
/NOPR
ANTYPE,STATIC ! 静力分析
ET,1,PLANE2
MP,EX,1,30E6
MP,NUXY,1,0.3
! 圆孔板的1/4几何模型
K,1,6 ! 关键点
K,2,6,6
K,3,,6
K,4,,.5
K,5,.5
K,6
L,1,2
L,2,3
L,3,4
! 划分网格
LESIZE,3,,,4,.25 ! 定义线3的分段数
LARC,4,5,6,0.5
LESIZE,4,,,6 ! 定义线4的分段数
L,5,1
LESIZE,5,,,4,4 ! 定义线5的分段数
AL,1,2,3,4,5
ESIZE,,4 ! 每条线分为4段
AMESH,ALL
! 施加约束
LSEL,S,LINE,,3,5,2
DL,ALL,,SYMM
LSEL,S,LINE,,1
NSLL,,1
SF,ALL,PRES,-1000. ! 施加拉力
LSEL,ALL
NSEL,ALL
CSYS,1
FINISH
! 求解
/SOLU
SOLVE
FINISH
SAVE ! 存储文件VM142.DB
! 后处理导出边界条件
/POST1
SET,1,1
NSORT,S,X,,,3 ! 默认按照 x方向的应力对节点进行降序排列,保留前3位
PRNSOL,S,COMP ! 查看前3位节点的应力,其中Sx最大值对应的节点号为18
PLNSOL,S,X
*GET,CRSESTR,NODE,18,S,X ! 获取18号节点的应力(Sx最大值)
*STATUS ! 查看参数的值
*DIM,LABEL,CHAR,1,2 ! 字符型数组:1×2
*DIM,VALUE,,1,3 ! 数值型数组:1×3
! 数组赋值
LABEL(1,1) = 'MX STR '
LABEL(1,2) = 'CRS MODEL'
*VFILL,VALUE(1,1),DATA,3018 ! 3018为理论解
*VFILL,VALUE(1,2),DATA,CRSESTR
*VFILL,VALUE(1,3),DATA,ABS(CRSESTR/3018)
SAVE,TABLE_1
FINISH
! ------------------------------------
! 建立子模型
/CLEAR, NOSTART ! CLEAR THE DATABASE
/FILNAM,SUBMODEL ! 定义子模型文件名
/PREP7
smrt,off
/NOPR
/TITLE, STRESS CONCENTRATION AT A HOLE IN A PLATE
ANTYPE,STATIC
ET,1,PLANE42
MP,EX,1,30E6
MP,NUXY,1,0.3
! 子模型几何建模
CSYS,1
K,10,.5,45
K,11,.5,90
K,12,1.5,45
K,13,1.5,90
A,10,12,13,11
! 网格划分
ESIZE,,8
MSHK,1
MSHA,0,2D
AMESH,1
! 选择切割的边界节点
EPLOT
LSEL,S,LINE,,1,2
NSLL,,1 ! 选择切割边界的结点
NWRITE ! 将结点写入文件SUBMODEL.NODE
LSEL,ALL
NSEL,ALL
FINISH
SAVE ! 存储子模型数据库文件SUBMODEL.DB
! 施加子模型边界条件
/POST1
RESUME,coarse,db
FILE,coarse,rst
CBDOF,,,,,,,0,,0 !激活边界条件插值(子模型分析).cbdo文件
FINISH
/PREP7
smrt,off
RESUME !从文件SUBMODEL.DB中读入子模型
/INPUT,,cbdo,,:cb1 ! 从文件SUBMODEL.CBDO中读入插值边界条件,从cb1标签开始读取数据
LSEL,S,LINE,,3 ! 施加其余的边界条件
DL,ALL,,SYMM
FINISH
! 子模型求解
/SOLU
SOLVE
FINISH
! 提取子模型和理论解的信息
/POST1
SET,1,1
NSORT,S,X,,,3
PRNSOL,S,COMP
PLNSOL,S,X
*GET,SUBSTR,NODE,18,S,X
*DIM,LABEL,CHAR,1,2
*DIM,VALUE,,1,3
LABEL(1,1) = 'MAX STRS'
LABEL(1,2) = ' SUBMOD'
*VFILL,VALUE(1,1),DATA,3018
*VFILL,VALUE(1,2),DATA,SUBSTR
*VFILL,VALUE(1,3),DATA,ABS(SUBSTR/3018 )
SAVE,TABLE_2
FINISH
子结构(Substructure)
也称为超单元分析(superelement analysis)。大型结构往往包含重复性的几何模型,子结构法则把模型简化成一个模块,通过模块的组装,建立起整个模型。然后对模型进行求解,求解完成之后,在通过共用界面的结果映射到单个模型里面,进行对单个模型进行求解。
-
原理就是将大型结构分解成一个个的小型模块,对每一个模块建立单元,这个单元就叫做超单元;
-
超单元必须先进行结构生成分析以生成能够利用的超单元,然后进行计算,其他与普通单元并没有区别;
-
超单元与普通单元的连接成整体进行求解,然后把超单元的解扩展到形成这个超单元的结构中进行求解,继而获得这个模块的结果;
子结构缩聚方法:利用子结构技术将复杂、庞大的整体模型缩减为普通计算机可以计算的子结构分析模型;
分析流程
- 超单元的生成:通过定义主自由度将普通单元凝聚为超单元,主自由度用于定义超单元与模型中其他单元的边界,即通过接触来实现超单元和其他单元的连接;
- 超单元的使用:将超单元与模型中其他单元进行连接;
- 超单元的拓展:得到超单元结果后,开始计算超单元内部凝聚单元的结果;

! http://www.1cae.com/a/ansys/55/ansys-9816.htm
! 子结构技术应用实例
! 尺寸:20×40×2
! 边界:一端固支,另一端承受法向载荷
! 模型:中间切断,前一部分为普通有限元模型,后一部分为超单元模型,二者组装为一个整体
! --------------------------------------------
! 方法1:全部使用普通壳体单元建模,作为对比组
FINISH
/CLEAR,NOSTART
/FILNAME,SUB_STRUCTURAL
/PREP7
SMRT,OFF
!定义单元类型:壳单元
ET,1,shell63
R,1,2
!定义材料类型
MP,EX,1,201000
MP,PRXY,1,0.3
MP,DENS,1,7.8E-9
!建立几何模型
K,1,0,0,0
K,2,20,0,0
K,3,20,20,0
K,4,20,40,0
K,5,0,40,0
K,6,0,20,0
A,1,2,3,6
A,6,3,4,5
! 网格划分
lsel,s,loc,y,20
lsel,a,loc,x,0
lesize,all,,,20
allsel,all
type,1
mat,1
mshkey,1
mshape,0,2D
amesh,all
/eshape,1
eplot
save,se_all,db
! 施加约束并求解
/solu
antype,static
nsel,s,loc,y,0
d,all,all,0
allsel,all
nsel,s,loc,y,40
f,all,fz,5
allsel,all
solve
finish
! 后处理
/post1
pldisp
plnsol,s,eqv
plnsol,u,z
finish
! 方法2:上半部分普通壳体单元+下半部分超单元
! --------------------------------------------
!2.1-首先生成超单元GEN.sub
finish
/CLEAR,NOSTART
/FILNAME,GEN
/PREP7
SMRT,OFF
!定义单元类型
ET,1,shell63
R,1,2
!定义材料类型
MP,EX,1,201000
MP,PRXY,1,0.3
MP,DENS,1,7.8E-9
! 几何模型
K,1,0,0,0
K,2,20,0,0
K,3,20,20,0
K,4,0,20,0
A,1,2,3,4
LESIZE,ALL,,,20
allsel,all
! 网格划分
type,1
mat,1
mshkey,1
mshape,0,2D
amesh,all
/eshape,1
eplot
! 子结构分析
/SOLU
ANTYPE,SUBST
SEOPT,GEN ! 子结构求解控制,超单元名称GEN
! 施加约束
NSEL,S,LOC,Y,0
D,ALL,ALL,0
ALLSEL,ALL
NSEL,S,LOC,Y,20
M,ALL,ALL ! 建立主自由度,在中间连接的部位建立主自由度
ALLSEL,ALL
SAVE
SOLVE
FINISH
! ----------------------------------------------
!2.2-使用超单元,并和上半部分普通单元耦合,整体求解
!建立模型-上半部分普通单元
/CLEAR,NOSTART
/FILNAME,USE
/PREP7
SMRT,OFF
ET,1,shell63
R,1,2
!定义材料类型
MP,EX,1,201000
MP,PRXY,1,0.3
MP,DENS,1,7.8E-9
! 建立模型
K,1,0,20,0
K,2,20,20,0
K,3,20,40,0
K,4,0,40,0
A,1,2,3,4
LESIZE,ALL,,,20
allsel,all
! 划分网格
type,1
mat,1
mshkey,1
mshape,0,2D
amesh,all
/eshape,1
eplot
save
! 下半部分使用超单元
ET,2,MATRIX50 ! 超单元
TYPE,2
SETRAN,GEN,,450,GEN_1 ! 新建超单元GEN_1,节点编号从450开始
se,GEN_1
eplot
! 超单元和普通单元耦合
nsel,s,loc,y,20
nplot
cpintf,all ! 耦合超单元和普通有限元单元相连接部位的节点
allsel,all
/eshape,1
eplot
finish
! 整体求解
/SOLU
ANTYPE,STATIC
NSEL,S,LOC,Y,40
F,ALL,FZ,5
ALLSEL,ALL
save
SOLVE
FINISH
! ----------------------------------------------
!2.3-超单元扩展,对超单元内部的结果进行拓展求解
/CLEAR,NOSTART
/FILNAME,GEN
RESUME
/SOLU
EXPASS,ON
SEEXP,GEN_1,USE ! 扩展超单元的结果
EXPSOL,1,1
SOLVE
FINISH
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律