Skip to content

Commit 8bbb14b

Browse files
committed
add file operator for sim_cleanup
- it can be chosen between copy or moving the files in the clean-up stage - the choice is based on expid.conf; section sim_clean_general; variable to control file_op_mode
1 parent 80d4acb commit 8bbb14b

1 file changed

Lines changed: 39 additions & 27 deletions

File tree

ctl/sim_ctl/sim_cleanup.sh

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,18 @@ echo "###"
66
echo "# Cleanup Simulation"
77
echo "###"
88

9+
parse_config_file ${conf_file} "sim_clean_general"
10+
11+
file_op_mode=${file_op_mode:-"copy"}
12+
13+
file_op() {
14+
if [ "$file_op_mode" = "move" ]; then
15+
mv -v "$@"
16+
else
17+
cp -v "$@"
18+
fi
19+
}
20+
921
simout_dir=${out_dir}/${caseid}${modelid}_${dateymd}
1022
simrst_dir=${rst_dir}/${caseid}${dateymd}
1123

@@ -19,87 +31,87 @@ echo "Moving model output to simout and storing restart files"
1931

2032
mkdir -p "${simout_dir}/log" "${simout_dir}/nml" "${simout_dir}/rst" "${simout_dir}/bin"
2133

22-
cp ${tsmp2_env} ${simout_dir}/bin/
34+
file_op ${tsmp2_env} ${simout_dir}/bin/
2335

2436
if [[ "${MODEL_ID}" == *-* ]]; then
25-
cp -v ${sim_dir}/namcouple ${simout_dir}/nml/
37+
file_op ${sim_dir}/namcouple ${simout_dir}/nml/
2638
fi # MODEL_ID oasis
2739

2840
if [[ "${modelid}" == *icon* ]]; then
2941
# Namelist
30-
cp -v ${sim_dir}/NAMELIST_icon ${simout_dir}/nml/
31-
cp -v ${sim_dir}/icon_master.namelist ${simout_dir}/nml/
42+
file_op ${sim_dir}/NAMELIST_icon ${simout_dir}/nml/
43+
file_op ${sim_dir}/icon_master.namelist ${simout_dir}/nml/
3244

3345
# Model output
3446
mkdir -p ${simout_dir}/out/icon
35-
cp -v ${sim_dir}/ICON_out_* ${simout_dir}/out/icon
47+
file_op ${sim_dir}/ICON_out_* ${simout_dir}/out/icon
3648

3749
# Model log
38-
cp -v ${sim_dir}/nml.atmo.log ${simout_dir}/log/
39-
cp -v ${sim_dir}/*.dat ${simout_dir}/log/
50+
file_op ${sim_dir}/nml.atmo.log ${simout_dir}/log/
51+
file_op ${sim_dir}/*.dat ${simout_dir}/log/
4052

4153
# Restart
4254
mkdir -p ${simout_dir}/rst/icon ${simrst_dir}/icon
43-
cp -v ${sim_dir}/${expid}_restart_ATMO_*.nc ${simout_dir}/rst/icon
44-
cp -v ${sim_dir}/${expid}_restart_ATMO_*.nc ${simrst_dir}/icon # save twice as simout is archived
55+
file_op ${sim_dir}/${expid}_restart_ATMO_*.nc ${simout_dir}/rst/icon
56+
file_op ${sim_dir}/${expid}_restart_ATMO_*.nc ${simrst_dir}/icon # save twice as simout is archived
4557

4658
# copy binary
47-
cp -v icon ${simout_dir}/bin/
59+
file_op icon ${simout_dir}/bin/
4860

4961
fi # icon
5062

5163
if [[ "${modelid}" == *clm* ]]; then
5264
# Namelist
53-
cp -v ${sim_dir}/*_in ${simout_dir}/nml/
54-
cp -v ${sim_dir}/datm.* ${simout_dir}/nml/
65+
file_op ${sim_dir}/*_in ${simout_dir}/nml/
66+
file_op ${sim_dir}/datm.* ${simout_dir}/nml/
5567

5668
# Model output
5769
mkdir -p ${simout_dir}/out/eclm
58-
cp -v ${sim_dir}/eCLM_*.clm2.h* ${simout_dir}/out/eclm
70+
file_op ${sim_dir}/eCLM_*.clm2.h* ${simout_dir}/out/eclm
5971

6072
# Model log
61-
cp -v ${sim_dir}/logs/${SLURM_JOB_ID}.comp_*.log ${simout_dir}/log/
62-
cp -v ${sim_dir}/timing/model_timing_stats ${simout_dir}/log/
73+
file_op ${sim_dir}/logs/${SLURM_JOB_ID}.comp_*.log ${simout_dir}/log/
74+
file_op ${sim_dir}/timing/model_timing_stats ${simout_dir}/log/
6375

6476
# Restart
6577
mkdir -p ${simout_dir}/rst/eclm ${simrst_dir}/eclm
66-
cp -v ${sim_dir}/eCLM_*.clm2.r* ${simout_dir}/rst/eclm
67-
cp -v ${sim_dir}/eCLM_*.clm2.r* ${simrst_dir}/eclm # save twice as simout is archived
78+
file_op ${sim_dir}/eCLM_*.clm2.r* ${simout_dir}/rst/eclm
79+
file_op ${sim_dir}/eCLM_*.clm2.r* ${simrst_dir}/eclm # save twice as simout is archived
6880

6981
# Copy binary
70-
cp -v eclm ${simout_dir}/bin/
82+
file_op eclm ${simout_dir}/bin/
7183

7284
fi # clm
7385

7486
if [[ "${modelid}" == *parflow* ]]; then
7587

7688
# Namelist
77-
cp -v ${sim_dir}/coup_oas.tcl ${simout_dir}/nml/
89+
file_op ${sim_dir}/coup_oas.tcl ${simout_dir}/nml/
7890

7991
# Model output
8092
mkdir -p ${simout_dir}/out/parflow
81-
cp -v ${sim_dir}/*.out.?????.nc ${simout_dir}/out/parflow
93+
file_op ${sim_dir}/*.out.?????.nc ${simout_dir}/out/parflow
8294

8395
# Model log
84-
cp -v ${sim_dir}/*out.kinsol.log ${simout_dir}/log/
85-
cp -v ${sim_dir}/*out.log ${simout_dir}/log/
86-
cp -v ${sim_dir}/*out.timing* ${simout_dir}/log/
96+
file_op ${sim_dir}/*out.kinsol.log ${simout_dir}/log/
97+
file_op ${sim_dir}/*out.log ${simout_dir}/log/
98+
file_op ${sim_dir}/*out.timing* ${simout_dir}/log/
8799

88100
# Restart
89101
mkdir -p ${simout_dir}/rst/parflow ${simrst_dir}/parflow
90102
pflnout=$(echo "( ((${simlenhr}/${pfloutfrq}) + ${pfloutmfilt} -1) / ${pfloutmfilt})" | bc)
91103
pflnlast=$(printf "%05d" $(echo "1 + (${pflnout} -1) * ${pfloutmfilt}" | bc))
92104
# cp -v $(ls -1 ${sim_dir}/*.out.?????.nc | tail -1) ${simout_dir}/rst/parflow
93105
# save twice as simout is archived
94-
cp -v ${sim_dir}/${EXP_ID}.out.${pflnlast}.nc ${simout_dir}/rst/parflow
95-
cp -v ${sim_dir}/${EXP_ID}.out.${pflnlast}.nc ${simrst_dir}/parflow/${EXP_ID}.out.$(date -u -d "${datep1}" +%Y%m%d%H%M%S).nc # 2nd copy
106+
file_op ${sim_dir}/${EXP_ID}.out.${pflnlast}.nc ${simout_dir}/rst/parflow
107+
file_op ${sim_dir}/${EXP_ID}.out.${pflnlast}.nc ${simrst_dir}/parflow/${EXP_ID}.out.$(date -u -d "${datep1}" +%Y%m%d%H%M%S).nc # 2nd copy
96108

97109
# Copy binary
98-
cp -v parflow ${simout_dir}/bin/
110+
file_op parflow ${simout_dir}/bin/
99111

100112
fi # parflow
101113

102-
cp -v ${sim_dir}/slm_multiprog_mapping.conf ${simout_dir}/log/
114+
file_op ${sim_dir}/slm_multiprog_mapping.conf ${simout_dir}/log/
103115

104116
# sim logs
105117
mv ${log_dir}/${SLURM_JOB_NAME}_${SLURM_JOB_ID}.{err,out} ${simout_dir}/log/.

0 commit comments

Comments
 (0)