034_Structural_Transient_In_Matlab结构动力学问题求解

在这里插入图片描述

结构动态问题

在这里插入图片描述

问题描述

我们试着给前面已经做过的问题上加一点有趣的东西。

  • 结构静力学求解

当时求解这个问题,在最外面的竖直切面加载了一个静态的固定的力。下面我们试试看在上方的表面增加一个脉冲压力载荷。

采用统一的有限元框架,定义问题,几何体已经出现过一次。

%% Rectangular Pressure Pulse on Boundary% Create a model and include the bracket geometry.
model = femodel(AnalysisType="structuralTransient", ...Geometry="BracketWithHole.stl");pdegplot(model.Geometry, 'FaceLabels', 'on', 'FaceAlpha', 0.5);

在这里插入图片描述

材料特性设置。

% Specify Young's modulus, Poisson's ratio, and mass density.
model.MaterialProperties = ...materialProperties(YoungsModulus=200e9, ...PoissonsRatio=0.3, MassDensity=7800);

边界与加载

边界条件

首先是固定表面,我们把最大的竖直表面固定起来。

% Specify that face 4 is a fixed boundary.
model.FaceBC(4) = faceBC(Constraint="fixed");

注意,我们这里设置边界条件的函数,由小写字母开头,而设置好的边界条件的变量,首字母是大写的。通过在faceBC中的Name=Value可以设置边界条件的值。

可以查看faceBC的帮助。

help faceBC
 faceBC - Boundary conditions on geometry faceA faceBC object specifies the type of boundary condition on a face of ageometry.创建语法model.FaceBC(FaceID) = faceBC(Name=Value)输入参数FaceID - Face IDsvector of positive integers属性Constraint - Standard structural boundary constraints"fixed"XDisplacement - x-component of enforced displacementreal number | function handleYDisplacement - y-component of enforced displacementreal number | function handleZDisplacement - z-component of enforced displacementreal number | function handleTemperature - Temperature boundary conditionreal number | function handleVoltage - Voltagereal number | function handleElectricField - Electric fieldcolumn vector | function handleMagneticField - Magnetic fieldcolumn vector | function handleMagneticPotential - Magnetic potentialreal number | column vector | function handleFarField - Absorbing regionfarFieldBC object示例openExample('pde/FixedBoundariesExample')openExample('pde/BoundaryConditionsFor3DHarmonicElectromagneticAnalysisExample')另请参阅 femodel, fegeometry, farFieldBC, edgeBC, vertexBC, cellLoad,faceLoad, edgeLoad, vertexLoad已在 R2023a 中的 Partial Differential Equation Toolbox 中引入faceBC 的文档doc faceBC



接下来就是这个比较难的脉冲加载。

加载的设置方法,类似于边界条件的设置。可以设置不同的选择,例如,对于结构问题:

  • Pressure:垂直于面的压力载荷,单位为Pa
  • SurfaceTraction:表面载荷,力,单位为N
% Apply a rectangular pressure pulse on face 7 in the direction normal to the face.
pressurePulse = @(location,state) ...rectangularLoad(10^5,location,state,[0.0 0.002]);
model.FaceLoad(7) = faceLoad(Pressure=pressurePulse);

这里的问题,脉冲载荷如何实现?

脉冲加载

faceLoad函数的Name=Value中,值可以采取多种形式,主要我们用到的是数值和函数。

当这里使用一个函数是, 对函数的输入和输出有固定的要求。

  • 输入1:位置,一般称为location
  • 输入2: 状态
function value = loadFucntion(location, state)end

这个函数的两个参数分别是位置和状态,是两个结构体,其具体内容如下:

  • location — 结构体,包含以下字段::
    • location.x — x坐标,是一个点或者若干个点
    • location.y — y坐标,是一个点或者若干个点
    • location.z — z坐标,是一个点或者若干个点
    • location.nx — 法向量的x分量,是一个点的或者若干个点的
    • location.ny — 法向量的y分量,是一个点的或者若干个点的
    • location.nz — 法向量的z分量,是一个点的或者若干个点的
  • state — 对于非线性问题和动态问题才有意义,包括以下字段的结构体:
    • state.u — 对应与location中定义点的状态变量(对于结构问题,就是位移)
    • state.ux — 估计的导数x分量
    • state.uy — 估计的导数y分量
    • state.uz — 估计的导数y分量
    • state.time — 时间
    • state.frequency — 频率
    • state.NormFluxDensity — 非线性磁场问题才需要的参数

对于我们想要求解的脉冲压力载荷问题,我们定义一个方波脉冲,这个方波脉冲的参数包括:

  1. load,载荷大小
  2. T,载荷时间,一个数组,包含两个时间点,分别是载荷开始和结束的时间
function Tn = rectangularLoad(load,location,state,T)
if isnan(state.time)Tn = NaN*(location.nx);return
end
if isa(load,"function_handle")load = load(location,state);
elseload = load(:);
end
% Two time-points that define a rectangular pulse
T1 = T(1); % Start time
T2 = T(2); % End time% Determine multiplicative factor for the specified time.
TnTrap = max([(state.time - T1)*(T2 - state.time)/ ...abs((state.time - T1)*(T2 - state.time)),0]);
Tn = load.* TnTrap;
end

最后这个TnTrap是一个方波函数,其值在T1T2之间为1,其他地方为0。

因为这里我们是一个时变问题,所以用到了state.time,这个是时间。

现在回到我们的设置中:

pressurePulse = @(location,state) ...rectangularLoad(10^5,location,state,[0.0 0.002]);

我们用上面方波函数定义了一个载荷函数,大小为 1 0 5 10^5 105,载荷时间为0到0.002s。

求解

接下来就是网格和求解。

% Generate a mesh and assign it to the model.
model = generateMesh(model);% pdemesh(model);% 也可以是pdeplot3D(model.Geometry.Mesh);


在这里插入图片描述

求解要针对一个时间序列,这里我们设置时间序列为0到0.01s,取100个点。尽量分辨脉冲的宽度0.002s。

% Solve the problem.
result = solve(model,linspace(0,0.01,100));

可视化

前面我们利用pdeplot3D函数进行可视化,这个函数可以把求解的结果映射到网络结构上,对点、线、面进行着色。在前面两个结构静力学的例子中都得到应用。

这里,因为是一个动态问题,我们实际更想要更好地理解在动态载荷下,结构是如何发生变形和位移的。

这里我们就要介绍一个新的函数pdeviz,这个函数提供了更多的可视化功能,可以对结构的变形、位移、应力、应变等进行可视化。

另外,在动态问题的结果中,我们看看,结果包含了哪些内容:

result
result = TransientStructuralResults - 属性:Displacement: [1x1 FEStruct]Velocity: [1x1 FEStruct]Acceleration: [1x1 FEStruct]SolutionTimes: [0 1.0101e-04 2.0202e-04 3.0303e-04 4.0404e-04 5.0505e-04 6.0606e-04 7.0707e-04 8.0808e-04 ... ] (1x100 double)Mesh: [1x1 FEMesh]


那么我们要用应力来着色,还需要用到一系列专门给输出利用的函数,这些函数都用evaluate开头。

  • evaluateStress 动态结构问题的应力评估
  • evaluateStrain 动态结构问题的应变评估
  • evaluateVonMisesStress 动态结构问题的von Mises应力评估

此外,还有下面的几个函数:

  • evaluateReaction 评估边界的反作用力
  • evaluatePrincipalStress 评估节点位置的主应力
  • evaluatePrincipalStrain 评估节点位置的主应变

有上述函数的帮助,我们可以构造一个动态过程的可视化。

fn = "structuralDyanmicLoad-viz.gif";
if isfile(fn)delete(fn)
endvmStress = evaluateVonMisesStress(result);v = pdeviz(model.Geometry.Mesh);
v.MeshVisible = "off";
v.AxesVisible = "on";
v.DeformationScaleFactor = 10;for i = 2:numel(result.SolutionTimes)% pdeplot3D(result.Mesh, ColorMapData=result.Displacement.uz(:,i))title(sprintf("Time: %.5f s",result.SolutionTimes(i)))v.NodalData = vmStress(:, i);v.DeformationData = ...struct('ux', result.Displacement.ux(:, i), ...'uy', result.Displacement.uy(:, i), ...'uz', result.Displacement.uz(:, i));    % specificy fixed color limitsclim([0, 1e8])exportgraphics(gcf, fn, Append=true, Resolution=80)
end

在这里插入图片描述

当然这里的位移是进行整体放大的,v.DeformationScaleFactor = 10;,这个可以调整。

完整代码

完整的代码如下:

%% Rectangular Pressure Pulse on Boundary% Create a model and include the bracket geometry.
model = femodel(AnalysisType="structuralTransient", ...Geometry="BracketWithHole.stl");% Specify Young's modulus, Poisson's ratio, and mass density.
model.MaterialProperties = ...materialProperties(YoungsModulus=200e9, ...PoissonsRatio=0.3, MassDensity=7800);% Specify that face 4 is a fixed boundary.
model.FaceBC(4) = faceBC(Constraint="fixed");% By default, both the initial displacement and velocity are set to 0.% Apply a rectangular pressure pulse on face 7 in the direction normal to the face.
pressurePulse = @(location,state) ...rectangularLoad(10^5,location,state,[0.0 0.002]);
model.FaceLoad(7) = faceLoad(Pressure=pressurePulse);% Generate a mesh and assign it to the model.
model = generateMesh(model,Hmax=0.05);% Solve the problem.
result = solve(model,linspace(0,0.01,100));fn = "structuralDyanmicLoad-viz.gif";
if isfile(fn)delete(fn)
endvmStress = evaluateVonMisesStress(result);v = pdeviz(model.Geometry.Mesh);
v.MeshVisible = "off";
v.AxesVisible = "on";
v.DeformationScaleFactor = 10;for i = 2:numel(result.SolutionTimes)% pdeplot3D(result.Mesh, ColorMapData=result.Displacement.uz(:,i))title(sprintf("Time: %.5f s",result.SolutionTimes(i)))v.NodalData = vmStress(:, i);v.DeformationData = struct('ux', result.Displacement.ux(:, i), ...'uy', result.Displacement.uy(:, i), ...'uz', result.Displacement.uz(:, i));% specificy fixed color limitsclim([0, 1e8])exportgraphics(gcf, fn, Append=true, Resolution=80)
end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/462414.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

江协科技STM32学习- P23 DMA 直接存储器存取

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

「Math」高等数学知识点大纲(占位待处理)

✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

linux-UART

参考博客 https://blog.csdn.net/m0_38106923/article/details/126024970?sharetypeblog&shareId126024970&sharereferAPP&sharesourceweixin_40933496&sharefromlink 1.串口 UART的全称是Universal Asynchronous Receiver and Transmitter,即异步…

mac如何下载 测试旧版chrome兼容问题

mac安装低版本的chrome 下载地址: Download older versions of Google Chrome for Windows, Linux and Mac 下载需要模拟的浏览器版本 记住版本号 1、下载后安装 安装时提醒 保留两者 2、可能会提醒无法验证 3、设置允许 就可以打开 4、打开后发现还是新版本的浏…

【软服之家-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

数据治理,数据提取,大数据中心建设,大数据治理总体解决方案书(word,ppt原件)

1. 数据管理的现状 2. 数据治理的概述 1.1数据治理概念 2.2数据治理目标 3. 数据治理体系 4. 数据治理核心领域 1.1 数据模型 1.2 数据生命周期 (1)数据生成及传输 (2)数据存储 (3)数据处理和应用…

C++设计模式结构型模式———桥接模式

文章目录 一、引言二、桥接模式三、总结 一、引言 桥接(Bridge)模式也叫桥梁模式,简称桥模式,是一种结构型模式。该模式所解决的问题非常简单,即根据单一职责原则,在一个类中,不要做太多事&…

Rust 力扣 - 48. 旋转图像

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们可以将原矩阵进行水平翻转&#xff0c;然后在沿主对角线进行翻转&#xff0c;就能完成原矩阵沿顺时针方向旋转90o的变换 题解代码 impl Solution {pub fn rotate(matrix: &mut Vec<Vec<i32>&…

SQL 基础语法(一)

文章目录 1. SQL 分类2. 数据库操作3. 数据表操作4. 增删改操作5. 查询操作6. 用户管理7. 权限控制 1. SQL 分类 2. 数据库操作 #创建数据库 create database if not exists test;#查询所有数据库 show databases;#查询当前数据库 select database();#删除数据库 drop databas…

高效水电管理:Spring Boot在大学城的应用

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理大学城水电管理系统的相关信息成为必然。开…

轻松理解操作系统 - Linux 文件系统的心脏是什么?

在前面两期&#xff0c;我们分别了解了 Linux 文件系统的重要组成部分&#xff1a;inode 和 数据块。 那 inode表 和 数据块 的信息总要有个“管理者”来进行总体的管理和提供找到它们的入口吧&#xff0c;这时候“超级块”就扮演了这个“管理者”的角色。 一、文件系统的“管家…

python之字符串总结

字符串&#xff08;str&#xff09; 对于字符串的学习&#xff0c;我整理了网上的一些资料&#xff0c;希望可以帮助到各位&#xff01;&#xff01;&#xff01; 概述 由多个字母&#xff0c;数字&#xff0c;特殊字符组成的有限序列 字符串的定义&#xff1a;可以使用一对…

操作符习题练习

1.计算输入一个数的二进制中1的个数 方法一&#xff1a; #include<stdio.h> void Count(int n) {int count 0;int i 0;int tmp 0;for (i 1;i < 64;i)//这里是在64位环境下编码进行的&#xff0c;如果是在32位环境下&#xff0c;需要将循环次数改为32{tmp n &am…

DataFlow v202410 版本更新 一站式数据处理平台

DataFlow 是 OpenCSG 推出的一站式数据处理平台&#xff0c;与 CSGHub 无缝集成&#xff0c;形成数据到模型的全生命周期闭环&#xff0c;助力持续优化。平台兼容多种数据格式与来源&#xff0c;支持本地、云端和网络数据接入&#xff0c;并提供高效转换和读取工具&#xff0c;…

mysql上课总结(5)(MySQL的完整性约束(详细介绍))

目录 一、完整性约束。 &#xff08;1&#xff09;概念与目的。 <1>概念。 <2>目的。 &#xff08;2&#xff09;各个约束的详细&#xff08;表格&#xff09; &#xff08;3&#xff09;各个约束的简要总结。 <1>主键约束。 <2>唯一约束。 <3>非…

yarn install 出现 error Error: certificate has expired

接手老项目&#xff0c;yarn install的时候出现error Error: certificate has expired&#xff0c;提示证书过期了&#xff0c;查看yarn.lock&#xff0c;因为存在yarn.lock的项目执行yarn install是它里面去执行下载固定版本的包。 查看后发现之前一直在使用的是https://regis…

WPF+MVVM案例实战(十九)- 自定义字体图标按钮的封装与实现(EF类)

文章目录 1、案例效果1、按钮分类2、E类按钮功能实现与封装1.文件创建与代码实现2、样式引用与封装 3、F类按钮功能实现与封装1、文件创建与代码实现2、样式引用与封装 3、按钮案例演示1、页面实现与文件创建2、运行效果如下 4、源代码获取 1、案例效果 1、按钮分类 在WPF开发…

pandas——DataFrame

一、dataframe &#xff08;一&#xff09;创建dataframe file.csv Name,Age,City Alice,30,New York Bob,25,Los Angeles Charlie,35,Chicagoimport pandas as pd 1.使用字典创建DataFrame&#xff1a; 其中字典的键是列名&#xff0c;值是数据列表。print(1.使用字典创建D…

Maven项目的基础配置:利用IDEA将SpringBoot的项目打包成war文件

文章目录 引言Maven项目的聚合与继承(依赖管理)把项目打包成war包其他打包配置引言 利用IDEA将SpringBoot的项目打包成war文件Maven项目的聚合与继承(依赖管理)Maven项目的聚合与继承(依赖管理) 把项目打包成war包 利用IDEA将SpringBoot的项目打包成war文件:要配置启动…

Vue3+TypeScript+Vite 后台管理项目_登录页面开发实战

一、前言 基于之前创建的基础工程&#xff0c;接下来我们完成登录页面的开发。 https://blog.csdn.net/qq_34709175/article/details/143426433?spm1001.2014.3001.5501 这里需要交代一下&#xff0c;项目里的文件命名规则&#xff0c;以及文件结构&#xff0c;views下存放…