【JY】 ABAQUS子程序UEL的有限元原理与应用

news2024/9/24 17:14:15

不等待

即关注

93b582df53f3cd2ef5913198bdfdadbf.png

4ce75af66f20a7b56868c35f2eb267dd.gif

【简述ABAQUS中UEL子程序】

ABAQUS作为成熟的商用有限元软件,可为高级用户提供特定的分析需求。ABAQUS常见的二次开发子程序包括:UMAT、VUMAT、UGENS、UEL和VUEL等。其中UEL/VUEL分别适用于ABAQUS的Standard/Explicit求解器。只有清楚有限元分析的基本原理,才能够较好地了解其分析的力学原理,才能对特定的分析需求编写合适的分析单元。

本文对ABAQUS/Standard中UEL子程序的有限元原理及编写原则进行初步梳理,并编写了平面三角形单元静力分析的UEL子程序,以加深对UEL的理解与认识。

2cd5b817d80447d23c0ffa35b45b45db.gif

348bf3b0dc86c1adfe8ee36ee29e5485.gif

【ABAQUS的UEL单元之有限元基本原理简述】

当用户需要用ABAQUS/Standard单元库中没有的单元进行分析时,可通过ABAQUS提供的UEL子程序接口进行二次开发,编写适用于特定分析的单元。下面以平面三角形单元为例,给出编写UEL单元的基本流程。

27805181e0396d62e7d3027d58380c0c.png

系统的势能Π由下式给出

6606c4a3ba4abd420963fdc30c72c734.png

其中802a9efaf20af0ab5b06e93264d9ec21.png为单元的应变能。

将应变-位移关系ε = BqUe中,由此对于势能方法形成的刚度矩阵如下:

f14496cde95924a4abebc0a76bd75948.png

8fe4ca235d84620607dceaec42ee0c88.png

其中te为单元厚度、Ae为单元面积。

有限元分析的第一步是将实体离散化为多个单元,此后构造出各个单元的单元刚度矩阵,在将单元刚度矩阵集成整体的刚度矩阵,最后通过整体刚度矩阵建立平衡方程从而求解各个节点的位移、应力、应变等响应。因此,根据有限元的分析原理,编写UEL的最终目的即是形成目标单元的单元刚度矩阵。以下对平面常应变三角形单元(CST)进行有限元分析,依据有限元分析思路编写UEL子程序,以初步了解有限单元的分析原理及UEL编写流程。

7f016450112bf5b090bdbb7f5380a5ec.png

图2 平面三角形单元示意图

上图所示为平面三角形单元,由图示信息可得其节点坐标列阵u与位移列阵q分别为

6305e5c61836b8ba94e9f9d8a9affd83.png

1.形函数

设三角形单元节点1、2、3对应的形函数分别为N1、N2、N3,形函数满足条件:N1+N2+N3=1(在点i处,形函数Ni值为1,其余形函数值为0),形函数采用自然坐标ξη描述,有

f039aeb64ad0ad4ec68cf63f64ed57ac.png

2.高斯积分点及权重

此平面三角形单元所选取的高斯积分点及权重如下:

表1高斯积分点及权重

f84a99b7fb2849a4c4cdbee4a8c5fe7a.png

3.形函数与单元位移关系

得到形函数与单元节点位移后,根据等参元表示方法,单元内任意一点的位移都可用形状函数和未知结点位移场进行表示,有

5ab48223248d24f8ff56c244e3d520dc.png

可表示为u=Nq,其中N

b0c44054f3589b227815201c7b0b2bd3.png

对于三角形单元,可将x、y坐标表示为节点坐标的形式,可由此得到单元坐标的插值关系为:

658666cf7d3c8ef2ddc4eff2cb62ca04.png

其中

866b6daae40398fa012739a6a2de05b8.png

4.雅各比矩阵J

由节点坐标x、y与ξ、η关系,在根据链式求偏导法则,可得到平面三角形单元的雅可比矩阵

75873c2a097892d6f2042e9f42ba73f5.png

5.应变矩阵B 

根据应变ε与节点坐标u、节点位移q的关系可得应变计算公式为

29e782638013e2cb9f8c2b07a423ef41.png

 其中xij与yij计算公式同上。写成矩阵形式为

3f6eee1585f9b37a8851a1978143037c.png

由此可导出单元应变-位移矩阵B,其表达式为

c9f6b4db39ee51f50de3878ca3f9efd9.png

由此可看出B矩阵中所有元素均为常数,且每个常数均是通过节点坐标表示的。

6.弹性矩阵D

弹性矩阵D根据所研究问题为平面应力或平面应变问题有不同形式,其取值需根据所用材料确定,具体如下:

2fdb8a3779d0d08b59dd4fc2a13bfcab.png

a3d5bfbfa4dadada6faa94052ad0616b.png

7.应变-位移矩阵

由已有的应变矩阵B与应力应变关系,得应变位移矩阵σ Dε=D B q

8.单元刚度矩阵与残余力向量

根据势能方法导出得到三角形单元的单元刚度矩阵ke,有

94065e938d82170902dd35e15897f943.png

其中te为单元厚度。

最后,通过单元的边界条件可得单元的残余力向量。至此,UEL单元的编写完成,可进行初步调试直至结果无误。

78396f9130ce65a33b9b652079238d93.gif

03bc1d01806df1f087bf7112324a3636.gif

【 UEL的编写基本原则】

ABAQUS的子程序可通过FORTRAN 77/95 进行编写,本文采用FORTRAN77进行编写。

在FORTRAN中编写UEL,需在以下框架中进行,才可被ABAQUS识别。以下框架也即是ABAQUS的UEL接口(见ABAQUS6.14 User Subroutines Reference Guide 1.1.28 UEL)。

SUBROUTINE UEL(RHS,AMATRX,SVARS,ENERGY,NDOFEL,NRHS,NSVARS,
     1 PROPS,NPROPS,COORDS,MCRD,NNODE,U,DU,V,A,JTYPE,TIME,DTIME,
     2 KSTEP,KINC,JELEM,PARAMS,NDLOAD,JDLTYP,ADLMAG,PREDEF,NPREDF,
     3 LFLAGS,MLVARX,DDLMAG,MDLOAD,PNEWDT,JPROPS,NJPROP,PERIOD)
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION RHS(MLVARX,*),AMATRX(NDOFEL,NDOFEL),PROPS(*),
     1 SVARS(*),ENERGY(8),COORDS(MCRD,NNODE),U(NDOFEL),
     2 DU(MLVARX,*),V(NDOFEL),A(NDOFEL),TIME(2),PARAMS(*),
     3 JDLTYP(MDLOAD,*),ADLMAG(MDLOAD,*),DDLMAG(MDLOAD,*),
     4 PREDEF(2,NPREDF,NNODE),LFLAGS(*),JPROPS(*)

      user coding to define RHS, AMATRX, SVARS, ENERGY, and PNEWDT
(此部分是我们所要编写的内容)

      RETURN
      END

UEL的编写可分为以下几个部分内容:

1.定义变量

编写UEL子程序最重要的工作是形成单元的刚度矩阵AMATRX与残余力向量RHS。单元刚度矩阵AMATRX与残余力向量RHS的形成可按照上一小节给出的流程进行。UEL子程序框架中出现的如SVARS、ENERGY、COORDS等变量无需定义(UEL子程序框架中各变量的具体含义见帮助文档),可直接赋值。

2.变量赋值与信息传入

在开始采用所编写的UEL单元时,需要从inp文件中传入单元所用材料的基本属性,如密度、弹性模量及泊松比等。同时,在inp文件中需要指定UEL单元的单元结点数NODES、单元类型命名TYPE、基本属性个数PROPERTIES、空间维数COORDINATES、产生的变量个数VARIABLES、单元节点编号*ELEMENT等信息。

参考Abaqus6.14帮助文档中调用UEL子程序时inp文件所用的命令流:

*USER ELEMENT, NODES=2, TYPE=U1, PROPERTIES=4, COORDINATES=3,

VARIABLES=12

1, 2, 3

*ELEMENT, TYPE=U1

101, 101, 102

*ELGEN, ELSET=UTRUSS

101, 5

*UEL PROPERTY, ELSET=UTRUSS

0.002, 2.1E11, 0.3, 7200.

上述命令表示所采用的UEL单元为两点的线性杆件单元,其中ELGEN表示逐步增加单元数量(详见帮助文档关键词解释*ELGEN)。要将inp文件中的单元特性传入UEL,可在UEL中写入以下命令:

AREA= PROPS(1)  ! Cross-sectional area

E = PROPS(2)     ! Young's modulus

MIU = PROPS(3)  ! Poisson's ratio

RHO = PROPS(4)  ! Density

3.变量计算

①根据前述有限元基本原理,计算各个变量,并形成刚度矩阵

②在编写UEL过程中,可通过输出每一步的计算变量,以方便后期debug判断错误所在的位置,每个输出变量可在.log文件中查看。采用FORTRAN77 输出变量的方式:

(假设变量为雅各比矩阵Jacobi)PRINT *, 'Jacobi=' ,Jacobi

4.编写完成,开始debug

编写完UEL子程序之后,先将UEL子程序应用于单个单元进行测试(从静力、线性摄动、动力时程等各个方面逐一测试),在保证单个单元的计算结果正确无误的前提下,再将UEL子程序应用于较多单元的分析案例中,可保证分析结果的准确性。

40de0eed21c48c9a7a98d5ad60c688e0.gif

57f1ed8c6c2a82343e7bc955f3746a0e.gif

【在ABAQUS中的UEL单元研究】

根据以上平面三角形单元的有限元分析思路,编写对应的平面二维三角形单元UEL子程序,并通过两个不同的有限元分析算例验证该子程序的有效性。算例中采用的三角形单元为ABAQUS单元库中的二维三角形单元CPS3。

caabb7720f8eee29b774506cfc5f7174.gif

525502b3eca0fb9a0ef5a5cd209da277.gif

算例一:平面三角形单元

一、三角形单元有限元计算参数

29b8ce62347df2537ac31783a2fc3d3c.png

图3 平面三角形单元示意图

三角形单元的相关计算参数如表2所示:

表2 三角形单元计算参数

5d81640100bfda0b9fc664d0c0ef060e.png

该三角形单元共有三节点(如图1所示),每个节点有2个自由度

二、边界条件及载荷设置

将节点1与节点3的位移自由度施加约束,在节点2的水平x方向施加100N的节点力。

三、计算结果对比

在相同边界条件、载荷条件下,二维三角形单元的UEL子程序计算结果与有限元ABAQUS计算结果如下表3及图4-5所示,从图中可看出,子程序的位移计算结果与abaqus中CPS3单元位移计算结果一致。

表3 UEL子程序与abaqus有限元最大位移对比

ebeb07246ea10748e7bd213dcc58fb5a.png

3baf1e39356d224a7f5d7df7f230bc94.png

(a)CPS3加载时程

16b7fe09d0cef47878d43d45632ddd3e.png

  (b)UEL加载时程

图4两种不同单元的节点位移时程曲线

b41d452dafaec279a39f477c3eae7da2.png

77e41e83fa739d3e9f9b808e405684a4.png

图5 ABAQUS杆单元计算结果与UEL单元计算结果对比

cb608ac3c954c1e8fc679f609d0455ed.gif

eedb129d4ad0844c303c35ce00611a98.gif

算例二:平面三角形单元组合

一、三角形单元有限元计算参数

0766b3e8d1cbcc40bed922819dddd6df.png

图6平面三角形结构

由上图6可知该结构为四个相同的二维三角形单元组成。该杆件结构的相关参数如下表4所示:

表4 三角形单元参数

315ab7120d66e084e1e7f99e1a32e385.png

该平面三角形共有六个节点(如图4所示),共由三个平面二维三角形单元组成,每个节点有2个自由度。

二、边界条件设置

在三角形节点3施加100N水平力、节点4施加20N的水平力,并约束节点1、节点2的所有自由度,其余节点均为自由边界。

三、计算结果对比

在相同边界条件、相同载荷条件下,所编写的子程序位移计算结果与abaqus中的CPS3单元位移计算结果如下表4及图5-6所示,可从下图表得知,二者计算结果一致。

表5 UEL子程序与abaqus有限元最大位移对比

671c907a3a5537253d7937216431bb9b.png

973c4c2675114fbf472668ff8bbce1c6.png

(a)CPS3加载时程-U1

a5dd7685b7b077c6b23da3c67944e54b.png

(b)UEL加载时程-U1

图7-1两类单元节点的U1位移时程曲线

065e1b731dc43203963e4387f4509470.png

(a)CPS3加载时程-U2

a6057d7f9ed317653204cdecb7f53742.png

(b)UEL加载时程-U2

图7-2两类单元节点的U2位移时程曲线

43655211d0c927afecbe448bab732d94.png

a2a70700b9764ae5f0a037e512fb9326.png

图8 CPS3单元计算结果与UEL单元计算结果对比

通过以上两个有限元算例可知,采用所编写的UEL二维三角形单元子程序所计算得到的位移及时程结果与有限元软件ABAQUS中采用CPS3单元对应计算结果一致,说明该三角形单元子程序可靠且合理。

822f3961d7ec189a7ac7cb8f98ec5cc4.gif

66bc198afaa227514766623f361227b8.gif

【参考文献】

[1]:Abaqus6.14 User Subroutines Reference Guide

[2]: 工程中的有限元方法(第四版)

95f954a34bc8febd95e053b6b1ae3775.gif

概念为先,机理为本,期待下篇!

 往期推荐 ·

#性能分析

【JY】基于性能的抗震设计浅析(一)

【JY】基于性能的抗震设计浅析(二)

【JY】浅析消能附加阻尼比

【JY】近断层结构设计策略分析与讨论

【JY】浅析各动力求解算法及其算法数值阻尼(人工阻尼)

理念

【JY|体系】结构概念设计之(结构体系概念)

【JY|理念】结构概念设计之(设计理念进展)

【JY】有限单元分析的常见问题及单元选择

【JY】结构动力学之显隐式

【JY】浅谈结构设计

【JY】浅谈混凝土损伤模型及Abaqus中CDP的应用

【JY】浅谈混凝土结构/构件性能试验指标概念(一)

【JY】浅谈混凝土结构/构件性能试验指标概念(二)

【JY】橡胶系支座/摩擦系支座全面解析

#概念机理

【JY】基于Ramberg-Osgood本构模型的双线性计算分析

【JY】结构动力学初步-单质点结构的瞬态动力学分析

【JY】从一根悬臂梁说起

【JY】反应谱的详解与介绍

【JY】结构瑞利阻尼与经济订货模型

【JY】主成分分析与振型分解

【JY】浅谈结构多点激励之概念机理(上)

【JY】浅谈结构多点激励之分析方法(下)

【JY】板壳单元的分析详解

【JY】橡胶支座的简述和其力学性能计算

【JY】振型求解之子空间迭代

【JY】橡胶支座精细化模拟与有限元分析注意要点

【JY】推开土木工程振型求解之兰索斯法(Lanczos法)的大门

【JY】基于OpenSees和Sap2000静力动力计算案例分析

【JY】建筑结构施加地震波的方法与理论机理

【JY】力荐佳作《结构地震分析编程与应用》

#软件讨论

【JY】复合材料分析利器—内聚力单元

【JY】SDOF计算教学软件开发应用分享

【JY】Abaqus案例—天然橡胶隔震支座竖(轴)向力学性能

【JY】Abaqus6.14-4如何关联fortran?

【JY】如何利用python来编写GUI?

【JY】如何解决MATLAB GUI编程软件移植运行问题?

【JY】浅谈结构分析与设计软件

【JY|STR】求解器之三维结构振型分析

【JY】SignalData软件开发应用分享

【JY】基于Matlab的双线性滞回代码编写教程

【JY】动力学利器 —— JYdyn函数包分享与体验

【JY】混凝土分析工具箱:CDP模型插件与滞回曲线数据

【JY】结构工程分析软件讨论(上)

【JY】结构工程分析软件讨论(下)

#YJK前处理参数详解

【JY】YJK前处理参数详解及常见问题分析(一)

【JY】YJK前处理参数详解及常见问题分析:控制信息(二)

【JY】YJK前处理参数详解及常见问题分析:刚度系数(三)

【JY】YJK前处理参数详解及常见问题分析:二阶效应和分析求解(四)

【JY】YJK前处理参数详解及常见问题分析(五):风荷载信息

【JY】YJK前处理参数详解及常见问题分析(六):地震信息

#其他

【JY】位移角还是有害位移角?

【JY】如何利用python来编写GUI?

【JY】今日科普之BIM

2166752ba9791863cc40d300e4b84a30.jpeg

 ~关注未来更精彩~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

零基础怎么学Python编程,新手常犯哪些错误?

Python是人工智能时代最佳的编程语言,入门简单、功能强大,深获初学者的喜爱。 很多零基础学习Python开发的人都会忽视一些小细节,进而导致整个程序出现错误。下面就给大家介绍一下Python开发者常犯的几个错误。 1、错误的使用变量。 在Pyt…

华为网工入门之eNSP小实验(5)--VLAN间相互通信的三种方法

VLAN间相互通信 实际网络部署中一般会将不同IP地址段划分到不同的VLAN。同VLAN且同网段的PC之间可直接进行通信,无需借助三层转发设备,该通信方式被称为二层通信。VLAN之间需要通过三层通信实现互访,三层通信需借助三层设备(路由器,三层交换…

高可用系列文章之二 - 传统分层架构技术方案

前文链接 高可用系列文章之一 - 概述 - 东风微鸣技术博客 (ewhisper.cn) 三 技术方案 3.1 概述 单点是系统高可用最大的风险和敌人,应该尽量在系统设计的过程中避免单点。 保障系统的高可用, 方法论上,高可用保证的原则是「集群化」(或 「冗余」), …

LeetCode HOT 100 —— 312.戳气球

题目 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球,你可以获得 nums[i - 1] * nums[i] * nums[i 1] 枚硬币。 这里的 i - 1 和 i 1 代表和 i…

别只关注chatGPT能不能写论文了,它还支持49中场景,代码都给你写好了,速领

简介 chatGPT最近非常不稳定,访问一不小心就出现了网络错误,根本就不能很好的使用。那么我们该怎么办呢?勇哥给大家想到了一个种办法,就是用程序去调用openapi的接口,这个接口虽然是收费的,但是可免费使用…

linux下源码编译cloudcompare(解决无法加载pcd文件的问题)

cloudcompare是一款点云处理软件,里面有很多算法,值得大家学习研究。 下面介绍linux下源码编译cloudcompare的方法。 1.安装依赖: sudo apt-get install doxygen sudo apt install cmake-curses-gui2.下载: git clone --recurs…

Qt之天气预报——界面优化篇(含源码+注释)

一、界面优化效果 下方为界面优化完成和优化前的效果对比。 优化前: 优化后: 二、优化内容 添加标题栏添加图片(图图标素材源自阿里巴巴矢量图标库)更新UI内容(微调大小、布局比例)添加鼠标事件函数&…

Java 教程

Java 教程 Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言。 Java 可运行于多个平台,如 Windows, Mac OS 及其他多种 UNIX 版本的系统。 本教程通过简单的实例将让大家更好的了解 Java 编程语言。 移动操作系统 Android 大部分的代码采用…

RepVGG:一个结构重参数化网络

本文来自公众号“AI大道理” ResNet、DenseNet 等复杂的多分支网络可以增强模型的表征能力,使得训练效果更好。但是多分支的结构在推理的时候效率严重不足。 看起来二则不可兼得。 能否两全其美? RepVGG通过结构重参数化的方法,在训练的时候…

2022 年 Kubernetes 高危漏洞盘点

2022 年,Kubernetes继续巩固自己作为关键基础设施领域的地位。从小型到大型组织,它已成为广受欢迎的选择。出于显而易见的原因,这种转变使 Kubernetes 更容易受到攻击。但这还没有结束,开发人员通常将Kubernetes 部署与其他云原生…

【2022.12.18】备战春招Day13——每日一题 + 234. 回文链表 + 139. 单词拆分

【每日一题】1703. 得到连续 K 个 1 的最少相邻交换次数 题目描述 给你一个整数数组 nums 和一个整数 k 。 nums 仅包含 0 和 1 。每一次移动,你可以选择 相邻 两个数字并将它们交换。 请你返回使 nums 中包含 k 个 连续 1 的 最少 交换次数 输入:nums …

【数据结构】堆(二)——堆排序、TOP-K问题

作者:一个喜欢猫咪的的程序员 专栏:《数据结构》 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 目录 堆排序:(以小堆为例) Heapsort函数…

C语言重点解剖关键字要点速记

1.在windows中,双击的本质是运行该程序,就是将程序(.exe)加载到内存当中去。任何程序在被运行之前都必须加载到内存当中去。 2.所有的变量本质都是在内存的某个位置开辟的。变量不能定义在硬盘上,因为变量必须在程序运行的时候才能被开辟&am…

SPRING-了解1

1)最终address: 查找路径比较长,很有趣 JFrog 原始步骤1)进入 spring.io,点击右上角黑色标记边的标记 2)进入 git,找到 Binaries下面的 Spring Framework Artifacts 3)进一步找到Downlaoding a Distribution,下面有 https://repo.spring.io 4)x选择…

牛客SQL每日一题之SQL136 每类试卷得分前3名

文章目录SQL136 每类试卷得分前3名描述示例1输入:输出:答案SQL136 每类试卷得分前3名 描述 现有试卷信息表examination_info(exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长, release_time发布时间)&#x…

C# 中的 Infinity 和 NaN

C# 语言中,对于 int,long 和 decimal 类型的数,任何数除以 0 所得的结果是无穷大,不在 int,long 和 decimal 类型的范围之内,所以计算 6/0 之类的表达式会出错。 但是,double 和 float 类型实际…

Java入门笔记补充

Java基础笔记补充数据类型数据类型整形拓展浮点型拓展字符型拓展类型转换变量变量作用域局部变量实例变量静态变量变量的命名规范数组三种初始化静态初始化动态初始化数组的默认初始化Arrays类内存分析栈 stack:堆 heap:方法区(也是堆):封装继…

卷积神经网络 图像处理,卷积神经网络图片处理

1、在做图像处理时,如何提高识别算法的设计与效果的精度? 得到更多的数据 这无疑是最简单的解决办法,深度学习模型的强大程度取决于你带来的数据。增加验证准确性的最简单方法之一是添加更多数据。如果您没有很多训练实例,这将特…

AllegroBGA如何自动fanout操作指导

AllegroBGA如何自动fanout操作指导 当我们需要给BGA做fanout的时候,逐个pin去fanout是件比较麻烦的事情,下面介绍Allegro中如何自动fanout,以下图BGA为例 具体操作如下 选择Route-Create Fanout 选择Via类型,比如Via10 Via Direction BGA Quadrant Style Pin-via Space…

数字化母婴店,母婴智慧会员管理小程序

会员店想必很多小伙伴都接触过或有所耳闻,会员店的本质是通过好产品、好服务及好内容营造出完整且完美的用户消费体验,虽然纯会员店并不多,但如今越来越多的各行业商家意识到每个流量用户都很重要,需要维护好每个用户,…