FEI
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
base
fei_Dof.hpp
1
/*--------------------------------------------------------------------*/
2
/* Copyright 2009 Sandia Corporation. */
3
/* Under the terms of Contract DE-AC04-94AL85000, there is a */
4
/* non-exclusive license for use of this work by or on behalf */
5
/* of the U.S. Government. Export of this program may require */
6
/* a license from the United States Government. */
7
/*--------------------------------------------------------------------*/
8
9
#ifndef _fei_Dof_hpp_
10
#define _fei_Dof_hpp_
11
12
#include <fei_macros.hpp>
13
14
namespace
fei
{
15
39
template
<
class
LocalOrdinal,
class
GlobalOrdinal>
40
class
Dof
{
41
public
:
43
Dof
(LocalOrdinal rank, GlobalOrdinal
id
, LocalOrdinal field)
44
: m_rank(rank), m_id(id), m_field(field) {}
45
47
~Dof
(){}
48
49
LocalOrdinal rank()
const
{
return
m_rank; }
50
GlobalOrdinal id()
const
{
return
m_id; }
51
LocalOrdinal field()
const
{
return
m_field; }
52
53
private
:
54
LocalOrdinal m_rank;
55
GlobalOrdinal m_id;
56
LocalOrdinal m_field;
57
};
//class Dof
58
61
template
<
class
LocalOrdinal,
class
GlobalOrdinal>
62
struct
less_rank_id_field
{
63
bool
operator()(
const
Dof<LocalOrdinal,GlobalOrdinal>
& dof1,
64
const
Dof<LocalOrdinal,GlobalOrdinal>
& dof2)
const
65
{
66
if
(dof1.rank()==dof2.rank()) {
67
if
(dof1.id() == dof2.id())
return
dof1.field() < dof2.field();
68
else
return
dof1.id() < dof2.id();
69
}
70
else
{
71
return
dof1.rank() < dof2.rank();
72
}
73
}
74
75
bool
operator()(
const
Dof<LocalOrdinal,GlobalOrdinal>
* dof1,
76
const
Dof<LocalOrdinal,GlobalOrdinal>
* dof2)
const
77
{
78
if
(dof1->rank()==dof2->rank()) {
79
if
(dof1->id() == dof2->id())
return
dof1->field() < dof2->field();
80
else
return
dof1->id() < dof2->id();
81
}
82
else
{
83
return
dof1->rank() < dof2->rank();
84
}
85
}
86
};
87
90
template
<
class
LocalOrdinal,
class
GlobalOrdinal>
91
struct
less_field_rank_id
{
92
bool
operator()(
const
Dof<LocalOrdinal,GlobalOrdinal>
& dof1,
93
const
Dof<LocalOrdinal,GlobalOrdinal>
& dof2)
const
94
{
95
if
(dof1.field()==dof2.field()) {
96
if
(dof1.rank() == dof2.rank())
return
dof1.id() < dof2.id();
97
else
return
dof1.rank() < dof2.rank();
98
}
99
else
{
100
return
dof1.field() < dof2.field();
101
}
102
}
103
104
bool
operator()(
const
Dof<LocalOrdinal,GlobalOrdinal>
* dof1,
105
const
Dof<LocalOrdinal,GlobalOrdinal>
* dof2)
const
106
{
107
if
(dof1->field()==dof2->field()) {
108
if
(dof1->rank() == dof2->rank())
return
dof1->id() < dof2->id();
109
else
return
dof1->rank() < dof2->rank();
110
}
111
else
{
112
return
dof1->field() < dof2->field();
113
}
114
}
115
};
116
117
}
//namespace fei
118
#endif
119
fei::Dof
Definition
fei_Dof.hpp:40
fei::Dof::~Dof
~Dof()
Definition
fei_Dof.hpp:47
fei::Dof::Dof
Dof(LocalOrdinal rank, GlobalOrdinal id, LocalOrdinal field)
Definition
fei_Dof.hpp:43
fei
Definition
fei_ArrayUtils.hpp:16
fei::less_field_rank_id
Definition
fei_Dof.hpp:91
fei::less_rank_id_field
Definition
fei_Dof.hpp:62
Generated by
1.17.0