-
Notifications
You must be signed in to change notification settings - Fork 148
/
run_this_example.sh
executable file
·73 lines (60 loc) · 1.5 KB
/
run_this_example.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/bin/bash
#
# This script runs the main directory SPECFEM2D example problem, which is shown
# on the cover of the User Manual (https://specfem2d.readthedocs.io/en/latest/)
#
# Under the hood it runs the mesher and the solver (in serial or parallel) for
# a multi-layered 2D domain with topography and a cavity.
#
# To create a movie of the results, have a look at the script:
# ./utils/create_main_repo_example_movie.sh
#
echo "running example: `date`"
currentdir=`pwd`
# sets up directory structure in current example directoy
echo
echo "setting up example..."
echo
mkdir -p OUTPUT_FILES
# cleans output files
rm -rf OUTPUT_FILES/*
cd $currentdir
# links executables
rm -f xmeshfem2D xspecfem2D
ln -s bin/xmeshfem2D
ln -s bin/xspecfem2D
# stores setup
cp DATA/Par_file OUTPUT_FILES/
cp DATA/SOURCE OUTPUT_FILES/
# Get the number of processors
NPROC=`grep ^NPROC DATA/Par_file | cut -d = -f 2 | cut -d \# -f 1 | tr -d ' '`
# runs database generation
echo
echo "running mesher..."
echo
./xmeshfem2D
# checks exit code
if [[ $? -ne 0 ]]; then exit 1; fi
# runs simulation
if [ "$NPROC" -eq 1 ]; then
# This is a serial simulation
echo
echo "running solver..."
echo
./xspecfem2D
else
# This is a MPI simulation
echo
echo "running solver on $NPROC processors..."
echo
mpirun -np $NPROC ./xspecfem2D
fi
# checks exit code
if [[ $? -ne 0 ]]; then exit 1; fi
# stores output
cp DATA/*SOURCE* DATA/*STATIONS* OUTPUT_FILES
echo
echo "see results in directory: OUTPUT_FILES/"
echo
echo "done"
echo `date`