本练习对一个复合材料结构使用 PCOMPG 卡片进行铺层定义的过程,展示使用全局铺层编号对结果后处理的优越性。这里首先介绍了传统的定义方法即使用 PCOMP,通过对比可以显示出使用 PCOMPG 的对实际问题处理的益处。由于结构形状、载荷和边界条件都是关于 X 轴对称的,所以只对一半的结构建模,并在对称面施加对应的边界条件。

打开模型文件

Step01:在 OptiStruct 用户界面并打开模型文件。

(1) 启动 HyperMesh。

(2) 在 User Profiles 对话框中 选择 OptiStruct,点击 OK。

(3) 点击 File 下拉菜单选 Open…..或点击图标 , 弹出 Open file…浏览窗口。

(4) 选择 Exercise_9b.hm 文件。

(5) 点击 Open。Exercise_9b.hm 数据载入当前的 HyperMesh 中,替换原有数据。

Step02:查看模型。

结构模型已经建立,可以直接进行求解计算。在提交计算之前,先查看建立的模型。

模型用于线性静力分析。由于模型为对称结构,故建立一半有限元模型并施加对称边界条件,在对称 面约束所有节点的 DOF1, DOF5 和 DOF6,如图 9-3 所示。

图 9-3 一半结构的有限元模型

所有的 component 都会从底面向上即单元的法向利用 PCOMP 属性对层进行排列,如图 9-4 所示。

图 9-4 沿着单元法向的铺层排列

这个模型中 component 的名字若以单词“Flange”开头,表示它们是将不同的 component 连结在一起的连 结点。查看时,需注意由 Skin 和 Rib component 构成的法兰区域。查看 Skin_inner, Rib, Flange1_Skin_Rib, 和 Flange2_Skin_Rib 的铺层排列(显示在图 9-5 的底部)。注意 Skin_inner, Flange1_Skin_Rib, Flange2_Skin_Rib 和 Skin_outer 中有很少的公共铺层,他们在每一个 component 中的叠放次序是不同的。例如,Skin_inner 的第 4 层是 Flange2_Skin_Rib 的第 3 层和 Skin_outer 的第 2 层。

图 9-5 Skin_inner, Rib, Skin_outer, Flange1_Skin_Rib, 和 Flange2_Skin_Rib 的铺层排列。

(1) 从 2D 页面点击 HyperLaminate 面板。

此时,启动 HyperLaminate 图形界面,在此可以对铺层信息进行定义、查看和编辑,也可以在此创建 并编辑材料特性和设计变量。

(2) 展开屏幕左边模型树中的 laminates 部分。

(3) 选择 Skin_inner PCOMP, 层合板中的详细信息出现在图形界面中,如图 9-6 所示。

图 9-6 步骤 3 窗口

(4) 确认 Skin_inner 的铺层定义与 Flange1 _Rib_Skin 的铺层定义的前五项一致,如表 9-1 所示。

(5) 选择 Rib PCOMP 并输入 Rib 的第 3 个和第 4 个铺层定义,使之与表 9-1 的第 6 和第 7 项一致。

(6) 选择 Flange1_Rib _Skin PCOMP,查看铺层定义,确认 Flange1_Rib _Skin 的铺层定义与表 9-1 一致,且前 5 层与 Skin_inner 铺层相同,最后的两个层与 Rib 的第 3 层和第 4 层相同,查看其它法兰的铺层定义。

(7) 还可以查看其它 component。结束后,从 File 下拉菜单中选择 Exit。这样就退出了 HyperLaminate 图形界面并返回 HyperMesh。

Step03:提交计算。

(1) 从 Analysis 页面选择 OptiStruct 面板。

(2) 在 input file:之后点击 save as… 弹出 Save file…浏览窗。

(3) 选择路径并写入 OptiStruct 模型文件 frame_PCOMP.fem,OptiStruct 支持以.fem 为扩展名的输入格式。

(4) 点击 Save。 注意此时 frame_PCOMP.fem 的文件名和路径已经在 input file:区域显示。

(5) 设置 export options:为 all。

(6) 点击 run options:开关并选择 analysis。

(7) 设置 memory options:为 memory default。

(8) 点击 OptiStruct 开始运行。

这就启动运行了 OptiStruct。当出现 Process completed successfully 时,分析过程完成。在结果文件所在目录中自动生成以下文件:

Step04:查看结果。

(1) 从 OptiStruct 面板点击绿色的 HyperView 按钮。

打开了 HyperView 并且模型结果自动载入 HyperView 中出现一个信息窗口,提示模型和结果文件成功载入 HyperView。

(2) 点击 Close 关闭信息窗口。

(3) 点击 Contour 面板工具条按钮 。

(4) 点击 Result type:下面的第一个开关并选择 Composite Stresses (s)。

(5) 点击第二个开关并选择 P1 (major) Stress。

(6) 在 layers 选择 PLY3。

(7) 在 Averaging method:下面区域选择 None。

(8) 点击 Apply。此时会标明模型所有 components 的第 3 层最大主应力位置。

(9) 点击 以查看模型,如图 9-7 所示。

图 9-7 框架顶面的应力分布

在顶面应力值不会逐渐变化,但会在经过 Flange2_Skin_Rib 时突然减小。再次查看 Flange1_Skin_Rib 的铺层属性表格,可以看到 Flange2_Skin_Rib 的第 3 层特征为基体材料而与之相邻的 Flange1_Skin_Rib 和 Skin_outer 的第 3 层为碳纤维材料。应力值发生突然的改变是因为观察到的是两种不同材料处的应力。这个例子表明,在 PCOMP 结果的后处理过程中,为使结果有意义,用户必须使铺层结果与它们相应的铺层属性相互关联。

这里强调一下,在对 PCOMP 结构后处理过程中,仅仅根据铺层编号描绘结果是不够的。用户在使用这种方法进行后处理的过程中必须时刻掌握铺层属性(材料属性、厚度、方向、故障指数等)。如果用到庞大而复杂的模型,在后处理过程中掌握各个层的属性将是枯燥乏味的。

PCOMP 的弊端可以通过使用属性定义的 PCOMPG 卡片来避免,使用该卡片,可以为各个层和后处理分配全局铺层编号,后处理的结果与全局铺层编号相关。下面的步骤阐述了使用 PCOMPG 属性重定义模型的过程。

Step05:利用 PCOMPG 卡片重新定义铺层属性。

(1) 不关闭 HyperView,转到 HyperMesh。

(2) 从 2D 页面选择 HyperLaminate 面板。这就开启了 HyperLaminate 图形界面,从中可以对铺层信息进行定义、查看和编辑。

(3) 从 Tools 下拉菜单选择 Laminate options。

(4) 点击 Convention:开关并选择 Total。

(5) 点击 OK 关闭窗口。

创建新 components 时,Total 已被设置为默认选项。

图 9-8 含有全局铺层编号的铺层信息

此时将创建含有全局铺层编号的 PCOMPG component。如前所述,Skin_inner 的第 4 层是 Flange2_Skin_Rib 的第 3 层和 Skin_outer 的第 2 层。因此,所有这些层将定义为同一全局层 ID 4。同样地, 其它的层也将类似定义,如图 9-8 所示。

(6) 展开屏幕左边树结构的 laminates 部分。

(7) 右击 PCOMPG,点击 New。创建了一个新的设计变量,默认变量名为 NewLaminate1。

(8) 双击 Laminate name:下文本框将此默认的变量名重命名为 Skin_inner_GPLY,覆盖默认文件名。

(9) 在 Add/Update plies:段 的 GPLYID 区域中输入 1。

(10) 选择 Material 的下拉菜单,并选择 corbon_fiber。

(11) 在 Thickness T1 区域输入 1.2。

(12) 在 Orientation 区域输入 45。

(13) 选择 SOUT 的下拉菜单并选择 YES,点击 Add New Ply 增加铺层信息。

(14) 重复这个过程,使用表 9-3 所示的特征再增加 4 个层。

(15) 点击 Update Laminate 更新铺层信息, 此时铺层信息显示在图形界面右边的 Review 栏。

(16) 创建一个名为 Rib_GPLY 的新 PCOMPG,铺层排列如表 9-4 所示:

根据图 9-8 所示有关全局铺层编号的铺层信息,创建 Flange1_Skin_Rib_GPLY component。

(17) 右击 Skin_inner_GPLY 并从菜单选择 Duplicate 以创建一个相同的 component。

(18) 双击 Laminate name:下的文本框将 component 重命名为 Flange1_Skin_Rib_GPLY,覆盖默认文件名。

(19) 使用 Add New Ply 功能根据表 9-5 所示的特征再增加两个层。

表 9-5 Flange1_Skin_Rib_GPLY 铺层信息

创建了新 component Flange1_Skin_Rib_GPLY。这个 component 的前 5 个层与 Skin_inner_GPLY 相同且它的最后 2 个层是 Rib 的第 2 层和第 1 层。为减少本部分的步骤,其它 component 的铺层排列信息(包括PCOMPG 和合适的分层信息)已经创建在文件 updated_PCOPMPG_properties.fem 中,路径为 <install_directory/tutorials/os/>。这个文件将写入 HyperMesh 并覆盖特征,代替手动更新。文件 updated_PCOPMPG_properties.fem为OptiStruct输入文件格式。可使用任何文本编辑器打开和查看component 是如何通过 PCOMPG 定义的。部分文件如表 9-6 所示。

(20) 从 File 下拉菜单中选择 Exit。

这样就退出了 HyperLaminate 界面,并返回 HyperMesh。

(21) 点击 File 下拉菜单,点击 Import…。

(22) 在 Import type 的图标中点击 Import FE Model 图标 。

(23) 选中 FE overwrite。

这个选项使得定义在文件 Updated_PCOPMPG_properties.fem 中的 PCOMPG 属性覆盖旧的 PCOMP 属 性。

(24) 在 File:中,选择 Updated_PCOPMPG_properties.fem 文件。

(25) 点击 Import。

(26) 点击 Close。

Step06:在 HyperLaminate 中查看导入的属性。

(1) 从 2D 页面进入 HyperLaminate 面板。

(2) 展开屏幕左边树结构的 laminates 部分。

此时所有的 components 都出现在 PCOMPG 下。早先创建的 component(Skin_inner_GPLY, Rib_GPLY 和 Flange1_Skin_Rib_GPLY)仍然存在,但没有与之相关的单元。通过 PCOMPG component 可以查看铺层 定义。

(3) 从 File 下拉菜单中选择 Exit。

Step07:提交计算。

(1) 从 Analysis 页面选择 OptiStruct 面板。

(2) 在 input file: 之后点击 save as…。

在 Save file…浏览窗。选择写入 OptiStruct 模型文件的路径并输入文件名 frame_PCOMPG.fem。

(3) 点击 Save。

注意此时 frame_PCOMPG.fem 文件的名字和路径已经在 input file: 区域显示。

(4) 设置 export options:为 all。

(5) 点击 run options:开关并选择 analysis。

(6) 设置 memory options:为 memory default。

(7) 点击 OptiStruct。

这就运行了 OptiStruct。如果运行成功,新的结果文件将写入 OptiStruct 模型文件的路径下。

Step08:后处理查看结果

(1) 当命令窗口出现消息 Process completed successfully 后,点击 OptiStruct 中的绿色 HyperView 按

(2) 钮,结果自动载入。HyperView 出现信息窗口,提示模型和结果文件已经成功载入 HyperView。

(3) 点击 Close 关闭信息窗口。

(4) 点击 Contour 面板工具条按钮 。

(5) 点击 Result type:下面的第一个开关并选择 Composite Stresses (s)。

(6) 点击第二个开关并选择 P1 (major) Stress。

(7) 在 layers 选择 PLY 3。

(8) 在 Averaging method:下面区域选择 None。

(9) 点击 Apply。

(10) 此时会标明模型所有 components 的第 3 层最大主应力位置。

(11) 点击

查看模型,如图 9-9 所示。

图 9-9 全局第 3 层主应力云图

基于全局铺层编号的后处理消除了必须了解铺层编号和 component 上相应铺层属性的需要。结果显示 以全局铺层编号为基础,不必考虑铺层顺序,因此可以选择整个模型中任何一个全局层编号并查看结果。 如果给定区域没有给定的层出现,其结果将不显示。


【推荐内容】

HyperMesh宝典丨Midmesh专用工具箱

Inspire如何快速实现常用的铸造工艺仿真?

share几个学习HyperMesh的有效方法

HyperWorks飞机复合材料结构分析(OptiStruct)的更多相关文章

  1. Hyperworks、Nastran、Abaqus与ansys的区别

    hypermesh不过是前处理,radioos就是hm的求解器,也是非常强大的可以处理很多非线性问题,最重要的是hm的优化功能强大.比那几个好一些.abaqus适合非线性分析,尤其是接触分析.nast ...

  2. 用面向对象的编程方式实现飞机大战小游戏,java版

    概述 本文将使用java语言以面向对象的编程方式一步一步实现飞机大战这个小游戏 本篇文章仅供参考,如有写的不好的地方或者各位读者哪里没看懂可以在评论区给我留言 或者邮件8274551712@qq.co ...

  3. SAP成都研究院飞机哥:程序猿和飞机的不解之缘

    今天的文章来自Jerry的老同事张航. 张航和Jerry一样于2007年毕业后加入SAP成都研究院工作至今.进入SAP后的第一个开发部门是SAP Business by Design Infrastr ...

  4. 用javascript写星际飞机大战游戏

    在github里看到了个不错的脚本游戏,决定亲自动手来写,效果如下 下面是代码的思路分享 把整个代码理解消化确实不容易,但是如果你坚持看完相信你一定会有收获 如果没兴趣可以直接点击下面的链接 复制代码 ...

  5. "飞机大战"游戏_Java实现_详细注释

    1 package cn.xiaocangtian.Util; import java.awt.Frame; import java.awt.Graphics; import java.awt.Ima ...

  6. js实例--飞机大战

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title> ...

  7. 用Javascript模拟微信飞机大战游戏

    最近微信的飞机大战非常流行,下载量非常高. 利用JS进行模拟制作了一个简单的飞机大战[此源码有很多地方可以进行重构和优化] [此游戏中没有使用HTML5 任何浏览器都可以运行]. 效果图: 原理:利用 ...

  8. pygame开发PC端微信打飞机游戏

    pygame开发PC端微信打飞机游戏 一.项目简介 1. 介绍 本项目类似曾经火爆的微信打飞机游戏.游戏将使用Python语言开发,主要用到pygame的API.游戏最终将会以python源文件gam ...

  9. Android原生游戏开发:使用JustWeEngine开发微信打飞机

    使用JustWeEngine开发微信打飞机: 作者博客: 博客园 引擎地址:JustWeEngine 示例代码:EngineDemo JustWeEngine? JustWeEngine是托管在Git ...

  10. 基于FPGA的飞机的小游戏

    基于FPGA的飞机的小游戏 实验原理 该实验主要分为4个模块,采用至上而下的设计方法进行设计.由50M的晶振电路提供时钟源,VGA显示控制模块.图形显示控制模块.移动模块的时钟为25M,由时钟分频电路 ...

随机推荐

  1. [每日算法] leetcode第3题:无重复字符的最长子串

    leetcode第3题入口 题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: s = "abcabcbb" 输出: 3 解法1: ...

  2. 创建windows脚本bat/cmd或jar为windows服务完整教程

    ​ 一.将windows bat/cmd脚本创建为windows服务 1.下载winsw工具 https://gitee.com/colinisg/winsw/releases/download/v2 ...

  3. CH182的ESP32驱动

    CH182的ESP32驱动需要自取 https://files.cnblogs.com/files/blogs/745523/esp-eth.zip?t=1739322979&download ...

  4. RL · Exploration | 使用时序距离构造 intrinsic reward,鼓励 agent 探索

    论文标题:Episodic Novelty Through Temporal Distance. ICLR 2025,8 8 6 5 poster. arxiv:https://arxiv.org/a ...

  5. 20241105,LeetCode 每日一题,用 Go 实现两数之和的非暴力解法

    题目 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标. 你可以假设每种输入只会对应一个答案,并且你不能 ...

  6. 没错,Go 语言的函数参数没有引用传递方式

    这篇文章想浅浅地讲解 Go 语言函数参数传递的值拷贝. 一句话观点 Go语言中所有传递都是值传递,严格来说并不存在引用传递的概念.传递指针只是传递指针的值,并不是引用传递,只不过通过指针可以间接修改变 ...

  7. Netty 心跳机制实现(客户端与服务端)

    Netty 心跳机制实现(客户端与服务端) Netty 的心跳机制是保持长连接有效性的重要手段,可以检测连接是否存活并及时释放无效连接.下面介绍客户端和服务端的完整实现方案. 一.服务端实现 1. 基 ...

  8. freeswitch配置视频对接

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. 随着4G/5G网络的完善,视频呼叫的需求慢慢变多,本文介绍使用fs对接视频线路的配置方案. 环境 CentOS 7.9 freesw ...

  9. Spring Bean元数据体系与Spring容器

    >>>点击去看B站配套视频<<< 系列文章目录和关于我 1. 从一个例子开始 小陈申请加盟咖啡店后,小陈收到总部寄来的<开店规格单>.这份文件允许每家分 ...

  10. 学习unigui【29】UniGUI的RBCA

    web程序真是鸡鸣狗盗,零零碎碎. 学习类似SaaS的登录界面,补一大通web的基础知识. http://127.0.0.1:8077和http://127.0.0.1:8077/admin 这是登录 ...