当前位置: 首页 > news >正文

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

相关文章:

034_Structural_Transient_In_Matlab结构动力学问题求解

结构动态问题 问题描述 我们试着给前面已经做过的问题上加一点有趣的东西。 结构静力学求解 当时求解这个问题,在最外面的竖直切面加载了一个静态的固定的力。下面我们试试看在上方的表面增加一个脉冲压力载荷。 采用统一的有限元框架,定义问题&…...

项目模块十五:HttpResponse模块

一、模块设计思路 存储HTTP应答要素&#xff0c;提供简单接口 二、成员变量 int _status; // 应答状态码 unordered_map<string, string> _headers; // 报头字段 string _body; // 应答正文 bool _redirect_flag; // 是否重定向信息 stri…...

推荐一款优秀的pdf编辑器:Ashampoo PDF Pro

Ashampoo PDF Pro是管理和编辑 PDF 文档的完整解决方案。程序拥有您创建、转换、编辑和保护文档所需的一切功能。根据需要可以创建特定大小的文档&#xff0c;跨设备可读&#xff0c;还可以保护文件。现在您还能像编辑Word文档一样编辑PDF! 软件特点 轻松处理文字 如 Microso…...

【系统架构设计师】2024年上半年真题论文: 论模型驱动架构设计方法及其应用(包括解题思路和素材)

更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 真题题目(2024年上半年 试题3)解题思路1、模型驱动架构能够为软件开发带来的好处2、模型驱动架构的开发过程论文素材参考真题题目(2024年上半年 试题3) 模型驱动架构设计是一种用于应用系统开发的软件设计方法…...

国内短剧源码短剧系统搭建小程序部署H5、APP打造短剧平台

​在当今的互联网时代&#xff0c;短剧作为一种新兴的娱乐形式&#xff0c;受到了越来越多用户的喜爱。为了提供更好的用户体验和满足用户需求&#xff0c;一个好的短剧系统需要具备多元化的功能和优质的界面设计。 本文将介绍国内短剧源码短剧系统搭建小程序部署H5、APP所需的…...

Java集合框架面试指南

Java集合框架面试指南 文章目录 Java集合框架面试指南ArrayList特点&#xff1a;LinkedList特点&#xff1a;ArrayDeque特点&#xff1a;PriorityQueue特点&#xff1a;HashMap特点&#xff1a;HashSet特点&#xff1a;LinkedHashMap特点LinkedHashMap经典用法 TreeMap特点Conc…...

八、MapReduce 大规模数据处理深度剖析与实战指南

MapReduce 大规模数据处理深度剖析与实战指南 一、绪论 在当今的大数据时代背景下&#xff0c;海量数据的处理已然成为企业及科研机构所面临的重大挑战。MapReduce 作为一种高效的分布式计算模型&#xff0c;在大规模数据处理领域中发挥着至关重要的作用。本文将深入阐释 MapR…...

开源免费的API网关介绍与选型

api网关的主要作用 API网关在现代微服务架构中扮演着至关重要的角色&#xff0c;它作为内外部系统通信的桥梁&#xff0c;不仅简化了服务调用过程&#xff0c;还增强了系统的安全性与可管理性。例如&#xff0c;当企业希望将内部的服务开放给外部合作伙伴使用时&#xff0c;直…...

OpenCV视觉分析之目标跟踪(5)目标跟踪类TrackerMIL的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 MIL 算法以在线方式训练分类器&#xff0c;以将目标从背景中分离出来。多重实例学习&#xff08;Multiple Instance Learning&#xff09;通过在…...

二级列表联动

介绍 本示例主要介绍了List组件实现二级联动&#xff08;Cascading List&#xff09;的场景。 该场景多用于商品种类的选择、照片不同类型选择等场景。 效果图 使用说明&#xff1a; 滑动二级列表侧控件&#xff08;点击没用&#xff09;&#xff0c;一级列表随之滚动。&…...

「C/C++」C++ 标准库 之 #include<sstream> 字符串流库

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

深入理解跨域资源共享(CORS)安全问题原理及解决思路

目录 引言 CORS 基础 CORS 安全问题原理 解决思路 结论 引言 跨域资源共享&#xff08;CORS, Cross-Origin Resource Sharing&#xff09;是现代Web应用中不可或缺的一部分&#xff0c;特别是在前后端分离的架构中。CORS允许一个域上的Web应用请求另一个域上的资源&#…...

【汽车租聘管理与推荐】Python+Django网页界面+推荐算法+管理系统网站

一、介绍 汽车租聘管理与推荐系统。本系统使用Python作为主要编程语言&#xff0c;前端采用HTML、CSS、BootStrap等技术搭建前端界面&#xff0c;后端采用Django框架处理用户的请求。创新点&#xff1a;使用协同过滤推荐算法实现对当前用户个性化推荐。 其主要功能如下&#…...

Linux常见指令大全(必要+知识点)

目录 ls 指令☑️ 在Windows中会自动显示当前目录当中的所有子目录与文件&#xff0c;但是在Linux中要用到ls指令。 语法&#xff1a; ls [选项][目录或文件] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以…...

iOS用rime且导入自制输入方案

iPhone 16 的 cantonese 只能打传统汉字&#xff0c;没有繁简转换&#xff0c;m d sh d。考虑用「仓」输入法 [1] 使用 Rime 打字&#xff0c;且希望导入自制方案 [2]。 仓输入法有几种导入方案的方法&#xff0c;见 [3]&#xff0c;此处记录 wifi 上传法。准备工作&#xff1…...

Linux 进程终止 进程等待

目录 进程终止 退出码 错误码 代码异常终止(信号详解) exit _exit 进程等待 概念 等待的原因 wait 函数原型 参数 返回值 监控脚本 waitpid 概念 函数原型 参数 返回值 WIFEXITED(status) WEXITSTATUS(status) 问题 为什么不用全局变量获得子进程的退出信…...

VBA 64位API声明语句第003讲

跟我学VBA&#xff0c;我这里专注VBA, 授人以渔。我98年开始&#xff0c;从源码接触VBA已经20余年了&#xff0c;随着年龄的增长&#xff0c;越来越觉得有必要把这项技能传递给需要这项技术的职场人员。希望职场和数据打交道的朋友&#xff0c;都来学习VBA,利用VBA,起码可以提高…...

【问题记录】解决VMware虚拟机中鼠标侧键无法使用的问题

前言 有项目需要在Linux系统中开发&#xff0c;因为要测试Linux中相关功能&#xff0c;要用到shell&#xff0c;在Windows中开发太麻烦了&#xff0c;因此我选择使用UbuntuXfce4桌面来开发&#xff0c;这里我用到了Linux版本的IDEA&#xff0c;除了快捷键经常和系统快捷键冲突…...

Naive UI 级联选择器 Cascader的:render-lable怎么使用(Vue3 + TS)(鼠标悬停该条数据的时候展示全部内容)

项目场景&#xff1a; 在渲染Cascader级联选择器后&#xff0c;当文字过长的时候&#xff0c;多出来的部分会显示成省略号&#xff0c;这使我们不能很清晰的看到该条数据的完整信息&#xff0c;就需要加一个鼠标悬停展示完整内容。 解决方案&#xff1a; vue&#xff1a; &l…...

vue元素里面的 js对象中,:style后面里属性名不支持这种带-的写法(background-color)

首先要知道&#xff0c;在这个:style里面&#xff0c;虽然可以用 {属性: 属性值 , 属性: 属性值} 这种方方式来写很多属性&#xff0c;但也仅限于width这种普通属性&#xff0c;像background-color这种带-的特殊标签是不支持直接写的&#xff1b; <div class"box&quo…...

Git 常用命令与开发流程总结

引言 在我之前面试过程中&#xff0c;经常会问到关于公司使用什么代码版本管理工具。 无非是考察咱们是否用过 Git和SVN。 现在公司选择的工具直接影响到项目的开发流程和协作效率。当前市面上&#xff0c;Git 和 SVN&#xff08;Subversion&#xff09;是两种流行的版本控制系…...

链表中插入新的节点

/* 节点结构体定义 */ struct xLIST_ITEM {TickType_t xItemValue; /* 辅助值&#xff0c;用于帮助节点做顺序排列 */ struct xLIST_ITEM * pxNext; /* 指向链表下一个节点 */ struct xLIST_ITEM * pxPrevious; /* 指向链表前一个节点 */ void * pvOw…...

AUTOSAR从入门到精通-BswM模块(二)

目录 前言 算法原理 BswM接口端口 BswM功能描述 模式仲裁 仲裁规则(Arbitration Rules) 模式仲裁来源 模式仲裁过程 模式条件(ModeCondition) 逻辑表达式(LogicExpressions) 模式控制 模式处理 操作执行 模式控制过程 模式控制基本流程 BswM Interfaces and …...

Spring DispatcherServlet详解

文章目录 Spring DispatcherServlet详解一、引言二、DispatcherServlet的初始化与工作流程1、DispatcherServlet的初始化1.1、加载配置和建立WebApplicationContext1.2、初始化策略 2、DispatcherServlet的工作流程2.1、请求分发2.2、代码示例 三、总结 Spring DispatcherServl…...

JS | 软件制作的流程是什么?

目录 一、 需求分析 二、 系统设计 三、 编码实现 四、 测试验证 五、 部署上线 六、 维护更新 软件制作的流程主要包含需求分析、系统设计、编码实现、测试验证、部署上线和维护更新。其中&#xff0c;需求分析是基础&#xff0c;它决定了软件的功能和性能&#xff1b;通…...

简单工厂模式

引言 简单工厂模式并不属于23种设计模式&#xff0c;它是工厂方法模式的“小弟”&#xff0c;由于日常编程中大家会经常用到&#xff0c;只不过没有察觉&#xff0c;因此下文将详解简单工厂模式。 1.概念 简单工厂模式(Simple Factory Pattern)&#xff1a;又称为静态工厂方法(…...

【django】Django REST Framework 序列化与反序列化详解

目录 1、什么是序列化和反序列化&#xff1f; 2、Django REST Framework中的序列化和反序列化 3、安装与配置&#xff08;第10章是从零开始&#xff09; 3.1 安装 3.2 配置 4、基本使用 4.1 创建序列化器 4.2 使用序列化器&#xff08;将数据序列化返回给前端&#xff…...

【Golang】Golang的Map的线程安全问题

文章目录 前言一、场景介绍二、线程安全的Map的使用四、总结 前言 在 Golang 编程中&#xff0c;map 是一种常用的数据结构&#xff0c;用于存储键值对。然而&#xff0c;Golang 的 map 在并发访问时是线程不安全的。如果多个 goroutine 同时读写同一个 map&#xff0c;可能会…...

指向指针的指针+ 值传递的理解

//17、下面的程序会出现什么结果 #include #include void getmemory(char *p) { p(char *) malloc(100); strcpy(p,”hello world”); } int main( ) { char *strNULL; getmemory(str); printf(“%s/n”,str); free(str); return 0; } // 程序崩溃&#xff0c…...

CSS常用定位

一、relative 相对原先的位置进行定位 {position: relative;left: 50px; /* 相对原先位置左边的距离 */top: 100px; /* 相对原先位置上边的距离 */ } 二、absolute 绝对定位&#xff0c;是相对于最近有定位的父级元素进行定位 {position: absolute;righ…...