You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Abaqus2021中通过Python创建自定义场输出并云图显示的问题

自定义节点位移场变量无法在Abaqus云图中显示的问题

我需要给ODB文件添加自定义节点位移(U)场变量并查看云图。编写的Python代码已成功创建Step、Frame并写入指定节点的位移值,通过print(odb.steps['step1'].frames[-1].fieldOutputs['U'].values[-1])能正常打印节点6的赋值结果,但在Abaqus/CAE中绘制云图时,发现场输出里没有可用的主变量。


所用Python代码

from abaqus import *
from abaqusConstants import *
import odbAccess

odb_path = r"x03_test_st.odb"
instanceName = 'PART-1-1'

odb = odbAccess.openOdb(path=odb_path, readOnly=True)

instance1 = odb.rootAssembly.instances[instanceName]
step1 = odb.Step(name='step1', description='', domain=TIME, timePeriod=1.0)

frame0 = step1.Frame(incrementNumber=1, frameValue=0.1, description='dummy')
frame1 = step1.Frame(incrementNumber=2, frameValue=0.2, description='customFrame')

uField = frame1.FieldOutput(name='U', description='', type=VECTOR)

nodeLabelData = (1, 2, 3, 4, 5, 6)
dispData = ((0.15374583118418694, 0.8585851847069973, 0.3742254744931832),
            (0.4070882202130386, 0.6974154877282727, 0.2126706056738057),
            (0.5463851799965965, 0.7688165228864976, 0.8131962796810962),
            (0.11280984262947236, 0.3143623822894589, 0.905752847147511),
            (0.07679643266215119, 0.7547831307161972, 0.6137464800631778),
            (0.9094500731020884, 0.19221815308664503, 0.8331704449998695))

uField.addData(position=NODAL, instance=instance1, labels=nodeLabelData, data=dispData)
odb.steps['step1'].setDefaultField(uField)

测试用INP文件

*Heading
** Job name: x03_test_st Model name: x03_test_st
** Generated by: Abaqus/CAE 2021.HF4
*Preprint, echo=NO, model=NO, history=NO, contact=NO
**
** PARTS
**
*Part, name=Part-1
*Node
      1,           0.,           0.,           0.
      2,           1.,           0.,           0.
      3,           1.,          0.5,           0.
      4,           0.,          0.5,           0.
      5,  0.576822102,  0.185981557,           0.
      6,  0.200000003,           0.,           0.
      7,  0.400000006,           0.,           0.
      8,  0.600000024,           0.,           0.
      9,  0.800000012,           0.,           0.
     10,           1.,  0.166666672,           0.
     11,           1.,  0.333333343,           0.
     12,  0.800000012,          0.5,           0.
     13,  0.600000024,          0.5,           0.
     14,  0.400000006,          0.5,           0.
     15,  0.200000003,          0.5,           0.
     16,           0.,  0.333333343,           0.
     17,           0.,  0.166666672,           0.
     18,  0.599589348,  0.259053588,           0.
     19,  0.564018428,  0.326822132,           0.
     20,  0.490946412,  0.349589318,           0.
     21,  0.423177868,  0.314018428,           0.
     22,  0.400410682,  0.240946427,           0.
     23,  0.435981572,  0.173177868,           0.
     24,  0.509053588,  0.150410682,           0.
     25,  0.480635941, 0.0850624219,           0.
     26,  0.517703593,  0.420923859,           0.
     27,  0.631206751,   0.16905348,           0.
     28,  0.369088441,  0.359036833,           0.
     29,  0.635420084,  0.113386989,           0.
     30,  0.330888033,   0.23710534,           0.
     31,  0.693981647,  0.232443213,           0.
     32,  0.192599267,  0.348136783,           0.
     33,   0.78786093,  0.158841655,           0.
     34,  0.779104173,  0.331114978,           0.
     35,  0.208837822,  0.180184364,           0.
     36,  0.617957652,  0.369486988,           0.
     37,  0.345436871,  0.140329778,           0.
     38,          0.5,         0.25,           0.
*Element, type=S3
1, 34, 31, 33
2, 36, 13, 26
3, 26, 13, 14
4, 25,  7,  8
5, 28, 21, 20
6, 25, 24, 23
7, 37, 30, 35
8, 36, 19, 18
*Element, type=S4R
 9,  8,  9, 33, 29
10, 29, 24, 25,  8
11, 30, 28, 32, 35
12,  9,  2, 10, 33
13, 29, 33, 31, 27
14, 12, 34, 11,  3
15, 15,  4, 16, 32
16,  6, 35, 17,  1
17, 21, 28, 30, 22
18,  5, 24, 29, 27
19, 26, 20, 19, 36
20, 37,  7, 25, 23
21, 34, 36, 18, 31
22, 32, 28, 14, 15
23, 28, 20, 26, 14
24, 18,  5, 27, 31
25, 32, 16, 17, 35
26, 33, 10, 11, 34
27,  7, 37, 35,  6
28, 34, 12, 13, 36
29, 37, 23, 22, 30
30, 20, 21, 38, 19
31, 22, 23, 38, 21
32, 18, 19, 38,  5
33, 38, 23, 24,  5
*Nset, nset=_PickedSet4, internal, generate
  1,  38,   1
*Elset, elset=_PickedSet4, internal, generate
  1,  33,   1
** Section: Section-1
*Shell Section, elset=_PickedSet4, material=Material-1
0.01, 5
*End Part
**  
**
** ASSEMBLY
**
*Assembly, name=Assembly
**  
*Instance, name=Part-1-1, part=Part-1
*End Instance
**  
*Node
      1,          0.5,         0.25,  0.100000001
*Nset, nset=_PickedSet7, internal, instance=Part-1-1
  5, 18, 19, 20, 21, 22, 23, 24
*Elset, elset=_PickedSet7, internal, instance=Part-1-1
  5,  6,  8, 17, 18, 19, 24, 29, 30, 31, 32, 33
*Nset, nset=_PickedSet8, internal
 1,
*Nset, nset=_PickedSet9, internal, instance=Part-1-1
  1,  2,  3,  4,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17
*Elset, elset=_PickedSet9, internal, instance=Part-1-1
  3,  4,  9, 12, 14, 15, 16, 22, 25, 26, 27, 28
*Nset, nset=_PickedSet10, internal
 1,
*Surface, type=NODE, name=_PickedSet7_CNS_, internal
_PickedSet7, 1.
** Constraint: Constraint-1
*MPC
BEAM, _PickedSet7, _PickedSet8
*Element, type=MASS, elset=_PickedSet6_Inertia-1_
1, 1
*Mass, elset=_PickedSet6_Inertia-1_
100., 
*End Assembly
** 
** MATERIALS
** 
*Material, name=Material-1
*Density
7850.,
*Elastic
 2.1e+11, 0.3
** 
** BOUNDARY CONDITIONS
** 
** Name: BC-1 Type: Symmetry/Antisymmetry/Encastre
*Boundary
_PickedSet9, ENCASTRE
** ----------------------------------------------------------------
** 
** STEP: Step-1
** 
*Step, name=Step-1, nlgeom=YES
*Static
1., 1., 1e-05, 1.
** 
** LOADS
** 
** Name: Load-1   Type: Concentrated force
*Cload
_PickedSet10, 1, 0.
_PickedSet10, 2, 0.
_PickedSet10, 3, -1e+06
** 
** OUTPUT REQUESTS
** 
*Restart, write, frequency=0
** 
** FIELD OUTPUT: F-Output-1
** 
*Output, field
*Node Output
U, 
*Element Output, directions=YES
S, 
*Output, history, frequency=0
*End Step

问题原因及解决办法

核心原因

  1. ODB打开模式错误:代码中用readOnly=True打开ODB,所有修改仅存在于内存,无法写入磁盘文件,Abaqus/CAE读取的还是原始ODB,看不到新添加的场变量。
  2. 未保存修改:即便修改了内存中的ODB对象,未执行保存操作的话,修改不会持久化。
  3. 场变量定义不完整:自定义的U场变量缺少分量名称定义,Abaqus/CAE无法识别其作为位移场的三个分量。

修正后的代码

from abaqus import *
from abaqusConstants import *
import odbAccess

odb_path = r"x03_test_st.odb"
instanceName = 'PART-1-1'

# 以读写模式打开ODB
odb = odbAccess.openOdb(path=odb_path, readOnly=False)

instance1 = odb.rootAssembly.instances[instanceName]
# 创建新Step避免与原始Step重名冲突
step1 = odb.Step(name='Custom_Disp_Step', description='Custom step with displacement field', domain=TIME, timePeriod=1.0)
# 创建Frame
frame1 = step1.Frame(incrementNumber=1, frameValue=1.0, description='Custom displacement frame')

# 定义U场变量并指定分量名称(对应X/Y/Z方向位移)
uField = frame1.FieldOutput(name='U', description='Nodal Displacement', type=VECTOR)
uField.setComponentLabels(('U1', 'U2', 'U3'))

nodeLabelData = (1, 2, 3, 4, 5, 6)
dispData = ((0.15374583118418694, 0.8585851847069973, 0.3742254744931832),
            (0.4070882202130386, 0.6974154877282727, 0.2126706056738057),
            (0.5463851799965965, 0.7688165228
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 05:38:33