61 int setup(DM da,
const char *dm_name,
const char *vec_name) {
64 m_com = MPI_COMM_SELF;
65 ierr = PetscObjectGetComm((PetscObject)da, &
m_com); CHKERRQ(ierr);
67 ierr = PetscObjectQuery((PetscObject)da, dm_name, (PetscObject*)&
m_da); CHKERRQ(ierr);
70 SETERRQ(
m_com, 1,
"Failed to get the inner DM");
74 ierr = PetscObjectQuery((PetscObject)da, vec_name, (PetscObject*)&X); CHKERRQ(ierr);
77 SETERRQ(
m_com, 1,
"Failed to get the inner Vec");
81 ierr = DMGetLocalVector(
m_da, &
m_x); CHKERRQ(ierr);
83 ierr = DMGlobalToLocalBegin(
m_da, X, INSERT_VALUES,
m_x); CHKERRQ(ierr);
85 ierr = DMGlobalToLocalEnd(
m_da, X, INSERT_VALUES,
m_x); CHKERRQ(ierr);
90 ierr = DMDAVecGetArray(
m_da,
m_x, &
m_a); CHKERRQ(ierr);