Chombo + EB + MF
3.2
src
AMRTools
NodeCFIVS.H
Go to the documentation of this file.
1
#ifdef CH_LANG_CC
2
/*
3
* _______ __
4
* / ___/ / ___ __ _ / / ___
5
* / /__/ _ \/ _ \/ V \/ _ \/ _ \
6
* \___/_//_/\___/_/_/_/_.__/\___/
7
* Please refer to Copyright.txt, in Chombo's root directory.
8
*/
9
#endif
10
11
// NodeCFIVS.H
12
// petermc, 1 May 2001
13
#ifndef _NODECFIVS_H_
14
#define _NODECFIVS_H_
15
16
#include <iostream>
17
#include <cmath>
18
#include "
SPACE.H
"
19
#include <cstdlib>
20
#include "
REAL.H
"
21
#include "
IntVect.H
"
22
#include "
Box.H
"
23
#include "
LoHiSide.H
"
24
#include "
DisjointBoxLayout.H
"
25
#include "
IntVectSet.H
"
26
#include "NamespaceHeader.H"
27
28
/// Class to get fine IntVectSet at coarse/fine interface
29
/**
30
Class to get IntVectSet of nodes (of a particular face of a
31
particular box) that lie on interface with next coarser level.
32
33
This class should be considered internal to AMRNodeSolver and should
34
not be considered part of the Chombo API.
35
*/
36
class
NodeCFIVS
37
{
38
39
public
:
40
41
/**
42
\name Constructors, destructor and defines
43
*/
44
/*@{*/
45
46
///
47
/** Default constructor. User must subsequently call define().
48
*/
49
NodeCFIVS
();
50
51
///
52
/** Destructor.
53
*/
54
~NodeCFIVS
();
55
56
///
57
/** Constructor calls setDefaultValues() and then
58
calls define() with the same arguments.
59
*/
60
NodeCFIVS
(
const
Box
& a_domain,
61
const
Box
& a_box,
62
const
DisjointBoxLayout
& a_levelBoxes,
63
int
a_idir,
64
Side::LoHiSide
a_hiorlo);
65
66
///
67
/** Constructor calls setDefaultValues() and then
68
calls define() with the same arguments.
69
*/
70
NodeCFIVS
(
const
ProblemDomain
& a_domain,
71
const
Box
& a_box,
72
const
DisjointBoxLayout
& a_levelBoxes,
73
int
a_idir,
74
Side::LoHiSide
a_hiorlo);
75
76
///
77
/** Full define function. The current level is taken to be the fine level.
78
*/
79
void
define
(
/// CELL-centered physical domain at this level
80
const
ProblemDomain
& a_domain,
81
/// the CELL-centered box at this level
82
const
Box
& a_box,
83
/// the set of all CELL-centered boxes at this level
84
const
DisjointBoxLayout
& a_levelBoxes,
85
/// direction (0 to SpaceDim-1) of face of box on which we find interface nodes
86
int
a_idir,
87
/// high or low side of box
88
Side::LoHiSide
a_hiorlo);
89
90
///
91
/** Full define function. The current level is taken to be the fine level.
92
*/
93
void
define
(
/// CELL-centered physical domain at this level
94
const
Box
& a_domain,
95
/// the CELL-centered box at this level
96
const
Box
& a_box,
97
/// the set of all CELL-centered boxes at this level
98
const
DisjointBoxLayout
& a_levelBoxes,
99
/// direction (0 to SpaceDim-1) of face of box on which we find interface nodes
100
int
a_idir,
101
/// high or low side of box
102
Side::LoHiSide
a_hiorlo);
103
104
/*@}*/
105
106
/**
107
\name Access functions
108
*/
109
/*@{*/
110
111
///
112
bool
isDefined
()
const
;
113
114
///
115
/** Returns <tt>true</tt> if this coarse-fine IntVectSet is empty.
116
*/
117
bool
isEmpty
()
const
;
118
119
///
120
/** Returns <tt>true</tt> if this coarse-fine IntVectSet can be represented
121
as just a Box, i.e., a user can perform a dense computation instead of
122
a pointwise calculation using IVSIterator.
123
124
If isPacked() then you can use packedBox() instead of getFineIVS().
125
*/
126
bool
isPacked
()
const
;
127
128
///
129
/** If isPacked() returns <tt>true</tt>,
130
then the box returned by this function
131
is a suitable substitute for this IntVectSet returned by getFineIVS().
132
*/
133
const
Box
&
packedBox
()
const
;
134
135
///
136
/** Returns indices of fine nodes, on the face of the box,
137
that lie on the interface with the coarser level and where
138
data need to be interpolated.
139
140
This will be empty if isEmpty() returns <tt>true</tt>.
141
If isPacked() then you can use packedBox() instead of getFineIVS().
142
*/
143
const
IntVectSet
&
getFineIVS
()
const
;
144
145
/*@}*/
146
147
static
long
long
m_packCount
,
m_sparseCount
;
148
149
protected
:
150
151
//for internal use
152
void
setDefaultValues
();
153
154
/** indices of fine nodes that need to be interpolated
155
*/
156
IntVectSet
m_fineInterpIVS
;
157
158
bool
m_packed
;
159
160
bool
m_empty
;
161
162
Box
m_packedBox
;
163
164
bool
m_isdefined
;
165
166
private
:
167
void
operator=
(
const
NodeCFIVS
& levcfs_in)
168
{
169
}
170
171
NodeCFIVS
(
const
NodeCFIVS
& levcfs_in)
172
{
173
}
174
};
175
176
177
inline
178
bool
NodeCFIVS::isEmpty
()
const
179
{
180
return
m_empty
;
181
}
182
183
184
inline
185
bool
NodeCFIVS::isPacked
()
const
186
{
187
return
m_packed
;
188
}
189
190
191
inline
192
const
Box
&
NodeCFIVS::packedBox
()
const
193
{
194
return
m_packedBox
;
195
}
196
197
#include "NamespaceFooter.H"
198
#endif
IntVect.H
NodeCFIVS::isPacked
bool isPacked() const
Definition:
NodeCFIVS.H:185
IntVectSet
An irregular domain on an integer lattice.
Definition:
IntVectSet.H:44
ProblemDomain
A class to facilitate interaction with physical boundary conditions.
Definition:
ProblemDomain.H:141
NodeCFIVS::m_packCount
static long long m_packCount
Definition:
NodeCFIVS.H:147
NodeCFIVS::m_empty
bool m_empty
Definition:
NodeCFIVS.H:160
NodeCFIVS::isEmpty
bool isEmpty() const
Definition:
NodeCFIVS.H:178
NodeCFIVS::m_isdefined
bool m_isdefined
Definition:
NodeCFIVS.H:164
DisjointBoxLayout.H
NodeCFIVS
Class to get fine IntVectSet at coarse/fine interface.
Definition:
NodeCFIVS.H:36
NodeCFIVS::getFineIVS
const IntVectSet & getFineIVS() const
SPACE.H
NodeCFIVS::define
void define(const ProblemDomain &a_domain, const Box &a_box, const DisjointBoxLayout &a_levelBoxes, int a_idir, Side::LoHiSide a_hiorlo)
NodeCFIVS::m_sparseCount
static long long m_sparseCount
Definition:
NodeCFIVS.H:147
NodeCFIVS::NodeCFIVS
NodeCFIVS()
NodeCFIVS::packedBox
const Box & packedBox() const
Definition:
NodeCFIVS.H:192
NodeCFIVS::setDefaultValues
void setDefaultValues()
DisjointBoxLayout
A BoxLayout that has a concept of disjointedness.
Definition:
DisjointBoxLayout.H:30
Side::LoHiSide
LoHiSide
Definition:
LoHiSide.H:27
NodeCFIVS::m_packedBox
Box m_packedBox
Definition:
NodeCFIVS.H:162
Box
A Rectangular Domain on an Integer Lattice.
Definition:
Box.H:469
NodeCFIVS::m_packed
bool m_packed
Definition:
NodeCFIVS.H:158
LoHiSide.H
NodeCFIVS::operator=
void operator=(const NodeCFIVS &levcfs_in)
Definition:
NodeCFIVS.H:167
NodeCFIVS::NodeCFIVS
NodeCFIVS(const NodeCFIVS &levcfs_in)
Definition:
NodeCFIVS.H:171
Box.H
REAL.H
NodeCFIVS::isDefined
bool isDefined() const
IntVectSet.H
NodeCFIVS::m_fineInterpIVS
IntVectSet m_fineInterpIVS
Definition:
NodeCFIVS.H:156
NodeCFIVS::~NodeCFIVS
~NodeCFIVS()
Generated by
1.8.13