Python处理Abaqus inp文件

2022-01-20 13:24:02 浏览数 (1)

Python修改Abaqus inp文件

在做科研过程中,有没有遇到过需要批量计算的情况,每次计算的模型都相差不大,只对特定的参数进行更改。在批量计算时,很多时候做的是重复的操作,是否可以采用程序批量化进行建模、分析以及计算?

批处理的的方式主要有两种:1、对inp文件关键参数进行修改,得到正确的inp模型文件,接着采用Python脚本文件批量化提交任务进行计算;2、通过Python编辑Abaqus脚本文件实现批量化计算 。这两种方法各有不同的适应场合,本文采用Python对inp文件进行处理,减少人力操作工作量。

inp文件记录了Abaqus中操作的结果,能够表示有限元分析的整个过程,inp文件作为文本文件,在进行数据传递方面非常方便,避免了互相之间需要传递模型和结果数据的麻烦。

对inp文件进行更改的手段有两种:1、采用手工的方式直接修改inp文件,因此,当需要计算的任务较多的时候,需要大量的工作量;2、采用程序生成计算需要的inp文件,相对而言需要对Abaqus inp文件以及编程技巧有一定的了解。

实例

Abaqus计算疲劳损伤的方式有多种:1、Abaqus自带的Direct cycle命令;2、通过Abaqus step的方式添加疲劳载荷;3、通过Abaqus step中自带的Amplitude添加疲劳载荷,但是在编写子程序的时候需要记录出来。本文采用step来回记录的方式,通过Python对inp文件进行更改,建立多个载荷步,实现循环载荷的添加。如下为采用Python添加多个循环载荷步的程序代码实例:

代码语言:javascript复制
try:
    fin=open('F:pythoninput.txt','r')
except:
    print('something went wrong')
try:
    fout=open('F:pythonoutput.txt','w')
except:
    print('something went wrong in output file')
file=fin.readlines()
n=1
while n<1000:
    changdu=43
    print(changdu)
    k=0
    while k<2:
        fout.write(file[k])
        k =1
    fout.write("** STEP: Step-%dn"%(n))
    k =1
    while k<4:
        fout.write(file[k])
        k =1
    fout.write("*Step, name=Step-%d, nlgeom=YESn"%(n))
    k =1
    while k<10:
        fout.write(file[k])
        k =1
    fout.write("** Name: move%d Type: Displacement/Rotationn"%(n))
    k =1
    while k<13:
        fout.write(file[k])
        k =1
    if n%2==1:
        fout.write("DOWNRIGHT, 2, 2, -0.2n")
    else:
        fout.write("DOWNRIGHT, 2, 2, -0.2n")
    k =1
    while k<changdu:
        fout.write(file[k])
        k =1
    n =1
    while k<2 changdu:

        fout.write(file[k])
        k =1
    fout.write("** STEP: Step-%dn"%(n))
    k =1
    while k<4 changdu:
        fout.write(file[k])
        k =1
    fout.write("*Step, name=Step-%d, nlgeom=YESn"%(n))
    k =1
    while k<10 changdu:
        fout.write(file[k])
        k =1
    fout.write("** Name: move%d Type: Displacement/Rotationn"%(n))
    k =1
    while k<13 changdu:
        fout.write(file[k])
        k =1
    if n%2==1:
        fout.write("DOWNRIGHT, 2, 2, 0.2n")
    else:
        fout.write("DOWNRIGHT, 2, 2, 0.2n")
    k =1
    while k<changdu changdu:
        fout.write(file[k])
        k =1
    n =1
    while k<(2 2*changdu):
        fout.write(file[k])
        k =1
    fout.write("** STEP: Step-%dn"%(n))
    k =1
    while k<(4 2*changdu):
        fout.write(file[k])
        k =1
    fout.write("*Step, name=Step-%d, nlgeom=YESn"%(n))
    k =1
    while k<(10 2*changdu):
        fout.write(file[k])
        k =1
    fout.write("** Name: move%d Type: Displacement/Rotationn"%(n))
    k =1
    while k<(13 2*changdu):
        fout.write(file[k])
        k =1
    if n%2==1:
        fout.write("DOWNRIGHT, 2, 2, -0.2n")
    else:
        fout.write("DOWNRIGHT, 2, 2, -0.2n")
    k =1
    while k<(changdu 2*changdu):
        fout.write(file[k])
        k =1
    n =1
    while k<2 3*changdu:
        fout.write(file[k])
        k =1
    fout.write("** STEP: Step-%dn"%(n))
    k =1
    while k<4 3*changdu:
        fout.write(file[k])
        k =1
    fout.write("*Step, name=Step-%d, nlgeom=YESn"%(n))
    k =1
    while k<10 3*changdu:
        fout.write(file[k])
        k =1
    fout.write("** Name: move%d Type: Displacement/Rotationn"%(n))
    k =1
    while k<13 3*changdu:
        fout.write(file[k])
        k =1
    if n%2==1:
        fout.write("DOWNRIGHT, 2, 2, 0.2n")
    else:
        fout.write("DOWNRIGHT, 2, 2, 0.2n")
    k =1
    while k<changdu 3*changdu:
        fout.write(file[k])
        k =1
    n =1

0 人点赞