Loading [MathJax]/extensions/tex2jax.js
PISM, A Parallel Ice Sheet Model
2.2.2-d6b3a29ca committed by Constantine Khrulev on 2025-03-28
Toggle main menu visibility
Main Page
Related Pages
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
z
Variables
a
b
c
d
f
g
h
i
k
l
m
n
r
s
t
u
v
w
Typedefs
Enumerations
a
b
c
d
e
f
i
k
l
m
n
p
r
t
u
v
Enumerator
_
a
b
c
d
e
f
g
h
i
l
m
n
p
q
s
t
u
w
x
y
z
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
:
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
c
d
f
g
h
l
m
p
s
v
w
Enumerations
Enumerator
c
d
e
f
h
i
j
m
n
o
p
r
s
t
w
y
Related Symbols
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
p
r
s
t
u
w
z
Functions
a
b
c
d
e
f
g
h
i
l
m
p
r
s
u
Variables
b
c
d
e
g
h
k
l
m
n
p
r
s
t
u
w
z
Typedefs
Macros
_
a
b
c
g
h
i
k
m
n
r
s
t
u
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
Loading...
Searching...
No Matches
src
util
petscwrappers
Vec.cc
Go to the documentation of this file.
1
/* Copyright (C) 2015, 2016, 2017, 2023 PISM Authors
2
*
3
* This file is part of PISM.
4
*
5
* PISM is free software; you can redistribute it and/or modify it under the
6
* terms of the GNU General Public License as published by the Free Software
7
* Foundation; either version 3 of the License, or (at your option) any later
8
* version.
9
*
10
* PISM is distributed in the hope that it will be useful, but WITHOUT ANY
11
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13
* details.
14
*
15
* You should have received a copy of the GNU General Public License
16
* along with PISM; if not, write to the Free Software
17
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
*/
19
20
#include "pism/util/petscwrappers/Vec.hh"
21
#include "pism/util/error_handling.hh"
22
23
namespace
pism
{
24
namespace
petsc {
25
26
// Wrapper around Vec (calls VecDestroy)
27
28
Vec::Vec
() {
29
m_value
= NULL;
30
}
28
Vec::Vec
() {
…
}
31
32
Vec::Vec
(::Vec v) {
33
m_value
= v;
34
}
32
Vec::Vec
(::Vec v) {
…
}
35
36
Vec::~Vec
() {
37
if
(
m_value
!= NULL) {
38
PetscErrorCode ierr = VecDestroy(&
m_value
); CHKERRCONTINUE(ierr);
39
}
40
}
36
Vec::~Vec
() {
…
}
41
42
// Wrapper around VecGetArray / VecRestoreArray
43
44
VecArray::VecArray
(::Vec v)
45
: m_v(v), m_array(NULL) {
46
PetscErrorCode ierr = VecGetArray(
m_v
, &
m_array
);
47
PISM_CHK
(ierr,
"VecGetArray"
);
48
}
44
VecArray::VecArray
(::Vec v) {
…
}
49
50
VecArray::~VecArray
() {
51
PetscErrorCode ierr = VecRestoreArray(
m_v
, &
m_array
); CHKERRCONTINUE(ierr);
52
}
50
VecArray::~VecArray
() {
…
}
53
54
double
*
VecArray::get
() {
55
return
m_array
;
56
}
54
double
*
VecArray::get
() {
…
}
57
58
// Wrapper around VecGetArray2d / VecRestoreArray2d
59
60
VecArray2D::VecArray2D
(::Vec vec,
int
Mx,
int
My)
61
: m_Mx(Mx), m_My(My), m_i_offset(0), m_j_offset(0), m_v(vec) {
62
PetscErrorCode ierr = VecGetArray2d(
m_v
,
m_My
,
m_Mx
, 0, 0, &
m_array
);
63
PISM_CHK
(ierr,
"VecGetArray2d"
);
64
}
60
VecArray2D::VecArray2D
(::Vec vec,
int
Mx,
int
My) {
…
}
65
66
VecArray2D::VecArray2D
(::Vec vec,
int
Mx,
int
My,
int
i0,
int
j0)
67
: m_Mx(Mx), m_My(My), m_i_offset(i0), m_j_offset(j0), m_v(vec) {
68
PetscErrorCode ierr = VecGetArray2d(
m_v
,
m_My
,
m_Mx
, 0, 0, &
m_array
);
69
PISM_CHK
(ierr,
"VecGetArray2d"
);
70
}
66
VecArray2D::VecArray2D
(::Vec vec,
int
Mx,
int
My,
int
i0,
int
j0) {
…
}
71
72
VecArray2D::~VecArray2D
() {
73
PetscErrorCode ierr = VecRestoreArray2d(
m_v
,
m_My
,
m_Mx
, 0, 0, &
m_array
); CHKERRCONTINUE(ierr);
74
}
72
VecArray2D::~VecArray2D
() {
…
}
75
76
// Wrapper around DMDAVecGetArray / DMDAVecRestoreArray
77
78
DMDAVecArray::DMDAVecArray
(
DM::Ptr
dm, ::Vec v)
79
: m_dm(dm), m_v(v) {
80
PetscErrorCode ierr = DMDAVecGetArray(*
m_dm
,
m_v
, &
m_array
);
81
PISM_CHK
(ierr,
"DMDAVecGetArray"
);
82
}
78
DMDAVecArray::DMDAVecArray
(
DM::Ptr
dm, ::Vec v) {
…
}
83
84
DMDAVecArray::~DMDAVecArray
() {
85
PetscErrorCode ierr = DMDAVecRestoreArray(*
m_dm
,
m_v
, &
m_array
); CHKERRCONTINUE(ierr);
86
}
84
DMDAVecArray::~DMDAVecArray
() {
…
}
87
88
void
*
DMDAVecArray::get
() {
89
return
m_array
;
90
}
88
void
*
DMDAVecArray::get
() {
…
}
91
92
// Wrapper around DMDAVecGetArrayDOF / DMDAVecRestoreArrayDOF
93
94
DMDAVecArrayDOF::DMDAVecArrayDOF
(
DM::Ptr
dm, ::Vec v)
95
: m_dm(dm), m_v(v) {
96
PetscErrorCode ierr = DMDAVecGetArrayDOF(*
m_dm
,
m_v
, &
m_array
);
97
PISM_CHK
(ierr,
"DMDAVecGetArrayDOF"
);
98
}
94
DMDAVecArrayDOF::DMDAVecArrayDOF
(
DM::Ptr
dm, ::Vec v) {
…
}
99
100
DMDAVecArrayDOF::~DMDAVecArrayDOF
() {
101
PetscErrorCode ierr = DMDAVecRestoreArrayDOF(*
m_dm
,
m_v
, &
m_array
); CHKERRCONTINUE(ierr);
102
}
100
DMDAVecArrayDOF::~DMDAVecArrayDOF
() {
…
}
103
104
void
*
DMDAVecArrayDOF::get
() {
105
return
m_array
;
106
}
104
void
*
DMDAVecArrayDOF::get
() {
…
}
107
108
// Wrapper around DMGetGlobalVector / DMRestoreGlobalVector
109
110
TemporaryGlobalVec::TemporaryGlobalVec
(
DM::Ptr
dm) {
111
m_dm
= dm;
112
PetscErrorCode ierr = DMGetGlobalVector(*
m_dm
, &
m_value
);
113
PISM_CHK
(ierr,
"DMGetGlobalVector"
);
114
}
110
TemporaryGlobalVec::TemporaryGlobalVec
(
DM::Ptr
dm) {
…
}
115
116
TemporaryGlobalVec::~TemporaryGlobalVec
() {
117
// This takes advantage of the fact that the destructor of a derived
118
// class is called before the destructor of its base class, so we
119
// can set m_value to NULL and turn the destructor of the base class
120
// (Vec) into a no-op.
121
if
(
m_value
!= NULL) {
122
PetscErrorCode ierr = DMRestoreGlobalVector(*
m_dm
, &
m_value
); CHKERRCONTINUE(ierr);
123
m_value
= NULL;
124
}
125
}
116
TemporaryGlobalVec::~TemporaryGlobalVec
() {
…
}
126
127
128
}
// end of namespace petsc
129
}
// end of namespace pism
pism::Wrapper< ::Vec >::m_value
::Vec m_value
Definition
Wrapper.hh:46
pism::Wrapper< ::DM >::Ptr
std::shared_ptr< Wrapper > Ptr
Definition
Wrapper.hh:30
pism::petsc::DMDAVecArrayDOF::m_dm
DM::Ptr m_dm
Definition
Vec.hh:87
pism::petsc::DMDAVecArrayDOF::get
void * get()
Definition
Vec.cc:104
pism::petsc::DMDAVecArrayDOF::m_v
::Vec m_v
Definition
Vec.hh:88
pism::petsc::DMDAVecArrayDOF::~DMDAVecArrayDOF
~DMDAVecArrayDOF()
Definition
Vec.cc:100
pism::petsc::DMDAVecArrayDOF::DMDAVecArrayDOF
DMDAVecArrayDOF(DM::Ptr dm, ::Vec v)
Definition
Vec.cc:94
pism::petsc::DMDAVecArrayDOF::m_array
void * m_array
Definition
Vec.hh:89
pism::petsc::DMDAVecArray::~DMDAVecArray
~DMDAVecArray()
Definition
Vec.cc:84
pism::petsc::DMDAVecArray::m_array
void * m_array
Definition
Vec.hh:78
pism::petsc::DMDAVecArray::m_v
::Vec m_v
Definition
Vec.hh:77
pism::petsc::DMDAVecArray::m_dm
DM::Ptr m_dm
Definition
Vec.hh:76
pism::petsc::DMDAVecArray::get
void * get()
Definition
Vec.cc:88
pism::petsc::DMDAVecArray::DMDAVecArray
DMDAVecArray(DM::Ptr dm, ::Vec v)
Definition
Vec.cc:78
pism::petsc::TemporaryGlobalVec::TemporaryGlobalVec
TemporaryGlobalVec(DM::Ptr dm)
Definition
Vec.cc:110
pism::petsc::TemporaryGlobalVec::m_dm
DM::Ptr m_dm
Definition
Vec.hh:97
pism::petsc::TemporaryGlobalVec::~TemporaryGlobalVec
~TemporaryGlobalVec()
Definition
Vec.cc:116
pism::petsc::VecArray2D::~VecArray2D
~VecArray2D()
Definition
Vec.cc:72
pism::petsc::VecArray2D::m_array
double ** m_array
Definition
Vec.hh:67
pism::petsc::VecArray2D::m_My
int m_My
Definition
Vec.hh:65
pism::petsc::VecArray2D::m_Mx
int m_Mx
Definition
Vec.hh:65
pism::petsc::VecArray2D::VecArray2D
VecArray2D(::Vec vec, int my_Mx, int my_My)
Definition
Vec.cc:60
pism::petsc::VecArray2D::m_v
::Vec m_v
Definition
Vec.hh:66
pism::petsc::VecArray::VecArray
VecArray(::Vec v)
Definition
Vec.cc:44
pism::petsc::VecArray::m_array
double * m_array
Definition
Vec.hh:51
pism::petsc::VecArray::m_v
::Vec m_v
Definition
Vec.hh:50
pism::petsc::VecArray::~VecArray
~VecArray()
Definition
Vec.cc:50
pism::petsc::VecArray::get
double * get()
Definition
Vec.cc:54
pism::petsc::Vec::Vec
Vec()
Definition
Vec.cc:28
pism::petsc::Vec::~Vec
~Vec()
Definition
Vec.cc:36
PISM_CHK
#define PISM_CHK(errcode, name)
Definition
error_handling.hh:90
pism
Definition
AgeColumnSystem.cc:23
Generated by
1.9.8