0% found this document useful (0 votes)
3 views3 pages

abaqus_script.py

分形函数建模

Uploaded by

fs9cjjdtsc
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
Download as txt, pdf, or txt
0% found this document useful (0 votes)
3 views3 pages

abaqus_script.py

分形函数建模

Uploaded by

fs9cjjdtsc
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1/ 3

# abaqus_script.

py

from abaqus import *


from abaqusConstants import *
import part
import material
import section
import assembly
import step
import interaction
import load
import mesh
import optimization
import job
import sketch
import visualization
import displayGroupOdbToolset as dgo
import csv

def read_fractal_curve(filename):
try:
with open(filename, 'r') as file:
reader = csv.reader(file)
data = list(reader)
x = [float(row[0]) for row in data]
y = [float(row[1]) for row in data]
print("Read {} points from {}".format(len(x), filename))
return x, y
except Exception as e:
print("Error reading fractal curve from {}: {}".format(filename, e))
raise

def create_model(D):
try:
# 读取分形曲线
filename = 'fractal_curve_D_{:.2f}.csv'.format(D)
x, y = read_fractal_curve(filename)

# 创建模型数据库
myModel = mdb.Model(name='FractalSupport')
mySketch = myModel.ConstrainedSketch(name='__profile__', sheetSize=1.0)
print("Created model and sketch")

# 绘制分形曲线
points = list(zip(x, y))
mySketch.Spline(points=points)
print("Drawn spline")

# 创建零件
myPart = myModel.Part(name='FractalPart', dimensionality=TWO_D_PLANAR,
type=DEFORMABLE_BODY)
myPart.BaseWire(sketch=mySketch)
print("Created part")

# 创建装配体
myAssembly = myModel.rootAssembly
myAssembly.Instance(name='FractalInstance', part=myPart, dependent=ON)
print("Created assembly")
# 生成网格
myPart.seedPart(size=0.01, deviationFactor=0.1, minSizeFactor=0.1)
myPart.generateMesh()
print("Generated mesh")

# 创建材料和截面属性
myMaterial = myModel.Material(name='Material-1')
myMaterial.Elastic(table=((210000.0, 0.3),))
mySection = myModel.HomogeneousSolidSection(name='Section-1',
material='Material-1', thickness=None)
p = myAssembly.instances['FractalInstance']
c = p.cells
region = regionToolset.Region(cells=c)
p.SectionAssignment(region=region, sectionName='Section-1')
print("Assigned material and section")

# 创建分析步
myStep = myModel.StaticStep(name='LoadStep', previous='Initial')
print("Created step")

# 施加边界条件和载荷
myAssembly.Set(name='LeftEdge', vertices=p.vertices.getByBoundingBox(-1e9,
-1e9, -1e9, 0, 1e9, 1e9))
myAssembly.Set(name='RightEdge', vertices=p.vertices.getByBoundingBox(1e9,
-1e9, -1e9, 1e9, 1e9, 1e9))
myModel.DisplacementBC(name='FixedBC', createStepName='LoadStep',
region=myAssembly.sets['LeftEdge'], u1=0.0, u2=0.0, ur3=UNSET, amplitude=UNSET,
fixed=OFF, distributionType=UNIFORM, fieldName='', localCsys=None)
myModel.DisplacementBC(name='LoadBC', createStepName='LoadStep',
region=myAssembly.sets['RightEdge'], u1=0.1, u2=0.0, ur3=UNSET, amplitude=UNSET,
fixed=OFF, distributionType=UNIFORM, fieldName='', localCsys=None)
print("Applied boundary conditions and loads")

# 生成作业
myJob = mdb.Job(name='FractalSupportJob', model='FractalSupport',
type=ANALYSIS)
myJob.writeInput(consistencyChecking=OFF)
myJob.submit(consistencyChecking=OFF)
myJob.waitForCompletion()
print("Job completed")

# 提取结果
odb = session.openOdb(name='FractalSupportJob.odb')
frame = odb.steps['LoadStep'].frames[-1]
stress = frame.fieldOutputs['S']
strain = frame.fieldOutputs['E']
stress_data = stress.values[0].data[0] # 假设应力是第一个节点的第一个分量
strain_data = strain.values[0].data[0] # 假设应变是第一个节点的第一个分量
print("Extracted results")

return stress_data, strain_data


except Exception as e:
print("Error creating model: {}".format(e))
raise

if __name__ == "__main__":
import sys
if len(sys.argv) != 2:
print("Usage: abaqus cae noGUI=abaqus_script.py -- -D <D_value>")
sys.exit(1)

try:
D = float(sys.argv[1])
stress, strain = create_model(D)
print("Stress: {}, Strain: {}".format(stress, strain))
except Exception as e:
print("Error: {}".format(e))
sys.exit(1)

You might also like