20 #include "pism/util/petscwrappers/Vec.hh"
21 #include "pism/util/error_handling.hh"
38 PetscErrorCode ierr = VecDestroy(&
m_value); CHKERRCONTINUE(ierr);
45 : m_v(v), m_array(NULL) {
46 PetscErrorCode ierr = VecGetArray(
m_v, &
m_array);
51 PetscErrorCode ierr = VecRestoreArray(
m_v, &
m_array); CHKERRCONTINUE(ierr);
61 : m_Mx(Mx), m_My(My), m_i_offset(0), m_j_offset(0), m_v(vec) {
67 : m_Mx(Mx), m_My(My), m_i_offset(i0), m_j_offset(j0), m_v(vec) {
73 PetscErrorCode ierr = VecRestoreArray2d(
m_v,
m_My,
m_Mx, 0, 0, &
m_array); CHKERRCONTINUE(ierr);
85 PetscErrorCode ierr = DMDAVecRestoreArray(*
m_dm,
m_v, &
m_array); CHKERRCONTINUE(ierr);
97 PISM_CHK(ierr,
"DMDAVecGetArrayDOF");
101 PetscErrorCode ierr = DMDAVecRestoreArrayDOF(*
m_dm,
m_v, &
m_array); CHKERRCONTINUE(ierr);
112 PetscErrorCode ierr = DMGetGlobalVector(*
m_dm, &
m_value);
113 PISM_CHK(ierr,
"DMGetGlobalVector");
122 PetscErrorCode ierr = DMRestoreGlobalVector(*
m_dm, &
m_value); CHKERRCONTINUE(ierr);
std::shared_ptr< Wrapper > Ptr
DMDAVecArrayDOF(DM::Ptr dm, ::Vec v)
DMDAVecArray(DM::Ptr dm, ::Vec v)
TemporaryGlobalVec(DM::Ptr dm)
VecArray2D(::Vec vec, int my_Mx, int my_My)
#define PISM_CHK(errcode, name)