Nektar++
library
LibUtilities
BasicUtils
ArrayEqualityComparison.cpp
Go to the documentation of this file.
1
///////////////////////////////////////////////////////////////////////////////
2
//
3
// File ArrayEqualityComparison.cpp
4
//
5
// For more information, please see: http://www.nektar.info
6
//
7
// The MIT License
8
//
9
// Copyright (c) 2006 Scientific Computing and Imaging Institute,
10
// University of Utah (USA) and Department of Aeronautics, Imperial
11
// College London (UK).
12
//
13
// Permission is hereby granted, free of charge, to any person obtaining a
14
// copy of this software and associated documentation files (the "Software"),
15
// to deal in the Software without restriction, including without limitation
16
// the rights to use, copy, modify, merge, publish, distribute, sublicense,
17
// and/or sell copies of the Software, and to permit persons to whom the
18
// Software is furnished to do so, subject to the following conditions:
19
//
20
// The above copyright notice and this permission notice shall be included
21
// in all copies or substantial portions of the Software.
22
//
23
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26
// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29
// DEALINGS IN THE SOFTWARE.
30
//
31
// Description:
32
//
33
///////////////////////////////////////////////////////////////////////////////
34
35
#include <
LibUtilities/BasicUtils/SharedArray.hpp
>
36
37
namespace
Nektar
38
{
39
bool
operator==
(
const
Array<OneD, NekDouble>
&
lhs
,
const
Array<OneD, NekDouble>
&
rhs
)
40
{
41
return
IsEqual
(
lhs
,
rhs
);
42
}
43
44
45
bool
IsEqual
(
const
Array<OneD, const NekDouble>
&
lhs
,
46
const
Array<OneD, const NekDouble>
&
rhs
,
47
NekDouble
tol)
48
{
49
if
(
lhs
.num_elements() !=
rhs
.num_elements() )
50
{
51
return
false
;
52
}
53
54
if
(
lhs
.data() ==
rhs
.data() )
55
{
56
return
true
;
57
}
58
59
for
(
unsigned
int
i = 0; i <
lhs
.num_elements(); ++i)
60
{
61
if
( fabs(
lhs
[i]-
rhs
[i]) > tol )
62
{
63
return
false
;
64
}
65
}
66
67
return
true
;
68
}
69
70
71
bool
operator==
(
const
Array<TwoD, NekDouble>
&
lhs
,
const
Array<TwoD, NekDouble>
&
rhs
)
72
{
73
return
IsEqual
(
lhs
,
rhs
);
74
}
75
76
bool
IsEqual
(
const
Array<TwoD, const NekDouble>
&
lhs
,
77
const
Array<TwoD, const NekDouble>
&
rhs
,
78
NekDouble
tol)
79
{
80
if
( (
lhs
.GetRows() !=
rhs
.GetRows()) ||
81
(
lhs
.GetColumns() !=
rhs
.GetColumns()) )
82
{
83
return
false
;
84
}
85
86
if
(
lhs
.data() ==
rhs
.data() )
87
{
88
return
true
;
89
}
90
91
for
(
unsigned
int
i = 0; i <
lhs
.GetRows(); ++i)
92
{
93
for
(
unsigned
int
j = 0; j <
lhs
.GetColumns(); ++j)
94
{
95
if
( fabs(
lhs
[i][j]-
rhs
[i][j]) > tol )
96
{
97
return
false
;
98
}
99
}
100
}
101
102
return
true
;
103
}
104
}
SharedArray.hpp
Nektar::Array< OneD, NekDouble >
Nektar
Definition:
CoupledSolver.h:1
Nektar::rhs
StandardMatrixTag boost::call_traits< LhsDataType >::const_reference rhs
Definition:
MatrixOperations.cpp:97
Nektar::operator==
bool operator==(const Array< OneD, NekDouble > &lhs, const Array< OneD, NekDouble > &rhs)
Definition:
ArrayEqualityComparison.cpp:39
Nektar::lhs
StandardMatrixTag & lhs
Definition:
MatrixOperations.cpp:95
Nektar::IsEqual
bool IsEqual(const Array< OneD, const NekDouble > &lhs, const Array< OneD, const NekDouble > &rhs, NekDouble tol)
Definition:
ArrayEqualityComparison.cpp:45
Nektar::NekDouble
double NekDouble
Definition:
NektarUnivTypeDefs.hpp:43
Generated on Wed Aug 18 2021 14:15:52 for Nektar++ by
1.9.1