首页/文章/ 详情

abaqus幅值曲线讲解(一)

3小时前浏览49

本文摘要:(由ai生成)
本文介绍了在Abaqus中定义幅值曲线的步骤和方法,包括静动力分析中随时间变化的动荷载数据输入。首先,通过Load模块或施加荷载时自然出现的Amplitude界面定义幅值曲线。然后,以表格数据为例,详细讲解了在Edit Amplitude窗口中定义时间序列数据的过程。最后,通过Abaqus的Plug-ins工具绘制幅值曲线,以检查定义的正确性。文章旨在帮助用户理解Abaqus中幅值曲线的定义和验证过程。

目录

1.概述
2.算例介绍
3.幅值曲线在哪里定义
4.定义Tabular(表格)数据
5.绘制幅值曲线
6.总结

概述

  abaqus静动力分析中,常常需要输入随时间变化的数据,如随时间变化的动荷载数据,这时候需要我们定义各种满足我们要求的幅值曲线。为此,准备开一系列的帖子讲解abaqus各种幅值曲线的定义
  本次帖子重点讲解abaqus的cae界面中关于幅值曲线相关功能位置,讲清楚各种按键的位置,以及幅值曲线的增、删、改和查相关功能。以输入一个表格类型的动荷载为例,讲清楚从找到按钮位置,到提交计算过程中的所有步骤。

算例介绍

  这里给出一个算例,后续讲解所有类型的动荷载幅值曲线都采用这个算例
  设计悬臂梁受动荷载算例,悬臂梁尺寸为    ,弹性模量    ,泊松比    ,密度     ,悬臂梁一端设置固定边界,另一端施加动荷载,示意图为  采用C3D8六面体网格离散,单元总数为    ,节点总数为    。网格图为

幅值曲线在哪里定义

1.第一种方法
  首先在Module栏中点击Load模块,如  保持当前的界面,在abaqus顶部的菜单栏依次点击Tools->amplitude->create,如下图  然后弹出Create 阿莫里图的窗口  Name后面的框框是自己定义的幅值曲线的名称,下面的Type是幅值曲线的类型,有很多种,后续的帖子会依次介绍。然后再点击continue按钮,进入具体的幅值曲线定义界面。以上就是第一种幅值曲线定义方法。
2.第二种方法
  第二种定义方法是更加常见的方法,当我们给模型施加荷载或者边界条件的时候,会自然而言的出现Amplitude界面,这里以施加随时间变化的荷载为例讲解。
  首先还是在Load界面,点击下图中的Create Load按钮  弹出Create Load窗口  选择我们要施加荷载的分析步,这里选择的是Step-1分析步,然后在Types for Selected Step界面中选择施加的荷载类型,这里选择的是Surface traction荷载,点击Continue按钮,abaqus进入如下界面  这个界面是提醒我们选择施加荷载的面,有两种选择面的方式,左下角是直接用鼠标点选,右下角是选择自己定义的面,这里直接用鼠标点选了悬臂端的面,可以发现已经变了颜色,点击ok,弹出Edit Load界面  这是施加面力的界面,面力需要指定力的方向,注意到Vector before projection:Required后面有一个箭头,点击这个箭头,弹出如下界面  我们知道,面上的两点确定一个方向,且里的方向是从第一个节点指向第二个节点,这里就是用这种方法给面力指定了方向,左下角框起来的部分就是提醒我们输入第一个节点的坐标,但这种输入坐标的方法比较麻烦,可以直接在界面中用鼠标点选。  这里选择的点是上图中箭头指向的点,可以发现原来的小点已经变成了大的红点,而且左下角框起来的部分变成了让我们输入第二个点,下面选择同一条棱上面的一个点,点击之后会自动弹出刚刚的Edit Load界面,如  可以看到,Vector before projection部分出现了一个向量    ,这就是力的方向:从下到上。  下面就是定义幅值曲线的位置了,在上图中的Amplitude窗口中点击后面的小曲线图标,下方会自动出现Create Amplitude字样,点击之后,弹出如下界面  这个界面在第一种方法中也出现过,是一样的,然后就是具体的幅值曲线定义了,这个帖子中以Tabular,即表格数据为例讲解定义方法,下面就是具体的Tabular数据定义方法。  

定义Tabular(表格)数据

  在上图中点击Continue按钮之后,弹出Edit Amplitude窗口,如  上图中的Time span就是曲线作用的时间,这里选择的是我们分析步的时间,然后在下方的Amplitude Data中定义相关的数据。
  其中,左边的Time/Frequency指的是时间或者频率,右边的Amplitude就是时间对应的数值,下方就是具体的数据,下面两行不是只能定义两行,按回车就能增加行,如下图就增加到了7行  显然用手输入表格数据不太现实,尤其是数据很多的时候,通常来讲都是在外部将数据处理成时间序列,然后直接复 制进这个表格里面。这里用excel来生成一端时间序列,时间序列的数学表达式为

 

  其中,    ,    ,    ,即

 

  在excel生成之后,复 制到Edit Amplitude窗口中,如  点击OK,弹出Edit Load界面,如  可以看到,在Amplitude中出现了幅值曲线Amp-1,这就说明幅值曲线已经定义了,那么如何检查幅值曲线是否正确呢,只需要将幅值曲线在abaqus中画出来就行了,下面将如何在abaqus绘制幅值曲线。

绘制幅值曲线

 &ems;在abaqus上部的菜单栏中依次点击Plug-ins->Tools->Amplitude plotter,如弹出Amplitude plotter窗口,如  可以看到我们之前定义的幅值曲线Amp-1,选择该曲线,点击Plot就可绘制图像,如  左边的起点是10,右边的终点是15,符合之前定义的曲线。

总结

  以上对abaqus定义幅值曲线进行了大致的介绍,包括幅值曲线相关按钮的位置,如何定义表格数据,以及通过绘制幅值曲线检查自己是否定义正确。


来源:有限元先生
ACTAbaqusUG
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-11-01
最近编辑:3小时前
外太空土豆儿
硕士 我们穷极一生,究竟在追寻什么?
获赞 2粉丝 1文章 42课程 0
点赞
收藏
作者推荐

基于SVD的图像压缩

奇异值分解(SVD)  奇异值分解(SingularValueDecomposition,简称SVD)是线性代数中一种非常重要的矩阵分解技术,广泛应用于信号处理、图像处理、统计学、计算机科学等领域。它将一个复杂的矩阵分解为三个简单矩阵的乘积,这三个矩阵分别是:  1、左奇异向量矩阵(U矩阵):一个正交矩阵,其列向量是原矩阵的左奇异向量。  2、奇异值对角矩阵(矩阵):一个对角矩阵,对角线上的元素是原矩阵的奇异值,这些奇异值是非负的,并且按降序排列。  3、右奇异向量矩阵(矩阵):一个正交矩阵,其列向量是原矩阵的右奇异向量。  对于任意一个的矩阵,其奇异值分解可以表示为:  其中,是一个的正交矩阵,是一个对角矩阵,是一个的正交矩阵,是的转置。  奇异值分解的步骤大致为:  1、计算奇异值:首先计算矩阵的奇异值,即求解特征值问题或的非负平方根。  2、构造奇异值矩阵:将奇异值按降序排列,构成对角矩阵。  3.构造奇异向量矩阵:计算与的关系,得到左奇异向量和右奇异向量,分别构成矩阵和。  奇异值分解具有以下性质和应用:  1、降维:通过保留最大的几个奇异值和对应的奇异向量,可以对矩阵进行降维,这在数据压缩和特征提取中非常有用。  2、噪声过滤:在信号处理中,奇异值分解可以用来过滤噪声,因为噪声通常对应较小的奇异值。  3、数据近似:通过保留最大的几个奇异值,可以得到原矩阵的最佳近似,这在数据压缩和图像处理中非常有用。  4、矩阵伪逆:奇异值分解可以用来计算矩阵的伪逆,这对于解决线性方程组的最小二乘问题非常有用。图像压缩步骤  奇异值分解(SVD)在图像压缩中的作用是通过减少矩阵的秩来实现压缩,同时尽量保留图像的关键视觉信息。具体来说,SVD在图像压缩中的应用可以分为以下几个步骤:  1、图像矩阵转换:首先将图像表示为一个矩阵,其中每个像素值对应矩阵的一个元素。对于彩色图像,通常需要将其转换为灰度图像或分别对RGB三个通道进行处理。  2、应用SVD:对图像矩阵进行奇异值分解,得到三个矩阵。  3、选择奇异值:由于奇异值按从大到小的顺序排列在对角矩阵中,较大的奇异值代表了图像的主要特征,而较小的奇异值则代表了细节和噪声。在压缩时,可以选择保留最大的个奇异值。  4、重构图像:使用保留的个奇异值和对应的和矩阵中的列向量,重构图像矩阵。具体来说,计算,其中和分别是和的前列,Σ𝑘Σk是由前个奇异值构成的对角矩阵。  5、压缩效果和质量权衡:通过选择不同的值,可以控制压缩的程度和图像质量之间的平衡。较小的值意味着更高的压缩率,但可能会丢失一些图像细节;较大的值则保留了更多的图像信息,压缩率较低。SVD压缩图像实例  这里以一个图片为例,图片选自电影《荒岛余生》,截取主角快要精神崩溃时刻懵逼的场景,后面还有主角的精神支柱:Vilson,(剧透一下,后来主角决意离开小岛,扎了个皮筏,在海上漂浮的过程中,Vilson被大浪吹走了,主角万念俱灰,躺在皮筏上面等死,最后........。)  原图片为:  帖子给出了详细的代码,下面逐行讲解代码。clc;clearall;%%%读取图像img=imread('island.png');%将图像转换为灰度图像,如果它不是灰度图ifsize(img,3)==3img=rgb2gray(img);end%将图像转换为双精度浮点数格式img_double=im2double(img);  上面的代码将图片读进内存,但是matlab的imread函数读进的图片数据类型为unit8,因此需要将数据处理为浮点型数组,方便后续进行矩阵分解。%对图像进行奇异值分解[U,S,V]=svd(img_double,'econ');  这里没有自己写算法进行分解,直接调用了matlab的svd函数,返回左右奇异值矩阵和对角矩阵。%选择奇异值的数量来压缩图像k=50;%选择一个较小的k值来压缩图像  k就是我们选择的前阶特征值,这里选择了50,后续我会修改值,观察不同的k值对压缩后的图片质量影响。%选择奇异值的数量来压缩图像U_k=U(:,1:k);S_k=S(1:k,1:k);V_k=V(:,1:k);  选取前阶特征值对左右奇异值矩阵和对角矩阵重构。%重构压缩后的图像img_compressed=U_k*S_k*V_k';  生成重构后的矩阵,即生成保留前阶特征值的图片。%显示原始图像和压缩后的图像subplot(1,2,1);imshow(img_double);title('OriginalImage');subplot(1,2,2);imshow(img_compressed);title(['CompressedImagewithk=',num2str(k)]);  上面的代码用与显示压缩前后的矩阵。  这张图片经过处理后的浮点矩阵大小为,因此,左奇异矩阵的大小为,右奇异矩阵的大小为,对角矩阵大小为。  这张图片经过奇异值分解,共计849个特征值,我们依次保留不同的特征值,分别保留了25、50、75、100、125、15、175、200,比较压缩后的图片质量。  下面给出了原图与压缩后的图片对比图,每张图片的左边均是原图,右面是压缩后的图片,图片下方标注了相应的压缩程度。  25/849  50/849  75/849  100/849  可以发现,从这里开始,如果没有仔细分辨,已经看不出来原图和压缩后的图片的细微区别,这时截取的特征值占比为11.78%,压缩了将近百分之九十!  125/849  150/849  175/849  200/849  从上面图片的对比中发现,采用SVD对图像进行压缩,仅仅截取十分之一的特征值就达到了接近原图效果的压缩图。可见该方法在图像处理方面有极大的应用前景,并且已经有了极为广泛的应用。详细的matlab代码  下面给出了详细的matlab代码,使用的时候注意修改图片的名字。clc;clearall;%%%读取图像img=imread('island.png');%将图像转换为灰度图像,如果它不是灰度图ifsize(img,3)==3img=rgb2gray(img);end%将图像转换为双精度浮点数格式img_double=im2double(img);imwrite(img_double,'origin.png');%对图像进行奇异值分解[U,S,V]=svd(img_double,'econ');%选择奇异值的数量来压缩图像k=200;%选择一个较小的k值来压缩图像U_k=U(:,1:k);S_k=S(1:k,1:k);V_k=V(:,1:k);%重构压缩后的图像img_compressed=U_k*S_k*V_k';%显示原始图像和压缩后的图像subplot(1,2,1);imshow(img_double);title('OriginalImage');subplot(1,2,2);imshow(img_compressed);title(['CompressedImagewithk=',num2str(k)]);%如果需要,保存压缩后的图像imwrite(img_compressed,string(k)+'.png');  上面的东西写的花里胡哨的,可是,这是有限元领域的公众号啊!SVD跟有限元又有什么关系呢!?  列位看官,敬请期待!喜欢就点个关注呗来源:有限元先生

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈