<p><b>dwj07@fsu.edu</b> 2012-03-15 09:31:20 -0600 (Thu, 15 Mar 2012)</p><p><br>
        -- BRANCH COMMIT --<br>
<br>
        Updating makeMeshes.sh to work with the current namelist files.<br>
        And to set up the ability for spatial convergence studies.<br>
</p><hr noshade><pre><font color="gray">Modified: branches/ocean_projects/ocean_test_cases_staging/ocean/advective_transport/makeMeshes.sh
===================================================================
--- branches/ocean_projects/ocean_test_cases_staging/ocean/advective_transport/makeMeshes.sh        2012-03-15 01:42:47 UTC (rev 1644)
+++ branches/ocean_projects/ocean_test_cases_staging/ocean/advective_transport/makeMeshes.sh        2012-03-15 15:31:20 UTC (rev 1645)
@@ -2,17 +2,16 @@
########################################################################################
## 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                         ##
+## To start, grids are periodic in the x direction. This may change later ##
########################################################################################
-
-SPACINGS="10 5 2 1"
-VERTLEVS="1 10"
+SPACINGS="1 2 4 8 16"
+VERTLEVS="10"
TCNAME="advective_transport"
###############################################################
## Change reference spacing, time_step, and viscosities here ##
###############################################################
-REF_TIME_STEP="5"
+REF_TIME_STEP="15"
REF_VISC_H="0.0"
REF_VISC_V="0.0"
REF_SPACING="10.0"
@@ -23,34 +22,44 @@
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
-X_EXTENT="600"
-Y_EXTENT="600"
X_EXTENT="460"
Y_EXTENT="460"
+#######################################################
+## Setup Variables for different run initializations ##
+#######################################################
+ADVECTION_ROUTINES="std2 std3 std4 fct2 fct3 fct4"
+TIME_STEPPERS="rk4 se1 se20 use"
+TIME_STEPS="15"
+
############################################################
## Setup Default namelist keys and values to update later ##
############################################################
+i=0
+KEYS[$i]="config_run_duration"; VALUES[$i]="'0000_00:02:40'"; i=$i+1;
+KEYS[$i]="config_input_name"; VALUES[$i]="'grid.nc'"; i=$i+1;
+KEYS[$i]="config_output_name"; VALUES[$i]="'output.nc'"; i=$i+1;
+KEYS[$i]="config_restart_name"; VALUES[$i]="'restart.nc'"; i=$i+1;
+KEYS[$i]="config_output_interval"; VALUES[$i]="'00_00:02:40'"; i=$i+1;
+KEYS[$i]="config_do_restart"; VALUES[$i]=".false."; i=$i+1;
+KEYS[$i]="config_vert_grid_type"; VALUES[$i]="'zstar'"; i=$i+1;
+KEYS[$i]="config_rho0"; VALUES[$i]="1000"; i=$i+1;
+KEYS[$i]="config_bottom_drag_coeff"; VALUES[$i]="1.0e-3"; i=$i+1;
+KEYS[$i]="config_vert_visc_type"; VALUES[$i]="'const'"; i=$i+1;
+KEYS[$i]="config_vert_diff_type"; VALUES[$i]="'const'"; i=$i+1;
+KEYS[$i]="config_eos_type"; VALUES[$i]="'linear'"; i=$i+1;
+KEYS[$i]="config_vert_tracer_adv_order"; VALUES[$i]="3"; i=$i+1;
+KEYS[$i]="config_thickness_adv_order"; VALUES[$i]="3"; i=$i+1;
+KEYS[$i]="config_h_mom_eddy_visc2";         VALUES[$i]="0.0"; i=$i+1;
+KEYS[$i]="config_h_mom_eddy_diff2";         VALUES[$i]="0.0"; i=$i+1;
+KEYS[$i]="config_vert_visc"; VALUES[$i]="0.0"; i=$i+1;
+KEYS[$i]="config_vert_diff"; VALUES[$i]="0.0"; i=$i+1;
-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-3";
-KEYS[10]="config_vert_visc_type"; VALUES[10]="'const'";
-KEYS[11]="config_vert_diff_type"; VALUES[11]="'const'";
-
-
#################################################
## Build perfect hex meshes using periodic_hex ##
#################################################
@@ -106,16 +115,29 @@
        cp MPAS-namelist.input.default MPAS-namelist.input.temporary
fi
-i=1
for ((i=0; i<${#KEYS[@]}; i++));
do
        cat MPAS-namelist.input.temporary | sed "s/${KEYS[$i]} .*/${KEYS[$i]} = ${VALUES[$i]}/g" > Temp
        mv Temp MPAS-namelist.input.temporary
done
+NUM_LINES=`sed -n "/_model/,/\//p" MPAS-namelist.input.temporary | wc -l`
+NUM_LINES=`echo ${NUM_LINES}-1 | bc`
+
+sed -n "/_model/,/\//p" MPAS-namelist.input.temporary | head -n ${NUM_LINES} > namelist.top
+echo " config_prescribe_velocity = .true." >> namelist.top
+echo " config_prescribe_thickness = .true." >> namelist.top
+echo '/' >> namelist.top
+echo '' >> namelist.top
+sed '/_model/,/\//d' MPAS-namelist.input.temporary > namelist.bottom
+
+cat namelist.top > MPAS-namelist.input.temporary
+cat namelist.bottom >> MPAS-namelist.input.temporary
+
+rm -f namelist.top namelist.bottom
+
mv MPAS-namelist.input.temporary MPAS-namelist.input.template
-
touch run_paths
#################################################################
@@ -158,21 +180,6 @@
                NX=`echo "(${X_EXTENT} / ${SPACING})" | bc`
                DC=`echo "${SPACING}.0"`
-                if [ $VERTLEV -eq 1 ]; then
-                        VERT_TYPE="isopycnal"
-                else
-                        VERT_TYPE="zlevel"
-                fi
-
-                ## Compute scaled spacing, time_step, and viscosities
-                D_SPACING=`echo "scale=4; ${SPACING}/${REF_SPACING}" | bc`
-                TIME_STEP=`echo "scale=4; $D_SPACING * $REF_TIME_STEP" | bc`
-                VISC_H=`echo "scale=4; ($D_SPACING^4)*${REF_VISC_H}" | bc`
-                TIME_STEP=`echo ${REF_TIME_STEP}`
-                VISC_H=`echo ${REF_VISC_H}`
-                VISC_V=`echo ${REF_VISC_V}`
-                STATS=`echo " $TOTAL_TIME / $TIME_STEP / 10 " | bc`
-
                echo " Converting ${NAME} mesh to have ${VERTLEV} levels"
                ln -s ${TCNAME}_${NAME}.grid.nc grid.nc
@@ -186,45 +193,79 @@
                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 ADVECTION_ROUTINE in ${ADVECTION_ROUTINES}
+                                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
-                                ln -s $1 ${NAME}_${VERTLEV}levs/${PROC}procs/ocean_model.exe
-                        fi
+                                        if [ ${ADVECTION_ROUTINE:0:3} == "std" ]; then
+                                                FCT_ON=".false."
+                                                ADV_ORDER=${ADVECTION_ROUTINE:3}
+                                        elif [ ${ADVECTION_ROUTINE:0:3} == "fct" ]; then
+                                                FCT_ON=".true."
+                                                ADV_ORDER=${ADVECTION_ROUTINE:3}
+                                        fi
-                        ## Copy run information to run directory
-                        if [ $# -ge 2 ]; then
-                                cp $2 ${NAME}_${VERTLEV}levs/${PROC}procs/.
-                        fi
+                                        for PROC in $PROCS
+                                        do
-                        echo "${CUR_DIR}/${NAME}_${VERTLEV}levs/${PROC}procs" >> run_paths
+                                                ## Compute scaled spacing, time_step, and viscosities
+                                                D_SPACING=`echo "scale=4; ${SPACING}/${REF_SPACING}" | bc`
+                                                STATS=`echo " $TOTAL_TIME / $TIME_STEP / 10 " | bc`
+
+                                                RUN_NAME=${NAME}_${VERTLEV}levs/${TIME_STEPPER}_${TIME_STEP}_${ADVECTION_ROUTINE}/${PROC}procs
+
+                                                mkdir -p ${RUN_NAME}
+
+                                                pmetis ${TCNAME}_${NAME}_${VERTLEV}levs.graph.info $PROC > /dev/null
+
+                                                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_stats_interval .*/config_stats_interval = ${STATS}/g" \
+                                                        | sed "s/config_monotonic .*/config_monotonic = ${FCT_ON}/g" \
+                                                        | sed "s/config_horiz_tracer_adv_order .*/config_horiz_tracer_adv_order = ${ADV_ORDER}/g" \
+                                                        > ${RUN_NAME}/namelist.input
+                                        done
+                                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>