3de71c8
diff --git var/lib/mock/fedora-rawhide-x86_64/root/builddir/build/BUILD/bionetgen-BioNetGen-2.3.0/bng2/Network3/src/network.cpp.orig var/lib/mock/fedora-rawhide-x86_64/root/builddir/build/BUILD/bionetgen-BioNetGen-2.3.0/bng2/Network3/src/network.cpp
3de71c8
index a53a138ae7..b437797ca9 100644
3de71c8
--- bionetgen-BioNetGen-2.3.0/bng2/Network3/src/network.cpp.orig
3de71c8
+++ bionetgen-BioNetGen-2.3.0/bng2/Network3/src/network.cpp
3de71c8
@@ -2627,14 +2627,17 @@ int print_rates_network(FILE* out, int discrete) {
3de71c8
 
3de71c8
 #include "sundials/sundials_types.h"
3de71c8
 #include "cvode/cvode.h"
3de71c8
+#include "cvode/cvode_direct.h"
3de71c8
 #include "nvector/nvector_serial.h"
3de71c8
 
3de71c8
-#include "cvode/cvode_dense.h"
3de71c8
 #include "sundials/sundials_dense.h"
3de71c8
 #include "sundials/sundials_direct.h"
3de71c8
+#include "sunmatrix/sunmatrix_sparse.h"
3de71c8
+
3de71c8
+#include "sunlinsol/sunlinsol_dense.h"
3de71c8
+#include "sunlinsol/sunlinsol_spgmr.h"
3de71c8
+
3de71c8
 
3de71c8
-#include "cvode/cvode_spgmr.h"
3de71c8
-#include "sundials/sundials_spgmr.h"
3de71c8
 
3de71c8
 typedef struct jacnode* jacnode_ref;
3de71c8
 
3de71c8
@@ -2986,6 +2989,8 @@ int propagate_cvode_network(double* t, double delta_t, double* n_steps, double*
3de71c8
 	static N_Vector y;
3de71c8
 	static void* cvode_mem;
3de71c8
 	static int initflag = 0;
3de71c8
+	static SUNMatrix A;
3de71c8
+	static SUNLinearSolver LS;
3de71c8
 	long int cvode_maxnumsteps = 2000;
3de71c8
 
3de71c8
 	/* Initializations at the beginning of new propagation */
3de71c8
@@ -3018,18 +3023,26 @@ int propagate_cvode_network(double* t, double delta_t, double* n_steps, double*
3de71c8
 		 * Jacobian vs finite difference
3de71c8
 		 */
3de71c8
 		if (SOLVER == GMRES || SOLVER == GMRES_J) {
3de71c8
-			CVSpgmr(cvode_mem, PREC_NONE, 0);
3de71c8
 			if (SOLVER == GMRES_J) {
3de71c8
 				cout << "ERROR: Jacobian no longer supported for GMRES solver" << endl;
3de71c8
 				exit(1);
3de71c8
 			}
3de71c8
+
3de71c8
+			//			CVSpgmr(cvode_mem, PREC_NONE, 0);
3de71c8
+			A = SUNSparseMatrix(n_species, n_species, 0, CSC_MAT);
3de71c8
+			LS = SUNSPGMR(y, PREC_NONE, 0);
3de71c8
+			CVDlsSetLinearSolver(cvode_mem, LS, A);
3de71c8
 		}
3de71c8
 		else if (SOLVER == DENSE || SOLVER == DENSE_J) {
3de71c8
-			CVDense(cvode_mem, n_species);
3de71c8
 			if (SOLVER == DENSE_J) {
3de71c8
 				cout << "ERROR: Jacobian no longer supported for dense solver" << endl;
3de71c8
 				exit(1);
3de71c8
 			}
3de71c8
+
3de71c8
+			//		  CVDense(cvode_mem, n_species);
3de71c8
+			A = SUNDenseMatrix(n_species, n_species);
3de71c8
+			LS = SUNDenseLinearSolver(y, A);
3de71c8
+			CVDlsSetLinearSolver(cvode_mem, LS, A);
3de71c8
 		}
3de71c8
 		else {
3de71c8
 			fprintf(stderr, "ERROR: Invalid CVODE solver.\n");