首页/文章/ 详情

ANSA二次开发:线束单元创建(1)

2月前浏览95
随着碰撞工况逐渐严苛及电车的普及,电安全愈发重要。在碰撞仿真过程中,对线束的考察也越来越普遍。笔者将分两篇文章介绍利用ANSA自有方案和针对自有方案的不足开发的二次插件介绍线束单元的创建方法。在碰撞仿真分析中,常采用双层实体(solid)单元或beam-RB2-shell单元来模拟线束单元。本文先介绍ANSA的两种自有方法。
   
方法一:分步创建
采用该方法步骤繁琐,针对整车线束建模过程中将导致建模效率极低。
方法二:ANSA自有插件(Tubes/Wires Mesh Generator)
采用该方法可同时处理对多条线束。从而大大提高建模速度。但是,在实际使用过程中,该方法也存在如下短板:
1、若一条线束在CAD建模过程中在卡扣处被分为多段,如下图所示,利用上述工具将创建3组不同的单元,且不共节点,后续还需投入大量的人力进行修改。
    
2、根据不同的线束径向尺寸,将采用不同的建模方式进行建模。例如:当线束直径大于5时,采用双层实体(solid)单元;否则采用beam-RB2-shell单元进行建模。则需要建模工程师花费大量时间进行相关测量分类,然后再进行建模。

来源:檐苔
碰撞二次开发ANSA
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-09-07
最近编辑:2月前
青瓦松
硕士 签名征集中
获赞 42粉丝 2文章 48课程 0
点赞
收藏
作者推荐

预备知识4-微积分学习笔记

微分学最重要的应用是优化问题,即考虑如何把事情做到最好。在深度学习中,变得更好意味着最小化一个损失函数(loss function),即一个衡量“模型有多糟糕”这个问题的分数。 最终,我们真正关心的是生成一个模型,它能够在从未见过的数据上表现良好。但“训练”模型只能将模型与我们实际能看到的数据相拟合。因此,我们可以将拟合模型的任务分解为两个关键问题: 优化(optimization):用模型拟合观测数据的过程;泛化(generalization):数学原理和实践者的智慧,能够指导我们生成出有效性超出用于训练的数据集本身的模型。 一、导数和微分 假设我们有一个函数f : R → R,其输入和输出都是标量。如果f的导数存在,这个极限被定义为如果f′(a)存在,则称f在a处是可微(differentiable)的。如果f在一个区间内的每个数上都是可微的,则此函数在此区间中是可微的。import numpy as npimport plotShowdef fun(x:float)->float: # f = 3x**2 - 4x return 3*x*x - 4*xdef numerical_lim(f:object, x:float, h:float)->float: return (f(x+h)-f(x))/hh:float = 0.1for i in range(5): print(f'h={h:.5F}, numerical limit={numerical_lim(fun, 1.0, h):.5F}') h *=0.1# h=0.10000, numerical limit=2.30000# h=0.01000, numerical limit=2.03000# h=0.00100, numerical limit=2.00300# h=0.00010, numerical limit=2.00030# h=0.00001, numerical limit=2.00003x = np.arange(0,3,0.1)plotShow.plot(x, [fun(x), 2*x-3], 'x', 'f(x)', legend=['f(x)', 'Tangent line (x=1)'])其中plotShow.py包中代码如下:from matplotlib import pyplot as pltimport typingdef setFigsize(figsize:typing.Tuple[float]=(3.5, 2.5)): plt.rcParams['figure.figsize'] = figsizedef setAxes(axes:plt.gca, xlabel, ylabel, xlim, ylim, xscale, yscale, legend)->None: ''' 设置matplotlib的坐标轴 ''' axes.set_xlabel(xlabel) axes.set_ylabel(ylabel) axes.set_xscale(xscale) axes.set_yscale(yscale) axes.set_xlim(xlim) axes.set_ylim(ylim) if legend: axes.legend(legend) axes.grid() return Nonedef plot(x, y=None, xlabel=None, ylabel=None, legend=None, xlim=None, ylim=None, xscale='linear', yscale='linear', fmts=('-', 'm--', 'g-', 'r:'), figsize=(3.5, 2.5), axes=None): ''' 绘制数据点 ''' if legend is None: legend = [] setFigsize(figsize) axes = axes if axes else plt.gca() # 若x有一个轴,输出True def hasOneAxis(_x): return (hasattr(_x, 'ndim') and _x.ndim==1 or isinstance(_x, list) and not hasattr(_x[0], '__len__')) if hasOneAxis(x): x = [x] if y is None: x, y = [[]]*len(x), x elif hasOneAxis(y): y = [y] if len(x)!=len(y): x = x*len(y) axes.cla() for _x, _y, fmt in zip(x, y, fmts): if len(_x): axes.plot(_x, _y, fmt) else: axes.plot(_y, fmt) setAxes(axes, xlabel, ylabel, xlim, ylim, xscale, yscale, legend) plt.show() return None二、偏微分三、梯度四、链式法则 来源:檐苔

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