如何输入变量结构力学求解器的机械性能?

32视图(30天)
你好每一个人,
我一直试图让我的头在Matlab有限元结构力学求解器(PDE工具箱),和我仍然有一个问题:
有可能输入力学性能(主要是扬斯模量)随温度/位置?structuralProperties函数只需要标量值,但我想给它一个函数处理占space-dependent属性,我。e e = @之类(位置、状态)E0 * location.x。*位置。y。
我在运行结构模型的结构(已知)非均匀温度曲线。力学性能依赖于温度,因此他们会有不同的价值观在不同部分的结构。
谢谢你的帮助,
4评论

登录置评。

接受的答案

罗马Kandinskii
罗马Kandinskii 2021年5月17日
你好鲍特,
它已经有一段时间你的原创文章,但是我已经找到了如何使PDE工具箱接受杨氏模量作为坐标的函数。
这是一个令人讨厌的骑,所以如果有任何兴趣,系好安全带。
鲍特所指出的,“结构”模型对象只接受材料属性作为常数。谁知道困难是让他们可定义的函数(在您可以轻松地设置一个变量电导率热对象)。所以关键是使用通用PDE中描述的对象,例如, 在这里 。一般PDEmodel对象比专用的结构更灵活或热对象——你可以定义你的PDE (s)你所希望的方式,指定所有的系数按你所希望的方式。缺点,至少其中之一是,你自己必须解释所有结果。重新计算位移应力,等等。
让我们来看一个例子。我想伸展一个方形板圆柱包含更高的刚度。你可以看到它作为一个复合团结细胞矩阵(纤维)。
模型= createpde (3);% 3变量——用户体验,uy,是乌斯。这个例子是在3 d
g = importGeometry(模型,“square_flat.stl”);%使用导入3 d几何是容易。.stl文件附呈
挤出(g, 10);%的屠宰广场为平行六面体
pdegplot(模型,“EdgeLabel”,“上”,“VertexLabels”,“上”,“FaceLabels”,“上”);
生成网格
Hmax = 3.5;
msh = generateMesh(模型,“GeometricOrder”,“二次”,“Hmax”,Hmax);
图;pdemesh(模型);
标题(“网与二次三角元素”);
自由度=长度(msh.Nodes)% dreedom的度
边界条件
applyBoundaryCondition(模型,“边界条件”,“脸”3,“u”,(0,0,0));%修复一侧
applyBoundaryCondition(模型,“边界条件”,“脸”5,“u”,110,0,0);%应用位移到另一侧
这是一个技巧来定义 常数 各向同性材料为广大PDE对象。我发现在文档的深处。它使用一个无证函数elasticityC3D,里面是这样的:
函数cmat = elasticityC3D (E,ν)
% ELASTICITYC3D计算c矩阵对各向同性弹性固体
%这个便利函数包含在工具箱的使用
%几个例子。这个无证函数可能在未来被移除
%释放。
%
%这个函数使用的线性化小排量的假设
%各向同性材料。因此,只有两个独立的弹性
%的常量,杨氏模量(E)和泊松比(ν),这是使用
%在PDE工具箱构建c矩阵格式。
% 2014 - 2016版权MathWorks公司。
G = E /(2 *(1 +ν));
c1 = E * (1-nu) /((1 +ν)*(1 - 2 *ν));
c12 = c1 *ν/ (1-nu);
C11 = [c1 0 G 0 0 G];
C12 = [0 G 0 C12 0 0 0 0 0);
C13 = [0 0 G 0 0 0 c12 0 0];
C22 = (G 0 c1 0 0 G);
C23 = [0 0 0 0 0 G 0 c12 0];
C33 = (G 0 G 0 0 c1);
cmat = [C11 C12 C22 C13 C23 C33) ';
结束
这个函数接受杨氏模量和泊松比,和为PDE组装c-coefficient矩阵系统所需的矢量格式。这的确是弹性的刚度矩阵方程,描述 https://nl.mathworks.com/help/pde/ug/3-d-linear-elasticity-equations-in-toolbox-form.html
的矢量形式的特异性c-coefficient矩阵描述: https://nl.mathworks.com/help/pde/ug/c-coefficient-for-systems-for-specifycoefficients.html bu5xabm-21 。很忙碌,但它给信息有关如何设置这个矩阵空间的依赖。我怀疑如果我可以用我的头,如果不是elasticityC3D函数。
如果我们选择恒模,我们定义PDE系数如下:
E = 200 e9;
ν= 0.3;
specifyCoefficients(模型,“米”0,
' d '0,
“c”elasticityC3D (E,ν),
“一个”0,
“f”,(0,0,0));
解决系统:
rslt = solvepde(模型);
u = rslt.NodalSolution;
pdeplot3D(模型,“ColorMapData”u (: 1));标题(“用户体验”)
pdeplot3D(模型,“ColorMapData”u (:, 2));标题(“uy”)
pdeplot3D(模型,“ColorMapData”u (:, 3));标题(“是乌斯”)
我们看到displecement字段
而不是使用elasticityC3D现在,让我们来定义自己的函数,非零系数矩阵的条目将取决于坐标。我用一种逻辑函数画一个圆形的领域有一定的斜率。但这并不一定是这样的。
函数cmatrix = ccoeffunction(位置、状态)
%缸物流功能
E_m = 100 e2;%的模量矩阵
E_f = 10 e9;%纤维的模量
ν= 0.3;%泊松比
kk = 3000;%的对数曲线陡度
r = 35;%的半径纤维
x0 = 50;y0 = 50;%中心坐标
%的物流功能。我使用点操作符(。*。/ ^)在这个函数
%,以确保element-wise操作
E = E_m + (E_f -E_m)。/ (1 + exp (kk * (sqrt ((location.x-x0)。^ 2 + (location.y-y0)。^ 2) - 1 * r)));
%的矢量形式矩阵是矩阵(是的,我知道右),大小n×m,
% n是条目的数量在我们的特殊形式的c-coefficient矩阵,
%和m是自由度的数量(数量的机甲节点)
cmatrix = 0(45岁的元素个数(location.x));
G = e . /(2 *(1 +ν));%,使用点来避免矩阵运算
c1 = e . * (1-nu)。/((1 +ν)*(1 - 2 *ν));
c12 = c1。*ν/ (1-nu);
:cmatrix (1) = c1;
:cmatrix (3) = G;
:cmatrix (6) = G;
:cmatrix(8日)= G;
:cmatrix(10日)= c12;
:cmatrix(16日)= G;
:cmatrix(18日)= c1;
:cmatrix(21日)= G;
:cmatrix(24日)= G;
:cmatrix(28日)= c12;
cmatrix(36岁)= G;
cmatrix(38岁)= c12;
:cmatrix (40) = G;
cmatrix(42岁)= G;
:cmatrix (45) = c1;
结束
exctly“矢量”从如何与c-coefficient矩阵,你能找到吗 https://nl.mathworks.com/help/pde/ug/c-coefficient-for-systems-for-specifycoefficients.html bu5xabm-10
看到的部分 3 n (3 n + 1) / 2-Element列向量c, d系统。
现在让我们重新评估系数和解决这个问题。
specifyCoefficients(模型,“米”0,
' d '0,
“c”@ccoeffunction,
“一个”0,
“f”,(0,0,0));
rslt = solvepde(模型);
u = rslt.NodalSolution;
pdeplot3D(模型,“ColorMapData”u (: 1));标题(“用户体验”)
pdeplot3D(模型,“ColorMapData”u (:, 2));标题(“uy”)
pdeplot3D(模型,“ColorMapData”u (:, 3));标题(“是乌斯”)
现在我们看到的虚构的纤维位移场。
解决期间,有一个警告,可怜的调节。所以它可能是更好的定义不同的几何域等问题。但是这个例子就足够了。
我希望它能帮助一些人,
罗马
2的评论
斯宾塞Dansereau
斯宾塞Dansereau 2023年4月27日
很棒的修改!我想用你的方法,但是它适应我在做什么。我想已经不仅仅是一个中间纤维,但适应整个体积的2 d地图高低E值。基本上我有100 x100矩阵的1和0,我想映射到100 x100x10块,与网格中的每个元素被映射到对应的E值由我的图像映射。但是我遇到一个问题,每次的E值函数是在解算器运行不necessaru 1 x1价值,而是偶尔1 x2500价值。我困惑为什么这是首先,但也导致一个问题,我不能直接映射图像映射到E值系数。得到图像到函数只是通过一个全局变量设置为图像,这同样适用于函数你写x0, y0和r值,如果你想改变这种情况。

登录置评。

更多的答案(0)

s manbetx 845


释放

R2019a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!