Commit acd17c80 authored by Alexander Nikolas Breuer's avatar Alexander Nikolas Breuer
Browse files

Removed outdated convergence tests.

parent c2e8cec6
gen_scripts.sh filter=lfs diff=lfs merge=lfs -text
This source diff could not be displayed because it is stored in LFS. You can view the blob instead.
#!/bin/bash
##
# @file This file is part of EDGE.
#
# @author Alexander Breuer (anbreuer AT ucsd.edu)
#
# @section LICENSE
# Copyright (c) 2016-2017, Regents of the University of California
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
# @section DESCRIPTION
# Runs the convergence benchmarks
##
#
# executes a single command and aborts on error
#
function exec {
"$@"
local status=$?
if [ $status -ne 0 ]; then
echo "something went wront with $1, aborting" >&2
exit 1
fi
return $status
}
# Usage info
show_help() {
cat << EOF
Usage: ${0##*/} [-h] [-a ARCH-x XSMM -z ZLIB -5 HDF5 -m MOAB -q EQUATIONS -t ELEMENTS -p PRECISION -o ORDERS -r RUNS -l CLENGTHS -c CODE_DIR -w WORK_DIR -d RESULT_DIR]
Runs the convergence benchmarks.
-h
-a ARCH ARCH-option passed to EDGE's build-script.
-x XSMM XSMM-option passed to EDGE's build-script.
-z ZLIB zlib-option passed to EDGE's build-script.
-5 HDF5 HDF5-option passed to EDGE's build-script.
-m MOAB MOAB-option passed to EDGE's build-script.
-q EQUATIONS solved equations (either 'advection', 'elastic', or 'elastic+rupture').
-t ELEMENTS used elements (either 'line', 'tria3', 'quad4r', 'hex8r' or 'tet4'.
-p PRECISION used floating point precision in bit (either '32' or '64').
-o ORDERS used orders of converegence (e.g. '2 3 4 5').
-r RUNS number of concurrent forward runs.
-l CLENGTHS characteristic lengths (either for the regular refined or used in gmsh).
-c CODE_DIR directory of EDGE.
-w WORK_DIR working directory (different from the code directory).
-d RESULT_DIR directory where the results are copied to (absolute path, no copy if not specified).
EOF
}
#
# parse command line arguments
#
OPTIND=1
while getopts "ha:x:q:t:p:o:r:m:l:c:w:d:" opt; do
case "$opt" in
h)
show_help
exit 0
;;
a) ARCH=$OPTARG
;;
x) XSMM=$OPTARG
;;
z) ZLIB=$OPTARG
;;
5) HDF5=$OPTARG
;;
m) MOAB=$OPTARG
;;
q) EQUATIONS=$OPTARG
;;
t) ELEMENTS=$OPTARG
;;
p) PRECISION=$OPTARG
;;
o) ORDERS=$OPTARG
;;
r) RUNS=$OPTARG
;;
l) CLENGTHS=$OPTARG
;;
c) CODE_DIR=$OPTARG
;;
w) WORK_DIR=$OPTARG
;;
d) RESULT_DIR=$OPTARG
;;
'?')
show_help >&2
exit 1
;;
esac
done
shift "$((OPTIND-1))" # Shift off the options and optional --.
#
# Parse parameters
#
echo "here's your setup:"
if [ "${ARCH}" == "" ]
then
echo ' ARCH not set, falling back to snb.'
ARCH=snb
else
echo " ARCH: ${ARCH}"
fi
if [ "${XSMM}" == "" ]
then
echo ' XSMM not set, disabling.'
XSMM=no
else
echo " XSMM: ${XSMM}"
fi
if [ "${ZLIB}" == "" ]
then
echo ' ZLIB not set, disabling.'
ZLIB=no
else
echo " ZLIB: ${ZLIB}"
fi
if [ "${HDF5}" == "" ]
then
echo ' HDF5 not set, disabling.'
HDF5=no
else
echo " HDF5: ${HDF5}"
fi
if [ "${MOAB}" == "" ]
then
echo ' MOAB not set, disabling.'
MOAB=no
MESH=regular
else
echo " MOAB: ${MOAB}"
MESH=unstructured
fi
if [ "${MOAB}" == "no" ]
then
MESH=regular
else
MESH=unstructured
fi
if [ "${PRECISION}" == "" ]
then
echo ' PRECISION not set, using 64bit.'
PRECISION=64
else
echo " PRECISION: ${PRECISION}"
fi
if [ "${EQUATIONS}" == "advection" ]
then
echo ' equations: advection'
elif [ "${EQUATIONS}" == "elastic" ]
then
echo ' equations: elastic'
elif [ "${EQUATIONS}" == "elastic+rupture" ]
then
echo ' equations: elastic+rupture'
else
echo ' equations: unknown, aborting.'
exit 1
fi
if [ "${ELEMENTS}" == "line" ]
then
echo ' elements: line'
elif [ "${ELEMENTS}" == "quad4r" ]
then
echo ' elements: quad4r'
elif [ "${ELEMENTS}" == "tria3" ]
then
echo ' elements: tria3'
elif [ "${ELEMENTS}" == "hex8r" ]
then
echo ' elements: hex8r'
elif [ "${ELEMENTS}" == "tet4" ]
then
echo ' elements: tet4'
else
echo ' elements: unknown, aborting.'
exit 1
fi
if [ "${ORDERS}" == "" ]
then
echo ' orders: not set, aborting'
exit 1
else
echo " orders: ${ORDERS}";
fi
if [ "${RUNS}" != "" ]
then
echo " runs: ${RUNS}"
else
echo ' runs: not set aborting.'
exit 1
fi
if [ "${CLENGTHS}" == "" ]
then
echo ' clengths: not set, aborting'
exit 1
else
echo " clengths: ${CLENGTHS} "
fi
if [ "${CODE_DIR}" != "" ]
then
echo " code directory: ${CODE_DIR}"
else
echo " code directory: not set, aborting."
exit 1
fi
if [ "${WORK_DIR}" != "" ]
then
echo " work directory: ${WORK_DIR}"
else
echo " work directory: not set, aborting."
exit 1
fi
if [ "${RESULT_DIR}" != "" ]
then
echo " result dir: ${RESULT_DIR}"
fi
# set base dir
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo 'go go go'
date
# create directory structure in work dir
exec mkdir -p ${WORK_DIR}
exec cd ${WORK_DIR}
exec mkdir meshes
exec mkdir configs
exec mkdir output
exec mkdir code
# link code
exec cd code
exec ln -s ${CODE_DIR}/* .
rm build 2>/dev/null # remove potential linked build dirs
exec cd ..
# create meshes if required
if [ "${MESH}" == "unstructured" ]
then
for cl in $CLENGTHS
do
echo "generating mesh for cl: ${cl}"
exec sed "s/TEMPLATE_CL/${cl}/g" ${SCRIPT_DIR}/tmpl/${EQUATIONS}/mesh_${ELEMENTS}.tmpl > meshes/mesh_${cl}.geo
gmsh -3 meshes/mesh_${cl}.geo
done
fi
for or in $ORDERS
do
for cl in $CLENGTHS
do
echo "generating setup for cl: ${cl}"
exec sed "s/TEMPLATE_CFR/${RUNS}/g" ${SCRIPT_DIR}/tmpl/${EQUATIONS}/${MESH}_${ELEMENTS}.tmpl\
> configs/${MESH}_${ELEMENTS}_${or}_${cl}.xml
exec sed -i "s-TEMPLATE_ORDER-${or}-g" configs/${MESH}_${ELEMENTS}_${or}_${cl}.xml
exec sed -i "s-TEMPLATE_MESH_FILE-meshes/mesh_${cl}.msh-g" configs/${MESH}_${ELEMENTS}_${or}_${cl}.xml
exec sed -i "s-TEMPLATE_ENS_FILE-output/errors_${or}_${cl}.xml-g" configs/${MESH}_${ELEMENTS}_${or}_${cl}.xml
exec sed -i "s-TEMPLATE_WAVE_FIELD-output/wave_field_${or}_${cl}-g" configs/${MESH}_${ELEMENTS}_${or}_${cl}.xml
# mesh widths for regular setups
exec sed -i "s-TEMPLATE_ELEMENTS_X-${cl}-g" configs/${MESH}_${ELEMENTS}_${or}_${cl}.xml
exec sed -i "s-TEMPLATE_ELEMENTS_Y-${cl}-g" configs/${MESH}_${ELEMENTS}_${or}_${cl}.xml
exec sed -i "s-TEMPLATE_ELEMENTS_Z-${cl}-g" configs/${MESH}_${ELEMENTS}_${or}_${cl}.xml
# use native instruction set
exec sed -i "s-TEMPLATE_ARCH-host-g" configs/${MESH}_${ELEMENTS}_${or}_${cl}.xml
# enable omp
exec sed -i "s-TEMPLATE_PARALLEL-omp-g" configs/${MESH}_${ELEMENTS}_${or}_${cl}.xml
done
echo "building code"
exec cd code
pwd
exec scons xml=../configs/${MESH}_${ELEMENTS}_${or}_${cl}.xml arch=${ARCH} precision=${PRECISION} xsmm=${XSMM} zlib=${ZLIB} hdf5=${HDF5} moab=${MOAB} -j 4
exec cd ..
for cl in $CLENGTHS
do
echo "running edge for cl: ${cl}"
exec ./code/build/edge -x configs/${MESH}_${ELEMENTS}_${or}_${cl}.xml
done
done
if [ "${RESULT_DIR}" != "" ]
then
echo " copying results back"
exec mkdir -p ${RESULT_DIR}
exec cp output/* ${RESULT_DIR}
fi
date
echo '>>> all done! <<<'
/**
* @file This file is part of EDGE.
*
* @author Alexander Breuer (anbreuer AT ucsd.edu)
*
* @section LICENSE
* Copyright (c) 2016, Regents of the University of California
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* @section DESCRIPTION
* Simple tetrahedral domain for convergence benchmarks using the advection equations.
**/
Mesh.Optimize = 1;
// define mesh size
size = 9.424777960769379715387930149838508652591508198125317462924;
// define characteristic length
cl = TEMPLATE_CL;
//
// construct the cube
//
Point(1) = { 0, 0, 0, cl };
Point(2) = { size, 0, 0, cl };
Point(3) = { size, size, 0, cl };
Point(4) = { 0, size, 0, cl };
Point(5) = { 0, 0, size, cl };
Point(6) = { size, 0, size, cl };
Point(7) = { size, size, size, cl };
Point(8) = { 0, size, size, cl };
// bottom lines
Line(101) = {1, 2};
Line(102) = {2, 3};
Line(103) = {3, 4};
Line(104) = {4, 1};
Line Loop(201) = { 101, 102, 103, 104};
Plane Surface(301) = {201};
// top lines
Line(105) = {5, 6};
Line(106) = {6, 7};
Line(107) = {7, 8};
Line(108) = {8, 5};
Line Loop(202) = { 105, 106, 107, 108};
Plane Surface(302) = {202};
// vertical remaining lines
Line(109) = {1, 5};
Line(110) = {2, 6};
Line(111) = {3, 7};
Line(112) = {4, 8};
// vertical faces
Line Loop(203) = { 101, 110, -105, -109 };
Plane Surface(303) = {203};
Line Loop(204) = { 102, 111, -106, -110 };
Plane Surface(304) = {204};
Line Loop(205) = { 103, 112, -107, -111 };
Plane Surface(305) = {205};
Line Loop(206) = { 104, 109, -108, -112 };
Plane Surface(306) = {206};
// set periodic boundaries (remark: line loops have to have the same traversal of shifted points)
Periodic Surface 301 { 101, 102, 103, 104 } = 302 { 105, 106, 107, 108 };
Periodic Surface 303 { 101, 110, -105, -109 } = 305 { -103, 111, 107, -112 };
Periodic Surface 304 { 102, 111, -106, -110 } = 306 { -104, 112, 108, -109 };
// Here's the boundary tag, so that we can handle this in MOAB.
Physical Surface(106) = {301, 302, 303, 304, 305, 306};
// define volume, the surface is chosen so that all normals point out of the volume
Surface Loop (401) = {302, 306, 304, 305, 303, -301};
Volume(401) = {401};
Physical Volume("region_0") = {401};
/**
* @file This file is part of EDGE.
*
* @author Alexander Breuer (anbreuer AT ucsd.edu)
*
* @section LICENSE
* Copyright (c) 2016, Regents of the University of California
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* @section DESCRIPTION
* Simple triangular domain for convergence of the advection equation.
**/
// optimize mesh
Mesh.Lloyd=5;
// define mesh size
size = 9.424777960769379715387930149838508652591508198125317462924;
// define characteristic length
lc = TEMPLATE_CL;
//
// construct the square
//
Point(1) = { 0, 0, 0, lc };
Point(2) = { size, 0, 0, lc };
Point(3) = { size, size, 0, lc };
Point(4) = { 0, size, 0, lc };
Line(1) = {1, 2};
Line(2) = {2, 3};
Line(3) = {3, 4};
Line(4) = {4, 1};
Line Loop(101) = { 1, 2, 3, 4};
Plane Surface(201) = {101};
// define volume
Physical Surface("region_0") = {201};
// This is how periodic boundary conditions should be implemented in gmsh
// However moab is not capable of reading them for now. Therefore we use
// a workaround by spcifiying a periodic tag afterwards.
// Remark: This is still needed so that the faces on each side of the periodic boundary match.
Periodic Line {1} = {-3};
Periodic Line {2} = {-4};
// Here's the boundary tag.
Physical Line(106) = {1, 2, 3, 4};
<?xml version="1.0" encoding="UTF-8"?>
<!--
@file This file is part of EDGE.
@author Alexander Breuer (anbreuer AT ucsd.edu)
@section LICENSE
Copyright (c) 2016, Regents of the University of California
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@section DESCRIPTION
Convergence setup for the advection equations in three dimensions using a structured hrx8r mesh.
-->
<edge>
<build>
<element_type>hex8r</element_type>
<equations>advection</equations>
<mode>release</mode>
<cfr>TEMPLATE_CFR</cfr>
<moab>no</moab>
<order>TEMPLATE_ORDER</order>
<arch>TEMPLATE_ARCH</arch>
<parallel>TEMPLATE_PARALLEL</parallel>
</build>
<cfr>
<mesh>
<n_elements>
<x>TEMPLATE_ELEMENTS_X</x>
<y>TEMPLATE_ELEMENTS_Y</y>
<z>TEMPLATE_ELEMENTS_Z</z>
</n_elements>
<size>
<x>1</x>
<y>1</y>
<z>1</z>
</size>
</mesh>
<setups>
<type_default>sine</type_default>
<end_time>2.0</end_time>
</setups>
<output>
<error_norms>
<type>file</type>
<file>TEMPLATE_ENS_FILE</file>
</error_norms>
</output>
</cfr>
</edge>
<?xml version="1.0" encoding="UTF-8"?>
<!--
@file This file is part of EDGE.
@author Alexander Breuer (anbreuer AT ucsd.edu)
@section LICENSE
Copyright (c) 2016, Regents of the University of California
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@section DESCRIPTION
Convergence setup for the advection equation in one dimensions using a structured line mesh.
-->
<edge>
<build>
<element_type>line</element_type>
<equations>advection</equations>
<mode>release</mode>
<cfr>TEMPLATE_CFR</cfr>
<moab>no</moab>
<order>TEMPLATE_ORDER</order>
<arch>TEMPLATE_ARCH</arch>
<parallel>TEMPLATE_PARALLEL</parallel>
</build>
<cfr>
<mesh>
<n_elements>
<x>TEMPLATE_ELEMENTS_X</x>
</n_elements>
<size>
<x>13</x>
</size>
</mesh>
<setups>
<type_default>sine</type_default>
<end_time>13</end_time>
</setups>
<output>
<error_norms>
<type>file</type>
<file>TEMPLATE_ENS_FILE</file>
</error_norms>
</output>
</cfr>
</edge>
<?xml version="1.0" encoding="UTF-8"?>
<!--
@file This file is part of EDGE.
@author Alexander Breuer (anbreuer AT ucsd.edu)
@section LICENSE
Copyright (c) 2016-2017, Regents of the University of California
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@section DESCRIPTION
Convergence setup for the advection equation in two dimensions using a structured, quadrilateral mesh.
-->
<edge>
<build>