ANSYS 有限元分析 命令流 实例 您所在的位置:网站首页 ANSYS中CP与MPC ANSYS 有限元分析 命令流 实例

ANSYS 有限元分析 命令流 实例

2023-12-05 07:49| 来源: 网络整理| 查看: 265

目 录 Blog Links一、前言二、创建法兰三、创建垫片四、创建螺栓五、创建接触六、加载及求解七、后处理

Blog Links

DalNur | 博客总目录

ANSYS 有限元分析 概述

ANSYS 有限元分析 坐标系/工作平面

ANSYS 有限元分析 几何建模

ANSYS 有限元分析 网格划分

ANSYS 有限元分析 选择与组件

ANSYS 有限元分析 修改与编辑

ANSYS 有限元分析 接触分析

ANSYS 有限元分析 加载/求解/输出

ANSYS 有限元分析 后处理 General Postproc

ANSYS 有限元分析 后处理 结点解与单元解

ANSYS 有限元分析 命令流 实例

ANSYS 静力 分析实例 悬臂梁

nCodeDL 高周疲劳 分析实例 悬臂梁

一、前言

  本文为 ANSYS 有限元分析 系列博客中所采用的法兰分析实例的系列命令流。

二、创建法兰 FINISH ! 退出当前处理器 /CLEAR,ALL ! 清除所有 /PREP7 ! 进人前处理器 *AFUN,RAD ! 指定角度单位为弧度(非必要步骤) pi = ACOS(-1) ! 获取圆周率pi的数值(非必要步骤) *AFUN,DEG ! 将角度单位切换为度(非必要步骤) /com,************* 1. 创建坐标系 ************* CSYS,0 ! 激活总体直角坐标系统 xc = 500 $ yc = 0 $ zc = 0 ! 局部坐标系原点位置(相对应当前激活坐标系) thxy = 0 $ thyz = 0 $ thzx = 90 ! 局部坐标轴旋转角度度(相对应当前激活坐标系) LOCAL,15,0,xc,yc,zc,thxy,thyz,thzx ! 创建局部直角坐标系15 CSYS,15 ! 激活局部坐标系15 xc = 1000 $ yc = 0 $ zc = 0 ! 局部坐标系原点位置(相对应当前激活坐标系) thxy = 0 $ thyz = 0 $ thzx = 0 ! 局部坐标轴旋转角度度(相对应当前激活坐标系) CLOCAL,16,1,xc,yc,zc,thxy,thyz,thzx ! 根据激活的局部坐标系15定义新的局部柱坐标系16 /com,************** 2. 创建几何 ************** CSYS,16 ! 激活局部柱坐标系16 WPCSYS,-1 ! 根据当前坐标系定义工作平面 d0 = 40 ! 螺栓孔直径为40 K,1,d0/2,0 $ K,2,d0/2,45 $ K,3,d0/2,90 $ K,4,d0/2,135 $ K,5,d0/2,180 L,1,2 ! 由两个关键点创建一条线(可以是直线或是弧线取决于坐标系) *REPEAT,4,1,1 ! 上一条命令重复执行4次,始末关键点编号增量为1。 CSYS,15 ! 激活局部坐标系15 CLOCAL,17,1 ! 根据激活的局部坐标系15定义新的局部柱坐标系17 WPCSYS,-1, ! 根据当前坐标系定义工作平面 width = 88 ! 环带宽度为88 num = 55 ! 螺栓总数 Ds = 2000 ! 螺栓分度圆直径 K,6,Ds/2+width/2 $ K,7,Ds/2+width/2,180/num $ K,8,Ds/2,180/num K,9,Ds/2-width/2,180/num $ K,10,Ds/2-width/2,0 L,6,7 *REPEAT,4,1,1 L,1,6 *REPEAT,5,1,1 /PNUM,KP,1 ! 显示关键点编号 /PNUM,LINE,1 ! 显示线编号 /REPLOT ! Replot GPLOT ! Multi-Plots AL,1,10,5,9 ! 创建平面,平面由边界线围成,边界线的编号分别为1、10、5、9。 *REPEAT,4,1,1,1,1 ! 上一条命令重复执行4次,各边界线编号增量均为1。 /PNUM,KP,0 ! 关闭关键点编号显示 /PNUM,LINE,0 ! 关闭线编号显示 /PNUM,AREA,1 ! 显示面的编号 /REPLOT ! Replot GPLOT ! Multi-Plots /com,************** 3. 定义材性 ************** ALLSEL,ALL ! *GET前最好全选,以免出现意向不到的错误。 *GET,mtmax,MAT,,NUM,MAX ! 获取当前定义的最大单元类型编号并将其赋予变量mtmax。 MPTEMP,,,,,,,, ! 为材料属性定义温度表 MPTEMP,1,0 ! 为材料属性定义温度表 MPDATA,EX,mtmax+3,,2e5 ! 定义mtmax+1号材料属性弹性模量 MPDATA,PRXY,mtmax+3,,0.28 ! 定义mtmax+1号材料属性泊松比 MPDATA,DENS,mtmax+3,,2700 ! 定义mtmax+1号材料属性密度 /com,************** 4. 定义单元 ************** ! MESH200单元 *GET,etmax,ETYP,,NUM,MAX ! 获取当前定义的最大单元类型编号并将其赋予变量etmax (etmax=0)。 ET,etmax+2,MESH200 ! 定义单元类型为Mesh200,其单元识别号为etmax+2。 KEYOPT,etmax+2,1,7 ! 设置单元etmax+2的关键选项,即令 Keyoption(1)=7。 ! SOLID186单元 ET,etmax+3,SOLID186 ! 定义单元类型为SOLID186,其单元识别号为etmax+3。 KEYOPT,etmax+3,2,1 ! 设置单元关键选项,将单元类型参考号为etmax+1的单元设置为完全积分单元。 /com,************** 5. 设置种子 ************** LESIZE,9, , ,2, , , , ,0 ! 设置组成面的边(线)的网格大小,编号为9的线被分成2段。 *REPEAT,5,1 ! 上一条命令重复执行5次 LESIZE,1, , ,2, , , , ,0 ! 设置线的网格大小,编号为1的线被分成2段。 *REPEAT,4,1 ! 上一条命令重复执行4次 LESIZE,8, , ,2, , , , ,0 ! 设置线的网格大小,编号为8的线被分成2段。 /com,************** 6. 创建网格 ************** MAT,mtmax+3 ! 给随后生成的单元激活一个材料号 TYPE,etmax+2 ! 给随后生成的单元激活一个单元类型号 MSHAPE,0,2D ! 指定划分单元的形状,生成四边形单元。 MSHKEY,1 ! 采用映射网格划分方式划分网格 AMESH,ALL ! 将所有面划分网格 /PNUM,ELEM,1 ! 显示单元编号 /REPLOT ! Replot EPLOT ! Elements plots /VIEW,1,-1 ! Left View /ANG,1 /REP,FAST MAT,mtmax+3 ! 给随后生成的单元激活一个材料号 TYPE,etmax+3 ! 给随后生成的单元激活一个单元类型号 ! 执行拉伸 EXTOPT,ESIZE,8,1, ! EXTOPT:由面单元生成体单元的控制选项; ! 8表示在体生成或体扫略方向上单元分割数量为8; ! 1表示在体生成或体扫略方向上的间隔率为1(默认)。 EXTOPT,ACLEAR,1 ! 体单元网格生成后清除面单元网格即MESH200。 tf = 40 ! 法兰厚度为40 VEXT,ALL, , ,0,0,tf ! 通过给的偏移量由面生体 EPLOT ! Elements plots /REPLOT ! Replot /com,************** 7. 镜像及阵列 ************** CSYS,15 ! 激活局部直角坐标系15 VSYMM,Y,ALL, , , ,0,0 ! 对所有几何体进行镜像操作,镜像平面为xoz平面。 CSYS,17 ! 激活局部柱坐标系17 num = 55 ! 螺栓总数 VGEN,4,ALL, , , ,360/num, , ,0 ! 复制体,重复生成次数4,复制全部体。 ! 当前激活坐标系下,关键点坐标值的偏移量为(--,360/num,0) ! 单个偏转角度为360/num /PNUM,ELEM,0 ! 关闭单元编号显示 /REPLOT ! Replot EPLOT ! Elements plots NUMMRG,ALL ! 对实体进行合并 NUMCMP,ALL ! 压缩所定义项的编号 ALLSEL,ALL,ELEM ! Selects all elements. CM,TopFlangeElems,ELEM ! 由所选实体生成一个组件 ! 元件名称:TopFlangeElems;元件中的数据类型:单元。 CSYS,16 ! 激活局部柱坐标系16 CLOCAL,19,0 ! 创建局部直角坐标系19 VSYMM,Z,ALL, , , ,0,0 ! 对所有几何体进行镜像操作,镜像平面为局部坐标系19的xoY平面。 ALLSEL,ALL,ELEM ! Selects all elements. CMSEL,U,TopFlangeElems ! 上一选择集中除去组件TopFlangeElems内的单元 CM,BotFlangeElems,ELEM ! 由所选实体生成一个组件 ! 元件名称:BotFlangeElems;元件中的数据类型:单元。 /com,************ 8. 输出cdb文件 ************* ALLSEL,ALL ! 全选 select all entities CDWRITE,DB,'PartFlange','cdb',,'','' ! 当前模型另存为 PartFlange.cdb 文件。

在这里插入图片描述

法兰模型 三、创建垫片 FINISH ! 退出当前处理器 /CLEAR,ALL ! 清除所有 /PREP7 ! 进人前处理器 *AFUN,RAD ! 指定角度单位为弧度(非必要步骤) pi = ACOS(-1) ! 获取圆周率pi的数值(非必要步骤) *AFUN,DEG ! 将角度单位切换为度(非必要步骤) /com,************* 1. 创建坐标系 ************* CSYS,0 ! 激活总体直角坐标系统 xc = 500 $ yc = 0 $ zc = 0 ! 局部坐标系原点位置(相对应当前激活坐标系) thxy = 0 $ thyz = 0 $ thzx = 90 ! 局部坐标轴旋转角度度(相对应当前激活坐标系) LOCAL,15,0,xc,yc,zc,thxy,thyz,thzx ! 创建局部直角坐标系15 CSYS,15 ! 激活局部坐标系15 xc = 1000 $ yc = 0 $ zc = 0 ! 局部坐标系原点位置(相对应当前激活坐标系) thxy = 0 $ thyz = 0 $ thzx = 0 ! 局部坐标轴旋转角度度(相对应当前激活坐标系) CLOCAL,16,1,xc,yc,zc,thxy,thyz,thzx ! 根据激活的局部坐标系15定义新的局部柱坐标系16 /com,************* 2. 创建几何体 ************* CSYS,16 tf = 40 ! 法兰盘厚度 CLOCAL,18,0,0,0,tf ! 创建局部直角坐标系18 *GET,vlmax,VOLU,,NUM,MAX ! 获取当前定义的最大几何体编号并将其赋予变量vlmax。 WPCSYS,-1, ! 定义工作平面,工作平面为局部直角坐标系18的xoy平面。 d0 = 40 ! 螺栓孔直径为40 d1 = 70 $ tw = 5 ! 垫片外径为70,垫片厚度为5。 CYL4,0,0,d0/2,0,d1/2,90,tw ! 创建四分之一垫片,其编号为V1,见下图。 CYL4,0,0,d0/2,90,d1/2,180,tw ! 创建四分之一垫片,其编号为V2,见下图。 CYL4,0,0,d0/2,180,d1/2,270,tw ! 创建四分之一垫片,其编号为V3,见下图。 CYL4,0,0,d0/2,270,d1/2,360,tw ! 创建四分之一垫片,其编号为V4,见下图。 VPLOT ! Volumes plots /PNUM,AREA,0 ! 关闭几何面编号显示 /PNUM,VOLU,1 ! 显示几何体编号 /REPLOT ! Replot VGLUE,1,2,3,4 ! 粘接1号、2号、3号和4号几何体。 ! VGLUE,ALL ! 粘接全部几何体。 /com,************** 3. 定义材性 ************** *GET,mtmax,MAT,,NUM,MAX ! 获取当前定义的最大单元类型编号并将其赋予变量mtmax。 MPTEMP,1,0 ! 为材料属性定义温度表 MPDATA,EX,mtmax+1,,2e5 ! 定义mtmax+1号材料属性弹性模量 MPDATA,PRXY,mtmax+1,,0.28 ! 定义mtmax+1号材料属性泊松比 MPDATA,DENS,mtmax+1,,7.85e-9 ! 定义mtmax+1号材料属性密度 /com,************** 4. 定义单元 ************** *GET,etmax,ETYP,,NUM,MAX ! 获取当前定义的最大单元类型编号并将其赋予变量etmax。 ET,etmax+1,SOLID185 ! 定义单元类型为SOLID185,其单元识别号为etmax+1。 KEYOPT,etmax+1,2,2 ! 设置单元关键选项,KEYOPT(2)=2,Enhanced strain formulation。 /com,************** 5. 划分网格 ************** CSYS,18 ! 激活局部主坐标系18 tw = 5 ! 垫片厚度为5 MAT,mtmax+1 TYPE,etmax+1 LSEL,S,LENGTH,,tw ! 按长度选线,选择垫片厚度方向上的全部线。 LESIZE,ALL, , ,3, , , , ,0 ! 分3段(布种子) LSEL,S,LENGTH,,0,d1/2-d0/2 ! 按长度选线,选择垫片半径方向上的全部线。 LESIZE,ALL, , ,3, , , , ,0 ! 分3段(布种子) LSEL,S,LINE, ,ALL ! 选择全部线 LSEL,U,LENGTH,,tw ! 上一选择集中除去长度为tw的线 LSEL,U,LENGTH,,0,d1/2-d0/2 ! 上一选择集中除去长度为d1/2-d0/2的线 LESIZE,ALL, , ,10, , , , ,0 ! 分10段(布种子) VSWEEP,1 ! 对1号几何体进行扫掠分网 VSWEEP,5 ! 对5号几何体进行扫掠分网 VSWEEP,6 ! 对6号几何体进行扫掠分网 VSWEEP,7 ! 对7号几何体进行扫掠分网 ! VSWEEP,ALL /com,************** 6. 环形阵列 ************** CSYS,18 ! 激活局部直角坐标系18 tw = 5 $ tf = 40 ! 分别为垫片厚度和法兰厚度 VSEL,S,VOLU, ,ALL ! 选择所有几何体 VGEN,2,ALL, , , 0,0, -(tw+2*tf) ! 沿局部轴z轴阵列,坐标增量为-(tw+2*tf),生成相关结点和单元。 CSYS,15 ! 激活局部坐标系15 CLOCAL,17,1 ! 根据激活的局部坐标系15定义新的局部柱坐标系17 CSYS,17 ! 激活局部柱坐标系17 num = 55 ! 螺栓总数 VSEL,S,VOLU, ,ALL ! 选择所有几何体 VGEN,4,ALL, , , ,360/num ! 复制体,重复生成次数4。 ! 当前激活坐标系下,关键点坐标值的偏移量为(--,360/num,0) ! 单个偏转角度为360/num NUMMRG,ALL ! 对实体进行合并 NUMCMP,ALL ! 压缩所定义项的编号 ALLSEL,ALL,ELEM ! Selects all elements. CM,WasherElems,ELEM ! 由所选实体生成一个组件 ! 元件名称:WasherElems;元件中的数据类型:单元。 /com,************ 7. 输出cdb文件 ************* ALLSEL,ALL ! 全选 select all entities CDWRITE,DB,'PartWasher','cdb',,'','' ! 当前模型另存为 PartWasher.cdb 文件。

在这里插入图片描述

垫片模型 四、创建螺栓 FINISH ! 退出当前处理器 /CLEAR,ALL ! 清除所有 /PREP7 ! 进人前处理器 *AFUN,RAD ! 指定角度单位为弧度(非必要步骤) pi = ACOS(-1) ! 获取圆周率pi的数值(非必要步骤) *AFUN,DEG ! 将角度单位切换为度(非必要步骤) /com,************* 1. 创建坐标系 ************* CSYS,0 ! 激活总体直角坐标系统 xc = 500 $ yc = 0 $ zc = 0 ! 局部坐标系原点位置(相对应当前激活坐标系) thxy = 0 $ thyz = 0 $ thzx = 90 ! 局部坐标轴旋转角度度(相对应当前激活坐标系) LOCAL,15,0,xc,yc,zc,thxy,thyz,thzx ! 创建局部直角坐标系15 CSYS,15 ! 激活局部坐标系15 xc = 1000 $ yc = 0 $ zc = 0 ! 局部坐标系原点位置(相对应当前激活坐标系) thxy = 0 $ thyz = 0 $ thzx = 0 ! 局部坐标轴旋转角度度(相对应当前激活坐标系) CLOCAL,16,1,xc,yc,zc,thxy,thyz,thzx ! 根据激活的局部坐标系15定义新的局部柱坐标系16 /com,************** 2. 定义材料 ************** *GET,mtmax,MAT,,NUM,MAX ! 获取当前定义的最大单元类型编号并将其赋予变量mtmax。 MPTEMP,,,,,,,, ! 为材料属性定义温度表 MPTEMP,1,0 ! 为材料属性定义温度表 MPDATA,EX,mtmax+1,,2e5 ! 定义mtmax+1号材料属性弹性模量 MPDATA,PRXY,mtmax+1,,0.28 ! 定义mtmax+1号材料属性泊松比 MPDATA,DENS,mtmax+1,,2700 ! 定义mtmax+1号材料属性密度 /com,************** 3. 定义单元 ************** *GET,etmax,ETYP,,NUM,MAX ! 获取当前定义的最大单元类型编号并将其赋予变量etmax。 ET,etmax+1,BEAM189 ! 定义梁单元 /com,************** 4. 定义截面 ************** *GET,scmax,SECP,,NUM,MAX ! 获取当前定义的最大梁截面编号并将其赋予变量scmax。 SECTYPE,scmax+1,BEAM,CSOLID, ,0 ! 定义梁截面 SECOFFSET,CENT ! 设置截面偏置,即梁杆轴端点位于梁截面形心上。 de = 38 ! 螺栓有效直径 SECDATA,de/2,10,3 ! 应力截面直径,圆周方向10份,半径方向3份。 SECTYPE,scmax+2,BEAM,CSOLID, ,0 SECOFFSET,CENT ds = 26 ! 螺栓缩进段直径 SECDATA,ds/2,10,3 /com,************* 5. 创建关键点 ************* CSYS,16 CLOCAL,19,0 ! 创建局部直角坐标系19 tf = 40 $ tw = 5 ! 分别为法兰厚度及垫片厚度 startPntZ = -(tf+tw) ! 在局部坐标系19下,梁轴线起点z坐标值。 midPntZ = 0 ! 螺栓预紧力施加位置处 endPntZ= tf+tw ! 在局部坐标系19下,梁轴线终点z坐标值。 *GET,lnmax,LINE,,NUM,MAX ! 获取当前定义的最大几何线编号并将其赋予变量lnmax。 *GET,kpmax,KP,,NUM,MAX ! 获取当前定义的最大关键点编号并将其赋予变量kpmax。 K, ,0,0,startPntZ ! 创建关键点 K, ,0,0,midPntZ K, ,0,0,20 K, ,0,0,endPntZ /com,************** 6. 连点成线 ************** LSTR,kpmax+1,kpmax+2 ! 创建直线 *REPEAT,3,1,1 /com,*************** 7. 布种子 *************** LESIZE,lnmax+1, , ,6,1, , , ,0 ! 单元数量6 LESIZE,lnmax+2, , ,6,1, , , ,0 ! 单元数量6 LESIZE,lnmax+3, , ,3,1, , , ,0 ! 单元数量3 /com,************** 8. 分配属性 ************** TYPE,etmax+1 ! 激活单元类型号 MAT,mtmax+1 ! 激活材料编号 SECNUM,scmax+1 ! 激活截面编号 LMESH,lnmax+1 ! 为编号为lnmax+1的线划分网格 LMESH,lnmax+2 ! 为编号为lnmax+2的线划分网格 TYPE,etmax+1 ! 激活单元类型号 MAT,mtmax+1 ! 激活材料编号 SECNUM,scmax+2 ! 激活截面编号 LMESH,lnmax+3 ! 为编号为lnmax+2的线划分网格 /ESHAPE,1 ! 显示梁截面 /REPLOT ! Replot /com,************** 9. 环形阵列 ************** CSYS,15 ! 激活局部坐标系15 CLOCAL,17,1 ! 根据激活的局部坐标系15定义新的局部柱坐标系17 CSYS,17 ! 激活局部柱坐标系17 num = 55 ! 螺栓总数 !LSEL,S,LINE, ,ALL ! 选择全部线 LGEN,4,ALL, , , ,360/num, , ,0 ! 执行阵列,额外阵列数为3。 ALLSEL,ALL NUMMRG,ALL ! 对实体进行合并 NUMCMP,ALL ! 压缩所定义项的编号 /ESHAPE,0 ! 关闭梁截面显示 /REPLOT ! Replot ALLSEL,ALL,ELEM ! Selects all elements. CM,BoltElems,ELEM ! 由所选实体生成一个组件 ! 元件名称:BoltElems;元件中的数据类型:单元。 /com,*********** 10. 创建预紧单元 *********** CSYS,15 ! 激活局部坐标系15 CLOCAL,17,1 ! 根据激活的局部坐标系15定义新的局部柱坐标系17 CSYS,17 ! 激活局部柱坐标系17 num = 55 ! 螺栓总数 radius = 1000 ! 法兰螺栓分度圆半径 *DO,i,1,4 CMSEL,S,BoltElems ! 选择组件BoltElems(全部螺栓杆单元) ALLSEL,BELOW,ELEM ! 选择单元以下附属即构成单元的结点 startAngle = (360/num)*(i-1)-(360/num/2-1) endAngle = (360/num)*(i-1)+(360/num/2-1) NSEL,R,LOC,Y,startAngle,endAngle ESLN,,1 ESEL,R,ENAME,,BEAM189 ! 选择BEAM189单元 zmid = 0 ! 预紧力施加位置处的z坐标值 CLOCAL,201,1,radius,360/num*(i-1),0 ! 创建螺栓杆处的局部柱坐标系201 PSMESH,1001+i, , ,ALL, , 15,Z, ,node(0,0,zmid),, , , !螺栓杆中间位置处插入预紧单元 CSYS,17 ! 激活局部柱坐标系17 *ENDDO ALLSEL,ALL EPLOT ALLSEL,ALL,ELEM ! Selects all elements. CM,BoltElems,ELEM ! 由所选实体生成一个组件 ! 元件名称:BoltElems;元件中的数据类型:单元。 /com,************* 11. 输出cdb文件 ************* ALLSEL,ALL ! 全选 select all entities CDWRITE,DB,'PartBolt','cdb',,'','' ! 当前模型另存为 PartBolt.cdb 文件。

在这里插入图片描述

螺栓模型

在这里插入图片描述

179 选择预紧单元 五、创建接触 FINISH ! 退出当前处理器 /CLEAR,ALL ! 清除所有 /PREP7 ! 进人前处理器 /com,************** 1. 导入cdb文件 ************** CDREAD,db,'PartFlange','cdb',,'','' ! 导入法兰模型 CDREAD,db,'PartWasher','cdb',,'','' ! 导入垫片模型 CDREAD,db,'PartBolt','cdb',,'','' ! 导入栓杆模型 ALLSEL,ALL /ESHAPE,0 ! 显示梁截面 /REPLOT ! Replot EPLOT ! Elements plots /com,************** 2. 创建坐标系 ************** CSYS,0 ! 激活总体直角坐标系统 xc = 500 $ yc = 0 $ zc = 0 ! 局部坐标系原点位置(相对应当前激活坐标系) thxy = 0 $ thyz = 0 $ thzx = 90 ! 局部坐标轴旋转角度度(相对应当前激活坐标系) LOCAL,15,0,xc,yc,zc,thxy,thyz,thzx ! 创建局部直角坐标系15 CSYS,15 ! 激活局部坐标系15 xc = 1000 $ yc = 0 $ zc = 0 ! 局部坐标系原点位置(相对应当前激活坐标系) thxy = 0 $ thyz = 0 $ thzx = 0 ! 局部坐标轴旋转角度度(相对应当前激活坐标系) CLOCAL,16,1,xc,yc,zc,thxy,thyz,thzx ! 根据激活的局部坐标系15定义新的局部柱坐标系16 /com,************** 3. 螺栓端部与上法兰侧垫片间MPC绑定接触 *GET,etmax,ETYP, ,NUM,MAX ! 获取模型空间当前最大单元类型号 *GET,rlmax,RCON, ,NUM,MAX ! 获取模型空间当前最大实常数号 ET,etmax+1,TARGE170 ! 定义目标面单元 - 连续面 KEYOPT,etmax+1,2,1 ! 用户指定 rigid target nodes ET,etmax+2,CONTA174 ! 定义接触面单元 - 离散面 KEYOPT,etmax+2,2,2 ! 接触算法:MPC。 KEYOPT,etmax+2,4,1 ! 接触探测点位置:On nodal point - normal from contact surface 。 KEYOPT,etmax+2,12,5 ! 接触面行为:始终绑定。 num = 55 ! 螺栓总数 radius = 1000 ! 法兰螺栓分度圆半径 tf = 40 $ tw = 5 ! 分别为法兰厚度及垫片厚度 startPntZ = -(tf+tw) ! 在局部坐标系15下,梁轴线起点z坐标值。 midPntZ = 0 ! 螺栓预紧力施加位置处 endPntZ= tf+tw ! 在局部坐标系15下,梁轴线终点z坐标值。 d0 = 40 ! 螺栓孔直径/垫片内径 d1 = 70 ! 垫片外径 CSYS,17 ! 激活局部坐标系17 *DO,i,1,4 ! DO循环,分别执行 i=1,2,3,4 共执行4次。 CLOCAL,201,1,radius,360/num*(i-1),0 ! 螺栓杆处的局部柱坐标系201 R,rlmax+i ! 定义新的实常数 REAL,rlmax+i ! 激活实常数 TYPE,etmax+1 ! 激活目标单元类型号 TSHAP,PILO ! 目标单元几何形状为导向结点 CMSEL,S,BoltElems ! 选择组件BoltElems(全部螺栓杆单元) ALLSEL,BELOW,ELEM ! 选择单元以下附属即构成单元的结点 E,NODE(0,0,endPntZ) ! 在结点(0,0,endPntZ)处创建目标单元 ALLSEL,ALL ! 全选,清除上述选择集。 TYPE,etmax+2 ! 激活接触单元类型号 CMSEL,S,WasherElems ! 选择组件WasherElems(全部垫片单元) ALLSEL,BELOW,ELEM ! 选择单元以下附属即构成单元的结点 NSEL,R,EXT ! 选择外表面结点 ! 按坐标位置选择结点,最终选出垫片外表面结点。 NSEL,R,LOC,X,0,d1/2+0.5 NSEL,R,LOC,Z,endPntZ-0.5,endPntZ+0.5 ESURF, ,TOP ! 在存在已选单元的自由面上生成重叠单元,即创建接触单元。 ALLSEL,ALL CSYS,17 *ENDDO /com,************** 4. 螺栓端部与下法兰侧垫片间MPC绑定接触 *GET,etmax,ETYP, ,NUM,MAX ! 获取模型空间当前最大单元类型号 *GET,rlmax,RCON, ,NUM,MAX ! 获取模型空间当前最大实常数号 ET,etmax+1,TARGE170 ! 定义目标面单元 - 连续面 KEYOPT,etmax+1,2,1 ! 用户指定 rigid target nodes ET,etmax+2,CONTA174 ! 定义接触面单元 - 离散面 KEYOPT,etmax+2,2,2 ! 接触算法:MPC。 KEYOPT,etmax+2,4,1 ! 接触探测点位置:On nodal point - normal from contact surface 。 KEYOPT,etmax+2,12,5 ! 接触面行为:始终绑定。 num = 55 ! 螺栓总数 radius = 1000 ! 法兰螺栓分度圆半径 tf = 40 $ tw = 5 ! 分别为法兰厚度及垫片厚度 startPntZ = -(tf+tw) ! 在局部坐标系15下,梁轴线起点z坐标值。 midPntZ = 0 ! 螺栓预紧力施加位置处 endPntZ= tf+tw ! 在局部坐标系15下,梁轴线终点z坐标值。 d0 = 40 ! 螺栓孔直径/垫片内径 d1 = 70 ! 垫片外径 CSYS,17 ! 激活局部坐标系17 *DO,i,1,4 ! DO循环,分别执行 i=1,2,3,4 共执行4次。 CLOCAL,201,1,radius,360/num*(i-1),0 ! 螺栓杆处的局部柱坐标系201 R,rlmax+i ! 定义新的实常数 REAL,rlmax+i ! 激活实常数 TYPE,etmax+1 ! 激活目标单元类型号 TSHAP,PILO ! 目标单元几何形状为导向结点 CMSEL,S,BoltElems ! 选择组件BoltElems(全部螺栓杆单元) ALLSEL,BELOW,ELEM ! 选择单元以下附属即构成单元的结点 E,NODE(0,0,startPntZ) ! 在结点(0,0,startPntZ)处创建目标单元 ALLSEL,ALL ! 全选,清除上述选择集。 TYPE,etmax+2 ! 激活接触单元类型号 CMSEL,S,WasherElems ! 选择组件WasherElems(全部垫片单元) ALLSEL,BELOW,ELEM ! 选择单元以下附属即构成单元的结点 NSEL,R,EXT ! 选择外表面结点 ! 按坐标位置选择结点,最终选出垫片外表面结点。 NSEL,R,LOC,X,0,d1/2+0.5 NSEL,R,LOC,Z,startPntZ-0.5,startPntZ+0.5 ESURF, ,TOP ! 在存在已选单元的自由面上生成重叠单元,即创建接触单元。 ALLSEL,ALL CSYS,17 *ENDDO /com,************** 5. 创建法兰与垫片间标准接触 *GET,etmax,ETYP, ,NUM,MAX ! 获取模型空间当前最大单元类型号 *GET,rlmax,RCON, ,NUM,MAX ! 获取模型空间当前最大实常数号 R,rlmax+1 ! 定义新的实常数 ET,etmax+1,170 ! 定义目标面单元 - 连续面 ET,etmax+2,174 ! 定义接触面单元 - 离散面 KEYOPT,etmax+2,2,0 ! 接触算法:增广拉格朗日乘子法。 KEYOPT,etmax+2,4,0 ! 接触探测点位置:高斯积分点。 KEYOPT,etmax+2,5,4 ! CNOF/ICONT Automated adjustment: Auto ICONT. KEYOPT,etmax+2,9,2 ! 初始穿透/间隙效应:包含初始几何穿透或间隙和偏置,但带有坡道效应。 KEYOPT,etmax+2,10,2 ! 接触刚度更新:在每个迭代步基于下层单元目前的平均应力进行更新, ! 但在整个求解过程中实际弹性滑移始终不超过最大允许极限。 MP,MU,etmax+1,0.3 ! 定义摩擦系数 CSYS,17 ! 激活局部坐标系17 REAL,rlmax+1 ! 激活实常数 MAT,etmax+1 ! 激活材料编号 tf = 40 $ tw = 5 ! 分别为法兰厚度及垫片厚度 TYPE,etmax+1 ! 激活目标单元类型号 CMSEL,S,WasherElems ! 选择组件WasherElems(全部螺栓杆单元) ALLSEL,BELOW,ELEM ! 选择单元以下附属即构成单元的全部结点 NSEL,R,EXT ! 选择表面全部结点 NSEL,R,LOC,Z,-tf-0.5,tf+0.5 ! 选择位于接触面上的全部结点 ESLN,S,0 ! 选择结点附属单元,0表示单元的任何一个结点被选中,则该单元被选中。 ESURF ! 在存在已选单元的自由面上生成重叠单元,即创建接触单元。 ALLSEL,ALL ! 全选,清除上述选择集。 TYPE,etmax+2 ! 激活接触单元类型号 CMSEL,S,TopFlangeElems ! 选择组件TopFlangeElems(上法兰全部单元) CMSEL,A,BotFlangeElems ! 补选组件BotFlangeElems(上法兰全部单元) ALLSEL,BELOW,ELEM ! 选择单元以下附属即构成单元的结点 NSEL,R,EXT ! 选择外表面结点 NSEL,U,LOC,Z,-tf+0.5,tf-0.5 ! 选择位于接触面上的全部结点 ESURF ! 在存在已选单元的自由面上生成重叠单元,即创建接触单元。 ALLSEL,ALL ! 全选,清除上述选择集。 /com,************** 6. 创建法兰间的标准接触 *GET,etmax,ETYP, ,NUM,MAX ! 获取模型空间当前最大单元类型号 *GET,rlmax,RCON, ,NUM,MAX ! 获取模型空间当前最大实常数号 R,rlmax+1 ! 定义新的实常数 ET,etmax+1,170 ! 定义目标面单元 - 连续面 ET,etmax+2,174 ! 定义接触面单元 - 离散面 KEYOPT,etmax+2,2,0 ! 接触算法:增广拉格朗日乘子法。 KEYOPT,etmax+2,4,0 ! 接触探测点位置:高斯积分点。 KEYOPT,etmax+2,5,4 ! CNOF/ICONT Automated adjustment: Auto ICONT. KEYOPT,etmax+2,9,2 ! 初始穿透/间隙效应:包含初始几何穿透或间隙和偏置,但带有坡道效应。 KEYOPT,etmax+2,10,2 ! 接触刚度更新:在每个迭代步基于下层单元目前的平均应力进行更新, ! 但在整个求解过程中实际弹性滑移始终不超过最大允许极限。 MP,MU,etmax+1,0.3 ! 定义摩擦系数 CSYS,17 ! 激活局部坐标系17 REAL,rlmax+1 ! 激活实常数 MAT,etmax+1 ! 激活材料编号 tf = 40 $ tw = 5 ! 分别为法兰厚度及垫片厚度 TYPE,etmax+1 ! 激活目标单元类型号 CMSEL,S,TopFlangeElems ! 选择组件TopFlangeElems(上法兰全部单元) ALLSEL,BELOW,ELEM ! 选择单元以下附属即构成单元的结点 NSEL,R,EXT ! 选择外表面结点 NSEL,R,LOC,Z,-0.5,0.5 ! 选择位于接触面上的全部结点 ESURF ! 在存在已选单元的自由面上生成重叠单元,即创建接触单元。 ALLSEL,ALL ! 全选,清除上述选择集。 TYPE,etmax+2 ! 激活接触单元类型号 CMSEL,S,BotFlangeElems ! 选择组件BotFlangeElems(下法兰全部单元) ALLSEL,BELOW,ELEM ! 选择单元以下附属即构成单元的结点 NSEL,R,EXT ! 选择外表面结点 NSEL,R,LOC,Z,-0.5,0.5 ! 选择位于接触面上的全部结点 ESURF ! 在存在已选单元的自由面上生成重叠单元,即创建接触单元。 ALLSEL,ALL ! 全选,清除上述选择集。(select all entities) /com,************** 7. 定义加载点 ************** *GET,rlmax,RCON,0,NUM,MAX ! 获取模型空间当前最大实常数号 *GET,etmax,ETYP,,NUM,MAX ! 获取模型空间当前最大单元类型号 *GET,ndmax,NODE,,NUM,MAX ! 获取模型空间当前最大结点编号 R,rlmax+1 ! 定义新实常数 ET,etmax+1,TARGE170 ! 定义目标面单元 - 连续面 KEYOPT,etmax+1,2,1 ! Boundary conditions for rigid target nodes: Specified by user. ET,etmax+2,CONTA174 ! 定义接触面单元 - 离散面 KEYOPT,etmax+2,2,2 ! Contact algorithm: Multipoint constraint (MPC). KEYOPT,etmax+2,4,1 ! Location of contact detection point: ! On nodal point - normal from contact surface KEYOPT,etmax+2,12,5 ! Behavior of contact surface: Bonded (always). CSYS,17 ! 激活局部坐标系17 num = 55 ! 螺栓总数 tf = 40 ! 法兰厚度 N,ndmax+1,1000,-360/num,0.5*tf ! 新建结点,结点编号为ndmax+1。 NSEL,,NODE,,NODE(1000,-360/num,0.5*tf) CM,loadNode,Node ! 为加载点创建一组件 ALLSEL,ALL ! 退出选择集,显示全部。 CSYS,15 CMSEL,S,loadNode NROTAT,ALL ! 旋转结点坐标系,方便加载。 ALLSEL,ALL ! 退出选择集,显示全部。 CSYS,17 ! 激活局部坐标系17 REAL,rlmax+1 ! 激活实常数 TYPE,etmax+1 ! 激活目标单元类型号 TSHAP,PILO E,ndmax+1 ! 创建目标单元 ALLSEL,ALL ! 退出选择集,显示全部。 REAL,rlmax+1 ! 激活实常数 TYPE,etmax+2 ! 激活目标单元类型号 CMSEL,S,TopFlangeElems ! 选择组件TopFlangeElems(上法兰全部单元) ALLSEL,BELOW,ELEM ! 选择单元以下附属即构成单元的结点 NSEL,R,EXT ! 选择外表面结点 NSEL,R,LOC,Y,-(360/num/2+0.5),-(360/num/2-0.2) ! 选择位于加载面上的全部结点 ESURF ! 在存在已选单元的自由面上生成重叠单元,即创建接触单元。 ALLSEL,ALL ! 全选,清除上述选择集。(select all entities) EPLOT !NUMCMP,ALL ! 压缩所定义项的编号(存在预紧单元时别瞎压缩全部) !/DELETE,'PartFlange','cdb' ! 删除部件文件PartFlange.cdb !/DELETE,'PartWasher','cdb' ! 删除部件文件PartWasher.cdb !/DELETE,'PartBolt','cdb' ! 删除部件文件PartBolt.cdb /com,************ 8. 输出装配cdb文件 ************ CDWRITE,DB,'AllAsmbs','cdb',,'','' ! 当前模型另存为 AllAsmbs.cdb 文件。 ! AllAsmbs.cdb为装配及接触创建完成后的有限元模型文件。

在这里插入图片描述

接触的创建 六、加载及求解

在这里插入图片描述

load.csv文件 FINISH ! 退出当前处理器 /CLEAR,ALL ! 清除所有 FINISH ! Exits normally from a processor. /FILNAME,BoltPreloadCase,0 ! Changes the Jobname for the analysis. FINISH /PREP7 ! 访问前处理器 *AFUN,DEG ! 设置角度单位为度 SHPP,OFF,,NOWARN ! 关闭单元形状检测警告 /com,************** 1. 导入cdb文件 ************** CDREAD,DB,'AllAsmbs','cdb',,'','' ! 导入装配体模型 /com,************** 2. 读取荷载文件 ************** *DIM,csvLoads,TABLE,7,6,1 ! 矩阵维度:7行6列1页;Table Array 名称为:csvLoads。 *TREAD,csvLoads,'loads','csv','' ! .csv文件名为loads.csv,load.csv文件见上图。 /com,************* 3. 压缩模型编号 ************** NUMCMP,NODE ! 压缩结点编号 NUMCMP,ELEM ! 压缩单元编号 NUMCMP,MAT ! 压缩材料编号 NUMCMP,TYPE ! 压缩单元类型号 NUMCMP,REAL ! 压缩实常数编号 EPLOT ! Plot elements /com,************ 4. 指定位移边界条件 ************* CSYS,17 ! 激活局部坐标系17 CMSEL,S,BotFlangeElems ! 选择组件BotFlangeElems(下法兰全部单元) ALLSEL,BELOW,ELEM ! 选择单元以下附属即构成单元的结点 NSEL,R,EXT ! 选择外表面结点 NSEL,R,LOC,Y,(7*360/num/2-0.5),(7*360/num/2+0.5) ! 选择位于加载面上的全部结点 CM,BCNodes,NODE ! 创建组件 CSYS,0 D,BCNodes,ALL,0 ! 约束组件BCNodes内所有结点的全部自由度 ALLSEL,ALL /com,************ 5. 施加螺栓预紧力 ************* preload=790*1000 ! 施加790KN的预紧力 num = 4 ! 施加预紧力的螺栓个数 *DO,i,1,num SLOAD,1001+i,9,LOCK,FORC,preload,1,2 *ENDDO /com,************ 6. 预紧工况分析 ************* /SOLU ! 访问求解器 ! 6.1 设置求解控制 ANTYPE,STATIC ! 静力分析 NLGEOM,OFF ! Ignores large-deflection effects 关闭几何非线性 EQSLV,PCG,1E-4 ! 预条件共轭梯度法/公差:1E-4。 NSUBST,2,2,2 ! 荷载子步数2,最大子步数2,最小子步数2。 AUTOTS,ON ! 自动荷载步(浮动荷载步)/默认 OUTRES,ERASE ! Resets OUTRES specifications to their default values. OUTRES,ALL,ALL ! Writes the solution of the specified solution results item for every substep. LSWRITE,1 ! LSNUM=1 载荷步文件编号 ALLSEL,ALL SOLVE ! 提交求解器进行求解 FINISH ! 6.2 删除非必要文件 /DELETE,'','esav','' /DELETE,'','emat','' /DELETE,'','PCS','' /DELETE,'','stat','' /DELETE,'','mntr','' /DELETE,'','osav','' !!! 特别注意:rdb、r001、ldhi文件务必保留,以便后续重启动使用。 /com,************ 7. 荷载工况分析 ************* ! 分工况加载求解 loadCaseNum = 7 *DO,i,1,loadCaseNum,1 ! 循环变量i的初值为1终止为7增量为1 /FILNAME,LoadCase%i%,0 ! 设置 Job Name /COPY, 'BoltPreloadCase','rdb','','LoadCase%i%','rdb','' ! 复制文件BoltPreloadCase.rdb并重命名为LoadCase1.rdb /COPY, 'BoltPreloadCase','r001','','LoadCase%i%','r001','' /COPY, 'BoltPreloadCase','ldhi','','LoadCase%i%','ldhi','' /SOLU ! 访问求解器 /DELETE,'parameter','txt','' PARSAVE,SCALAR,parameter,txt ANTYPE,STATIC,RESTART,1,2,0 ! 静力/重启动/LDSTEP=1/SUBSTEP=2 PARRES,CHANGE,'parameter','txt','' NSUBST,5,5,5 ! 荷载子步数5,最大子步数5,最小子步数5。 AUTOTS,ON ! 自动荷载步(浮动荷载步)/默认 KBC,0 ! 渐变方式荷载步 !OUTRES,ALL,ALL ! 写入每个荷载步的全部子步内容 OUTRES,ALL,LAST ! 写入每个荷载步的最后一个子步内容 CSYS,15 F,loadNode,FX,csvLoads(i,1) F,loadNode,FY,csvLoads(i,2) F,loadNode,FZ,csvLoads(i,3) F,loadNode,MX,csvLoads(i,4) F,loadNode,MY,csvLoads(i,5) F,loadNode,MZ,csvLoads(i,6) ALLSEL,ALL SOLVE FINISH /DELETE,,'emat' /DELETE,,'esav' /DELETE,,'osav' /DELETE,,'r001' /DELETE,,'r002' /DELETE,,'rdb' /DELETE,,'full' /DELETE,,'ldhi' /DELETE,,'mntr' /DELETE,,'pcs' /DELETE,,'pc6' /DELETE,,'stat' *ENDDO

在这里插入图片描述

边界条件的指定

  以上命令运行后,得到如下 8 个计算结果文件,分别为 BoltPreloadCase.rst、LoadCase1.rst ~ LoadCase7.rst 。其中,BoltPreloadCase.rst 为结构仅在螺栓预紧力作用下的计算结果文件,LoadCase1.rst ~ LoadCase7.rst 为结构在螺栓预紧力和附加外载共同作用下的计算结果文件。

在这里插入图片描述

七、后处理 FINISH ! 退出当前处理器 /CLEAR,ALL ! 清除所有 FINISH ! Exits normally from a processor. /PREP7 ! 访问前处理器 *AFUN,DEG ! 设置角度单位为度 SHPP,OFF,,NOWARN ! 关闭单元形状检测警告 CDREAD,DB,'AllAsmbs','cdb',,'','' ! 导入装配体模型 /com,******************** 1. 螺栓参数 ******************** pi = 3.14159265 As = 1120 ! 应力面积 de = SQRT(As*4/pi) ! 有效直径 d = 42 ! 公称直径 d2 = 39.08 ! 螺纹中径 p = 4.5 ! 螺纹螺距 num = 4 ! 螺栓个数 loadCaseNum = 7 ! 工况个数 preload=790*1000 ! 预紧力 W = pi*(de**3)/32.0 ! 抗弯截面模量 Wt = 2*W ! 抗扭截面模量 ! 螺栓等效应力计算 /POST1 num = 55 ! 螺栓总数 radius = 1000 ! 法兰螺栓分度圆半径 tf = 40 $ tw = 5 ! 分别为法兰厚度及垫片厚度 startPntZ = -(tf+tw) ! 在局部坐标系15下,梁轴线起点z坐标值。 midPntZ = 0 ! 螺栓预紧力施加位置处(梁单元预紧位置点) endPntZ= tf+tw ! 在局部坐标系15下,梁轴线终点z坐标值。 d0 = 40 ! 螺栓孔直径/垫片内径 d1 = 70 ! 垫片外径 calBoltNum = 4 ! 模型中螺栓个数 *DEL,boltResults *DIM,boltResults,ARRAY,calBoltNum,9 torsion = preload*d2*(p/(pi*d2)+1.155*0.09)/2 ! 预紧扭矩 VDI2230-Part1 tau = torsion/wt ! 预紧扭转剪应力 /COPY, 'BoltPreloadCase','rst','','LoadCase0','rst','' ! 复制预紧力工况结果文件 /com,************* 2. 内力提取并计算等效应力 ************* *DO,i,0,loadCaseNum,1 ! 工况循环 FILE,LoadCase%i%,'rst' ! .rst文件名 INRES,ALL ! 从结果文件中读取全部数据 SET,LAST ! 从结果文件中读取最后一个荷载步的数据 loadCaseNum = i *DO,j,1,calBoltNum,1 ! 螺栓循环 CSYS,17 ESEL,S,ENAME,,189 ! 选择189单元 ALLSEL,BELOW,ELEM ! 选择单元附属结点 startAngle = (360/num)*(j-1)-(360/num/2-1) endAngle = (360/num)*(j-1)+(360/num/2-1) NSEL,R,LOC,Y,startAngle,endAngle NSEL,R,LOC,Z,startPntZ+7.5-0.5,startPntZ+2*7.5+0.5 ESLN,R,1 ! 单元全部结点被选中该单元才被选中 *GET,elenum,ELEM,,NUM,Min ! 获取梁单元编号 ETABLE,ForceX,SMISC,1 ! 梁单元始端截面轴向力 ETABLE,MomentY,SMISC,2 ! 梁单元始端截面绕局部y轴弯矩 ETABLE,MomentZ,SMISC,3 ! 梁单元始端截面绕局部z轴弯矩 ! ETABLE,ForceX,SMISC,14 ! 梁单元终端截面轴向力 ! ETABLE,MomentY,SMISC,15 ! 梁单元终端截面绕局部y轴弯矩 ! ETABLE,MomentZ,SMISC,16 ! 梁单元终端截面绕局部z轴弯矩 *GET,FxVal,ELEM,elenum,ETAB,ForceX ! 获取梁单元终端截面轴向力数值 *GET,MyVal,ELEM,elenum,ETAB,MomentY ! 获取梁单元终端截面绕局部y轴弯矩数值 *GET,MzVal,ELEM,elenum,ETAB,MomentZ ! 获取梁单元终端截面绕局部z轴弯矩数值 boltID = j ! 螺栓编号 MyzVal = SQRT( MyVal**2 + MzVal**2 ) ! 合弯矩 sigmaN = ABS(FxVal/As) ! 拉压正应力绝对值 sigmaM = MyzVal/W ! 弯曲正应力绝对值 Sigma = sigmaN + sigmaM ! 最大正应力 eqvStress = SQRT( Sigma**2 + 3*(0.5*tau)**2 ) ! VDI2230-Part1 ALLSEL,ALL CSYS,17 boltResults(j,1) = loadCaseNum boltResults(j,2) = boltID boltResults(j,3) = FxVal/1E3 boltResults(j,4) = MyzVal/1E6 boltResults(j,5) = sigmaN boltResults(j,6) = sigmaM boltResults(j,7) = sigma boltResults(j,8) = tau boltResults(j,9) = eqvStress *ENDDO !* !* 汇总计算结果输出 !* outFileName='BoltResultsLoadCase%i%' ! 指定.txt文件名 *CFOPEN,outFileName,'txt' ! 打开文件LoadCase1BoltResults.txt *VWRITE, (' LoadCaseNum BoltNum N (kN) M (kN·m) SigmaN (N/mm^2) SigmaM (N/mm^2) Sigma (N/mm^2) Tau (N/mm^2) EqvStress (N/mm^2) ') *VWRITE,boltResults(1,1), boltResults(1,2),boltResults(1,3), boltResults(1,4), boltResults(1,5), boltResults(1,6), boltResults(1,7), boltResults(1,8), boltResults(1,9) (F9.1,F13.1, F12.2, F11.3, F16.2, F18.2, F19.2, F18.2, F19.2) *CFCLOS *ENDDO

  该命令流运行后,将得到 8 个 .txt 文件,文件内存储这每个工况下,每个螺栓的计算结果数据,如下图所示。

在这里插入图片描述

在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有