[cig-commits] r6506 - short/3D/PyLith/trunk/modulesrc/solver
knepley at geodynamics.org
knepley at geodynamics.org
Tue Apr 3 21:58:23 PDT 2007
Author: knepley
Date: 2007-04-03 21:58:23 -0700 (Tue, 03 Apr 2007)
New Revision: 6506
Modified:
short/3D/PyLith/trunk/modulesrc/solver/solver.pyxe.src
Log:
Fixed compile errors in solver
Modified: short/3D/PyLith/trunk/modulesrc/solver/solver.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/modulesrc/solver/solver.pyxe.src 2007-04-04 03:43:07 UTC (rev 6505)
+++ short/3D/PyLith/trunk/modulesrc/solver/solver.pyxe.src 2007-04-04 04:58:23 UTC (rev 6506)
@@ -11,8 +11,8 @@
#
#header{
+#include <petscmesh.h>
#include <petscksp.h>
-#include <Mesh.hh>
#include <assert.h>
#include <stdexcept>
@@ -121,17 +121,20 @@
(ALE::Obj<ALE::Field::Mesh>*) meshVptr;
ALE::Obj<ALE::Field::Mesh::real_section_type>* field =
(ALE::Obj<ALE::Field::Mesh::real_section_type>*) fieldVptr;
- VecScatter* scatter = new VecScatter;
+ VecScatter scatter;
PetscErrorCode err = MeshCreateGlobalScatter(*mesh, *field, &scatter);
if (err) {
PetscError(__LINE__,__FUNCT__,__FILE__,__SDIR__,err,0," ");
throw std::runtime_error("Could not create scatter.");
} // if
if (0 != *scatterVptr) {
- VecScatter* scatter = (VecScatter*) scatterVptr;
- delete *scatter;
+ err = VecScatterDestroy((VecScatter) *scatterVptr);
+ if (err) {
+ PetscError(__LINE__,__FUNCT__,__FILE__,__SDIR__,err,0," ");
+ throw std::runtime_error("Could not destroy scatter.");
+ } // if
} // if
- *scatterVptr = (void*) scatter;
+ *scatterVptr = (void *) scatter;
} catch (const std::exception& err) {
PyErr_SetString(PyExc_RuntimeError,
const_cast<char*>(err.what()));
@@ -190,7 +193,7 @@
Mat* jacobian = (Mat*) jacobianVptr;
ALE::Obj<real_section_type>* fieldIn =
(ALE::Obj<real_section_type>*) fieldInVptr;
- VecScatter* scatter = (VecScatter*) scatterVptr;
+ VecScatter scatter = (VecScatter) scatterVptr;
PetscErrorCode err = 0;
Vec localVec;
@@ -203,22 +206,22 @@
Vec vecIn;
Vec vecOut;
- err = VecCreateSeqWithArray(PETSC_COMM_SELF, fieldIn->size(),
- fieldIn->restrict(), &localVec);CHKERRQ(err);
+ err = VecCreateSeqWithArray(PETSC_COMM_SELF, (*fieldIn)->size(),
+ (*fieldIn)->restrict(), &localVec);CHKERRQ(err);
err = VecScatterBegin(localVec, vecIn, INSERT_VALUES, SCATTER_FORWARD,
- *scatter);CHKERRQ(err);
+ scatter);CHKERRQ(err);
err = VecScatterEnd(localVec, vecIn, INSERT_VALUES, SCATTER_FORWARD,
- *scatter); CHKERRQ(err);
+ scatter); CHKERRQ(err);
err = VecDestroy(localVec); CHKERRQ(err);
err = KSPSetOperators(*ksp, *jacobian, *jacobian,
DIFFERENT_NONZERO_PATTERN); CHKERRQ(err);
err = KSPSolve(*ksp, vecIn, vecOut); CHKERRQ(err);
- err = VecCreateSeqWithArray(PETSC_COMM_SELF, fieldOut->size(),
- fieldOut->restrict(), &localVec);CHKERRQ(err);
+ err = VecCreateSeqWithArray(PETSC_COMM_SELF, (*fieldOut)->size(),
+ (*fieldOut)->restrict(), &localVec);CHKERRQ(err);
err = VecScatterBegin(vecOut, localVec, INSERT_VALUES, SCATTER_REVERSE,
- *scatter); CHKERRQ(err);
+ scatter); CHKERRQ(err);
err = VecScatterEnd(vecOut, localVec, INSERT_VALUES, SCATTER_REVERSE,
- *scatter); CHKERRQ(err);
+ scatter); CHKERRQ(err);
err = VecDestroy(localVec); CHKERRQ(err);
} catch (const std::exception& err) {
PyErr_SetString(PyExc_RuntimeError,
More information about the cig-commits
mailing list