#!/bin/sh
#
# This script downloads data (mostly meshes) needed run demos
# Anders Logg, 2013-03-21

download_mesh()
{
    OS=$(uname -s)

    DEMO=$1
    MESH=$2

    echo "Downloading $MESH to $DEMO"

    # Use zsync if available, otherwise use curl/wget
    if hash zsync 2>/dev/null; then
        zsync -q -o $DEMO/$MESH http://fenicsproject.org/pub/data/meshes/$MESH.zsync
    else
        if [ "$OS" = "Darwin" ]; then
            output=`curl --output $MESH http://fenicsproject.org/pub/data/meshes/$MESH 2>&1`
        else
            output=`wget http://fenicsproject.org/pub/data/meshes/$MESH 2>&1`
        fi

	    # If download fails
	    if [ $? -ne 0 ]; then
            echo "$output" 1>&2
	        exit 1
	    fi

        mv $MESH $DEMO
    fi
}

download_mesh demo/documented/eigenvalue                     box_with_dent.xml.gz
download_mesh demo/documented/tensor-weighted-poisson        unitsquare_32_32.xml.gz
download_mesh demo/documented/tensor-weighted-poisson        unitsquare_32_32_c01.xml.gz
download_mesh demo/documented/tensor-weighted-poisson        unitsquare_32_32_c00.xml.gz
download_mesh demo/documented/tensor-weighted-poisson        unitsquare_32_32_c11.xml.gz
download_mesh demo/documented/stokes-taylor-hood/            dolfin_fine.xml.gz
download_mesh demo/documented/stokes-taylor-hood             dolfin_fine_subdomains.xml.gz
download_mesh demo/documented/stokes-mini                    dolfin_fine.xml.gz
download_mesh demo/documented/stokes-mini                    dolfin_fine_subdomains.xml.gz
download_mesh demo/documented/subdomains                     dolfin_fine.xml.gz
download_mesh demo/documented/bcs                            aneurysm.xml.gz
download_mesh demo/documented/navier-stokes                  lshape.xml.gz
download_mesh demo/undocumented/buckling-tao                 buckling.xml.gz
download_mesh demo/undocumented/elasticity                   pulley.xml.gz
download_mesh demo/undocumented/mixed-poisson-sphere         sphere_16.xml.gz
download_mesh demo/undocumented/advection-diffusion          dolfin_fine.xml.gz
download_mesh demo/undocumented/advection-diffusion          dolfin_fine_velocity.xml.gz
download_mesh demo/undocumented/advection-diffusion          dolfin_fine_subdomains.xml.gz
download_mesh demo/undocumented/contact-vi-snes              circle_yplane.xml.gz
download_mesh demo/undocumented/contact-vi-tao               circle_yplane.xml.gz
download_mesh demo/undocumented/multistage-solver            dolfin_fine.xml.gz
download_mesh demo/undocumented/multistage-solver            dolfin_fine_velocity.xml.gz
download_mesh demo/undocumented/multistage-solver            dolfin_fine_subdomains.xml.gz
download_mesh demo/undocumented/lift-drag                    dolfin_fine.xml.gz
download_mesh demo/undocumented/lift-drag                    dolfin_fine_pressure.xml.gz
download_mesh demo/undocumented/elastodynamics               dolfin_fine.xml.gz
download_mesh demo/undocumented/auto-adaptive-navier-stokes  channel_with_flap.xml.gz
download_mesh demo/undocumented/plot                         dolfin_fine.xml.gz
download_mesh demo/undocumented/dg-advection-diffusion       unitsquare_64_64.xml.gz
download_mesh demo/undocumented/dg-advection-diffusion       unitsquare_64_64_velocity.xml.gz
download_mesh demo/undocumented/mesh-quality                 dolfin_fine.xml.gz
download_mesh demo/undocumented/multimesh                    propeller_2d_coarse.xml.gz
download_mesh demo/undocumented/multimesh                    propeller_2d_fine.xml.gz
download_mesh demo/undocumented/curl-curl                    sphere.xml.gz
download_mesh demo/undocumented/collision-detection          circle.xml.gz
download_mesh test/data                                      aneurysm.xml.gz
download_mesh test/data                                      intersecting_surfaces.xml.gz
download_mesh test/data                                      snake.xml.gz
download_mesh test/data                                      doughnut.xml.gz
download_mesh test/data                                      boxes.xml.gz
