Abaqus MappedField 如何用代码输入文件?

浏览:1611 回答:11

图片.png

这个过程如何用代码实现?

mdb.models['Model-1'].MappedField(name='AnalyticalField-1', description='',
    regionType=POINT, partLevelData=False, localCsys=None, pointDataFormat=XYZ,
    fieldDataType=SCALAR, xyzPointData=()

xyzPointData=()目前这块儿只能输入一个个的数据点,能不能直接输入文件

邀请回答 我来回答

全部回答

(5)
默认 最新
「 @ 」

可以通过脚本创建分析场,如果数据量较小可以直接输入每个点的位置和场值,如果数据量较大的话可以通过txt文件读入数据。具体的脚本范式如下:

建立MappedField脚本内容:
每行后面有注释,实际运行的脚本应删除注释,避免不必要的麻烦
##脚本头部引用
# -*- coding: utf-8 -*-
from abaqus import *
from abaqusConstants import *
import numpy as np
##先通过输入坐标和场值的方式创建MappedField
mdb.models['Model-1'].MappedField(name='AnalyticalField-2', description='', 
    regionType=POINT, partLevelData=False, localCsys=None, pointDataFormat=XYZ, 
    fieldDataType=SCALAR, xyzPointData=((0.0, 0.0, 0.0, 1.0), ))
Filename = 'C:\\Users\\w1319\\Desktop\\20250324-wpimport-cae\\pressure_data\\pressure_wall_0.txt'
dataimport = np.loadtxt(Filename, dtype=float, delimiter=',')    ##用numpy中命令读取txt文件,文件名、数据类型、分隔符
tuple_data = tuple(map(tuple, dataimport.tolist()))              
##MappedField.xyzPointData对应的变量类型应该是'tuple'类型,将'numpy.ndarray'变更为'tuple'类型
mdb.models['Model-1'].analyticalFields['AnalyticalField-2'].setValues( xyzPointData=tuple_data)
##更新数值
##后续验证表明不变更'tuple'类型也是可以的,
mdb.models['Model-1'].analyticalFields['AnalyticalField-2'].setValues( xyzPointData=dataimport)


3月25日
评论 点赞
叶重

你的问题我不清楚,但是我跟你一样建立了一个解析场数据,可是在施加位移载荷的时候,distribution中没有这analyticfield-1,数据没有填全吗

图片2.png


2018年8月1日
评论 点赞
长颈鹿爱学习

我尝试了下,在你这种情况下,貌似实现不了代码化,使用Read Data from File也只能从外部文档里读出数据并填入XYZ表格中。但这个输入数据的方法应该已经不麻烦了吧。

如果你这个temp.dat里面的节点编号与你的模型是一致的话,就不需要map了,直接拿来使用,在Predefined Field关键字位置,用Input=(还是Include=...忘了)来调用你的温度场数据。


2017年3月7日
评论 1 点赞
长颈鹿爱学习
表格的右上角不是可以 Read Data From ASCII File么,尝试下就可以看到相关代码了。 或者,网格相同的话,可以直接from ODB mesh
2017年3月7日
评论 点赞
长颈鹿爱学习
你这里想要输入的数据是应力对应节点坐标的信息?
2017年3月7日
评论 5 点赞

没解决?试试专家一对一服务

换一批
    App下载
    技术邻APP
    工程师必备
    • 项目客服
    • 培训客服
    • 平台客服

    TOP