<p><b>dwj07@fsu.edu</b> 2012-03-12 15:34:47 -0600 (Mon, 12 Mar 2012)</p><p><br>
        -- BRANCH COMMIT --<br>
<br>
        Updating makeMeshes.sh script to setup all of the current baroclinic_channel test runs.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/ocean_test_cases_staging/ocean/baroclinic_channel/makeMeshes.sh
===================================================================
--- branches/ocean_projects/ocean_test_cases_staging/ocean/baroclinic_channel/makeMeshes.sh        2012-03-12 19:55:20 UTC (rev 1620)
+++ branches/ocean_projects/ocean_test_cases_staging/ocean/baroclinic_channel/makeMeshes.sh        2012-03-12 21:34:47 UTC (rev 1621)
@@ -4,7 +4,6 @@
## Change the horizontal spacings, vertical levels, and cells in the x direction here ##
## To start, grids are periodic in the x direction. This may change later                         ##
########################################################################################
-
SPACINGS="1000 4000 10000"
VERTLEVS="20"
TCNAME="baroclinic_channel"
@@ -23,7 +22,7 @@
CUR_DIR=`pwd`
if [ -z "$3" ]; then
-        PROCS="2 4 8 16 32 64 128 256 512 1024 2048 4096"
+        PROCS="2 4 8 16 32"
else
        PROCS="$3"
fi
@@ -31,24 +30,33 @@
X_EXTENT="160000"
Y_EXTENT="500000"
+#######################################################
+## Setup Variables for different run initializations ##
+#######################################################
+TIME_STEPPERS["config_time_integration"]="rk4 se1 se20 use"
+TIME_STEPS["config_dt"]="1 5 10 20 40 80 160"
+
############################################################
## Setup Default namelist keys and values to update later ##
############################################################
+declare -A STATIC_NAMELIST_VARS
+STATIC_NAMELIST_VARS["config_run_duration"]="'0000_00:02:40'"
+STATIC_NAMELIST_VARS["config_input_name"]="'grid.nc'"
+STATIC_NAMELIST_VARS["config_output_name"]="'output.nc'"
+STATIC_NAMELIST_VARS["config_restart_name"]="'restart.nc'"
+STATIC_NAMELIST_VARS["config_output_interval"]="'00_00:02:40'"
+STATIC_NAMELIST_VARS["config_do_restart"]=".false."
+STATIC_NAMELIST_VARS["config_vert_grid_type"]="'zstar'"
+STATIC_NAMELIST_VARS["config_rho0"]="1000"
+STATIC_NAMELIST_VARS["config_bottom_drag_coeff"]="1.0e-2"
+STATIC_NAMELIST_VARS["config_vert_visc_type"]="'const'"
+STATIC_NAMELIST_VARS["config_vert_diff_type"]="'const'"
+STATIC_NAMELIST_VARS["config_eos_type"]="'linear'"
+STATIC_NAMELIST_VARS["config_monotonic"]=".true."
+STATIC_NAMELIST_VARS["config_vert_tracer_adv_order"]="3"
+STATIC_NAMELIST_VARS["config_horiz_tracer_adv_order"]="3"
+STATIC_NAMELIST_VARS["config_thickness_adv_order"]="3"
-KEYS[0]="config_time_integration"; VALUES[0]="'RK4'";
-KEYS[1]="config_run_duration"; VALUES[1]="'0200_00:00:00'";
-KEYS[2]="config_input_name"; VALUES[2]="'grid.nc'";
-KEYS[3]="config_output_name"; VALUES[3]="'output.nc'";
-KEYS[4]="config_restart_name"; VALUES[4]="'restart.nc'";
-KEYS[5]="config_output_interval"; VALUES[5]="'01_00:00:00'";
-KEYS[6]="config_do_restart"; VALUES[6]=".false.";
-KEYS[7]="config_vert_grid_type"; VALUES[7]="'zlevel'";
-KEYS[8]="config_rho0"; VALUES[8]="1000";
-KEYS[9]="config_bottom_drag_coeff"; VALUES[9]="1.0e-2";
-KEYS[10]="config_vert_visc_type"; VALUES[10]="'const'";
-KEYS[11]="config_vert_diff_type"; VALUES[11]="'const'";
-KEYS[12]="config_eos_type"; VALUES[12]="'linear'";
-
#################################################
## Build perfect hex meshes using periodic_hex ##
#################################################
@@ -104,10 +112,9 @@
        cp MPAS-namelist.input.default MPAS-namelist.input.temporary
fi
-i=1
-for ((i=0; i<${#KEYS[@]}; i++));
+for VAR_NAME in ${!STATIC_NAMELIST_VARS[@]}
do
-        cat MPAS-namelist.input.temporary | sed "s/${KEYS[$i]} .*/${KEYS[$i]} = ${VALUES[$i]}/g" > Temp
+        cat MPAS-namelist.input.temporary | sed "s/${VAR_NAME} .*/${VAR_NAME} = ${STATIC_NAMELIST_VARS[$VAR_NAME]}/g" > Temp
        mv Temp MPAS-namelist.input.temporary
done
@@ -176,46 +183,66 @@
                mv ocean.nc ${TCNAME}_${NAME}_${VERTLEV}levs.grid.nc
                mv graph.info ${TCNAME}_${NAME}_${VERTLEV}levs.graph.info
-                for PROC in $PROCS
+                for TIME_STEPPER in ${TIME_STEPPERS}
                do
-                        mkdir -p ${NAME}_${VERTLEV}levs/${PROC}procs
+                        if [ ${TIME_STEPPER} == 'rk4' ]; then
+                                TIME_INTEGRATOR="'RK4'"
+                        elif [ ${TIME_STEPPER:0:2} == "se" ]; then
+                                TIME_INTEGRATOR="'split_explicit'"
+                                SUB_CYCLES=${TIME_STEPPER:2}
+                        elif [ ${TIME_STEPPER} == 'use' ]; then
+                                TIME_INTEGRATOR="'unsplit_explicit'"
+                        fi
-                        pmetis ${TCNAME}_${NAME}_${VERTLEV}levs.graph.info $PROC > /dev/null
+                        for TIME_STEP in ${TIME_STEPS}
+                        do
-                        ln -f -s ${CUR_DIR}/${NAME}_${VERTLEV}levs/${TCNAME}_${NAME}_${VERTLEV}levs.graph.info ${NAME}_${VERTLEV}levs/${PROC}procs/graph.info
-                        ln -f -s ${CUR_DIR}/${NAME}_${VERTLEV}levs/${TCNAME}_${NAME}_${VERTLEV}levs.graph.info.part.${PROC} ${NAME}_${VERTLEV}levs/${PROC}procs/graph.info.part.${PROC}
-                        ln -f -s ${CUR_DIR}/${NAME}_${VERTLEV}levs/${TCNAME}_${NAME}_${VERTLEV}levs.grid.nc ${NAME}_${VERTLEV}levs/${PROC}procs/grid.nc
-                        ln -f -s ${CUR_DIR}/${NAME}_${VERTLEV}levs/namelist.input ${NAME}_${VERTLEV}levs/${PROC}procs/namelist.input
+                                for PROC in $PROCS
+                                do
-                        ## Copy executable to run directory
-                        if [ $# -ge 1 ]; then
-                                if [ -e ${NAME}_${VERTLEV}levs/${PROC}procs/ocean_model.exe ]; then
-                                        unlink ${NAME}_${VERTLEV}levs/${PROC}procs/ocean_model.exe
-                                fi
+                                        RUN_NAME=${NAME}_${VERTLEV}levs/${TIME_STEPPER}_${TIME_STEP}_${PROC}procs
-                                ln -s $1 ${NAME}_${VERTLEV}levs/${PROC}procs/ocean_model.exe
-                        fi
+                                        mkdir -p ${RUN_NAME}
-                        ## Copy run information to run directory
-                        if [ $# -ge 2 ]; then
-                                cp $2 ${NAME}_${VERTLEV}levs/${PROC}procs/.
-                        fi
+                                        pmetis ${TCNAME}_${NAME}_${VERTLEV}levs.graph.info $PROC > /dev/null
-                        echo "${CUR_DIR}/${NAME}_${VERTLEV}levs/${PROC}procs" >> run_paths
+                                        ln -f -s ${CUR_DIR}/${NAME}_${VERTLEV}levs/${TCNAME}_${NAME}_${VERTLEV}levs.graph.info ${RUN_NAME}/graph.info
+                                        ln -f -s ${CUR_DIR}/${NAME}_${VERTLEV}levs/${TCNAME}_${NAME}_${VERTLEV}levs.graph.info.part.${PROC} ${RUN_NAME}/graph.info.part.${PROC}
+                                        ln -f -s ${CUR_DIR}/${NAME}_${VERTLEV}levs/${TCNAME}_${NAME}_${VERTLEV}levs.grid.nc ${RUN_NAME}/grid.nc
+
+                                        ## Copy executable to run directory
+                                        if [ $# -ge 1 ]; then
+                                                if [ -e ${RUN_NAME}/ocean_model.exe ]; then
+                                                        unlink ${RUN_NAME}/ocean_model.exe
+                                                fi
+
+                                                ln -s $1 ${RUN_NAME}/ocean_model.exe
+                                        fi
+
+                                        ## Copy run information to run directory
+                                        if [ $# -ge 2 ]; then
+                                                cp $2 ${RUN_NAME}/.
+                                        fi
+
+                                        echo "${CUR_DIR}/${RUN_NAME}" >> run_paths
+
+                                        ## Generate new namelist.input file for test case
+                                        cat MPAS-namelist.input.template \
+                                                | sed "s/config_time_integration .*/config_time_integration = ${TIME_INTEGRATOR}/g" \
+                                                | sed "s/config_n_btr_subcycles .*/config_n_btr_subcycles = ${SUB_CYCLES}/g" \
+                                                | sed "s/config_dt .*/config_dt = ${TIME_STEP}/g" \
+                                                | sed "s/config_h_mom_eddy_visc2 .*/config_h_mom_eddy_visc2 = ${VISC_H}/g" \
+                                                | sed "s/config_h_tracer_eddy_diff2 .*/config_h_tracer_eddy_diff2 = 0.0/g" \
+                                                | sed "s/config_vert_visc .*/config_vert_visc = ${VISC_V}/g" \
+                                                | sed "s/config_vert_diff .*/config_vert_diff = 0.0/g" \
+                                                | sed "s/config_dt .*/config_dt = ${TIME_STEP}/g" \
+                                                | sed "s/config_stats_interval .*/config_stats_interval = ${STATS}/g" \
+                                                > ${RUN_NAME}/namelist.input
+                                done
+                        done
                done
                mv ${TCNAME}_${NAME}_${VERTLEV}levs* ${NAME}_${VERTLEV}levs/.
-
-                ## Generate new namelist.input file for test case
-                cat MPAS-namelist.input.template \
-                 | sed "s/config_h_mom_eddy_visc2 .*/config_h_mom_eddy_visc2 = ${VISC_H}/g" \
-                 | sed "s/config_h_tracer_eddy_diff2 .*/config_h_tracer_eddy_diff2 = ${VISC_H}/g" \
-                        | sed "s/config_vert_visc .*/config_vert_visc = ${VISC_V}/g" \
-                        | sed "s/config_vert_diff .*/config_vert_diff = ${VISC_V}/g" \
-                        | sed "s/config_dt .*/config_dt = ${TIME_STEP}/g" \
-                        | sed "s/config_stats_interval .*/config_stats_interval = ${STATS}/g" \
-                        > ${NAME}_${VERTLEV}levs/namelist.input
-
        done
        rm map
</font>
</pre>