Loading [MathJax]/extensions/tex2jax.js
PISM, A Parallel Ice Sheet Model
2.2.1-cd005eec8 committed by Constantine Khrulev on 2025-03-07
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
array
Array_helpers.hh
Go to the documentation of this file.
1
// Copyright (C) 2011, 2013, 2014, 2016, 2017, 2020, 2021, 2022, 2023, 2024 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
#ifndef PISM_ARRAY_HELPERS_H
20
#define PISM_ARRAY_HELPERS_H
21
22
#include "pism/util/Grid.hh"
23
24
#include "pism/util/array/Array.hh"
25
26
namespace
pism
{
27
28
namespace
array {
29
30
namespace
details {
31
32
//! \brief Computes result = x + alpha * y, where x, y, and z are 2D
33
//! Arrays (scalar or vector).
34
/*!
35
*/
36
template
<
class
V>
37
void
add
(
const
V &x,
double
alpha,
const
V &y, V &result,
bool
scatter =
true
) {
38
39
array::AccessScope
list{ &x, &y, &result };
40
for
(
auto
p = result.grid()->points(); p; p.next()) {
41
const
int
i = p.i(), j = p.j();
42
43
result(i, j) = x(i, j) + y(i, j) * alpha;
44
}
45
46
if
(scatter) {
47
result.update_ghosts();
48
}
49
50
result.inc_state_counter();
51
}
37
void
add
(
const
V &x,
double
alpha,
const
V &y, V &result,
bool
scatter =
true
) {
…
}
52
53
template
<
class
V>
54
void
copy
(
const
V &input, V &result,
bool
scatter =
true
) {
55
56
array::AccessScope
list{ &input, &result };
57
58
for
(
auto
p = result.grid()->points(); p; p.next()) {
59
const
int
i = p.i(), j = p.j();
60
61
result(i, j) = input(i, j);
62
}
63
64
if
(scatter) {
65
result.update_ghosts();
66
}
67
68
result.inc_state_counter();
69
}
54
void
copy
(
const
V &input, V &result,
bool
scatter =
true
) {
…
}
70
71
}
// namespace details
30
namespace
details {
…
}
72
73
}
// namespace array
74
75
}
// end of namespace pism
76
77
#endif
/* PISM_ARRAY_HELPERS_H */
pism::array::AccessScope
Makes sure that we call begin_access() and end_access() for all accessed array::Arrays.
Definition
Array.hh:64
pism::array::details::add
void add(const V &x, double alpha, const V &y, V &result, bool scatter=true)
Computes result = x + alpha * y, where x, y, and z are 2D Arrays (scalar or vector).
Definition
Array_helpers.hh:37
pism::array::details::copy
void copy(const V &input, V &result, bool scatter=true)
Definition
Array_helpers.hh:54
pism
Definition
AgeColumnSystem.cc:23
Generated by
1.9.8