基于chatgpt4生成修改openfoam cfd参数的脚本-爱代码爱编程
基于chatgpt-4生成代码,看这一篇就够了
保密需求部分程序数据脱敏处理
shell脚本 自动改参数 改进版,可以自动搜索对应参数进行修改
代码主体由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