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.hh
Go to the documentation of this file.
1
/* Copyright (C) 2015, 2016 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
#ifndef _VEC_H_
21
#define _VEC_H_
22
23
#include <petscvec.h>
24
25
#include "pism/util/Wrapper.hh"
26
#include "pism/util/petscwrappers/DM.hh"
27
28
namespace
pism
{
29
namespace
petsc {
30
/** Wrapper around PETSc's Vec. Simplifies memory management.
31
*
32
* The constructor takes ownership of the Vec argument passed to it.
33
*
34
* The destructor call VecDestroy().
35
*/
36
class
Vec
:
public
Wrapper
< ::Vec > {
37
public
:
38
Vec
();
39
Vec
(
::Vec
v);
40
~Vec
();
41
};
36
class
Vec
:
public
Wrapper
< ::Vec > {
…
};
42
43
//! Wrapper around VecGetArray and VecRestoreArray.
44
class
VecArray
{
45
public
:
46
VecArray
(::Vec v);
47
~VecArray
();
48
double
*
get
();
49
private
:
50
::Vec
m_v
;
51
double
*
m_array
;
52
};
44
class
VecArray
{
…
};
53
54
//! Wrapper around VecGetArray2d and VecRestoreArray2d.
55
class
VecArray2D
{
56
public
:
57
VecArray2D
(::Vec vec,
int
my_Mx,
int
my_My);
58
VecArray2D
(::Vec vec,
int
my_Mx,
int
my_My,
int
i0,
int
j0);
59
~VecArray2D
();
60
61
inline
double
&
operator()
(
int
i,
int
j) {
62
return
m_array
[j +
m_j_offset
][i +
m_i_offset
];
63
}
61
inline
double
&
operator()
(
int
i,
int
j) {
…
}
64
private
:
65
int
m_Mx
,
m_My
,
m_i_offset
,
m_j_offset
;
66
::Vec
m_v
;
67
double
**
m_array
;
68
};
55
class
VecArray2D
{
…
};
69
70
class
DMDAVecArray
{
71
public
:
72
DMDAVecArray
(
DM::Ptr
dm, ::Vec v);
73
~DMDAVecArray
();
74
void
*
get
();
75
private
:
76
DM::Ptr
m_dm
;
77
::Vec
m_v
;
78
void
*
m_array
;
79
};
70
class
DMDAVecArray
{
…
};
80
81
class
DMDAVecArrayDOF
{
82
public
:
83
DMDAVecArrayDOF
(
DM::Ptr
dm, ::Vec v);
84
~DMDAVecArrayDOF
();
85
void
*
get
();
86
private
:
87
DM::Ptr
m_dm
;
88
::Vec
m_v
;
89
void
*
m_array
;
90
};
81
class
DMDAVecArrayDOF
{
…
};
91
92
class
TemporaryGlobalVec
:
public
Vec
{
93
public
:
94
TemporaryGlobalVec
(
DM::Ptr
dm);
95
~TemporaryGlobalVec
();
96
private
:
97
DM::Ptr
m_dm
;
98
};
92
class
TemporaryGlobalVec
:
public
Vec
{
…
};
99
100
}
// end of namespace petsc
101
}
// end of namespace pism
102
103
104
#endif
/* _VEC_H_ */
pism::Wrapper< ::DM >::Ptr
std::shared_ptr< Wrapper > Ptr
Definition
Wrapper.hh:30
pism::Wrapper
Definition
Wrapper.hh:28
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::m_array
void * m_array
Definition
Vec.hh:89
pism::petsc::DMDAVecArrayDOF
Definition
Vec.hh:81
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
Definition
Vec.hh:70
pism::petsc::TemporaryGlobalVec::m_dm
DM::Ptr m_dm
Definition
Vec.hh:97
pism::petsc::TemporaryGlobalVec::~TemporaryGlobalVec
~TemporaryGlobalVec()
Definition
Vec.cc:116
pism::petsc::TemporaryGlobalVec
Definition
Vec.hh:92
pism::petsc::VecArray2D::m_i_offset
int m_i_offset
Definition
Vec.hh:65
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::m_v
::Vec m_v
Definition
Vec.hh:66
pism::petsc::VecArray2D::operator()
double & operator()(int i, int j)
Definition
Vec.hh:61
pism::petsc::VecArray2D::m_j_offset
int m_j_offset
Definition
Vec.hh:65
pism::petsc::VecArray2D
Wrapper around VecGetArray2d and VecRestoreArray2d.
Definition
Vec.hh:55
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::VecArray
Wrapper around VecGetArray and VecRestoreArray.
Definition
Vec.hh:44
pism::petsc::Vec::Vec
Vec()
Definition
Vec.cc:28
pism::petsc::Vec::~Vec
~Vec()
Definition
Vec.cc:36
pism::petsc::Vec
Definition
Vec.hh:36
pism
Definition
AgeColumnSystem.cc:23
Generated by
1.9.8