FEI Package Browser (Single Doxygen Collection)
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
test_utils
PoissonData.hpp
Go to the documentation of this file.
1
#ifndef _PoissonData_h_
2
#define _PoissonData_h_
3
/*--------------------------------------------------------------------*/
4
/* Copyright 2005 Sandia Corporation. */
5
/* Under the terms of Contract DE-AC04-94AL85000, there is a */
6
/* non-exclusive license for use of this work by or on behalf */
7
/* of the U.S. Government. Export of this program may require */
8
/* a license from the United States Government. */
9
/*--------------------------------------------------------------------*/
10
11
#include <
fei_base.hpp
>
12
//
13
//This is a class for use in exercising FEI implementations.
14
//
15
//This class sets up test data for the Poisson equation on a 2D square,
16
//and provides query functions for obtaining that data.
17
//
18
//The calling program (the 'user' of PoissonData) is left
19
//with the task of calling the FEI functions.
20
//
21
//Also note:
22
//
23
// 1. This class only provides 1 element-block per processor currently.
24
// 2. The function calculateBCs() must be called before the boundary
25
// condition data is requested.
26
//
27
// Alan Williams 12-20-2000
28
//
29
30
class
PoissonData
{
31
public
:
32
//constructor -- see PoissonData.cpp for descriptions of these
33
//parameters.
34
PoissonData
(
int
L,
35
int
numProcs,
int
localProc,
int
outputLevel);
36
37
//destructor.
38
~PoissonData
();
39
40
int
getElemFormat
() {
return
(
elemFormat_
); };
41
42
//hardwired for only 1 field...
43
int
getNumFields
() {
return
(1);};
44
int
*
getFieldSizes
() {
return
(&
fieldSize_
);};
45
int
*
getFieldIDs
() {
return
(&
fieldIDs_
[0][0]);};
46
47
GlobalID
getElemBlockID
() {
return
(
elemBlockID_
); };
48
49
int
getNumLocalElements
() {
return
(
numLocalElements_
); };
50
GlobalID
*
getLocalElementIDs
() {
return
(
elemIDs_
); };
51
int
getNumNodesPerElement
() {
return
(
elem_
->numElemNodes()); };
52
53
int
*
getNumFieldsPerNodeList
() {
return
(
numFields_
); };
54
int
**
getNodalFieldIDsTable
() {
return
(
fieldIDs_
); };
55
56
GlobalID
*
getElementConnectivity
(
GlobalID
elemID);
57
58
double
**
getElemStiffness
(
GlobalID
elemID);
59
double
*
getElemLoad
(
GlobalID
elemID);
60
61
void
addBCNode
(
GlobalID
nodeID,
double
x,
double
y);
62
63
void
calculateBCs
();
64
65
int
getNumBCNodes
() {
return
(
BCNodeIDs_
.size() ); }
66
GlobalID
*
getBCNodeIDs
() {
return
( &
BCNodeIDs_
[0] ); }
67
int
getBCFieldID
() {
return
(
fieldIDs_
[0][0] ); }
68
double
*
getBCValues
() {
return
( &
BCValues_
[0] ); }
69
70
71
void
getLeftSharedNodes
(
int
& numShared,
GlobalID
* sharedNodeIDs,
72
int
* numProcsPerSharedNode,
73
int
** sharingProcs);
74
void
getRightSharedNodes
(
int
& numShared,
GlobalID
* sharedNodeIDs,
75
int
* numProcsPerSharedNode,
76
int
** sharingProcs);
77
void
getTopSharedNodes
(
int
& numShared,
GlobalID
* sharedNodeIDs,
78
int
* numProcsPerSharedNode,
79
int
** sharingProcs);
80
void
getBottomSharedNodes
(
int
& numShared,
GlobalID
* sharedNodeIDs,
81
int
* numProcsPerSharedNode,
82
int
** sharingProcs);
83
private
:
84
void
check1
();
85
void
calculateDistribution
();
86
87
void
messageAbort
(
const
char
* message);
88
89
void
calculateConnectivity
(
GlobalID
* conn,
int
size,
GlobalID
elemID);
90
void
initializeFieldStuff
();
91
void
deleteFieldArrays
();
92
93
void
printSharedNodes
(
const
char
* str,
94
int
numShared,
95
GlobalID
* nodeIDs,
96
int
** shareProcs,
97
int
* numShareProcs);
98
99
Poisson_Elem
*
elem_
;
//we're only going to have 1 element instance!!
100
int
numLocalElements_
;
101
int
startElement_
;
102
103
int
numProcs_
;
104
int
localProc_
;
105
int
outputLevel_
;
106
107
int
L_
;
108
int
procX_
,
procY_
;
109
int
maxProcX_
,
maxProcY_
;
110
111
int
numElemBlocks_
;
112
int
solveType_
;
113
114
int
nodesPerElement_
;
115
int
fieldsPerNode_
;
116
GlobalID
elemBlockID_
;
117
int
elemSetID_
;
118
int
elemFormat_
;
119
120
//*************** field description variables *********
121
int
fieldSize_
;
122
int
*
numFields_
;
123
int
**
fieldIDs_
;
124
bool
fieldArraysAllocated_
;
125
126
//************* element IDs and connectivities ********
127
GlobalID
*
elemIDs_
;
128
bool
elemIDsAllocated_
;
129
130
//************* boundary condition stuff **************
131
std::vector<GlobalID>
BCNodeIDs_
;
132
std::vector<double>
BCValues_
;
133
};
134
135
int
init_elem_connectivities
(
FEI
*
fei
,
PoissonData
& poissonData);
136
137
int
init_elem_connectivities
(
fei::MatrixGraph
* matrixGraph,
138
PoissonData
& poissonData);
139
140
int
set_shared_nodes
(
FEI
*
fei
,
PoissonData
& poissonData);
141
142
int
set_shared_nodes
(
fei::VectorSpace
* nodeSpace,
PoissonData
& poissonData);
143
144
int
load_elem_data
(
FEI
*
fei
,
PoissonData
& poissonData);
145
146
int
load_elem_data_putrhs
(
FEI
*
fei
,
PoissonData
& poissonData);
147
148
int
load_elem_data
(
fei::MatrixGraph
* matrixGraph,
149
fei::Matrix
* mat,
fei::Vector
* rhs,
150
PoissonData
& poissonData);
151
152
int
load_BC_data
(
FEI
*
fei
,
PoissonData
& poissonData);
153
154
int
load_BC_data
(
fei::LinearSystem
* linSys,
PoissonData
& poissonData);
155
156
#endif
157
init_elem_connectivities
int init_elem_connectivities(FEI *fei, PoissonData &poissonData)
Definition
PoissonData.cpp:754
load_elem_data
int load_elem_data(FEI *fei, PoissonData &poissonData)
Definition
PoissonData.cpp:842
set_shared_nodes
int set_shared_nodes(FEI *fei, PoissonData &poissonData)
Definition
PoissonData.cpp:790
load_BC_data
int load_BC_data(FEI *fei, PoissonData &poissonData)
Definition
PoissonData.cpp:904
load_elem_data_putrhs
int load_elem_data_putrhs(FEI *fei, PoissonData &poissonData)
Definition
PoissonData.cpp:867
FEI
Definition
FEI.hpp:144
PoissonData
Definition
PoissonData.hpp:30
PoissonData::getNumBCNodes
int getNumBCNodes()
Definition
PoissonData.hpp:65
PoissonData::elemSetID_
int elemSetID_
Definition
PoissonData.hpp:117
PoissonData::procX_
int procX_
Definition
PoissonData.hpp:108
PoissonData::L_
int L_
Definition
PoissonData.hpp:107
PoissonData::getTopSharedNodes
void getTopSharedNodes(int &numShared, GlobalID *sharedNodeIDs, int *numProcsPerSharedNode, int **sharingProcs)
Definition
PoissonData.cpp:513
PoissonData::getElemBlockID
GlobalID getElemBlockID()
Definition
PoissonData.hpp:47
PoissonData::addBCNode
void addBCNode(GlobalID nodeID, double x, double y)
Definition
PoissonData.cpp:738
PoissonData::maxProcY_
int maxProcY_
Definition
PoissonData.hpp:109
PoissonData::elemIDsAllocated_
bool elemIDsAllocated_
Definition
PoissonData.hpp:128
PoissonData::getElementConnectivity
GlobalID * getElementConnectivity(GlobalID elemID)
Definition
PoissonData.cpp:180
PoissonData::fieldsPerNode_
int fieldsPerNode_
Definition
PoissonData.hpp:115
PoissonData::getBCNodeIDs
GlobalID * getBCNodeIDs()
Definition
PoissonData.hpp:66
PoissonData::getLocalElementIDs
GlobalID * getLocalElementIDs()
Definition
PoissonData.hpp:50
PoissonData::calculateConnectivity
void calculateConnectivity(GlobalID *conn, int size, GlobalID elemID)
Definition
PoissonData.cpp:266
PoissonData::~PoissonData
~PoissonData()
Definition
PoissonData.cpp:83
PoissonData::initializeFieldStuff
void initializeFieldStuff()
Definition
PoissonData.cpp:300
PoissonData::getElemLoad
double * getElemLoad(GlobalID elemID)
Definition
PoissonData.cpp:232
PoissonData::elemIDs_
GlobalID * elemIDs_
Definition
PoissonData.hpp:127
PoissonData::outputLevel_
int outputLevel_
Definition
PoissonData.hpp:105
PoissonData::startElement_
int startElement_
Definition
PoissonData.hpp:101
PoissonData::getBCFieldID
int getBCFieldID()
Definition
PoissonData.hpp:67
PoissonData::check1
void check1()
Definition
PoissonData.cpp:97
PoissonData::nodesPerElement_
int nodesPerElement_
Definition
PoissonData.hpp:114
PoissonData::printSharedNodes
void printSharedNodes(const char *str, int numShared, GlobalID *nodeIDs, int **shareProcs, int *numShareProcs)
Definition
PoissonData.cpp:688
PoissonData::getBottomSharedNodes
void getBottomSharedNodes(int &numShared, GlobalID *sharedNodeIDs, int *numProcsPerSharedNode, int **sharingProcs)
Definition
PoissonData.cpp:600
PoissonData::localProc_
int localProc_
Definition
PoissonData.hpp:104
PoissonData::numElemBlocks_
int numElemBlocks_
Definition
PoissonData.hpp:111
PoissonData::getFieldIDs
int * getFieldIDs()
Definition
PoissonData.hpp:45
PoissonData::getNumFields
int getNumFields()
Definition
PoissonData.hpp:43
PoissonData::fieldSize_
int fieldSize_
Definition
PoissonData.hpp:121
PoissonData::getLeftSharedNodes
void getLeftSharedNodes(int &numShared, GlobalID *sharedNodeIDs, int *numProcsPerSharedNode, int **sharingProcs)
Definition
PoissonData.cpp:336
PoissonData::maxProcX_
int maxProcX_
Definition
PoissonData.hpp:109
PoissonData::numLocalElements_
int numLocalElements_
Definition
PoissonData.hpp:100
PoissonData::BCValues_
std::vector< double > BCValues_
Definition
PoissonData.hpp:132
PoissonData::messageAbort
void messageAbort(const char *message)
Definition
PoissonData.cpp:173
PoissonData::getNumFieldsPerNodeList
int * getNumFieldsPerNodeList()
Definition
PoissonData.hpp:53
PoissonData::calculateBCs
void calculateBCs()
Definition
PoissonData.cpp:703
PoissonData::numProcs_
int numProcs_
Definition
PoissonData.hpp:103
PoissonData::getRightSharedNodes
void getRightSharedNodes(int &numShared, GlobalID *sharedNodeIDs, int *numProcsPerSharedNode, int **sharingProcs)
Definition
PoissonData.cpp:426
PoissonData::solveType_
int solveType_
Definition
PoissonData.hpp:112
PoissonData::procY_
int procY_
Definition
PoissonData.hpp:108
PoissonData::getFieldSizes
int * getFieldSizes()
Definition
PoissonData.hpp:44
PoissonData::getNumLocalElements
int getNumLocalElements()
Definition
PoissonData.hpp:49
PoissonData::fieldIDs_
int ** fieldIDs_
Definition
PoissonData.hpp:123
PoissonData::getElemStiffness
double ** getElemStiffness(GlobalID elemID)
Definition
PoissonData.cpp:199
PoissonData::PoissonData
PoissonData(int L, int numProcs, int localProc, int outputLevel)
Definition
PoissonData.cpp:30
PoissonData::getBCValues
double * getBCValues()
Definition
PoissonData.hpp:68
PoissonData::BCNodeIDs_
std::vector< GlobalID > BCNodeIDs_
Definition
PoissonData.hpp:131
PoissonData::getNumNodesPerElement
int getNumNodesPerElement()
Definition
PoissonData.hpp:51
PoissonData::elemBlockID_
GlobalID elemBlockID_
Definition
PoissonData.hpp:116
PoissonData::elemFormat_
int elemFormat_
Definition
PoissonData.hpp:118
PoissonData::getElemFormat
int getElemFormat()
Definition
PoissonData.hpp:40
PoissonData::getNodalFieldIDsTable
int ** getNodalFieldIDsTable()
Definition
PoissonData.hpp:54
PoissonData::deleteFieldArrays
void deleteFieldArrays()
Definition
PoissonData.cpp:321
PoissonData::calculateDistribution
void calculateDistribution()
Definition
PoissonData.cpp:114
PoissonData::elem_
Poisson_Elem * elem_
Definition
PoissonData.hpp:99
PoissonData::fieldArraysAllocated_
bool fieldArraysAllocated_
Definition
PoissonData.hpp:124
PoissonData::numFields_
int * numFields_
Definition
PoissonData.hpp:122
Poisson_Elem
Definition
Poisson_Elem.hpp:12
fei::LinearSystem
Definition
fei_LinearSystem.hpp:26
fei::MatrixGraph
Definition
fei_MatrixGraph.hpp:33
fei::Matrix
Definition
fei_Matrix.hpp:30
fei::VectorSpace
Definition
fei_VectorSpace.hpp:62
fei::Vector
Definition
fei_Vector.hpp:57
fei_base.hpp
GlobalID
int GlobalID
Definition
fei_defs.h:60
fei
Definition
fei_ArrayUtils.hpp:16
Generated by
1.17.0