主要内容

点荷载梁的降阶建模技术

这个例子展示了如何使用Craig-Bampton降阶建模技术消除不在感兴趣边界上的自由度(dfs)。算例中还采用了小维超元对系统进行了动力学分析。为比较,算例还对原结构进行了直接瞬态分析。

创建瞬态分析的结构模型。

modelT = createpde (“结构”“transient-solid”);

创建一个正方形截面的光束几何体,并将其包含在模型中。

通用= multicuboid (0.05, 0.003, 0.003);modelT。几何=通用;

绘制几何图形,显示面和边标签。

图pdegplot (modelT,“FaceLabels”“上”“FaceAlpha”, 0.5)视图(71 [4])

图中包含一个轴对象。轴对象包含三种类型的对象颤抖,补丁,线。

图pdegplot (modelT,“EdgeLabels”“上”“FaceAlpha”, 0.5)视图(71 [4])

图中包含一个轴对象。轴对象包含三种类型的对象颤抖,补丁,线。

指定材料的杨氏模量、泊松比和质量密度。

structuralProperties (modelT“YoungsModulus”210 e9,...“PoissonsRatio”, 0.3,...“MassDensity”, 7800);

把横梁的一端固定好。

structuralBC (modelT“边缘”,[2 8 11 12],“约束”“固定”);

在面3的中心添加一个顶点。

loadedVertex = addVertex(通用、“坐标”[0.025 0.0 0.0015]);图pdegplot (modelT,“VertexLabels”“上”“FaceAlpha”2.5, 0.5)视图([78])

图中包含一个轴对象。轴对象包含三种类型的对象颤抖,补丁,线。

生成一个网格。

generateMesh (modelT);

施加一个正弦集中力z-方向的新顶点。

structuralBoundaryLoad (modelT“顶点”loadedVertex,...“力”(0, 0, 10),“频率”, 6000);

指定零初始条件。

structuralIC (modelT“速度”(0 0 0),“位移”, 0 0 0);

解决模型。

tlist = 0:0.00005:3E-3;RT =解决(modelT tlist);

使用固定的和加载的边界定义超元素接口。在这种情况下,降阶模型保留了固定表面和加载顶点的自由度(dfs),同时压缩所有其他dfs,以支持模态dfs。为了更好的性能,使用边缘边界面5的集合,而不是使用整个面。

structuralSEInterface (modelT“边缘”,[2 8 11 12]);structuralSEInterface (modelT“顶点”, loadedVertex);

减少结构,保留所有固定接口模式5 e5

罗=减少(modelT,“FrequencyRange”, -0.1, 5 e5);

然后,利用降阶模型模拟瞬态动力学。使用ode15s函数直接集成简化的系统ODE。使用简化模型需要索引到简化的系统矩阵rom.Krom.M.首先,构造索引的映射K中提供的数据来加载和固定自由度

自由度对应于平移位移。如果模型中的网格点数为神经网络,然后工具箱按如下方式将id分配给dof:第一个1神经网络x位移,神经网络+ 12 *神经网络y位移,2神经网络+ 13 *神经网络z位移。简化模型对象中包含这些保留dof的idrom.RetainedDoF

创建一个函数,返回给定节点id和节点数量的DoF id。

getDoF = @(x,numNodes) [x(:); / /节点个数x (:) + numNodes;x (:) + 2 * numNodes];

已知给定节点id的DoF id,使用相交函数查找所需的索引。

numNodes =大小(rom.Mesh.Nodes, 2);loadedNode = findNodes(罗。网,“地区”“顶点”, loadedVertex);loadDoFs = getDoF (loadedNode numNodes);[loadNodeROMIds, ~ ~] =相交(rom.RetainedDoF loadDoFs);

在简化矩阵中rom.Krom.M,广义模态自由度出现在保留自由度之后。

fixedIntModeIds = (numel(rom.RetainedDoF) + 1:size(rom.K,1))'; / /修改内存

由于固定端自由度不是ODE系统的一部分,简化矩阵的ODE自由度的指标如下。

odeDoFs = [loadNodeROMIds; fixedIntModeIds];

的相关组成部分rom.Krom.M对于时间积分:

Kconstrained = rom.K (odeDoFs odeDoFs);Mconstrained = rom.M (odeDoFs odeDoFs);numODE =元素个数(odeDoFs);

现在你有一个二阶ode系统。使用ode15s,通过线性化将其转换为一阶ode系统。这样的一阶系统是二阶系统的两倍。

Mode = [eye(numODE,numODE), zeros(numODE,numODE);...0 (numODE numODE) Mconstrained];Kode = [zeros(numODE,numODE), -eye(numODE,numODE);...Kconstrained 0 (numODE numODE)];飘流= 0 (2 * numODE, 1);

整个系统中指定的集中力载荷是沿z-direction,它是ODE系统中的第三个自由度。通过计算线性化得到一阶系统的负载ODE自由度。

loaddedof = numODE + 3;

指定ODE求解器的质量矩阵和雅可比矩阵。

odeoptions = odeset;odeoptions = odeset (odeoptions,的雅可比矩阵, -Kode);odeoptions = odeset (odeoptions,“质量”模式);

指定零初始条件。

情况= 0 (2 * numODE, 1);

利用ode15s和辅助函数对简化后的系统进行求解CMSODEf,它在本例的最后定义。

sol = ode15s(@(t,y) CMSODEf(t,y,Kode,Fode,loadODEDoF),...情况,tlist odeoptions);

计算ODE变量和时间导数的值。

[displ,韦尔]=德瓦尔(sol tlist);

画出z,并将其与约简ODE系统解中的第三自由度进行比较。

图绘制(tlist RT.Displacement.uz (loadedVertex,:))情节(tlist displ (3:)的r *)标题(“加载顶点的z位移”)传说(“全模式”“罗”

图中包含一个轴对象。标题为Z-Displacement at Loaded Vertex的轴对象包含两个类型为line的对象。这些对象代表完整的模型,rom。

通过了解接口自由度和模态自由度的解决方案,可以为整个模型重建解决方案。的reconstructSolution函数要求所有自由度的位移、速度和加速度.构造完整的解向量,包括在固定自由度处的零值。

u = 0(大小(rom.K, 1),元素个数(tlist));ut = 0(大小(rom.K, 1),元素个数(tlist));utt = 0(大小(rom.K, 1),元素个数(tlist));u (odeDoFs:) = displ (1: numODE,:);ut (odeDoFs:) =韦尔(1:numODE,:);utt (odeDoFs:) =韦尔(numODE + 1:2 * numODE:);

使用此解决方案构造瞬态结果对象。

RTrom = reconstructSolution (rom, u, ut、utt tlist);

为了比较,用完整的和重建的解计算梁中心的内部位移。金宝搏官方网站

coordCenter = (0, 0, 0);iDispRT = interpolateDisplacement(RT, coordCenter);iDispRTrom = interpolateDisplacement(RTrom, coordCenter);图绘制(tlist iDispRT.uz,“k”)举行情节(tlist iDispRTrom.uz,“g *”)标题(“几何中心的z -位移”)传说(“全模式”“罗”

图中包含一个轴对象。标题为Z-Displacement at Geometric Center的轴对象包含两个类型为line的对象。这些对象代表完整的模型,rom。

ODE Helper函数

函数f = CMSODEf(t,u,Kode,Fode,loadedVertex) Fode(loadedVertex) = 10*sin(6000*t);f = -Kode*u +Fode;结束