Index: /issm/trunk-jpl/externalpackages/petsc/install-3.21-linux.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/petsc/install-3.21-linux.sh	(revision 28221)
+++ /issm/trunk-jpl/externalpackages/petsc/install-3.21-linux.sh	(revision 28221)
@@ -0,0 +1,46 @@
+#!/bin/bash
+set -eu
+
+## Constants
+#
+VER="3.21.0"
+
+PETSC_DIR="${ISSM_DIR}/externalpackages/petsc/src" # DO NOT CHANGE THIS
+PREFIX="${ISSM_DIR}/externalpackages/petsc/install" # Set to location where external package should be installed
+
+# Download source
+$ISSM_DIR/scripts/DownloadExternalPackage.sh "https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-${VER}.tar.gz" "petsc-${VER}.tar.gz"
+
+# Unpack source
+tar -zxvf petsc-${VER}.tar.gz
+
+# Cleanup
+rm -rf ${PREFIX} ${PETSC_DIR}
+mkdir -p ${PETSC_DIR}
+
+# Move source to $PETSC_DIR
+mv petsc-${VER}/* ${PETSC_DIR}
+rm -rf petsc-${VER}
+
+# Configure
+cd ${PETSC_DIR}
+./configure \
+	--prefix="${PREFIX}" \
+	--PETSC_DIR="${PETSC_DIR}" \
+	--CFLAGS="-g -O2" --CXXFLAGS="-g -O2" --FFLAGS="-g -O2" \
+	--with-debugging=0 \
+	--with-valgrind=0 \
+	--with-x=0 \
+	--with-ssl=0 \
+	--with-pic=1 \
+	--download-fblaslapack=1 \
+	--download-metis=1 \
+	--download-mpich=1 \
+	--download-mumps=1 \
+	--download-parmetis=1 \
+	--download-scalapack=1 \
+	--download-zlib=1
+
+# Compile and install
+make
+make install
Index: /issm/trunk-jpl/src/c/cores/controltao_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/controltao_core.cpp	(revision 28220)
+++ /issm/trunk-jpl/src/c/cores/controltao_core.cpp	(revision 28221)
@@ -83,5 +83,9 @@
 
 	/*Prepare all TAO parameters*/
+	#if PETSC_VERSION_LT(3,21,0)
 	TaoSetMonitor(tao,IssmMonitor,&user,NULL);
+	#else
+	TaoMonitorSet(tao,IssmMonitor,&user,NULL);
+	#endif
 	TaoSetMaximumFunctionEvaluations(tao,maxiter);
 	TaoSetMaximumIterations(tao,maxsteps);
