首頁>Club>
5
回覆列表
  • 1 # 使用者3926722064098

    功能一:實行提交多個job的功能。

    物件:Job object

    使用:在原始檔開始寫上import job,源程式用mdb.jobs[name]

    使用名字為name的job物件。

    建立一個job物件的方法:

    l

    利用已有的inp檔案中建立job:mdb.JobFromInputFile()

    l

    利用已有的cae中建立job:

    Job(...)

    建議用第一種方法。

    設定引數的方法:

    ?

    利用第一種方法建立job的時候,可以設定很多的引數,比如type,queue,userSubroutine等。格

    式:mdb.JobFromInputFile(name=,inputFile=,type=,queue=,userSubroutine=,…….)。

    ?

    也可以先建立一個job,然後利用job物件的setValues來設定引數,格式:job.setValues(type=,queue=,userSubroutine=,…….)。

    一個簡單的例子:

    檔案:job.py

    from abaqusConstants import *

    import job

    mdb.JobFromInputFile(name="job-1-1",inputFileName="Job-1.inp")

    #基於inp檔案Job-1.inp建立名稱為job-1-1的job

    mdb.jobs["job-1-1"].setValues(waitMinutes=1)

    #設定引數

    mdb.jobs["job-1-1"].submit()

    #提交任務

    mdb.jobs["job-1-1"].waitForCompletion()

    執行:

    在cmd下面執行:Abaqus cae nogui=job.py

    如果是多個job,同樣道理了,不多說了。

    功能二:

    後處理,提取需要的資料,形成可以用其他軟體處理的檔案

    功能:提取odb檔案中某個set中的資料(可以是應力、應變和位移、座標等),建立一個外部檔案,把提取的結果寫到這個檔案中,利用tecplot處理。

    1)在Odb物件中提取場變數:

    odb-》steps-》frams-》fieldoutputs【變數名稱】

    具體odb物件中的各個成員如下圖

    2)在場變數中選取所需要set的變數:

    Odb-》rootAssembly-》Sets

    或者odb-》rootAssembly-》instances-》Sets

    上面兩種方法取決了你在inp檔案種是在assembly定義了Set還是在Instance中定義了Set。具體的如下圖

    檔案:plot.py

    from odbAccess import *

    from abaqusConstants import *

    import string

    print "begin abaqus python"

    print "today is 10-29"

    print "this code is for 3node_sin.odb"

    odb = openOdb(path="3node_sin.odb")

    myAssembly = odb.rootAssembly

    f=open("plot/3node_sin1.dat","w")

    f.write("TITLE = Example: Simple XY Plot\n")

    f.write("VARIABLES = "X-Coordinate", "Y-Coordinate"\n")

    #建立一個tecplot的dat檔案

    i=1

    while i

    Frame = odb.steps["Step-1"].frames

    print odb.steps["Step-1"].frames

    coordinate=Frame.fieldOutputs["COORD"]

    #提取節點座標資料

    center =

    odb.rootAssembly.nodeSets["Set-1"]

    centerCoordinate = coordinate.getSubset(region=center)

    centerValues = centerCoordinate.values

    #提取Set-1集合中的節點座標

    count=len(centerValues)

    s="ZONE T=" "+str(i)+" Zone", I="+str(count)+", F=POINT\n"

    f.write(s)

    for v in centerValues:

    s2=str(v.data[0])

    s3=str(v.data[1])

    f.write(s2)

    f.write("\t")

    f.write("\t")

    f.write(s3)

    f.write("\t")

    f.write("\n")

    print i;i=i+50

    #寫入tecplot的dat檔案中

    執行:

    Cmd中執行:abaqus scrip=plot.py

  • 中秋節和大豐收的關聯?
  • 福鼎白茶和安化黑茶的區別?