基于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

你可能感兴趣的:(OpenFOAM,Linux,linux,运维,服务器)