目录
2.在Solidworks中建立虚拟样机,导入 Adams计算和后处理
3.Solidworks 提供三维模型,Adams 完成虚拟样机搭建和计算及后处理
1.常用虚拟样机软件
自然界广泛存在四种物理场:温度场、电磁场、结构(位移、应力、应变)场、流场
不同的工程所应用的物理场不同,各物理场所使用的公式理论和仿真软件也不一 样。 本人在比赛中主要在结构场和流场中进行建模分析。涉及到多体动力学分析和静力学分析以及流体力学分析。软件有 Solidworks、Adams、Ansys workbench、Fluent... 等
Solidworks 主要进行三维建模设计也可进行关键零件的简单力学分析 (Simulition 模块)。
Adams 是多体动力学仿真中最常用软件,也是本文的重点阐述软件。可以进 行动力学模型搭建(View模块)、仿真求解(Solver模块)以及仿真数据处理 (Postprocessor模块)。
Ansys 是有限元仿真常用软件,可以进行静力学分析(Static Structural 模块)、 碰撞分析(LS-dyna 模块)以及流体流场分析(Fluid Flow 模块)等,Workbench 集 成了许多仿真模块,各模块的结果数据可以共享使 Ansys的功能异常强大。
结构场是最常用的分析场。本文是在结构场中以中心供弹为例,展开该虚拟样机搭建过程的阐述。诣在研究 17mm 弹丸在弹仓中的运动状态和拨轮受力情况,用于指导拨弹模块的改进,进而提高射频满足需求。
2.在Solidworks中建立虚拟样机,导入 Adams计算和后处理
1.Solidworks 中简化模型
在 solidworks 中简化拨弹模块,压缩不影响本次研究问题的无关零件(电机及其相关固定零件、轴承、底部板材和主框架板材等)。并添加上子弹,子弹如是阵列生成,需要右键解散阵列.所 有零件应赋材料(子弹材料 TPE,用 PA 代替)如图 2-1 到图 2-2 的简化


2.进入motion模块操作
打开【motion】插件 进入 motion 模块(如没有在
→【插件】中勾选 motion), 在左下角将页面切换至【运动算例 1】,将下拉菜单【动画】切换到【motion 分 析】,依次添加各个实体间的接触力 contact(球与球之间、球与拨轮之间、球与弹 舱之间),检查弹舱为固定状态,最后设置重力.到此为止,模型搭建完毕,驱动马达 可以不添加,放在 Adams 中操作.图 2-3 是各按钮位置.

在动力学模型中每个实体之间的物理碰撞检测是靠添加两个物体间的接触力实 现的,在 Adams 和 Solidworks 中每个接触均有 8 个参数(图 2-7 中标出),四个碰 撞参数:Stiffness(刚度系数)、Force Exponent(刚度指数)、Damping(阻尼系 数)、Penetration Depth(最大穿透值),四个库仑摩擦参数:Static Coefficient(静摩 擦系数)、Dynamic Coefficient(动摩擦系数)、Stiction Transition Vel(静摩擦过 渡速度)、Friction Transition Vel(动摩擦过渡速度), 表 2-1 给出大致参数确定方法,如图 2-4 和图 2-5 方便理解各个参数的意义.
Impact接触参数 | Coulomb摩擦参数 | ||
Stiffness (刚度系数) | 由附件中stiffness.m计算给出,所需要的参数 参考《常用材料的弹性模量与泊松比》(注意单位) | Static Coefficient (静摩擦系数) | |
Force Exponent (刚度指数) | 计算瞬时法向力中材料刚度项贡献值的指数 通常取1.5,橡胶取2~3,金属1.3~1.5 | Dynamic Coefficient (动摩擦系数) | |
Damping (阻尼系数) | 一般取Stiffness的0.1~1% | Stiction Transition Vel (静摩擦过渡速度) | 取0.1mm/s |
Penetration Depth (最大穿透值) | 一般取0.1mm,渗透量大于该值时,阻尼开始起作用 | Friction Transition Vel (静摩擦过渡速度) | 取10mm/s |




图 2-6 为添加球和球接触中实体选择操作,可以看出不勾选接触组时,添加的是所 选择各实体间的接触,17 颗球之间一共有 136 个接触.图 2-7 为球和球之间的接触参数设置(数据需要自己计算).


图 2-8 使用【接触组】添加接触,球和拨轮以及球和轨道的接触需要使用接触组, 即球为一组与另外四个零件分别添加接触,各球之间接触不会被重复添加,在图中 看出 17 个子弹与四个零件间分别添加接触,共 68 个接触. 图 2-9 为球和轨道之间的接触参数设置. 使用 Solidworks 方便交互式批量添加各实体间的接触力,Adams 中接触力的添加比较难操作.多个实体之间只有用脚本命令进行添加才比较方便
3.adm 导入 Adams
动力学模型导入到 Adams 中,检查模型,稍作修改,一些复杂的约束用简单约束来 替换,在 Solidworks 中的互相固连的零件可以进行两种操作①两个零件用 Fixed 约束锁死②使用 Boolean 运算进行零件合并,给拨轮添加 Revolute 铰接约束,在铰接约束上添加 motion 驱动.打开求解器进行仿真运算即可.(Adams2017 计算速度会稍快些)


把模型按照第一第二步搭建完之后,点击【计算】按钮(图 2-10),计算结果一般都 会报错可以忽略,Solidworks 中的求解器计算很容易失败,所以只用 motion 做模 型搭建这种前处理工作.右键模型名称输出 Adams(图 2-11),输出英文命名 的.adm 文件和一些.xmt_bin 以及.res 文件均保存在英文路径下.


打开 Adams 导入.adm 文件,新建模型“loader_0”,设置单位制.如图 2-12 和图 2-13


如图 2-14 在 Adams 中删除【连接】中所有约束,将几个固定零件间添加 Fixed 约束(固定锁死)


更改拨轮颜色为 Red,方便观察和操作,如图 2-16 和图 2-17也可以根据需要更 改其他零件颜色.图 2-17 中【可见性】点选 off 即可隐藏该零件,该操作同样适 用于其他类型信息,如 Connectors、Motion、Force 等


在拨轮和弹舱中间添加旋转副,操作如图 2-18 结果如图 2-19

将旋转驱动添加到拨轮的旋转副上


在 joint_1 上添加 motion_1,参数设置如图 2-22
17mm 子弹材料为 TPE,密度 970 kg/m³弹性模量 3.4GPa,泊松比 0.32(近似)


【物体】树下右键其中一个球单击【修改】, 出现对话框如图 2-23 在 【定义质量方式】下拉菜单选择【、几何形状和材料类型】,在 【材料类型】中右键出现图中对话框,依次选取【材料】→【创建】 会跳出对话框如图 2-24,按照 TPE 参数设置单击【应用】→【确定】,然后单击 图 2-24 中【Apply】即发现图中材料参数刷新至新建 TPE 材料.依次添加剩余球的材料和弹仓材料(【材料】→【推测】→【aluminum】)
注:17 个球的材料用命令流可以批量添加,后面会重点讲解命令流建模方法
模型搭建完毕,进入 simulation 进行求解计算

如图 2-25 仿真正在进行中,左上角为仿真计算过的模型时间,在 Simulation Control 对话框中【终止时间】为仿真总时长,下面为仿真步长,根据模型复杂程度给定,合理的步长节省仿真时间、提高仿真 精度.如果计算报错则检查模型有无物理干涉和严重死点,调整仿真步长和接触参 数继续进行仿真计算,多次仿真计算应勾选【运行前复位】保证每次仿真计算前参数重置.仿真时间由模型复杂度和电脑 CPU 以及内存而定,如果模 型复杂则仿真时间会十几个小时甚至几天,电脑配置稍好些会加快运算效率.另 外合理的模型化简和模型搭建也会影响仿真时间. 关于充分利用电脑性能加快仿真速度,可以从开启多线程运算和增大可调用内存两个方面入手多线程运算途径>在 Adams/View 界面下通过“设置>求解器>执行” 菜单打开设置窗口,并勾选“更多”选项,在 “线程数量”位置输入参与计算的线程数(128).如图 2-26和2-27


4.后处理模块 Postprocessor
进入后处理模块 Postprocessor,观察动画可以看到子弹在拨轮中的运状态,进行 子弹轨迹追踪和一些感兴趣物理量的测量.比如输出电机的驱动扭矩值,进行电机 选型.通过仿真动画和数据指导版本迭代改进.(可参考下一章 3-3)
3.Solidworks 提供三维模型,Adams 完成虚拟样机搭建和计算及后处理
1.Solidworks 中简化模型
Solidworks 简化模型,操作过程和流程和 2.1 中相同,最后将装配体另存成 Parasolid(*.x_t)格式如图 3-1,导入 Adams 做前处理.注意:Adams 不支中文路 径和中文文件名.

打开 Adams View,新建模型导入.x_t 文件.单击【New Model】输入自定义模型 名称(英文),单击【ok】会新建一个空白模型,【主菜单】>【File】>【import】下 拉菜单第一个【File Type】中选择 Parasolid,在【File To Read】中右键>【Browse】 浏览到目标.x_t 文件,在【Model Name】右键选择新建的模型名称.单击【Ok】. 模型导入完成.如图 3-2

2.Adams 中动力学模型
在 Adams 中搭建动力学模型.在此之前应掌握 Adams 图形界面基本操作和工具栏的分布.模型需要用 cmd 脚本搭建,准确高效,所以要求能读懂简单的编程语言.本章节均用一些简单的命令语言来实现建模操作.这里的脚本编辑器使用的是 VScode,桌面新建.txt 英文命名后缀改为.cmd,用 VScode 打开编辑后保存即 可.也可用别的编程工具.
【主菜单】>【View】>【Command Window】打开命令窗口,每一步界面操作
的命令都会在命令窗口中滚动.可以复制出来修改后使用.
Cmd 脚本对拨弹部分建模流程如下:①修改 Bodies Name②布尔运算操作③定
义材料④添加约束⑤添加驱动⑥定义接触力(部分步骤的先后顺序可调)
① 基本设置
设置单位制(MKS)和重力方向(-Z)
!-------------setting----------------------!
default units length=meter mass=kg force=newton &
time=Second angle=degrees frequency=hz!units!
int dia disp dia=gravity_panel!打开对话框重力设置对话框!
force modify body gravitational gravity = ACCGRAV_1 &
x_comp = 0 &
y_comp = 0 &
z_comp = -9806.65 !-Z轴gravity!
!-----------------end------------------------!
!-------------modify_part_name---------------!
entity modify entity =_____1 new = driving_gear
entity modify entity =_17_1 new = _17_1_1
for variable_name=ip start_value=1 end_value=17 !for循环批量修改球的name,ip为变量名!
entity modify entity =(eval("_17_1_"//rtoi(ip))) new = (eval("ball_"//rtoi(ip)))
end
for variable_name=ip start_value=1 end_value=2
entity modify entity =(eval("___"//rtoi(ip))) new = (eval("bullet_tray_related_"//rtoi(ip)))
end
for variable_name=ip start_value=1 end_value=7
entity modify entity =(eval("_"//rtoi(ip))) new = (eval("main_track_related_"//rtoi(ip)))
end
!-------------------end----------------------!
通过【主菜单】>【File】>【import】导入.cmd 实现对模型的操作如图 3-4
图 5-4 .cmd 导入 Adams
操作前后的对比如图 5-5 和图 5-6

!-------------Booleans_parts-----------------!
part merge rigid_body part_name=bullet_tray_related_2 into_part=bullet_tray_related_1!将bullet_tray_related_2合并到bullet_tray_related_1!
for variable_name=ip start_value =2 end_value=7
part merge rigid_body part_name = (eval("main_track_related_"//rtoi(ip))) into_part = main_track_related_1
end
!-------------------end----------------------!
图 3-8 布尔合并前
图 3-9 布尔合并后
根据模型,编写 Modify_Material 命令操作如下,
!-------------modify_material-----------------!
material create & !新建材料TPE!
material_name = .materials.TPE &
density = 0.97e-6 &
youngs_modulus = 3400 &
poissons_ratio = 0.32
for variable_name=ip start_value=1 end_value=17!for循环批量修改!
part modify rigid mass_properties &
part_name = (eval("ball_"//rtoi(ip))) &
material_type = .materials.TPE
end
part modify rigid mass_properties &
part_name = driving_gear &
material_type = .materials.aluminum
part modify rigid mass_properties &
part_name = bullet_tray_related_1 &
material_type = .materials.aluminum
part modify rigid mass_properties &
part_name = main_track_related_1 &
material_type = .materials.aluminum
!-------------------end----------------------!
修改前后对比如图 3-12 和图 3-13

!---------------Fixed_Joint------------------!
marker create marker=.ground.MAR_fixed_1 & !在ground上创建一个marker点命名为MAR_fixed_1!
location=(LOC_RELATIVE_TO({0,0, 0},ground.cm)) & !MAR_fixed_1和点ground.cm位置重合!
orientation=0.0, 0.0, 0.0 !MAR_fixed_1和点ground.cm位置重合!
marker create marker=.main_track_related_1.MAR_fixed_1 & !在driving_gear上创建一个marker点命名为MAR_fixed_1!
location=(LOC_RELATIVE_TO({0,0, 0},ground.cm)) & !MAR_fixed_1和点ground.cm位置重合!
orientation=0.0, 0.0, 0.0 !MAR_fixed_1和点ground.cm位置重合!
constraint create joint Fixed & !在上述创建的两个marker间创建一个固定约束!
joint_name=fixed_2 & !Fixed约束的名称!
i_marker_name=.main_track_related_1.MAR_fixed_1 &
j_marker_name=.ground.MAR_fixed_1
!-------------------end----------------------!
!-------------Revolute_Joint----------------!
variable create variable_name=wheel_name string_value="driving_gear" !定义变量"wheel_name",string_value代表字符串类型!
marker create marker=.ground.run_MAR_1 &
location=(LOC_RELATIVE_TO({0,0,0},(eval(wheel_name//".cm")))) &!
orientation=(ORI_RELATIVE_TO({0,0,0},(eval(wheel_name//".cm"))))
marker create marker=.driving_gear.run_MAR_2 &
location=(LOC_RELATIVE_TO({0,0,0},(eval(wheel_name//".cm")))) &
orientation=(ORI_RELATIVE_TO({0,0,0},(eval(wheel_name//".cm"))))
constraint create joint Revolute & !创建joint_Revolute!
joint_name=run_1 & !约束名称!
i_marker_name=.ground.run_MAR_1 &
j_marker_name=.driving_gear.run_MAR_2
variable modify variable_name=wheel_name &
string=bullet_tray_related_1
marker create marker=.ground.run_MAR_2 &
location=(LOC_RELATIVE_TO({0,0,0},(eval(wheel_name//".cm")))) &!
orientation=(ORI_RELATIVE_TO({0,0,0},(eval(wheel_name//".cm"))))
marker create marker=.bullet_tray_related_1.run_MAR_3 &
location=(LOC_RELATIVE_TO({0,0,0},(eval(wheel_name//".cm")))) &
orientation=(ORI_RELATIVE_TO({0,0,0},(eval(wheel_name//".cm"))))
constraint create joint Revolute & !创建joint_Revolute!
joint_name=run_2 & !约束名称!
i_marker_name=.ground.run_MAR_2 &
j_marker_name=.bullet_tray_related_1.run_MAR_3
variable delete variable_name=wheel_name !删除变量!
!-------------------end----------------------!

!-------------Revolute_Joint----------------!
variable creat variable_name=MC_run_1 string_value="step(time,0.1,0,0.3,-360d)"!电机转速!
constraint create motion motion_name=.model_1.motion_1 &
joint=.model_1.run_1 & !motion添加在run_1上!
type=rotational & !类型是转动!
time_derivative=velocity & !驱动类型为velocity(速度)!
function=(eval(MC_run_1))
!-------------------end----------------------!

!------------create_contact_between_solids--------------!
variable create variable_name=MODEL_name string_value="model_1"!模型名称!
variable create variable_name=part_box string_value="CSG_4"!被接触对象!
variable create variable_name=add_1 integer_value=10 !子弹Body名称和SOLID名称的序号差!
variable create variable_name=MC_stiffness real_value=164 !刚度系数,计算公式参考stiffness.m!
variable create variable_name=MC_damping real_value=0.5 !阻尼系数!
variable create variable_name=MC_exponent real_value=2 !指数!
variable create variable_name=MC_dmax real_value=0.00005!最大实体入侵!
variable create variable_name=MC_mu_static real_value=0.7 !静摩擦系数!
variable create variable_name=MC_mu_dynamic real_value=0.65!动摩擦系数!
variable create variable_name=MC_sti_tra_vel real_value=0.1!静摩擦过渡速度!
variable create variable_name=MC_fri_tra_vel real_value=10 !动摩擦过渡速度!
!---------------bullet_tray_related_1-------------!
variable modify variable_name=part_box &
string=SOLID3 !修改part_box为bullet_tray_related_1的Solid!
variable modify variable_name=MC_stiffness real_value=164
variable modify variable_name=MC_damping real_value=5e4
variable modify variable_name=MC_exponent real_value=1.5
variable modify variable_name=MC_dmax real_value=0.01
for variable_name=ipp start_value=1 end_value=17
contact create &
contact_name = .(eval(MODEL_name)).(eval("con_"//rtoi(ipp+add_1)//"_"//(eval(part_box)))) &
i_geometry_name = (eval("SOLID"//rtoi(ipp+add_1))) &
j_geometry_name = (eval(part_box)) &
stiffness = (eval(MC_stiffness)) &
damping =(eval(MC_damping)) &
exponent =(eval(MC_exponent)) &
dmax =(eval(MC_dmax)) &
coulomb_friction = on &
mu_static =(eval(MC_mu_static)) &
mu_dynamic =(eval(MC_mu_dynamic)) &
stiction_transition_velocity =(MC_sti_tra_vel) &
friction_transition_velocity =(MC_fri_tra_vel)
end
variable modify variable_name=part_box &
string=SOLID7
variable modify variable_name=MC_stiffness real_value=164
variable modify variable_name=MC_damping real_value=5e4
variable modify variable_name=MC_exponent real_value=1.5
variable modify variable_name=MC_dmax real_value=0.01
for variable_name=ipp start_value=1 end_value=17
contact create &
contact_name = .(eval(MODEL_name)).(eval("con_"//rtoi(ipp+add_1)//"_"//(eval(part_box)))) &
i_geometry_name = (eval("SOLID"//rtoi(ipp+add_1))) &
j_geometry_name = (eval(part_box)) &
stiffness = (eval(MC_stiffness)) &
damping =(eval(MC_damping)) &
exponent =(eval(MC_exponent)) &
dmax =(eval(MC_dmax)) &
coulomb_friction = on &
mu_static =(eval(MC_mu_static)) &
mu_dynamic =(eval(MC_mu_dynamic)) &
stiction_transition_velocity =(MC_sti_tra_vel) &
friction_transition_velocity =(MC_fri_tra_vel)
end
!---------------main_track_related_1-------------!
variable modify variable_name=part_box &
string=SOLID1
variable modify variable_name=MC_stiffness real_value=4.4e8
variable modify variable_name=MC_damping real_value=5e4
variable modify variable_name=MC_exponent real_value=1.3
variable modify variable_name=MC_dmax real_value=0.01
for variable_name=ipp start_value=1 end_value=17
contact create &
contact_name = .(eval(MODEL_name)).(eval("con_"//rtoi(ipp+add_1)//"_"//(eval(part_box)))) &
i_geometry_name = (eval("SOLID"//rtoi(ipp+add_1))) &
j_geometry_name = (eval(part_box)) &
stiffness = (eval(MC_stiffness)) &
damping =(eval(MC_damping)) &
exponent =(eval(MC_exponent)) &
dmax =(eval(MC_dmax)) &
coulomb_friction = on &
mu_static =(eval(MC_mu_static)) &
mu_dynamic =(eval(MC_mu_dynamic)) &
stiction_transition_velocity =(MC_sti_tra_vel) &
friction_transition_velocity =(MC_fri_tra_vel)
end
variable modify variable_name=part_box &
string=SOLID2
for variable_name=ipp start_value=1 end_value=17
contact create &
contact_name = .(eval(MODEL_name)).(eval("con_"//rtoi(ipp+add_1)//"_"//(eval(part_box)))) &
i_geometry_name = (eval("SOLID"//rtoi(ipp+add_1))) &
j_geometry_name = (eval(part_box)) &
stiffness = (eval(MC_stiffness)) &
damping =(eval(MC_damping)) &
exponent =(eval(MC_exponent))&
dmax =(eval(MC_dmax)) &
coulomb_friction = on &
mu_static =(eval(MC_mu_static)) &
mu_dynamic =(eval(MC_mu_dynamic)) &
stiction_transition_velocity =(MC_sti_tra_vel) &
friction_transition_velocity =(MC_fri_tra_vel)
end
variable modify variable_name=part_box &
string=SOLID5
for variable_name=ipp start_value=1 end_value=17
contact create &
contact_name = .(eval(MODEL_name)).(eval("con_"//rtoi(ipp+add_1)//"_"//(eval(part_box)))) &
i_geometry_name = (eval("SOLID"//rtoi(ipp+add_1))) &
j_geometry_name = (eval(part_box)) &
stiffness = (eval(MC_stiffness)) &
damping =(eval(MC_damping)) &
exponent =(eval(MC_exponent))&
dmax =(eval(MC_dmax)) &
coulomb_friction = on &
mu_static =(eval(MC_mu_static)) &
mu_dynamic =(eval(MC_mu_dynamic)) &
stiction_transition_velocity =(MC_sti_tra_vel) &
friction_transition_velocity =(MC_fri_tra_vel)
end
variable modify variable_name=part_box &
string=SOLID6
for variable_name=ipp start_value=1 end_value=17
contact create &
contact_name = .(eval(MODEL_name)).(eval("con_"//rtoi(ipp+add_1)//"_"//(eval(part_box)))) &
i_geometry_name = (eval("SOLID"//rtoi(ipp+add_1))) &
j_geometry_name = (eval(part_box)) &
stiffness = (eval(MC_stiffness)) &
damping =(eval(MC_damping)) &
exponent =(eval(MC_exponent))&
dmax =(eval(MC_dmax)) &
coulomb_friction = on &
mu_static =(eval(MC_mu_static)) &
mu_dynamic =(eval(MC_mu_dynamic)) &
stiction_transition_velocity =(MC_sti_tra_vel) &
friction_transition_velocity =(MC_fri_tra_vel)
end
variable modify variable_name=part_box &
string=SOLID8
for variable_name=ipp start_value=1 end_value=17
contact create &
contact_name = .(eval(MODEL_name)).(eval("con_"//rtoi(ipp+add_1)//"_"//(eval(part_box)))) &
i_geometry_name = (eval("SOLID"//rtoi(ipp+add_1))) &
j_geometry_name = (eval(part_box)) &
stiffness = (eval(MC_stiffness)) &
damping =(eval(MC_damping)) &
exponent =(eval(MC_exponent))&
dmax =(eval(MC_dmax)) &
coulomb_friction = on &
mu_static =(eval(MC_mu_static)) &
mu_dynamic =(eval(MC_mu_dynamic)) &
stiction_transition_velocity =(MC_sti_tra_vel) &
friction_transition_velocity =(MC_fri_tra_vel)
end
variable modify variable_name=part_box &
string=SOLID10
for variable_name=ipp start_value=1 end_value=17
contact create &
contact_name = .(eval(MODEL_name)).(eval("con_"//rtoi(ipp+add_1)//"_"//(eval(part_box)))) &
i_geometry_name = (eval("SOLID"//rtoi(ipp+add_1))) &
j_geometry_name = (eval(part_box)) &
stiffness = (eval(MC_stiffness)) &
damping =(eval(MC_damping)) &
exponent =(eval(MC_exponent))&
dmax =(eval(MC_dmax)) &
coulomb_friction = on &
mu_static =(eval(MC_mu_static)) &
mu_dynamic =(eval(MC_mu_dynamic)) &
stiction_transition_velocity =(MC_sti_tra_vel) &
friction_transition_velocity =(MC_fri_tra_vel)
end
variable modify variable_name=part_box &
string=SOLID28
for variable_name=ipp start_value=1 end_value=17
contact create &
contact_name = .(eval(MODEL_name)).(eval("con_"//rtoi(ipp+add_1)//"_"//(eval(part_box)))) &
i_geometry_name = (eval("SOLID"//rtoi(ipp+add_1))) &
j_geometry_name = (eval(part_box)) &
stiffness = (eval(MC_stiffness)) &
damping =(eval(MC_damping)) &
exponent =(eval(MC_exponent))&
dmax =(eval(MC_dmax)) &
coulomb_friction = on &
mu_static =(eval(MC_mu_static)) &
mu_dynamic =(eval(MC_mu_dynamic)) &
stiction_transition_velocity =(MC_sti_tra_vel) &
friction_transition_velocity =(MC_fri_tra_vel)
end
!---------------driving_gear-------------!
variable modify variable_name=part_box &
string=SOLID4
variable modify variable_name=MC_stiffness real_value=35000
variable modify variable_name=MC_damping real_value=28
variable modify variable_name=MC_exponent real_value=1.5
variable modify variable_name=MC_dmax real_value=0.01
variable modify variable_name=MC_mu_static real_value=0.25 !静摩擦系数!
variable modify variable_name=MC_mu_dynamic real_value=0.2!动摩擦系数!
contact create &
contact_name = .(eval(MODEL_name)).(eval("con_SOLID7"//"_"//(eval(part_box)))) &
i_geometry_name = SOLID7 &
j_geometry_name = (eval(part_box)) &
stiffness = (eval(MC_stiffness)) &
damping =(eval(MC_damping)) &
exponent =(eval(MC_exponent)) &
dmax =(eval(MC_dmax)) &
coulomb_friction = on &
mu_static =(eval(MC_mu_static)) &
mu_dynamic =(eval(MC_mu_dynamic)) &
stiction_transition_velocity =(MC_sti_tra_vel) &
friction_transition_velocity =(MC_fri_tra_vel)
end
!---------------contact_between_balls-------------------!
variable modify variable_name=MC_stiffness real_value=164
variable modify variable_name=MC_damping real_value=2e4
variable modify variable_name=MC_exponent real_value=2
variable modify variable_name=MC_dmax real_value=0.1
variable modify variable_name=MC_mu_static real_value=0.35 !静摩擦系数!
variable modify variable_name=MC_mu_dynamic real_value=0.3!动摩擦系数!
!---------------------------------------!
variable create variable_name=ipp integer_value=1
variable create variable_name=a integer_value=1!第一颗子弹的序号!
variable create variable_name=b integer_value=17!最后一颗子弹的序号!
variable create variable_name=add_2 integer_value=1
for variable_name=num_1 start_value=(eval(a)) end_value=(eval(b-1))!两个for循环,依次添加子弹之间的各约束!
for variable_name=num_2 start_value=(eval(a)) end_value=(eval(b-ipp))
contact create &
contact_name =.(eval(MODEL_name)).(eval("con_"//rtoi(num_1)//"_"//rtoi(num_1+add_2))) &
i_geometry_name = (eval("SOLID"//rtoi(num_1+add_1))) &
j_geometry_name = (eval("SOLID"//rtoi(num_1+add_1+add_2))) &
stiffness = (eval(MC_stiffness)) &
damping =(eval(MC_damping)) &
exponent =(eval(MC_exponent))&
dmax =(eval(MC_dmax)) &
coulomb_friction = on &
mu_static =(eval(MC_mu_static)) &
mu_dynamic =(eval(MC_mu_dynamic)) &
stiction_transition_velocity =(MC_sti_tra_vel) &
friction_transition_velocity =(MC_fri_tra_vel)
variable modify variable_name=add_2 integer_value=(eval(add_2+1))
end
variable modify variable_name=ipp integer_value=(eval(ipp+1))
variable modify variable_name=add_2 integer_value=1
end
variable delete variable_name=ipp
variable delete variable_name=a
variable delete variable_name=b
variable delete variable_name=MODEL_name
variable delete variable_name=part_box
variable delete variable_name=add_1
variable delete variable_name=add_2
!-----------------------end------------------------------!
材料 | 密度(kg/m³) | 弹性模量(GPa) | 泊松比 |
TPE | 970 | 3.4 | 0.32 |
铝合金 | 2700 | 70 | 0.34 |
纲 | 7800 | 207 | 0.27 |


3.后处理模块 Postprocessor



