1*fc37ad8cSJames Wright#!/bin/bash 2*fc37ad8cSJames Wright 3*fc37ad8cSJames Wright# Copyright (c) 2017, Lawrence Livermore National Security, LLC. 4*fc37ad8cSJames Wright# Produced at the Lawrence Livermore National Laboratory. LLNL-CODE-734707. 5*fc37ad8cSJames Wright# All Rights reserved. See files LICENSE and NOTICE for details. 6*fc37ad8cSJames Wright# 7*fc37ad8cSJames Wright# This file is part of CEED, a collection of benchmarks, miniapps, software 8*fc37ad8cSJames Wright# libraries and APIs for efficient high-order finite element and spectral 9*fc37ad8cSJames Wright# element discretizations for exascale applications. For more information and 10*fc37ad8cSJames Wright# source code availability see http://github.com/ceed 11*fc37ad8cSJames Wright# 12*fc37ad8cSJames Wright# The CEED research is supported by the Exascale Computing Project 17-SC-20-SC, 13*fc37ad8cSJames Wright# a collaborative effort of two U.S. Department of Energy organizations (Office 14*fc37ad8cSJames Wright# of Science and the National Nuclear Security Administration) responsible for 15*fc37ad8cSJames Wright# the planning and preparation of a capable exascale ecosystem, including 16*fc37ad8cSJames Wright# software, applications, hardware, advanced system engineering and early 17*fc37ad8cSJames Wright# testbed platforms, in support of the nation's exascale computing imperative. 18*fc37ad8cSJames Wright 19*fc37ad8cSJames Wrightdeclare -A run_flags 20*fc37ad8cSJames Wright run_flags[problem]=euler_vortex 21*fc37ad8cSJames Wright run_flags[degree]=2 22*fc37ad8cSJames Wright run_flags[dm_plex_box_faces]=20,20,1 23*fc37ad8cSJames Wright run_flags[lx]=1e3 24*fc37ad8cSJames Wright run_flags[ly]=1e3 25*fc37ad8cSJames Wright run_flags[lz]=1 26*fc37ad8cSJames Wright run_flags[ts_max_time]=.02 27*fc37ad8cSJames Wright run_flags[ts_rk_type]=5bs 28*fc37ad8cSJames Wright run_flags[ts_rtol]=1e-10 29*fc37ad8cSJames Wright run_flags[ts_atol]=1e-10 30*fc37ad8cSJames Wright 31*fc37ad8cSJames Wrightdeclare -A test_flags 32*fc37ad8cSJames Wright test_flags[degree_start]=1 33*fc37ad8cSJames Wright test_flags[degree_stride]=1 34*fc37ad8cSJames Wright test_flags[degree_end]=2 35*fc37ad8cSJames Wright test_flags[res_start]=6 36*fc37ad8cSJames Wright test_flags[res_stride]=2 37*fc37ad8cSJames Wright test_flags[res_end]=10 38*fc37ad8cSJames Wright 39*fc37ad8cSJames Wrightfile_name=conv_test_result.csv 40*fc37ad8cSJames Wright 41*fc37ad8cSJames Wrightecho ",mesh_res,degree,rel_error" > $file_name 42*fc37ad8cSJames Wright 43*fc37ad8cSJames Wrighti=0 44*fc37ad8cSJames Wrightfor ((d=${test_flags[degree_start]}; d<=${test_flags[degree_end]}; d+=${test_flags[degree_stride]})); do 45*fc37ad8cSJames Wright run_flags[degree]=$d 46*fc37ad8cSJames Wright for ((res=${test_flags[res_start]}; res<=${test_flags[res_end]}; res+=${test_flags[res_stride]})); do 47*fc37ad8cSJames Wright run_flags[dm_plex_box_faces]=$res,$res,1 48*fc37ad8cSJames Wright args='' 49*fc37ad8cSJames Wright for arg in "${!run_flags[@]}"; do 50*fc37ad8cSJames Wright if ! [[ -z ${run_flags[$arg]} ]]; then 51*fc37ad8cSJames Wright args="$args -$arg ${run_flags[$arg]}" 52*fc37ad8cSJames Wright fi 53*fc37ad8cSJames Wright done 54*fc37ad8cSJames Wright ./navierstokes $args | grep "Relative Error:" | awk -v i="$i" -v res="$res" -v d="$d" '{ printf "%d,%d,%d,%.5f\n", i, res, d, $3}' >> $file_name 55*fc37ad8cSJames Wright i=$((i+1)) 56*fc37ad8cSJames Wright done 57*fc37ad8cSJames Wrightdone 58*fc37ad8cSJames Wright 59*fc37ad8cSJames Wright# Compare the output CSV file with the reference file 60*fc37ad8cSJames Wrightcount=$(diff conv_test_result.csv tests-output/fluids-navierstokes-conv-euler.csv | grep "^>" | wc -l) 61*fc37ad8cSJames Wrightif [ ${count} != 0 ]; then 62*fc37ad8cSJames Wright printf "\n# TEST FAILED!\n\n" 63*fc37ad8cSJames Wright diff -q conv_test_result.csv tests-output/fluids-navierstokes-conv-euler.csv 64*fc37ad8cSJames Wright printf "\n" 65*fc37ad8cSJames Wrightfi 66