首页/文章/ 详情

Abaqus中进行自由体截取力平衡分析

3小时前浏览3


1. 何谓自由体截面?

        自由体截取是一种力学分析工具,用于研究结构特定截面(如框架梁或三维连续体构件)所受的力与弯矩状态。

        在结构力学课程中,通常教授通过平衡方程解析求解自由体截取的方法,针对超静定结构等特殊情形还需结合运动学条件进行补充求解。然而,对于普遍工况而言,采用数值计算方法更具工程适用性。



free body cuts in Abaqus


2. 如何在 Abaqus获取截面力?


在Abaqus中,我们可以在ODB内显示自由体截面,包括力。

在运行模型之前,我们需要在字段输出变量NFORC 。这些是节点的力,将在后处理阶段使用。

NFORC变量是由实体单元(例如C3D8,CPS4,CPE4…)所需的,但是,如果我们的模型是由梁单元制成的,则必须要求在场输出中提供可变的SF (截面力和弯曲矩)。

Variables for free-body cuts

3. 截面力在后处理的可视化

为了在我们的模型中显示自由削减,我们需要像往常一样解决该工作。然后,在可视化模块中,单击视图剪切管理器以选择切割平面,如下图所示。

window view cut manager



在图像中,我们选择了X平面作为切割平面。然后,要在切口上显示自由力量,

必须启用。这样,我们将在模型的切割上看到两个箭头:一个代表(红色),另一个代表弯矩(蓝色)。

显示自由力量和时刻的格式可以在以下方式中自定义:


Free Body Cut Manager > Options

一些最内置的选项是:

  • 显示组件而不是结果。

  • 编辑每个组件的颜色

  • 自定义向量标签以更好地可视化。



默认情况下,全球坐标系(CSYS-Global)默认情况下,在视图切割中显示的力和力矩的组成部分。但是,如果我们希望这种分解遵循任何其他CSY,则可以创建一个新的CSY,并在以下方式中选择它:

Free Body Cut Manager > Options


4. 如何用脚本获取截面力?


实际上,通过Python脚本,我们可以为轴向和剪切力以及弯曲生成自由体力图

从自由削减中提取数据的关键功能是:

session.XYDataFromFreeBody

以下是示例脚本:


































































































































To run this script from Abaqus/CAE go to:File > Run Script: Select this file
"""
from abaqus import *from abaqusConstants import *from caeModules import *
import numpy as np
# Read odb from the current viewportmyview = session.viewports[session.currentViewportName]odb = session.odbs[myview.odbDisplay.name]
# Keep undeformed viewmyview.odbDisplay.display.setValues(plotState=(CONTOURS_ON_UNDEF, ))
# Enable Free body cut using X-plane, with rotation using the global CSYSmyview.odbDisplay.setValues(viewCutNames=('X-Plane', ), viewCut=ON)myview.odbDisplay.viewCuts['X-Plane'].setValues(motion=ROTATE, rotationAxis=AXIS_3, showFreeBodyCut=True)
# Specify the CSYS used to extract data: global CSYS (XYZ)myview.odbDisplay.viewCutOptions.setValues(componentResolution=CSYS, csysName='(Global)')
# Iterate and extract results n_cuts = 25  angles = np.linspace(1., 89., n_cuts)forces = []forces_glob = []for angle in angles:
   # Make free body cut    myview.odbDisplay.viewCuts['X-Plane'].setValues(angle=angle)
   # Extract XYDataObjects from Free body cut    dataList = session.XYDataFromFreeBody(odb, force=True, moment=True, resultant=False, comp1=True, comp2=True, comp3=True)
   fx = zip(*session.xyDataObjects['X-Plane force component 1'].data)[-1][-1]    fy = zip(*session.xyDataObjects['X-Plane force component 2'].data)[-1][-1]    mz = zip(*session.xyDataObjects['X-Plane moment component 3'].data)[-1][-1]        # Forces in global axis (XYZ)    forces_glob.append((fx, fy, mz))        # Forces in cylindrical axis    axial_force = fx * np.cos(angle * np.pi/180.) + fy * np.sin(angle * np.pi/180.)    shear_force = fx * np.sin(angle * np.pi/180.) - fy * np.cos(angle * np.pi/180.)        forces.append((axial_force, shear_force, mz))            # Delete ALL xyDataObjects    # for k in session.xyDataObjects.keys():        # del session.xyDataObjects[k]        # delete XYDataObjects created    for d in dataList:        del session.xyDataObjects[d.name]
       # Save results from freebody cuts# Cartesian CSYSfx, fy, mz = zip(*forces_glob)
session.XYData(name='Force_X', data=zip(angles, fx),    axis1QuantityType=visualization.QuantityType(type=ANGLE),    axis2QuantityType=visualization.QuantityType(type=FORCE))
session.XYData(name='Force_Y', data=zip(angles, fy),    axis1QuantityType=visualization.QuantityType(type=ANGLE),    axis2QuantityType=visualization.QuantityType(type=FORCE))
# Cylindrical CSYSaxial, shear, mz = zip(*forces)
session.XYData(name='Force_N', data=zip(angles, axial),    axis1QuantityType=visualization.QuantityType(type=ANGLE),    axis2QuantityType=visualization.QuantityType(type=FORCE))    session.XYData(name='Force_Q', data=zip(angles, shear),    axis1QuantityType=visualization.QuantityType(type=ANGLE),    axis2QuantityType=visualization.QuantityType(type=FORCE))      session.XYData(name='Moment_Z', data=zip(angles, mz),    axis1QuantityType=visualization.QuantityType(type=ANGLE),    axis2QuantityType=visualization.QuantityType(type=MOMENT))
######################################################################### Show curves in new viewport
# Delete previous xyPlot if it existstry:    del session.xyPlots['Force Profiles']except KeyError:    pass
# Create new xyPlotxyp = session.XYPlot('Force Profiles')    xyp.area.border.setValues(show=False)xyp.area.style.setValues(fill=True, color='#2B2B2B')chartName = xyp.charts.keys()[0]chart = xyp.charts[chartName]
chart.gridArea.style.setValues(color='#3E3E3E')
# Create curvescurve_N = session.Curve(xyData=session.xyDataObjects['Force_N'])curve_N.lineStyle.setValues(style=SOLID, thickness=0.8, color='#000000')curve_N.symbolStyle.setValues(show=False)curve_Q = session.Curve(xyData=session.xyDataObjects['Force_Q'])curve_Q.lineStyle.setValues(style=SOLID, thickness=0.8, color='#FF0000')curve_Q.symbolStyle.setValues(show=False)curve_mz = session.Curve(xyData=session.xyDataObjects['Moment_Z'])curve_mz.lineStyle.setValues(style=DASHED, thickness=0.8, color='#00CCFF')curve_mz.symbolStyle.setValues(show=False)
# Add curves to chart (xyPlot)chart.setValues(curvesToPlot=(curve_N, curve_Q, curve_mz, ), )
# Arrange new viewport at the right half of the screennewview = session.Viewport(name='New Viewport', origin=(20., 15.), width=428., height=188.)newview.makeCurrent()newview.setValues(displayedObject=xyp)
w = session.drawingArea.widthh = session.drawingArea.heightx0, y0 = session.drawingArea.originnewview.setValues(origin=(x0 + w/2., y0), width=w/2., height=h)




来源:ABAQUS仿真世界
ACTAbaqusDeformpythonUM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-02-25
最近编辑:3小时前
yunduan082
硕士 | 仿真主任工程... Abaqus仿真世界
获赞 162粉丝 257文章 345课程 0
点赞
收藏
作者推荐

Abaqus 求解控制参数说明

通用求解控制编辑器允许你修改用于收敛性和时间积分精度的算法。注意:此选项仅适用于通用Abaqus/Standard分析步。操作步骤:从主菜单栏选择 Other > General Solution Controls > Manager。 Abaqus/CAE会显示通用求解控制管理器,展示模型中定义的各步骤及其关联的通用求解控制参数。在通用求解控制管理器中,选择感兴趣的分析步骤,然后点击Edit。 通用求解控制编辑器将会出现。选择指定求解控制的选项:选择"从上一步传递"如果你希望保持使用上一步的求解控制设置选择"重置所有参数为系统默认值"如果你想将编辑器中所有选项卡的参数恢复为默认值选择"指定"如果你想为该步骤输入特定参数值如有需要,显示"场方程"选项卡以定义场方程容差: a. 选择"指定个别场"来定义特定类型方程的求解控制参数,或选择"应用于所有适用场"将输入值应用于所有场。 b. 输入以下一个或多个参数的新值:重要参数说明:Rⁿₐ:最大残差与对应平均通量范数比的收敛准则。默认值 Rⁿₐ = 5×10⁻³ ,遇收敛问题,可适当放大<0.05Cⁿₐ:最大解修正与对应增量解值比的收敛准则。默认值 Cⁿₐ = 10⁻³q̄ᵃ₀:该步骤的时间平均通量初始值。默认为之前步骤的时间平均通量或10⁻² (如果是第1步)q̄ᵃᵤ:用户定义的平均通量。当定义此值时,qᵃ(t) = q̄ᵃᵤ对所有t成立Rᵖₐ:在Iᵖₐ次迭代后使用的替代残差收敛准则。默认值 Rᵖₐ = 2×10⁻⁵εᵃ:与q̄ᵃ比较的零通量准则。默认值 εᵃ = 10⁻⁵Cᵃₑ:当模型中存在零通量时,最大解修正与对应增量解值比的收敛准则。默认值 Cᵃₑ = 10⁻³Rᵃₗ:线性情况下(单次迭代)最大残差与对应平均通量范数比的收敛准则。默认值 Rᵃₗ = 10⁻⁸Cf:在两个有效场之间缩放关系时使用的场转换比率,当其中一个量级可忽略时。默认值 Cf = 1.0εᶠₐ:与当前步骤模型中最大通量q̄ᵃmax的时间平均值比较的零准则。默认值 εᶠₐ = 10⁻⁵εᵤ:位移场和扭转自由度平衡方程中与模型特征单元长度比较的零位移增量准则(和/或在"转换严重不连续性迭代"设置为On时的零穿透)。默认值 εᵤ = 10⁻⁸任何时候都可以点击"此页面的系统定义默认值"将该选项卡上的所有参数恢复为系统定义的默认值。更多信息请参见定义场方程容差。如需要,显示"时间增量"选项卡来设置时间增量控制参数: a. 切换"非连续分析"选项以设置 I₀ = 8 和 IR = 10。这些设置有助于避免过早的时间增量回退 b. 输入以下一个或多个参数的新值:I₀:检查两个连续迭代中残差是否增加前的平衡迭代次数(不包括严重不连续性)。最小值 I₀ = 3,默认值 I₀ = 4。如果启用非连续分析,I₀ = 8且不能更改IR:对数收敛率检查开始时的连续平衡迭代次数(不包括严重不连续性)。默认值 IR = 8。如果启用非连续分析,IR = 10且不能更改。使用固定时间增量时不检查对数收敛率;IP:使用残差容差RP代替RA后的连续平衡迭代次数(不包括严重不连续性)。默认值 IP = 9IC:基于对数收敛率预测的连续平衡迭代次数上限(不包括严重不连续性)。默认值 IC = 16IL:超过该连续平衡迭代次数(不包括严重不连续性)时将减小下一增量的大小。默认值 IL = 10IG:允许在连续增量中增加时间增量的最大连续平衡迭代次数(不包括严重不连续性)。默认值 IG = 4IS:如果"转换严重不连续性迭代"设置为Off,则在一个增量中允许的最大严重不连续性迭代次数。默认值 IS = 12。如果"转换严重不连续性迭代"设置为On,则不使用此参数IA:允许的最大回退次数。默认值 IA = 5IJ:如果"转换严重不连续性迭代"设置为Off,则允许在两个连续增量中增加时间增量的最大严重不连续性迭代次数。默认值 IJ = 6。如果"转换严重不连续性迭代"设置为On,则不使用此参数IT:在允许时间增量增加之前必须满足的最小时间积分精度度量值。允许的最小值 IT = 3。默认值 IT = 10Iᵢₛ:如果"转换严重不连续性迭代"设置为On,则在一个增量中允许的最大严重不连续性迭代次数。默认值 Iᵢₛ = 50。此参数仅作为默认收敛准则失效时的保护,通常不需要修改Df:当解似乎发散时使用的回退因子。默认值 Df = 0.25Du (Cutback Factor): 当对数收敛速率预测需要过多平衡迭代时,使用的缩减因子。默认值为 0.5。Dr (Cutback Factor): 当当前增量步中平衡迭代次数过多时,下一个增量步的缩减因子。默认值为 0.75。Da (Cutback Factor): 当超出时间积分精度容差时,使用的缩减因子。默认值为 0.85。Dg (Cutback Factor): 由于延续性导致平衡迭代次数过多时,使用的缩减因子。默认值为 0.25。Dy (Cutback Factor): 由于单元计算存在问题(如大位移问题中的过度变形)导致平衡迭代次数过多时,使用的缩减因子。默认值为 0.25。Dd (Increase Factor): 当两个连续增量步都在少量平衡迭代 (Iq) 中收敛时,使用的增加因子。默认值为 1.5。Wg (Ratio): 为了增加下一个增量步,Iq 个增量步上的平均时间积分精度测量值与相应容差的比率。默认值为 0.75。Di (Increase Factor): 下一个时间增量步的增加因子,当 Ii 个连续增量步中的时间积分精度测量值低于容差的 Wa 倍时,Ii 个增量步上的平均积分精度测量值与相应容差的比率。默认值为 0.8。Dm (Maximum Increase Factor): 所有情况下的最大时间增量步增加因子,除了动态应力分析和扩散控制过程。默认值为 1.5。Dam (Maximum Time Increment Increase Factor): 动态应力分析的最大时间增量步增加因子。默认值为 1.25。Ddc (Maximum Time Increment Increase Factor): 扩散控制过程(如瞬态热传递、土体固结、流体质量扩散)的最大时间增量步增加因子。默认值为 2.0。Dl (Minimum Ratio): 对于线性瞬态问题,为避免过度分解系统矩阵,建议的下一个时间增量步与当前时间增量步之比的最小值(乘以 Dm)。应小于 1.0。默认值为 0.95。Dr (Minimum Ratio): 为了进行解向量的外推,建议的下一个时间增量步与最后一个成功时间增量步之比的最小值。默认值为 0.1。Ds (Maximum Ratio): 对于条件稳定积分过程,时间增量步与稳定极限的最大允许比率。默认值为 3.0。Dp (Fraction): 如果时间增量步超过上述因子乘以稳定性极限,则将其缩减的分数。应大于 1.0。默认值为 0.95。Dz (Increase Factor): 在达到步骤的时间点或结束时间之前,直接增加时间增量步的因子。此参数用于避免时间增量步过小,有时需要完成一个步骤,并且必须大于或等于 1.0。如果请求输出或场输出,则默认值为 1.25;否则,默认值为 1.0。 约束方程Tvol (Volumetric Strain Compatibility Tolerance): 混合固体单元的体积应变相容性容差。默认值为 1e-10。Tax (Axial Strain Compatibility Tolerance): 混合梁单元的轴向应变相容性容差。默认值为 1e-3。Tshear (Transverse Shear Strain Compatibility Tolerance): 混合单元的横向剪切应变相容性容差。默认值为 1e-10。Tcont (Contact and Slip Compatibility Tolerance): 接触和滑移相容性容差。如果步骤的“转换严重不连续迭代”设置是“开”,则此项是最大接触或滑移约束位移增量与指定容差的比率。如果步骤的“转换严重不连续迭代”设置是“关”,则此项仅用于相互作用中指定的软化接触。该比率是指定压力值 p 处的误差与间隙的比率。默认值为 5e-5。Tcoff (Offset Contact Compatibility Tolerance): 偏移接触相容性容差。仅当“转换严重不连续迭代”设置是“关”时使用。与 Tcont 类似,但 p 代表压力值,当间隙为 0.0 时。实际容差将在 0 和 Tcoff 之间线性插值,对于 0 ≤ p ≤ p'。默认值为 0.1。Tdisp (Displacement Compatibility Tolerance): 分布式耦合单元的位移相容性容差。该比率是分布式耦合位移相容性误差与耦合节点布置主惯性半径的比率。默认值为 1e-10。Trot (Rotation Compatibility Tolerance): 分布式耦合单元的旋转相容性容差。默认值为 1e-10。 线搜索控制 N (Maximum Number of Line Search Iterations): 线性搜索的最大迭代次数。对于使用牛顿法的步骤,默认值为 25;对于使用准牛顿法的步骤,默认值为 5。建议激活线性搜索算法的值为 5。指定 0 以强制取消激活该方法。αmax (Maximum Correction Scale Factor): 最大校正比例因子。默认值为 1.0。αmin (Minimum Correction Scale Factor): 最小校正比例因子。默认值为 0.0001。R (Residual Reduction Factor): 线性搜索终止时的残差缩减因子。默认值为 0.25。S (Scale Factor Ratio): 线性搜索终止时,新校正比例因子与旧校正比例因子的比率。默认值为 0.10。 VCCT 线性缩放 β (Scaling Factor): 用于 VCCT 线性缩放的比例因子。默认值为 0.9。直接循环 Ip (Periodicity Duration): 首次施加周期性条件时的持续时间数。默认值为 1。CR (Stabilized State Detection Criterion): 用于判断是否达到稳定状态的标准,即傅里叶级数中最大残差系数与相应平均通量之比。默认值为 5e-2。CU (Stabilized State Detection Criterion): 用于判断是否达到稳定状态的标准,即傅里叶级数中任何项的最大校正位移系数与最大位移系数之比。默认值为 5e-3。CRc (Plastic Catch-up Detection Criterion): 用于判断是否发生塑性赶超的标准,即傅里叶级数中常数项的最大残差系数与相应平均通量范数之比。默认值为 5e-1。CUc (Plastic Catch-up Detection Criterion): 用于判断是否发生塑性赶超的标准,即傅里叶级数中常数项的最大校正位移系数与最大位移系数之比。默认值为 5e-3。这些参数的设置对于控制Abaqus求解过程的收敛性、精度和效率至关重要。在实际应用中,应根据具体问题和模型特点进行调整。来源:ABAQUS仿真世界

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