首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除所有文件,期望通过Abaqus脚本输入文件?

如何删除所有文件,期望通过Abaqus脚本输入文件?
EN

Stack Overflow用户
提问于 2021-07-01 21:12:09
回答 1查看 442关注 0票数 0

我已经编写了一个python脚本来在Abaqus中建立一些模型。然后,在不提交作业的情况下,我编写输入并运行输入文件,以获得其他python脚本中的odb。由于现在有500多个模型,需要减少计算时间或使我的计算机免于崩溃,所以在一个python脚本中我需要做的是.

  1. 提交一个作业来编写输入,并自动删除一个job..Then second...third...fourth的所有文件。为了说明清楚,例如:对于模型-1(i=1),创建部件,创建网格,写入输入,关闭.型号-100(i=100),创建零件,创建网格,关闭。因此,在从一种模式转向另一种模式之前,我没有任何进展。我是个初学者,对abaqus脚本不太了解。我添加了一个类似于我的大文件的简单示例。我很感谢你的帮助。

代码语言:javascript
复制
from abaqus import *
from abaqusConstants import *

import __main__
import section
import regionToolset
import displayGroupMdbToolset as dgm
import part
import material
import assembly
import step
import interaction
import load
import mesh
import optimization
import job
import sketch
import visualization
import xyPlot
import displayGroupOdbToolset as dgo
import connectorBehavior

Beam_h = [20, 50,30] #Beam Height mm
Beam_w = [10, 10,10] #Beam width mm 

mesh_size = 2.5 #mesh size mm
Beam_d = 400.0 #Beam length mm
Z1 = [50,385,350]
Z2 = [50,5,10]
Pressure = 50.0 # Applied Pressure [MPa]
Young_m = 190000 #Young's Modulus [MPa]
Poisson_r = 0.32 #Poisson's ratio

session.journalOptions.setValues(replayGeometry=COORDINATE,recoverGeometry=COORDINATE)
for i in range(len(Beam_h)):
    mdb.Model(name='Model-%s'%(Beam_h[i]), modelType=STANDARD_EXPLICIT)
    session.viewports['Viewport: 1'].setValues(displayedObject=None)
    
    session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=OFF, 
        engineeringFeatures=OFF)
    session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(
        referenceRepresentation=ON)
        
    s = mdb.models['Model-%s'%(Beam_h[i])].ConstrainedSketch(name='__profile__', 
        sheetSize=200.0)
        
    g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints
    s.setPrimaryObject(option=STANDALONE)

    #Create a rectangle using two points
    s.setPrimaryObject(option=STANDALONE)
    s.Spot(point=(-Beam_w[i]*0.5, Beam_h[i]*0.5))
    s.Spot(point=(-Beam_w[i]*0.5, -Beam_h[i]*0.5))
    s.Spot(point=(Beam_w[i]*0.5, -Beam_h[i]*0.5))
    s.Spot(point=(Beam_w[i]*0.5, Beam_h[i]*0.5))
    s.Line(point1=(-Beam_w[i]*0.5, Beam_h[i]*0.5), point2=(-Beam_w[i]*0.5, -Beam_h[i]*0.5))
    s.VerticalConstraint(entity=g[2], addUndoState=False)
    s.Line(point1=(-Beam_w[i]*0.5, -Beam_h[i]*0.5), point2=(Beam_w[i]*0.5, -Beam_h[i]*0.5))
    s.HorizontalConstraint(entity=g[3], addUndoState=False)
    s.PerpendicularConstraint(entity1=g[2], entity2=g[3], addUndoState=False)
    s.Line(point1=(Beam_w[i]*0.5, -Beam_h[i]*0.5), point2=(Beam_w[i]*0.5, Beam_h[i]*0.5))
    s.VerticalConstraint(entity=g[4], addUndoState=False)
    s.PerpendicularConstraint(entity1=g[3], entity2=g[4], addUndoState=False)
    s.Line(point1=(Beam_w[i]*0.5, Beam_h[i]*0.5), point2=(-Beam_w[i]*0.5, Beam_h[i]*0.5))
    s.HorizontalConstraint(entity=g[5], addUndoState=False)
    s.PerpendicularConstraint(entity1=g[4], entity2=g[5], addUndoState=False)
        
    p = mdb.models['Model-%s'%(Beam_h[i])].Part(name='Beam', dimensionality=THREE_D, 
        type=DEFORMABLE_BODY)
    p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']

    #Extrude the sketch "s" over the depth "Beam_d"
    p.BaseSolidExtrude(sketch=s, depth=Beam_d)

    #Define elastic material    
    mdb.models['Model-%s'%(Beam_h[i])].Material(name='Steel')
    mdb.models['Model-%s'%(Beam_h[i])].materials['Steel'].Elastic(table=((Young_m, Poisson_r), ))

    #Define homogeneous solid section 
    mdb.models['Model-%s'%(Beam_h[i])].HomogeneousSolidSection(name='BeamSection', 
        material='Steel', thickness=None)

    #Create a set into part level, used for section assignment    
    p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
    c = p.cells
    cells = c.getSequenceFromMask(mask=('[#1 ]', ), )
    region = p.Set(cells=cells, name='Beam')
    p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']

    #Assign the section to a defined "region"
    p.SectionAssignment(region=region, sectionName='BeamSection', offset=0.0, 
        offsetType=MIDDLE_SURFACE, offsetField='', 
        thicknessAssignment=FROM_SECTION)
    session.viewports['Viewport: 1'].partDisplay.setValues(sectionAssignments=OFF, 
        engineeringFeatures=OFF, mesh=ON)
    session.viewports['Viewport: 1'].partDisplay.meshOptions.setValues(
        meshTechnique=ON)
        
    p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
    p.DatumPlaneByPrincipalPlane(principalPlane=XYPLANE, offset=Z1[i])###first partition in xy plane
    p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
    p.DatumPlaneByPrincipalPlane(principalPlane=XYPLANE, offset=Beam_d-Z2[i])###2nd partition over xy plane which is total depth-z1
    p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
    
    c = p.cells
    pickedCells = c.getSequenceFromMask(mask=('[#1 ]', ), )
    d1 = p.datums
    p.PartitionCellByDatumPlane(datumPlane=d1[3], cells=pickedCells)
    p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
    c = p.cells
    pickedCells = c.getSequenceFromMask(mask=('[#1 ]', ), )
    d2 = p.datums
    p.PartitionCellByDatumPlane(datumPlane=d2[4], cells=pickedCells)
    
    #Apply general mesh seed    
    p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
    p.seedPart(size=mesh_size, deviationFactor=0.1, minSizeFactor=0.1)

    #Generate Mesh
    p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
    p.generateMesh()

    #Import part into the instance
    a = mdb.models['Model-%s'%(Beam_h[i])].rootAssembly
    session.viewports['Viewport: 1'].setValues(displayedObject=a)
    session.viewports['Viewport: 1'].assemblyDisplay.setValues(
        optimizationTasks=OFF, geometricRestrictions=OFF, stopConditions=OFF)
    a = mdb.models['Model-%s'%(Beam_h[i])].rootAssembly
    a.DatumCsysByDefault(CARTESIAN)
    p = mdb.models['Model-%s'%(Beam_h[i])].parts['Beam']
    a.Instance(name='Beam-1', part=p, dependent=ON)

    # a = mdb.models['Model-%s'%(Beam_h[i])].rootAssembly
    # f1 = a.instances['Beam-1'].faces
    # faces1 = f1.getSequenceFromMask(mask=('[#20 ]', ), )
    # a.Set(faces=faces1, name='BC_Set')

    # Create a surface set
    a = mdb.models['Model-%s'%(Beam_h[i])].rootAssembly
    s1 = a.instances['Beam-1'].faces
    #side1Faces1 = s1.findAt(((0.0,Beam_h[i]*0.5,(Beam_d-Z2[i]-Z1[i]), ))for pressure in the middle of the surface
    side1Faces1 = s1.findAt(((0.0,Beam_h[i]*0.5,(Z1[i]+0.1)), )) #pressure in the left surface and +0.1 is just a number to flip on right side
    
    a.Surface(side1Faces=side1Faces1, name='PressSurface')
    
 
    session.viewports['Viewport: 1'].assemblyDisplay.setValues(
        adaptiveMeshConstraints=ON)

    #Create analysis    
    mdb.models['Model-%s'%(Beam_h[i])].StaticStep(name='Step-1', previous='Initial', 
        timePeriod=1.0, maxNumInc=100, initialInc=1.0, minInc=1e-05, 
        maxInc=1.0, nlgeom=OFF)
    session.viewports['Viewport: 1'].assemblyDisplay.setValues(step='Step-1')
    session.viewports['Viewport: 1'].assemblyDisplay.setValues(loads=ON, bcs=ON, 
        predefinedFields=ON, connectors=ON, adaptiveMeshConstraints=OFF)

    #Define a region using a set    
    a = mdb.models['Model-%s'%(Beam_h[i])].rootAssembly
    region = a.surfaces['PressSurface']

    #Applied Load
    mdb.models['Model-%s'%(Beam_h[i])].Pressure(name='Load-1', createStepName='Step-1', 
        region=region, distributionType=UNIFORM, field='', magnitude=Pressure, 
        amplitude=UNSET)

    #Boundary conditions
    a = mdb.models['Model-%s'%(Beam_h[i])].rootAssembly  #access the root assembly
    e1 = a.instances['Beam-1'].edges               #access the edges,e1 contains all of the edges
    edges1 = e1.findAt(((0.0,-Beam_h[i]*0.5,0.0), ))#but we need only one edge so edge1. findAt needs exact coordinates x,y,z.of the edge
    
    region = a.Set(edges=edges1, name='Set-2')
    mdb.models['Model-%s'%(Beam_h[i])].DisplacementBC(name='BC_Set1', createStepName='Step-1', 
        region=region, u1=0.0, u2=0.0, u3=0.0, ur2=0.0, ur3=0.0, 
        amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, fieldName='', 
        localCsys=None)
        
    a = mdb.models['Model-%s'%(Beam_h[i])].rootAssembly
    e1 = a.instances['Beam-1'].edges
    edges2 = e1.findAt(((0.0,-Beam_h[i]*0.5,Beam_d), ))       

    region = a.Set(edges=edges2, name='Set-3')
    mdb.models['Model-%s'%(Beam_h[i])].DisplacementBC(name='BC_Set2', createStepName='Step-1', 
        region=region, u1=0.0, u2=0.0, ur2=0.0, ur3=0.0, 
        amplitude=UNSET, fixed=OFF, distributionType=UNIFORM, fieldName='', 
        localCsys=None)
        
    mdb.Job(name='Model-Job-%s'%(Beam_h[i]), model='Model-%s'%(Beam_h[i]), contactPrint=OFF, description='', echoPrint=OFF, 
    explicitPrecision=SINGLE, historyPrint=OFF, 
    memory=50, memoryUnits=PERCENTAGE,  modelPrint=OFF, 
    multiprocessingMode=DEFAULT,  nodalOutputPrecision=SINGLE, 
    numCpus=1, numGPUs=0, scratch='', type=ANALYSIS, 
    userSubroutine='')

    mdb.jobs['Model-Job-%s'%(Beam_h[i])].writeInput()
``

``
#Then I used script to run the inputs
import os
os.system('abaqus -j Model-Job-20') 
``
EN

回答 1

Stack Overflow用户

发布于 2021-07-02 07:06:52

基本上,您想要删除模型和Abaqus文件。

要删除Abaqus模型,可以使用:

del mdb.models['Model-1']

若要删除运行作业后由Abaqus创建的文件,可以使用以下命令:

代码语言:javascript
复制
import os
job_name = 'Model-Job-20'
files_ext = ['.jnl','.inp','.res','.lck','.dat','.msg','.sta','.fil','.sim',
              '.stt','.mdl','.prt','.ipm','.log','.com','.odb_f','.odb',]
for file_ex in files_ext:
    file_path = job_name + file_ex
    if os.path.exists(file_path):
        os.remove(file_path)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68217004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档