On Mon, 22 Nov 2010, Derek Gaston wrote:

Getting a compile error after updating libMesh:

Compiling C++ (in optimized mode) src/solvers/petsc_linear_solver.C...
libmesh/include/solvers/petsc_linear_solver.h: In member function ‘void 
libMesh::PetscLinearSolver<T>::_create_complement_is(const 
libMesh::NumericVector<T>&) [with T = double]’:
src/solvers/petsc_linear_solver.C:1579:   instantiated from here
libmesh/include/solvers/petsc_linear_solver.h:360: error: ‘ISComplement’ was 
not declared in this scope
make: *** [src/solvers/petsc_linear_solver.i386-apple-darwin10.5.0.opt.o] Error 
1


It appears that the function ISComplement() does not exist in petsc 2.3.3. I'm not familiar enough with what this code is supposed to be doing to be able to say if it's possible to achieve with 2.3.3 or if it should just be ifdef'd out. I assume it has something to do with solving on partial domains?

Yes, so it is my fault. I suggest the attached patch, which calls libmesh_not_implemented() if this part of code is reached and the PETSc version is below 3.0.0. Can you try that out? Jed, could you please comment on the exact PETSc version number in which ISComplement() has been invented?

Best Regards,

Tim

--
Dr. Tim Kroeger
CeVis -- Center of Complex Systems and Visualization
University of Bremen              [email protected]
Universitaetsallee 29             [email protected]
D-28359 Bremen                             Phone +49-421-218-7710
Germany                                    Fax   +49-421-218-4236
Index: include/solvers/petsc_linear_solver.h
===================================================================
--- include/solvers/petsc_linear_solver.h       (Revision 4114)
+++ include/solvers/petsc_linear_solver.h       (Arbeitskopie)
@@ -351,6 +351,9 @@
 PetscLinearSolver<T>::_create_complement_is (const NumericVector<T> &vec_in)
 {
   libmesh_assert(_restrict_solve_to_is!=NULL);
+#if PETSC_VERSION_LESS_THAN(3,0,0)
+  libmesh_not_implemented();
+#else
   if(_restrict_solve_to_is_complement==NULL)
     {
       int ierr = ISComplement(_restrict_solve_to_is,
@@ -359,6 +362,7 @@
                              &_restrict_solve_to_is_complement);
       CHKERRABORT(libMesh::COMM_WORLD,ierr);
     }
+#endif
 }
 
 
------------------------------------------------------------------------------
Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
Tap into the largest installed PC base & get more eyes on your game by
optimizing for Intel(R) Graphics Technology. Get started today with the
Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs.
http://p.sf.net/sfu/intelisp-dev2dev
_______________________________________________
Libmesh-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to