基于chatgpt4生成修改OpenFOAM CFD参数的脚本
基于 保密需求部分程序数据脱敏处理 改进版,可以自动搜索对应参数进行修改
代码主体由chatgpt-4 cursor软件生成,本人稍作修改。
# 如果没有输入参数,则给dt_cfd,dt_dem设置默认值
if [ -n "$1" ]; then
dt_cfd=$1
else
dt_cfd=4e-5
fi
if [ -n "$2" ]; then
dt_dem=$2
else
dt_dem=2e-6
fi
# dt_cfd=4e-5
# dt_dem=2e-6
t_end=10.01
# prompt: 显示para.ini文件以dt开头的行对应的内容
grep ^dt para.ini
# prompt: 修改para.ini文件以dt开头的行对应的内容
sed -i /^dt_dem/ s/.*/dt = $dt_dem/ para.ini
sed -i /^dt_cfd/ s/.*/dt_cfd = $dt_cfd/ para.ini
grep ^dt para.ini
# output:
# dt_dem = 2e-6
# dt_cfd = 4e-5
# 修改para.ini文件这几行内容
# step_begin = 0
# write_fre = 10000
# step_end = 10009999
# screen_fre = 1000
# grep ^step para.ini
grep ^write para.ini
grep ^screen para.ini
# output:
# step_begin = 1
# step_end = 20009999
# write_fre = 5000
# screen_fre = 500
# 用awk计算0.01/dt_dem并赋值给write_fre
write_fre=$(awk BEGIN{printf "%.0f", 0.01/"$dt_dem"})
sed -i "/^write_fre/ s/.*/write_fre = $write_fre/" para.ini
grep ^write_fre para.ini
# 用awk计算t_end/dt-1并赋值给step_end
step_end=$(awk BEGIN{printf "%.0f", ($t_end/$dt_dem)-1})
sed -i "/^step_end/ s/.*/step_end = $step_end/" para.ini
grep ^step_end para.ini
# 下面修改controlDict文
# 修改controlDict文件的这两行,并显示修改前后内容
# endTime 10.01;
# deltaT 2e-5;
sed -n /^endTime/p controlDict
sed -n /^deltaT/p controlDict
sed -i "/^endTime/ s/.*/endTime $t_end;/" controlDict
sed -i "/^deltaT/ s/.*/deltaT $dt_cfd;/" controlDict
sed -n /^endTime/p controlDict
sed -n /^deltaT/p controlDict
