Index: /issm/trunk-jpl/externalpackages/boost/install-1.7-mac.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/boost/install-1.7-mac.sh	(revision 25243)
+++ /issm/trunk-jpl/externalpackages/boost/install-1.7-mac.sh	(revision 25244)
@@ -39,6 +39,16 @@
 
 # Set install_name for all shared libraries
+#
+# NOTE: The install_name_tool prints an error message on some installations, 
+#		but this is not a shell error, and it does not seem to affect the 
+#		Boost libraries called by ISSM. For now, we are simply redirecting the 
+#		error to null.
+#
+# TODO:
+# - Modify the source to apply absolute paths to the library ids so that 
+#	patching it after the fact with install_name_tool is not necessary.
+#
 cd ${BOOST_ROOT}/install/lib
 for name in *.dylib; do
-	install_name_tool -id ${BOOST_ROOT}/install/lib/${name} ${name}
+	install_name_tool -id ${BOOST_ROOT}/install/lib/${name} ${name} 2>/dev/null
 done
Index: /issm/trunk-jpl/jenkins/pine_island-mac-binaries-solid_earth
===================================================================
--- /issm/trunk-jpl/jenkins/pine_island-mac-binaries-solid_earth	(revision 25244)
+++ /issm/trunk-jpl/jenkins/pine_island-mac-binaries-solid_earth	(revision 25244)
@@ -0,0 +1,85 @@
+#--------------------#
+# ISSM Configuration #
+#--------------------#
+
+# MATLAB path
+MATLAB_PATH="/Applications/MATLAB_R2018a.app"
+
+# NOTE:
+# - We can disable dependency tracking in the Autotools because the binaries
+#	should always be a one-time build.
+#
+
+# ISSM CONFIGURATION
+ISSM_CONFIG='\
+	--prefix=${ISSM_DIR} \
+	--enable-standalone-executables \
+	--enable-standalone-modules \
+	--enable-standalone-libraries \
+	--disable-dependency-tracking \
+	--with-matlab-dir=${MATLAB_PATH} \
+	--with-python-dir=/System/Library/Frameworks/Python.framework/Versions/2.7 \
+	--with-python-numpy-dir=/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy \
+	--with-fortran-lib="/usr/local/Cellar/gcc/9.3.0/lib/gcc/9/libgfortran.a /usr/local/Cellar/gcc/9.3.0/lib/gcc/9/libquadmath.a /usr/local/Cellar/gcc/9.3.0/lib/gcc/9/gcc/x86_64-apple-darwin15/9.3.0/libgcc.a" \
+	--with-mpi-include=${ISSM_DIR}/externalpackages/petsc/install/include \
+	--with-mpi-libflags="-L${ISSM_DIR}/externalpackages/petsc/install/lib -lmpi -lmpicxx -lmpifort" \
+	--with-blas-lapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-metis-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-scalapack-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-mumps-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-hdf5-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-petsc-dir=${ISSM_DIR}/externalpackages/petsc/install \
+	--with-triangle-dir=${ISSM_DIR}/externalpackages/triangle/install \
+	--with-boost-dir=${ISSM_DIR}/externalpackages/boost/install
+'
+
+#-------------------#
+# External Packages #
+#-------------------#
+
+#List of external pakages to be installed and their installation scripts
+EXTERNALPACKAGES="
+	autotools		install.sh
+	cmake			install.sh
+	petsc			install-3.12-mac-solid_earth-static.sh
+	boost			install-1.7-mac-static.sh
+	triangle		install-mac-static.sh
+	chaco			install.sh
+	m1qn3			install.sh
+	semic			install.sh
+	curl			install-7.67-static.sh
+	netcdf			install-4.7-mac-parallel-static.sh
+	proj			install-6.2-static.sh
+	gdal			install-3-python-netcdf-static.sh
+	gshhg			install.sh
+	gmt				install-6.0-mac-static.sh
+	gmsh			install-4-static.sh
+	shell2junit		install.sh
+"
+
+#---------#
+# Testing #
+#---------#
+
+# Test suites
+MATLAB_TEST=0
+PYTHON_TEST=0
+JAVASCRIPT_TEST=0
+EXAMPLES_TEST=0
+
+# Number of CPUs used in ISSM compilation
+#
+# NOTE: One is usually safer as some packages are very sensitive to parallel
+# 		compilation
+#
+NUMCPUS_INSTALL=4
+
+# Number of CPUs used in the nightly runs
+NUMCPUS_RUN=1
+
+# Nightly run options
+#
+# See documentation in test/NightlyRun/runme.* for more information.
+#
+MATLAB_NROPTIONS=""
+PYTHON_NROPTIONS=""
Index: /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-solid_earth.sh
===================================================================
--- /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-solid_earth.sh	(revision 25243)
+++ /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-solid_earth.sh	(revision 25244)
@@ -1,4 +1,9 @@
 #!/bin/bash
 
+
+# Script to test, package, and transfer distributable to ISSM Web site.
+# Corresponds with build generated by configuration in 
+# $ISSM_DIR/jenkins/ross-debian_linux-binaries-solid_earth.
+#
 
 ## Constants
@@ -12,4 +17,8 @@
 TARBALL_NAME="issm-linux-solid_earth"
 TARBALL="${TARBALL_NAME}.tar.gz"
+
+## Environment
+#
+export PATH="${ISSM_DIR}/bin:$(getconf PATH)" # Ensure that we pick up binaries from 'bin' directory rather than 'externalpackages'
 
 # Check if MATLAB exists
@@ -88,5 +97,5 @@
 # Check that MATLAB did not exit in error
 matlabExitCode=`echo $?`
-matlabExitedInError=`grep -E "Activation cannot proceed|license" matlab.log | wc -l`
+matlabExitedInError=`grep -E "Activation cannot proceed|license|Error" matlab.log | wc -l`
 
 if [[ ${matlabExitCode} -ne 0 || ${matlabExitedInError} -ne 0 ]]; then
Index: /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-with_dakota.sh
===================================================================
--- /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-with_dakota.sh	(revision 25243)
+++ /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries-with_dakota.sh	(revision 25244)
@@ -1,4 +1,9 @@
 #!/bin/bash
 
+
+# Script to test, package, and transfer distributable to ISSM Web site.
+# Corresponds with build generated by configuration in 
+# $ISSM_DIR/jenkins/ross-debian_linux-binaries-with_dakota.
+#
 
 ## Constants
@@ -12,4 +17,8 @@
 TARBALL_NAME="issm-linux-with_dakota"
 TARBALL="${TARBALL_NAME}.tar.gz"
+
+## Environment
+#
+export PATH="${ISSM_DIR}/bin:$(getconf PATH)" # Ensure that we pick up binaries from 'bin' directory rather than 'externalpackages'
 
 # Check if MATLAB exists
@@ -62,5 +71,5 @@
 # Check that MATLAB did not exit in error
 matlabExitCode=`echo $?`
-matlabExitedInError=`grep -E "Activation cannot proceed|license" matlab.log | wc -l`
+matlabExitedInError=`grep -E "Activation cannot proceed|license|Error" matlab.log | wc -l`
 
 if [[ ${matlabExitCode} -ne 0 || ${matlabExitedInError} -ne 0 ]]; then
Index: /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries.sh
===================================================================
--- /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries.sh	(revision 25243)
+++ /issm/trunk-jpl/packagers/linux/package-issm-linux-binaries.sh	(revision 25244)
@@ -1,4 +1,9 @@
 #!/bin/bash
 
+
+# Script to test, package, and transfer distributable to ISSM Web site.
+# Corresponds with build generated by configuration in 
+# $ISSM_DIR/jenkins/ross-debian_linux-binaries.
+#
 
 ## Constants
@@ -11,4 +16,8 @@
 TARBALL_NAME="issm-linux"
 TARBALL="${TARBALL_NAME}.tar.gz"
+
+## Environment
+#
+export PATH="${ISSM_DIR}/bin:$(getconf PATH)" # Ensure that we pick up binaries from 'bin' directory rather than 'externalpackages'
 
 # Check if MATLAB exists
@@ -59,5 +68,5 @@
 # Check that MATLAB did not exit in error
 matlabExitCode=`echo $?`
-matlabExitedInError=`grep -E "Activation cannot proceed|license" matlab.log | wc -l`
+matlabExitedInError=`grep -E "Activation cannot proceed|license|Error" matlab.log | wc -l`
 
 if [[ ${matlabExitCode} -ne 0 || ${matlabExitedInError} -ne 0 ]]; then
Index: /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-solid_earth.sh
===================================================================
--- /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-solid_earth.sh	(revision 25244)
+++ /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-solid_earth.sh	(revision 25244)
@@ -0,0 +1,175 @@
+#!/bin/bash
+
+
+# Script to test, package, and transfer distributable to ISSM Web site.
+# Corresponds with build generated by configuration in 
+# $ISSM_DIR/jenkins/pine_island-mac-binaries-solid_earth.
+#
+
+## Constants
+#
+MATLAB_NROPTIONS="'benchmark','slr'"
+MATLAB_PATH="/Applications/MATLAB_R2018a.app"
+PACKAGE="ISSM-Solid_Earth" # Name of directory to copy distributable files to
+PYTHON_NROPTIONS="--benchmark slr"
+TARBALL_NAME="issm-linux-solid_earth"
+TARBALL="${TARBALL_NAME}.tar.gz"
+
+## Environment
+#
+export PATH="${ISSM_DIR}/bin:$(getconf PATH)" # Ensure that we pick up binaries from 'bin' directory rather than 'externalpackages'
+
+# Check if MATLAB exists
+if ! [ -d ${MATLAB_PATH} ]; then
+	echo "${MATLAB_PATH} does not point to a MATLAB installation! Please modify MATLAB_PATH variable in $(basename $0) and try again."
+	exit 1
+fi
+
+# Clean up from previous packaging
+echo "Cleaning up existing assets"
+cd ${ISSM_DIR}
+rm -rf ${PACKAGE}
+mkdir ${PACKAGE}
+
+# Add/modify required binaries
+cd ${ISSM_DIR}/bin
+
+echo "Modifying generic"
+cat generic_static.m | sed -e "s/generic_static/generic/g" > generic.m
+cat generic_static.py | sed -e "s/generic_static/generic/g" > generic.py
+
+echo "Moving MPICH binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec ]; then
+	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/mpiexec .
+	cp ${ISSM_DIR}/externalpackages/petsc/install/bin/hydra_pmi_proxy .
+elif [ -f ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec ]; then
+	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/mpiexec .
+	cp ${ISSM_DIR}/externalpackages/mpich/install/bin/hydra_pmi_proxy .
+else
+	echo "MPICH not found"
+	exit 1
+fi
+
+echo "Moving GDAL binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gdal/install/bin/gdal-config ]; then
+	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdalsrsinfo .
+	cp ${ISSM_DIR}/externalpackages/gdal/install/bin/gdaltransform .
+else
+	echo "GDAL not found"
+	exit 1
+fi
+
+echo "Moving GMT binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt-config ]; then
+	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmt .
+	cp ${ISSM_DIR}/externalpackages/gmt/install/bin/gmtselect .
+else
+	echo "GMT not found"
+	exit 1
+fi
+
+echo "Moving Gmsh binaries to bin/"
+if [ -f ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh ]; then
+	cp ${ISSM_DIR}/externalpackages/gmsh/install/bin/gmsh .
+else
+	echo "Gmsh not found"
+	exit 1
+fi
+
+# Run tests
+echo "Running tests"
+cd ${ISSM_DIR}/test/NightlyRun
+
+# Check that MATLAB tests run
+echo "Running MATLAB tests"
+
+rm matlab.log 2> /dev/null
+
+# Run MATLAB tests redirecting output to logfile and suppressing output to console
+${MATLAB_PATH}/bin/matlab -nojvm -nosplash -r "try, addpath ${ISSM_DIR}/bin ${ISSM_DIR}/lib; runme(${MATLAB_NROPTIONS}); exit; catch me,fprintf('%s',getReport(me)); exit; end" -logfile matlab.log &> /dev/null
+
+# Check that MATLAB did not exit in error
+matlabExitCode=`echo $?`
+matlabExitedInError=`grep -E "Activation cannot proceed|license|Error" matlab.log | wc -l`
+
+if [[ ${matlabExitCode} -ne 0 || ${matlabExitedInError} -ne 0 ]]; then
+	echo "----------MATLAB exited in error!----------"
+	cat matlab.log
+	echo "-----------End of matlab.log-----------"
+
+	# Clean up execution directory
+	rm -rf ${ISSM_DIR}/execution/*
+
+	exit 1
+fi
+
+# Check that all MATLAB tests passed
+numMatlabTestsFailed=`cat matlab.log | grep -c -e "FAILED|ERROR"`
+
+if [[ ${numMatlabTestsFailed} -ne 0 ]]; then
+	echo "One or more MATLAB tests FAILED"
+	exit 1;
+else
+	echo "All MATLAB tests PASSED"
+fi
+
+# Check that Python tests run
+echo "Running Python tests"
+
+export PATH="${PATH}:${ISSM_DIR}/bin"
+export PYTHONPATH="${ISSM_DIR}/src/m/dev"
+export PYTHONSTARTUP="${PYTHONPATH}/devpath.py"
+export PYTHONUNBUFFERED=1 # We don't want Python to buffer output, otherwise issm.exe output is not captured
+
+rm python.log 2> /dev/null
+./runme.py ${PYTHON_NROPTIONS} &> python.log 2>&1
+
+# Check that Python did not exit in error
+pythonExitCode=`echo $?`
+pythonExitedInError=`grep -E "Error|Traceback|bad interpreter" python.log | wc -l`
+
+if [[ ${pythonExitCode} -ne 0 || ${pythonExitedInError} -ne 0 ]]; then
+	echo "----------Python exited in error!----------"
+	cat python.log
+	echo "-----------End of python.log-----------"
+
+	# Clean up execution directory
+	rm -rf ${ISSM_DIR}/execution/*
+
+	exit 1
+fi
+
+# Check that all Python tests passed
+numPythonTestsFailed=`cat python.log | grep -c -e "FAILED|ERROR"`
+
+if [[ ${numPythonTestsFailed} -ne 0 ]]; then
+	echo "One or more Python tests FAILED"
+	exit 1
+else
+	echo "All Python tests PASSED"
+fi
+
+# Create tarball
+cd ${ISSM_DIR}
+rm -f ${TARBALL}
+svn cleanup --remove-ignored --remove-unversioned test # Clean up test directory (before copying to package)
+echo "Copying assets to package: ${PACKAGE}"
+cp -rf bin examples lib scripts test ${PACKAGE}/
+echo "Cleaning up unneeded/unwanted files"
+python -m compileall ${PACKAGE}/bin # Precompile all Python scripts to bytecode
+rm -f ${PACKAGE}/bin/*.py # Remove all Python scripts
+rm -f ${PACKAGE}/bin/generic_static.* # Remove static versions of generic cluster classes
+rm -f ${PACKAGE}/lib/*.a # Remove static libraries from package
+rm -f ${PACKAGE}/lib/*.la # Remove libtool libraries from package
+rm -f ${PACKAGE}/test/SandBox # Remove testing sandbox from package
+echo "Creating tarball: ${TARBALL_NAME}"
+tar -czf ${TARBALL} ${PACKAGE}
+ls -lah ${ISSM_DIR}/${TARBALL}
+
+echo "Transferring binaries to ISSM Web site"
+scp -i ~/.ssh/pine_island_to_ross ${TARBALL} jenkins@ross.ics.uci.edu:/var/www/html/${TARBALL}
+
+if [ $? -ne 0 ]; then
+	echo "FAILED: Manually check connection"
+	exit 1
+fi
Index: /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-with_dakota.sh
===================================================================
--- /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-with_dakota.sh	(revision 25243)
+++ /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries-with_dakota.sh	(revision 25244)
@@ -1,4 +1,9 @@
 #!/bin/bash
 
+
+# Script to test, package, and transfer distributable to ISSM Web site.
+# Corresponds with build generated by configuration in 
+# $ISSM_DIR/jenkins/pine_island-mac-binaries-with_dakota.
+#
 
 ## Constants
@@ -10,4 +15,8 @@
 TARBALL_NAME="issm-mac-with_dakota"
 TARBALL="${TARBALL_NAME}.tar.gz"
+
+## Environment
+#
+export PATH="${ISSM_DIR}/bin:$(getconf PATH)" # Ensure that we pick up binaries from 'bin' directory rather than 'externalpackages'
 
 # Check if MATLAB exists
@@ -56,5 +65,5 @@
 # Check that MATLAB did not exit in error
 matlabExitCode=`echo $?`
-matlabExitedInError=`grep -E "Activation cannot proceed|license" matlab.log | wc -l`
+matlabExitedInError=`grep -E "Activation cannot proceed|license|Error" matlab.log | wc -l`
 
 if [[ ${matlabExitCode} -ne 0 || ${matlabExitedInError} -ne 0 ]]; then
Index: /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries.sh
===================================================================
--- /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries.sh	(revision 25243)
+++ /issm/trunk-jpl/packagers/mac/package-issm-mac-binaries.sh	(revision 25244)
@@ -1,4 +1,9 @@
 #!/bin/bash
 
+
+# Script to test, package, and transfer distributable to ISSM Web site.
+# Corresponds with build generated by configuration in 
+# $ISSM_DIR/jenkins/pine_island-mac-binaries.
+#
 
 ## Constants
@@ -9,4 +14,8 @@
 TARBALL_NAME="issm-mac"
 TARBALL="${TARBALL_NAME}.tar.gz"
+
+## Environment
+#
+export PATH="${ISSM_DIR}/bin:$(getconf PATH)" # Ensure that we pick up binaries from 'bin' directory rather than 'externalpackages'
 
 # Check if MATLAB exists
@@ -54,5 +63,5 @@
 # Check that MATLAB did not exit in error
 matlabExitCode=`echo $?`
-matlabExitedInError=`grep -E "Activation cannot proceed|license" matlab.log | wc -l`
+matlabExitedInError=`grep -E "Activation cannot proceed|license|Error" matlab.log | wc -l`
 
 if [[ ${matlabExitCode} -ne 0 || ${matlabExitedInError} -ne 0 ]]; then
Index: /issm/trunk-jpl/src/m/boundaryconditions/getlovenumbers.m
===================================================================
--- /issm/trunk-jpl/src/m/boundaryconditions/getlovenumbers.m	(revision 25243)
+++ /issm/trunk-jpl/src/m/boundaryconditions/getlovenumbers.m	(revision 25244)
@@ -37,6 +37,6 @@
 
 	love_numbers=[...
-     0           0          0          0          0          0          0
-	-1.28740059 -1.00000000 -0.89858519 1.28740059 0.42519882 0.89858519 0.00000000
+     0           0          0          0          0          0          0;
+	-1.28740059 -1.00000000 -0.89858519 1.28740059 0.42519882 0.89858519 0.00000000;
 	-1.00025365 -0.30922675 0.02060926 1.69102690 0.46358648 0.67016399 0.61829668;
 	-1.06243501 -0.19927948 0.06801636 1.86315553 0.55741597 0.73270416 0.56270589;
