1、ANSYS 高级分析 子模型5-1第五章 子模型何为子模型?子模型是得到模型部分区域中更加精确解的有限单元技术。在有限元分析中往往出现这种情况,即对于用户关心的区域,如应力集中区域,网格太疏不能得到满意的结果,而对于这些区域之外的部分,网格密度已经足够了。见图5-1。图 5-1 轮毂和轮辐的子模型 a)粗糙模型,b)叠加的子模型要得到这些区域的较精确的解,可以采取两种办法:(a)用较细的网格重新划分并分析整个模型,或(b)只在关心的区域细化网格并对其分析。显而易见,方法 a 太耗费机时,方法 b 即为子模型技术。子模型方法又称为切割边界位移法或特定边界位移法。切割边界就是子模型从整个较粗糙的模
2、型分割开的边界。整体模型切割边界的计算位移值即为子模型的边界条件。子模型基于圣维南原理,即如果实际分布载荷被等效载荷代替以后,应力和应变只在载荷施加的位置附近有改变。这说明只有在载荷集中位置才有应力集中效应,如果子模型的位置远离应力集中位置,则子模型内就可以得到较精确的结果。ANSYS 程序并不限制子模型分析必须为结构(应力)分析。子模型也可以有效地应用于其他分析中。如在电磁分析中,可以用子模型计算感兴趣区域的电磁力。除了能求得模型某部分的精确解以外,子模型技术还有几个优点: 它减少甚至取消了有限元实体模型中所需的复杂的传递区域。 它使得用户可以在感兴趣的区域就不同的设计(如不同的圆角半径)进
3、行分析。 它帮助用户证明网格划分是否足够细。使用子模型的一些限制如下:ANSYS 高级分析 子模型5-2只对体单元和壳单元有效。子模型的原理要求切割边界应远离应力集中区域。用户必须验证是否满足这个要求。如何作子模型分析子模型分析的过程包括以下步骤:1. 生成并分析较粗糙的模型。2. 生成子模型。3. 提供切割边界插值。4. 分析子模型。5. 验证切割边界和应力集中区域的距离应足够远。ANSYS 高级分析 子模型5-3第一步:生成并分析较粗糙的模型第一个步骤是对整体建模并分析。 (注为了方便区分这个原始模型,我们将其称为粗糙模型。这并不表示模型的网格划分必须是粗糙的,而是说模型的网格划分相对子模
4、型的网格是较粗糙的。 )分析类型可以是静态或瞬态的,其操作与各分析的步骤相同。下面列出了其他的一些要记住的方面。文件名粗糙模型和子模型应该使用不同的文件名。这样就可以保证文件不被覆盖。而且在切割边界插值时可以方便地指出粗糙模型的文件。用下列方法指定文件名:Command: /FILNAMEGUI: Utility MenuFileChange Jobname单元类型子模型技术只能使用块单元和壳单元。分析模型中可以有其他单元类型(如梁单元作为加强筋) ,但切割边界只能经过块和壳单元。一种特殊的子模型技术,称为壳到体子模型技术,允许用户用壳单元建立粗糙模型而用三维块单元建立子模型。本技术在后面还要
5、讨论。建模在很多情况下,粗糙模型不需要包含局部的细节如圆角等,见下图。但是,有限元网格必须细化到足以得到较合理的位移解。这一点很重要,因为子模型的结果是根据切割边界的位移解插值得到的。图 5-2 粗糙模型可以不包括一些细节部分文件结果文件(Jobname.RST,Jobname.RMG 等)和数据库文件(Jobname.DB,包含几何模型)在粗糙模型分析中是需要的。在生成子模型前应存储数据库文件。用下列方法存储数据库:Command: SAVEGUI: Utility MenuFileSave asUtility MenuFileSave as Jobname.db第二步:生成子模型子模型是完
6、全依靠粗糙模型的。因此在初始分析后的第一步就是在初始状态清除数据库(另一种方法是退出并重新进入 ANSYS) 。用下列方法清除数据库:ANSYS 高级分析 子模型5-4Command: /CLEARGUI: Utility MenuFileClear&Start New同时,应记住用另外的文件名以防止粗糙模型文件被覆盖。用下列方法指定文件名:Command: /FILNAMEGUI: Utility MenuFileChange Jobname然后进入 PREP7 并建立子模型。应该记住下列几点:使用与粗糙模型中同样的单元类型。同时应指定相同的单元实参(如壳厚)和材料特性。 (另一种子模型技术
7、壳到体技术允许从粗糙模型的壳单元转换为体单元,见后。 )子模型的位置(相对全局坐标原点)应与粗糙模型的相应部分相同,见图53。图 5-3 叠加在粗糙模型上的子模型指定合适的结点旋转位移。切割边界结点的旋转角在插值步骤一写入结点文件时不应改变(见第三步:生成切割边界插值) 。用下列方法指定结点旋转:Command:NROTATGUI: Main MenuPreprocessorCreateNodes-Rotate Node CS-To Active CSMain MenuPreprocessorMove/Modify-Rotate Node CS-To ACtive CS注意结点旋转角会因为施加
8、结点约束,传递线上约束或面上约束等操作而改变,同样也会为更加明显的操作如NROTAT 和 NMODIF等改变。粗糙模型中结点旋转角的出现或缺省并不影响子模型。子模型的载荷和边界条件将在后面两步中施加。第三步:生成切割边界插值本步是子模型的关键步骤。用户定义切割边界的结点,ANSYS 程序用粗糙模型结果插值方法计算这些点上的自由度数值(位移等) 。对于子模型切割边界上的所有结点,程序用粗糙模型网格中相应的单元确定自由度数值,然后这些数值用单元形状功能插值到切割边界上。在切割边界插值中有下面几步操作:1.指定子模型切割边界的结点并将其写入一个文件(缺省为Jobname.NODE)中。可以在 PRE
9、P7 中选择切割边界的结点,用下列命令将其写ANSYS 高级分析 子模型5-5入文件:Command: NWRITEGUI: Main MenuPreprocessorCreateNodesWrite Node File下面是一个 NWRITE 命令的例子:NSEL,. !选择切割边界上的结点NWRITE !将其写入 Jobname.NODE图 5-4 子模型切割边界在这里讨论一下温度插值的问题。在包含特性随温度变化的材料的分析中,或热应力耦合分析中,粗糙模型和子模型中的温度分布是相同的。在这种情况下,必须将粗糙模型的温度插值到子模型中的所有结点上。要完成这步操作,要选择子模型中所有结点并写入
10、另外一个文件中,使用NWRITE,Filename,Ext。 记住必须另外指定一个文件名,否则切割边界结点文件将被覆盖!第 7 步中说明了关于温度插值的命令。2.重新选择所有结点并将数据库存入 Jobname.DB 中,然后退出 PREP7。 必须将数据库写入文件,因为在后面子模型分析中要使用到。用下列命令重新选择所有结点:Command: ALLSELGUI: Utility MenuSelectEverything用下列命令存储数据库:Command: SAVEGUI: Utility MenuFileSave as Jobname.db3.要进行切割边界插值(和温度插值) ,数据库中必须
11、包含粗糙模型的几何特征。因此要用下列一种方法读入粗糙模型数据库:Command: RESUMEGUI: Utility MenuFileResume from如,粗糙模型文件名为 COARSE,就输入命令 RESUME,COARSE,DB。4.进入 POST1,即通用处理器(/POST1 或 Main MenuGeneral Postproc) 。插值只有在 POST1 中进行。5.指向粗糙模型结果文件(FILE 或 Main MenuGeneral PostprocData & File Opts) 。6.读入结果文件中相应的数据(SET 或 Main MenuGeneral Postpro
12、c-Read Results-option) 。7.开始切割边界插值。用下列方法完成本步操作:Command: CBDOFGUI: Main MenuGeneral PostprocSubmodelingInterpolate DOF缺省状态下,CBDOF 命令假定切割边界结点在文件 Jobname.NODE 中。ANSYS 程序将计算切割边界的 DOF 数值并用 D 命令的形式写入文件ANSYS 高级分析 子模型5-6Jobname.CBDO 中。用下列方法作温度插值,但要保证文件包含所有子模型结点:Command: BFINTGUI: Main MenuGeneral PostprocSu
13、bmodelingInterp Body Forc温度插值以 BF 命令的格式写入文件 Jobname.BFIN 中。注如果数据包括实部和虚部的话,步骤 6 和 7 就要作两遍。先用 SET 命令读入实部的数据并作插值CBDOF 和/或 BFINT,然后用 SET 命令将域设为1 读入虚部的数据并重新进行插值,但这次将虚部插值写入另一个文件。8.至此,所有的插值任务完成,退出 POST1FINISH并读入子模型数据库(RESUME 或 Main MenuFileResume from) 。第四步:分析子模型在本步中,用户指定分析类型和分析选项,加入插值的 DOF 数值(和温度数值) ,施加其他
14、的载荷和边界条件,指定载荷步选项,并对子模型求解。第一步是进入求解器(/SOLU 或 Main MenuSolution) 。然后定义分析类型(一般为静态)和分析选项。要施加切割边界自由度约束,用下列命令读入 CBDOF 命令生成的由 D 命令组成的文件:Command: /INPUTGUI: Utility MenuFileRead Input from要施加温度插值,用下列命令读入 BFINT 命令生成的由 BF 命令组成的文件:Command: /INPUTGUI: Utility MenuFileRead Input from如果数据有实部和虚部,先读入实部数据文件,指定自由度约束数值
15、和(/或)结点体载荷是否计算,然后读入虚部数据文件。用下列方法指定计算自由度约束数值:Command: DCUM,ADDGUI: Main MenuPreprocessorLoads-Loads-SettingsContraintsMain MenuSolution-Loads-SettingsConstraints用下列方法指定计算结点体载荷数值:Command: BFCUM,ADDGUI: Main MenuPreprocessorLoads-Loads-SettingsNodal Body LdMain MenuSolution-Loads-SettingsNodal Body Ld注意
16、在执行 DCUM 和 BFCUM 命令时要先将其初始状态设为初始值。重要的一点是要将粗糙模型上所有其他载荷和边界条件复制到子模型上。比如对称边界条件,面力,惯性载荷(如重量) ,集中力等(见图 55) 。图 5-5 子模型的载荷ANSYS 高级分析 子模型5-7然后指定载荷步选项(如输出控制)并开始计算:Command: SOLVEGUI: Main MenuSolutionCurrent LSMain MenuSolutionRun FLOTRAN在求解完成后,退出 SOLUTION。FINISH子模型的数据流向(无温度插值)见图 56。图 5-6 子模型分析(无温度插值)的数据流向第五步:
17、验证切割边界和应力集中位置的距离是否足够最后一步是验证子模型切割边界是否远离应力集中部分。可以通过比较切割边界上的结果(应力,磁通密度等)与粗糙模型相应位置的结果是否一致来验证。如果结果符合得很好,证明切割边界的选取是正确的。如果不符合的话,就要重新定义离感兴趣部分更远一些的切割边界重新生成和计算子模型。ANSYS 高级分析 子模型5-8一个比较结果的有效方法是使用云图显示和路径显示,见图 57 和58。图 5-7 比较结果时的云图显示图 5-8 比较结果时的路径显示输入示例下面列出了一个子模型分析的输入示例:!开始子模型分析/FILNAME,coarse !工作文件名为 coarse/PRE
18、P7 !进入 PREP7!生成粗糙模型FINISH/SOLU !进入求解器ANTYPE,. !分析类型和分析选项.D, !载荷和载荷步选项DSYMM,.ACEL,.ANSYS 高级分析 子模型5-9.SAVE !粗糙模型数据库文件 coarse.dbSOLVE !求解粗糙模型!结果在文件 coarse.rst(或 rmg 等)FINISH!生成子模型/CLEAR !清除数据库(或退出 ANSYS 并重新进入)/FILNAME,submod !新工作文件名为 submod/PREP7 !重新进入 PREP7. !生成子模型!进行切割边界插值NSEL,. !选择切割边界上的结点NWRITE !将其
19、写入文件 submod.nodeALLSEL !读入所有实体NWRITE,temp,node !将所有结点写入文件 temp.node(用于温度插值)SAVE !存储子模型数据库文件 submod.dbFINISHRESUME,coarse,db !读入粗糙模型数据库(coarse.db)/POST1 !进入 POST1FILE,coarse,rst !使用粗糙模型结果文件SET,. !读入需要的结果数据CBDOF !从 submod.node 中读入切割边界结点并将 D 命令写入 submod.cbdoBFINT,temps,node !从 temps.node 中读入所有子模型结点并将 B
20、F 命令写入文件 submod.bfin(用于温度插值)FINISH !结束插值过程RESUME !读入子模型数据库(submod.db)/SOLU !进入求解器ANTYPE,. !分析类型和选项./INPUT,submod,cbdo !切割边界自由度/INPUT,submod,bfin !温度插值DSYMM,. !其他载荷和载荷步选项ACEL,.SOLVE !子模型求解ANSYS 高级分析 子模型5-10FINISH/POST1 !进入 POST1. !验证子模型数据FINISH壳到体子模型在壳到体子模型技术中,粗糙模型为壳模型而子模型为三维实体模型。图59 所示为三维实体子模型添加到粗糙壳
21、模型上的例子。图 5-9 3-D 实体模型叠加到壳单元模型上壳到体子模型分析与体对体子模型分析大致一致。下面的几点是要记住的:壳到体子模型分析是将 DBDOF 命令(Main MenuGeneral PostprocSubmodelingInterpolate DOF)和 BFINT 命令(Main MenuGeneralSubmodelingInterp Body Forc)中 KSHS 域设为 1 实现的。 本特性不适用于 SHELL91 或 SHELL99(KEYOPT(11)不等于 0) 。子模型切割边界应为垂直于壳平面的端面(见图 510) 。切割边界上的结点写入文件中NWRITE(
22、Main MenuPreprocessorCreateNodeWrite Node File)。要确定切割边界上结点的自由度数值CBDOF,程序首先将结点延伸到壳平面的最近的单元上,该延伸结点的自由度数值就插值并赋值给相应的结点。温度插值是由计算最近壳单元的中面平均温度得到的。注切割边界上的结点位置必须在最近壳单元平均厚度的 0.75 倍之间,见图 510。也就是说,子模型应大致在粗糙模型的中间。图 5-10 结点旋转:a)CBDOF 命令之前,b)CBDOF 命令之后ANSYS 高级分析 子模型5-11在结构分析中,切割边界结点只计算平动自由度,但其数值是根据延伸结点的平动和转动自由度得到的
23、。而且,结点旋转以使结点的 UY 自由度始终垂直于壳平面,见图 510。UY 自由度只有当结点在壳平面平均厚度的 10之内时才计算。这防止了子模型在反向的过度位移。由 CBDOF 命令写的.CBDO 文件包括两个部分:(1)一组 NMODIF 命令(表示结点旋转角度)和 DDELE 命令(删除 UY 约束),(2)一组 D 命令(施加自由度插值)。这两个部分用/EOF 命令和一个:CBnn 标记分开(nn 为结果序列迭代次数)。用户必须将.CBDO 文件读入 PREP7 中,因为 NMODIF 命令只能在 PREP7 中适用。要完成这步操作,进入前处理器,然后用下列命令:Command: /I
24、NPUTGUI: Utility MenuFileRead Input from同时,要读入.CBDO 文件两次,因为两个命令部分被/EOF 命令分开了。在第二次读入文件时,用/INPUT 命令的 LINE 域指定程序从:CBnn 处开始读入,见下:/PREP7 !.CBDO 文件必须在 PREP7 中读入/INPUT,cbdo !读入 Jobname.cbdo 到/EOF 处/INPUT,dbdo,:cb1 !从:cb1 处读入同一文件子模型分析实例(命令行格式)问题描述求解矩形平板中心开孔,承受横向拉力时的应力集中情况。材料特性和模型的几何形状见下图。/FILNAM,coarse /PRE
25、P7smrt,off/TITLE, STRESS CONCENTRATION AT A HOLE IN A PLATE/NOPRANTYPE,STATIC ! 静力分析ET,1,PLANE2MP,EX,1,30E6MP,NUXY,1,0.3ANSYS 高级分析 子模型5-12K,1,6 ! 关键点K,2,6,6K,3,6K,4,.5K,5,.5K,6L,1,2 L,2,3L,3,4LESIZE,3,4,.25 ! 定义线 3 的分段数LARC,4,5,6,0.5LESIZE,4,6 ! 定义线 4 的分段数 L,5,1LESIZE,5,4,4 ! 定义线 5 的分段数AL,1,2,3,4,5
26、ESIZE,4 ! 每条线分为 4 段AMESH,ALL/AUTO,1 /PLOPTS,INFO,0 ANSYS 高级分析 子模型5-13/PLOPTS,WINS,0/WINDOW,LTOP LSEL,S,LINE,3,5,2DL,ALL,SYMMLSEL,S,LINE,1NSLL,1SF,ALL,PRES,-1000. ! 施加拉力LSEL,ALLNSEL,ALLCSYS,1FINISH/SOLU SOLVEFINISHSAVE ! 存储文件 VM142.DB/POST1SET,1,1NSORT,S,X,3 PRNSOL,S,COMP/WINDOW,1,OFF /NOERASE /DSCAL
27、E,2,1/WINDOW,2,RTOP PLNSOL,S,X*GET,CRSESTR,NODE,18,S,X*STATUS*DIM,LABEL,CHAR,1,2*DIM,VALUE,1,3LABEL(1,1) = MX STR LABEL(1,2) = CRS MODEL*VFILL,VALUE(1,1),DATA,3018*VFILL,VALUE(1,2),DATA,CRSESTR*VFILL,VALUE(1,3),DATA,ABS(CRSESTR/3018)SAVE,TABLE_1FINISH/CLEAR, NOSTART ! CLEAR THE DATABASE/FILNAM,SUBMO
28、DEL ! 定义子模型文件名/PREP7smrt,off/NOPR/TITLE, STRESS CONCENTRATION AT A HOLE IN A PLATEANTYPE,STATICET,1,PLANE42MP,EX,1,30E6ANSYS 高级分析 子模型5-14MP,NUXY,1,0.3CSYS,1K,10,.5,45 K,11,.5,90K,12,1.5,45K,13,1.5,90A,10,12,13,11ESIZE,8 MSHK,1 MSHA,0,2D AMESH,1/WINDOW,2,OFF/NOERASE/PLOPTS,INFO,0/PLOPTS,WINS,0/WINDOW
29、,1,LTOP /USER ! 用户定义的比例/DIST,1,3.3 /FOCUS,1,3,3 EPLOTLSEL,S,LINE,1,2NSLL,1 ! 选择切割边界的结点NWRITE ! 将结点写入文件 SUBMODEL.NODELSEL,ALLNSEL,ALLFINISHSAVE ! 存储子模型数据库文件 SUBMODEL.DB/POST1RESUME,coarse,db FILE,coarse,rst CBDOF,0,0 !激活边界条件插值FINISH/PREP7smrt,offRESUME !从文件 SUBMODEL.DB 中读入子模型/NOPR/INPUT,cbdo,:cb1 ! 从
30、文件 SUBMODEL.CBDO 中读入插值边界条件/GOPRLSEL,S,LINE,3 ! 施加其余的边界条件DL,ALL,SYMMFINISH/SOLU SOLVEFINISHANSYS 高级分析 子模型5-15/POST1SET,1,1NSORT,S,X,3PRNSOL,S,COMP/WINDOW,1,OFF/AUTO,3/WINDOW,3,BOT /NOERASE/PLOPTS,MINM,1/USER,3/DIST,3,.2/FOCUS,3,.2,.5/CONTOUR,3,AUTO PLNSOL,SX*GET,SUBSTR,NODE,18,S,X*DIM,LABEL,CHAR,1,2*
31、DIM,VALUE,1,3LABEL(1,1) = MAX STRSLABEL(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_2FINISH/CLEAR,NOSTART/FILNAM,SUBMODEL/PREP7smrt,off/TITLE, STRESS CONCENTRATION AT A HOLE IN A PLATE/NOPRANTYPE,STATIC ET,1,PLANE146MP,EX,1,
32、30E6MP,NUXY,1,0.3K,1,6 ! 关键点K,2,6,6K,3,6K,4,.5K,5,.5K,6L,1,2 L,2,3L,3,4LESIZE,3,4,.25 ANSYS 高级分析 子模型5-16LARC,4,5,6,0.5LESIZE,4,6 L,5,1LESIZE,5,4,4 AL,1,2,3,4,5 ESIZE,4 AMESH,ALL/AUTO,1 /PLOPTS,INFO,0 /PLOPTS,WINS,0/WINDOW,LTOP LSEL,S,LINE,3,5,2DL,ALL,SYMMLSEL,S,LINE,1NSLL,1SF,ALL,PRES,-1000. LSEL,AL
33、LNSEL,ALLCSYS,1FINISH/SOLU SOLVEFINISH/POST1SET,1,1PRNSOL,S,COMP/WINDOW,1,OFF /NOERASE /DSCALE,2,1/WINDOW,2,RTOP PLNSOL,S,X*GET,SUBSTR,NODE,18,S,X*DIM,LABEL,CHAR,1,2*DIM,VALUE,1,3LABEL(1,1) = MAX STRSLABEL(1,2) = CRS MOD *VFILL,VALUE(1,1),DATA,3018*VFILL,VALUE(1,2),DATA,SUBSTR*VFILL,VALUE(1,3),DATA,ABS(SUBSTR/3018 )SAVE,TABLE_3FINISHANSYS Verification Manual中例子:VM142 盘孔处的应力集中ANSYS 高级分析 子模型5-17