欢迎光临散文网 会员登陆 & 注册

【详细讲解 · 推荐】第3部分:降雨入渗条件下土质边坡任意时刻稳定性的批量实时分

2022-01-01 22:55 作者:岩土灾害-学识分享  | 我要投稿

(一)Abaqus .inp文件计算方法


将下述代码写入.txt文件,然后将文件类型改为.bat,随后双击.bat文件即可。


单个.inp文件计算:

abaqus Job=xxx1.inp cpus=3 int ask=off


多个.inp文件计算:

call abaqus Job=xxx1.inp cpus=3 int ask=off

call abaqus Job=xxx2.inp cpus=3 int ask=off

call abaqus Job=xxx3.inp cpus=3 int ask=off

文件夹中全部.inp文件计算:

for %%g in (*.inp) do (

abaqus Job=%%g cpus=3 int ask=off

)



(二)Python代码


# -*- coding: utf-8 -*-
"""
Created on Thu Dec 30 19:23:28 2021

@author: Administrator
"""
# 使用此脚本,应避免分析步中最小增量包含于总降雨时间相同的字符串

import math

num_line=2919 # inp文件中需要替换行的序号,事先根据基准inp文件确定(step-rainInfil的数据行)
Hour_delta=6 # 每隔~h创建一个inp文件

# 1. 读取基准inp文件全部行
file_inp=open("C:/Users/Administrator/Desktop/1/Jsn-final.inp")
lines_all=file_inp.readlines() # 储存全部行的内容

# 2. 计算需生成inp文件的个数
context_ori=lines_all[num_line-1] # 需被替换行的内容(-1是因为python从0索引)
TotalHour_rain=float(context_ori[5:8])# 根据基准inp文件读取降雨总时间
num_inpFiles=math.ceil(TotalHour_rain/Hour_delta)-1 # 需生成inp文件的个数
print("\n共创建"+str(num_inpFiles)+"个inp文件\n")

# 3. 循环函数:形成该行新内容,替换原始行,并写入新inp文件
for i in range(num_inpFiles): # i=0~num_inpFiles-1
    Hour_i=Hour_delta*(i+1) # 本inp文件设定的降雨时间
    if Hour_i<=TotalHour_rain:
        context_i=context_ori
        context_i=context_i.replace(context_ori[5:8],str(Hour_i))# 本inp文件该行的内容
        name_inp_i="Jfos-"+str(Hour_i)+"h.inp" # 本inp文件的名称
        lines_all[num_line]=context_i # 本inp文件全部内容
        file_inp_i=open(name_inp_i,"w") # 创建inp本地文件
        file_inp_i.writelines(lines_all) # 写入本inp文件全部内容
        file_inp_i.close() # 关闭本inp文件
    
file_inp.close() #关闭基准inp文件

# 4-1. 创建bat批处理文件,调用Abaqus计算内核
name_batFile="batch_cacu_FOS.bat"
context_bat="for %%g in (*.inp) do (\n\
abaqus Job=%%g cpus=3 int ask=off\n\
)"
file_bat=open(name_batFile,"w")
file_bat.writelines(context_bat)
file_bat.close()

# 4-2. 执行bat批处理文件
if 0: #计算时间可能很长,请在需直接执行bat文件时改为1
    import subprocess
    a=subprocess.getoutput(name_batFile)
    print(a)


【详细讲解 · 推荐】第3部分:降雨入渗条件下土质边坡任意时刻稳定性的批量实时分的评论 (共 条)

分享到微博请遵守国家法律