Index: /issm/trunk-jpl/externalpackages/chaco/configs/win/msys2/mingw64/src/code/Makefile
===================================================================
--- /issm/trunk-jpl/externalpackages/chaco/configs/win/msys2/mingw64/src/code/Makefile	(revision 26155)
+++ /issm/trunk-jpl/externalpackages/chaco/configs/win/msys2/mingw64/src/code/Makefile	(revision 26156)
@@ -1,16 +1,14 @@
-ifeq "$(origin AR)" "undefined"
-	AR = ar
-endif
-
-ifeq "$(origin RANLIB)" "undefined"
-	RANLIB = ranlib
-endif
-
 DEST_DIR = 	../exec
 DEST=		${DEST_DIR}/chaco
 CC = 		gcc
-IFLAG =		-Imain
-CFLAGS =	-fpic -fno-omit-frame-pointer -pthread -fexceptions -g -I/mingw64/x86_64-w64-mingw32/include -Wno-implicit-function-declaration
+IFLAG =		-Imain -I/mingw64/x86_64-w64-mingw32/include
+CFLAGS =	-fPIC -fno-omit-frame-pointer -pthread -fexceptions -g -Wno-implicit-function-declaration -D_MSYS2_
 OFLAGS =	-O2
+#AR =             /usr/ccs/bin/ar rcv   # for solaris 2
+#AR =             /usr/bin/ar rcv
+AR =             ar cr
+#RANLIB =         /usr/ccs/bin/ranlib   # for solaris 2
+#RANLIB =         /usr/bin/ranlib
+RANLIB =         ranlib
 
 FILES.c=	main/user_params.c main/interface.c main/main.c \
@@ -96,5 +94,89 @@
                 util/vecscale.c 
 
+
+FILESMINUSBLAS.c=	main/user_params.c main/interface.c main/main.c \
+		submain/balance.c submain/divide.c submain/submain.c \
+		input/input_assign.c \
+		input/check_input.c input/input.c input/input_geom.c \
+		input/input_graph.c input/read_params.c input/reflect_input.c \
+		input/read_val.c \
+		graph/check_graph.c graph/free_graph.c \
+		graph/reformat.c graph/subgraph.c graph/graph_out.c \
+		inertial/eigenvec2.c inertial/eigenvec3.c inertial/inertial.c \
+		inertial/inertial1d.c inertial/inertial2d.c \
+		inertial/inertial3d.c inertial/make_subgeom.c \
+		klspiff/buckets.c klspiff/buckets_bi.c klspiff/buckets1.c \
+		klspiff/bilistops.c klspiff/coarsen_kl.c klspiff/count_weights.c \
+		klspiff/compress_ewgts.c klspiff/kl_init.c klspiff/kl_output.c \
+		klspiff/klspiff.c klspiff/make_bndy_list.c \
+		klspiff/make_kl_list.c klspiff/nway_kl.c \
+		klvspiff/bpm_improve.c klvspiff/bucketsv.c \
+		klvspiff/clear_dvals.c klvspiff/coarsen_klv.c \
+		klvspiff/countup_vtx_sep.c klvspiff/find_bndy.c klvspiff/flow.c \
+		klvspiff/klv_init.c klvspiff/klvspiff.c klvspiff/make_bpgraph.c \
+		klvspiff/make_sep_list.c klvspiff/matching.c klvspiff/nway_klv.c \
+		klvspiff/flatten.c \
+		coarsen/coarsen.c coarsen/interpolate.c coarsen/makefgraph.c \
+		coarsen/makeccoords.c \
+		coarsen/coarsen1.c coarsen/makev2cv.c \
+		coarsen/maxmatch.c coarsen/maxmatch1.c coarsen/maxmatch2.c \
+		coarsen/maxmatch3.c coarsen/maxmatch4.c coarsen/maxmatch5.c \
+		connect/add_edges.c connect/connected.c connect/find_edges.c \
+		eigen/bidir.c eigen/bisect.c eigen/checkeig.c \
+		eigen/checkeig_ext.c \
+		eigen/checkorth.c eigen/cksturmcnt.c eigen/mkeigvecs.c\
+		eigen/eigensolve.c eigen/get_extval.c eigen/get_ritzvals.c \
+		eigen/lanczos_FO.c eigen/lanczos_SO.c eigen/lanczos_SO_float.c \
+		eigen/lanczos_ext.c eigen/lanczos_ext_float.c eigen/lanc_seconds.c\
+		eigen/lanpause.c eigen/makeorthlnk.c eigen/mkscanlist.c \
+		eigen/orthog1.c eigen/orthogonalize.c eigen/orthogvec.c \
+		eigen/ql.c eigen/rqi.c eigen/rqi_ext.c eigen/scale_diag.c \
+		eigen/scanmax.c eigen/scanmin.c eigen/solistout.c \
+                eigen/sorthog.c eigen/splarax.c eigen/sturmcnt.c \
+		eigen/Tevec.c eigen/tri_solve.c eigen/warnings.c \
+		symmlq/aprod.c symmlq/msolve.c symmlq/pow_dd.c \
+		symmlq/symmlq.c  \
+		tinvit/tinvit.c tinvit/pythag.c tinvit/epslon.c \
+		optimize/determinant.c optimize/func2d.c \
+		optimize/func3d.c optimize/opt2d.c optimize/opt3d.c \
+		assign/assign.c assign/assign_out.c assign/mapper.c \
+		assign/median.c assign/merge_assign.c \
+		assign/rec_median.c assign/rotate.c assign/y2x.c \
+		bpmatch/checkbp.c bpmatch/inits2d.c bpmatch/inits3d.c \
+		bpmatch/genvals2d.c bpmatch/genvals3d.c bpmatch/map2d.c \
+		bpmatch/map3d.c bpmatch/movevtxs.c \
+		bpmatch/sorts2d.c bpmatch/sorts3d.c \
+		refine_map/compute_cube_edata.c refine_map/compute_cube_vdata.c \
+		refine_map/refine_cube.c refine_map/update_cube_edata.c \
+		refine_map/update_cube_vdata.c refine_map/find_edge_cube.c \
+		refine_map/init_cube_edata.c refine_map/compute_mesh_edata.c \
+		refine_map/compute_mesh_vdata.c refine_map/find_edge_mesh.c \
+		refine_map/init_mesh_edata.c refine_map/refine_mesh.c \
+		refine_map/update_mesh_edata.c refine_map/update_mesh_vdata.c \
+		refine_map/refine_map.c refine_map/make_comm_graph.c \
+		refine_part/refine_part.c refine_part/kl_refine.c \
+		refine_part/make_maps_ref.c refine_part/make_terms_ref.c \
+		internal/force_internal.c internal/improve_internal.c \
+		internal/check_internal.c \
+		misc/define_subcubes.c misc/define_submeshes.c \
+		misc/divide_procs.c misc/merge_goals.c misc/make_term_props.c \
+		misc/count.c misc/countup.c misc/countup_cube.c \
+		misc/countup_mesh.c misc/make_subgoal.c \
+		misc/find_maxdeg.c misc/make_maps.c misc/make_setlists.c \
+		misc/sequence.c misc/perturb.c misc/simple_part.c \
+		misc/time_kernels.c misc/timing.c \
+		util/affirm.c util/array_alloc_2D.c util/bit_reverse.c \
+		util/checkpnt.c util/cpvec.c util/dot.c \
+		util/doubleout.c util/input_int.c util/gray.c \
+		util/machine_params.c util/makevwsqrt.c util/mkvec.c util/norm.c \
+                util/normalize.c util/mergesort.c \
+                util/randomize.c util/smalloc.c util/bail.c \
+		util/scadd.c util/seconds.c util/setvec.c util/shell_sort.c \
+		util/strout.c util/tri_prod.c util/true_or_false.c \
+		util/update.c  util/vecout.c util/vecran.c \
+                util/vecscale.c 
+
 FILES.o=	$(FILES.c:.c=.o) 
+FILESMINUSBLAS.o=	$(FILESMINUSBLAS.c:.c=.o) 
 
 
@@ -103,8 +185,8 @@
 
 chaco.a:	${FILES.o}
-		${AR} cr $@ ${FILES.o} ; ${RANLIB} $@
+		${AR} $@ ${FILES.o} ; ${RANLIB} $@
 
 chacominusblas.a:	${FILESMINUSBLAS.o}
-		${AR} cr $@ ${FILESMINUSBLAS.o} ; ${RANLIB} $@
+		${AR} $@ ${FILESMINUSBLAS.o} ; ${RANLIB} $@
 
 lint:
Index: /issm/trunk-jpl/externalpackages/chaco/configs/win/msys2/mingw64/src/code/util/seconds.c
===================================================================
--- /issm/trunk-jpl/externalpackages/chaco/configs/win/msys2/mingw64/src/code/util/seconds.c	(revision 26155)
+++ /issm/trunk-jpl/externalpackages/chaco/configs/win/msys2/mingw64/src/code/util/seconds.c	(revision 26156)
@@ -3,21 +3,10 @@
  * contract DE-AC04-76DP00789 and is copyrighted by Sandia Corporation. */
 
-/**
- * NOTE: Under MSYS2 MinGW, we do not want to have to depend on the MSYS2 
- *		 runtime for our distributable packages. Unfortunately, sys/resource.h 
- *		 is not currently available for MinGW (standalone) targets under MSYS2. 
- *		 this further means that,
- *
- *			-I/mingw64/x86_64-w64-mingw32/include
- *
- *		 should be included in CFLAGS, and that,
- *
- *			-I/usr/include
- *
- *		 should be avoided.
- */
-//#include   <sys/time.h>
-//#include   <sys/resource.h>
+#if defined(_INTEL_WIN_) || defined(_MSYS2_)
 #include   <time.h>
+#else
+#include   <sys/time.h>
+#include   <sys/resource.h>
+#endif
 
 double    seconds()
@@ -25,15 +14,15 @@
     double    curtime;
 
-// #ifdef RUSAGE_SELF
+#ifdef RUSAGE_SELF
 
-// /* This timer is faster and more robust (if it exists). */
-//     struct rusage rusage;
-//     int getrusage();
+/* This timer is faster and more robust (if it exists). */
+    struct rusage rusage;
+    int getrusage();
  
-//     getrusage(RUSAGE_SELF, &rusage);
-//     curtime = ((rusage.ru_utime.tv_sec + rusage.ru_stime.tv_sec) +
-// 	    1.0e-6 * (rusage.ru_utime.tv_usec + rusage.ru_stime.tv_usec));
+    getrusage(RUSAGE_SELF, &rusage);
+    curtime = ((rusage.ru_utime.tv_sec + rusage.ru_stime.tv_sec) +
+	    1.0e-6 * (rusage.ru_utime.tv_usec + rusage.ru_stime.tv_usec));
 
-// #else
+#else
 
 /* ANSI timer, but lower resolution & wraps around after ~36 minutes. */
@@ -41,5 +30,5 @@
     curtime = clock()/((double) CLOCKS_PER_SEC);
 
-// #endif
+#endif
 
     return (curtime);
Index: /issm/trunk-jpl/externalpackages/semic/install.sh
===================================================================
--- /issm/trunk-jpl/externalpackages/semic/install.sh	(revision 26155)
+++ /issm/trunk-jpl/externalpackages/semic/install.sh	(revision 26156)
@@ -9,5 +9,5 @@
 # Cleanup
 rm -rf ${PREFIX} src
-mkdir -p ${PREFIX}
+mkdir -p ${PREFIX}/lib
 
 # Download source
@@ -35,5 +35,5 @@
 FFLAGS=$FFLAGS
 install: libutils.\$(LIB_EXT)
-	cp libutils.\$(LIB_EXT) ${PREFIX}
+	cp libutils.\$(LIB_EXT) ${PREFIX}/lib
 	cp utils.mod ${PREFIX}
 OBJECTS= utils.o
@@ -59,5 +59,5 @@
 FFLAGS=$FFLAGS
 install: libsurface_physics.\$(LIB_EXT)
-	cp libsurface_physics.\$(LIB_EXT) ${PREFIX}
+	cp libsurface_physics.\$(LIB_EXT) ${PREFIX}/lib
 	cp surface_physics.mod ${PREFIX}
 OBJECTS= surface_physics.o
Index: /issm/trunk-jpl/jenkins/ross-win-msys2-mingw-msmpi-basic
===================================================================
--- /issm/trunk-jpl/jenkins/ross-win-msys2-mingw-msmpi-basic	(revision 26155)
+++ /issm/trunk-jpl/jenkins/ross-win-msys2-mingw-msmpi-basic	(revision 26156)
@@ -63,4 +63,7 @@
 # See documentation in test/NightlyRun/runme.* for more information
 #
-MATLAB_NROPTIONS="'id',[101,102,201,202]"
+# NOTE:
+# - test701 is skipped because it uses full Stokes equations
+#
+MATLAB_NROPTIONS="'exclude',[IdFromString('Dakota'),435,701,702,703]"
 PYTHON_NROPTIONS=""
Index: /issm/trunk-jpl/m4/issm_options.m4
===================================================================
--- /issm/trunk-jpl/m4/issm_options.m4	(revision 26155)
+++ /issm/trunk-jpl/m4/issm_options.m4	(revision 26156)
@@ -320,4 +320,5 @@
 			AC_DEFINE([_HAVE_RESTRICT_], [1], [with restrict buffers])
 		elif test "${VENDOR}" == "win-msys2"; then
+			export CXXFLAGS="-D_MSYS2_"
 			export LDFLAGS="${LDFLAGS} -no-undefined"
 			export OSLIBS="-Wl,-L/mingw64/lib/gcc/x86_64-w64-mingw32/10.2.0 -Wl,-L/mingw64/x86_64-w64-mingw32/lib -Wl,-lstdc++ -Wl,-lgfortran -Wl,-lmingw32 -Wl,-lgcc_s -Wl,-lmoldname -Wl,-lmingwex -Wl,-lmsvcrt -Wl,-lm -Wl,-lpthread -Wl,-lshell32 -Wl,-luser32 -Wl,-lgdi32 -Wl,-luser32 -Wl,-ladvapi32 -Wl,-lkernel32 -Wl,-lquadmath -Wl,-lstdc++ -Wl,-lgcc"
@@ -901,6 +902,10 @@
 	dnl Chaco libraries and header files
 	if test "x${HAVE_CHACO}" == "xyes"; then
-		CHACOINCL=-I${CHACO_ROOT}/include
-		CHACOLIB="-L${CHACO_ROOT}/lib -lchacominusblas"
+		CHACOINCL="-I${CHACO_ROOT}/include"
+		if test "${IS_MSYS2}" == "yes"; then
+			CHACOLIB="-Wl,-L${CHACO_ROOT}/lib -Wl,-lchacominusblas"
+		else
+			CHACOLIB="-L${CHACO_ROOT}/lib -lchacominusblas"
+		fi
 		AC_DEFINE([_HAVE_CHACO_], [1], [with Chaco in ISSM src])
 		AC_SUBST([CHACOINCL])
@@ -1663,5 +1668,9 @@
 	dnl M1QN3 libraries and header files
 	if test "x${HAVE_M1QN3}" == "xyes"; then
-		M1QN3LIB="${M1QN3_ROOT}/libm1qn3.a ${M1QN3_ROOT}/libddot.a"
+		if test "${IS_MSYS2}" == "yes"; then
+			M1QN3LIB="-Wl,${M1QN3_ROOT}/libm1qn3.a -Wl,${M1QN3_ROOT}/libddot.a"
+		else
+			M1QN3LIB="${M1QN3_ROOT}/libm1qn3.a ${M1QN3_ROOT}/libddot.a"
+		fi
 		AC_DEFINE([_HAVE_M1QN3_], [1], [with M1QN3 in ISSM src])
 		AC_SUBST([M1QN3LIB])
@@ -2117,6 +2126,10 @@
 	if test "x${HAVE_SEMIC}" == "xyes"; then
 		SEMICINCL="-I${SEMIC_ROOT}"
+		if test "${IS_MSYS2}" == "yes"; then
+			SEMICLIB="-Wl,-L${SEMIC_ROOT}/lib -Wl,-lsurface_physics -Wl,-lutils"
+		else
+			SEMICLIB="-L${SEMIC_ROOT}/lib -lsurface_physics -lutils"
+		fi
 		AC_DEFINE([_HAVE_SEMIC_], [1], [with SEMIC in ISSM src])
-		SEMICLIB="-L${SEMIC_ROOT} -lsurface_physics -lutils"
 		AC_SUBST([SEMICLIB])
 		AC_SUBST([SEMICINCL])
Index: /issm/trunk-jpl/src/c/Makefile.am
===================================================================
--- /issm/trunk-jpl/src/c/Makefile.am	(revision 26155)
+++ /issm/trunk-jpl/src/c/Makefile.am	(revision 26156)
@@ -707,5 +707,5 @@
 if !WINDOWS
 if !STANDALONE_LIBRARIES
-libISSMCore_la_LIBADD = $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(TAOLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(CHACOLIB) $(SCOTCHLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(ADOLCLIB) $(AMPILIB) $(ADJOINTMPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(OSLIBS)
+libISSMCore_la_LIBADD = $(CHACOLIB) $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(HDF5LIB) $(TAOLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(SCOTCHLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(ADOLCLIB) $(AMPILIB) $(ADJOINTMPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(OSLIBS)
 if FORTRAN
 libISSMCore_la_LIBADD += $(FLIBS) $(FORTRANLIB)
@@ -733,5 +733,5 @@
 libISSMModules_la_LIBADD = ./libISSMCore.la
 else
-libISSMModules_la_LIBADD = ./libISSMCore.la $(TRIANGLELIB) $(CHACOLIB)
+libISSMModules_la_LIBADD = ./libISSMCore.la $(TRIANGLELIB) $(CHACOLIB) $(BLASLAPACKLIB) $(OSLIBS)
 endif
 endif
@@ -823,5 +823,5 @@
 
 #External packages
-LDADD += $(DAKOTALIB) $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(NEOPZLIB) $(TAOLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(BLACSLIB) $(HDF5LIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(CHACOLIB) $(SCOTCHLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(AMPILIB) $(ADJOINTMPILIB) $(ADOLCLIB) $(MPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(PROJLIB) $(ESMFLIB) $(OSLIBS)
+LDADD += $(CHACOLIB) $(DAKOTALIB) $(PETSCLIB) $(MUMPSLIB) $(SCALAPACKLIB) $(BLASLAPACKLIB) $(PARMETISLIB) $(METISLIB) $(NEOPZLIB) $(TAOLIB) $(M1QN3LIB) $(SEMICLIB) $(PLAPACKLIB) $(SUPERLULIB) $(SPOOLESLIB) $(BLACSLIB) $(HDF5LIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(SCOTCHLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(GSLLIB) $(AMPILIB) $(ADJOINTMPILIB) $(ADOLCLIB) $(MPILIB) $(METEOIOLIB) $(SNOWPACKLIB) $(PROJLIB) $(ESMFLIB) $(OSLIBS)
 
 if FORTRAN
Index: /issm/trunk-jpl/src/c/modules/Chacox/chaco_seconds.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/Chacox/chaco_seconds.cpp	(revision 26155)
+++ /issm/trunk-jpl/src/c/modules/Chacox/chaco_seconds.cpp	(revision 26156)
@@ -1,5 +1,5 @@
 /*This is needed, because the chaco library defines a "C" function seconds that conflicts with the Metis version.: */
 
-#ifdef _INTEL_WIN_
+#if defined(_INTEL_WIN_) || defined(_MSYS2_)
 #include   <time.h>
 #else
Index: /issm/trunk-jpl/test/NightlyRun/IdFromString.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/IdFromString.m	(revision 26155)
+++ /issm/trunk-jpl/test/NightlyRun/IdFromString.m	(revision 26156)
@@ -20,7 +20,12 @@
 %Grep string
 if strcmp(string,'*'),
-	[dummy ids_raw]=system(['find ./ -name "test[0-9]*.m" | xargs grep "%Test Name:" | sed -e "s/test/ /g" -e "s/\.m:/ /g" | awk {''print $2''}']);
+	[dummy ids_raw]=system(['find ./ -name "test[0-9]*.m" | xargs grep "%Test Name:" | sed -e "s/test/ /g" -e "s/\.m:/ /g" | cut -d" " -f 2']);
 else
-	[dummy ids_raw]=system(['find ./ -name "test[0-9]*.m" | xargs grep "%Test Name:" | grep ' string ' | sed -e "s/test/ /g" -e "s/\.m:/ /g" | awk {''print $2''}']);
+	[dummy ids_raw]=system(['find ./ -name "test[0-9]*.m" | xargs grep "%Test Name:" | grep ' string ' | sed -e "s/test/ /g" -e "s/\.m:/ /g" | cut -d" " -f 2']);
+end
+
+%Check for error
+if dummy~=0,
+	error(['system call failed:' newline ids_raw]);
 end
 
