Panzer
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
disc-fe
src
Panzer_FaceToElement.hpp
Go to the documentation of this file.
1
// @HEADER
2
// ***********************************************************************
3
//
4
// Panzer: A partial differential equation assembly
5
// engine for strongly coupled complex multiphysics systems
6
// Copyright (2011) Sandia Corporation
7
//
8
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9
// the U.S. Government retains certain rights in this software.
10
//
11
// Redistribution and use in source and binary forms, with or without
12
// modification, are permitted provided that the following conditions are
13
// met:
14
//
15
// 1. Redistributions of source code must retain the above copyright
16
// notice, this list of conditions and the following disclaimer.
17
//
18
// 2. Redistributions in binary form must reproduce the above copyright
19
// notice, this list of conditions and the following disclaimer in the
20
// documentation and/or other materials provided with the distribution.
21
//
22
// 3. Neither the name of the Corporation nor the names of the
23
// contributors may be used to endorse or promote products derived from
24
// this software without specific prior written permission.
25
//
26
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
//
38
// Questions? Contact Roger P. Pawlowski (rppawlo@sandia.gov) and
39
// Eric C. Cyr (eccyr@sandia.gov)
40
// ***********************************************************************
41
// @HEADER
42
43
/*
44
* FaceToElement.hpp
45
*
46
* Created on: Nov 15, 2016
47
* Author: mbetten
48
*/
49
50
#ifndef PANZER_FACE_TO_ELEMENT_HPP
51
#define PANZER_FACE_TO_ELEMENT_HPP
52
53
#include "Phalanx_KokkosDeviceTypes.hpp"
54
55
#include "
Panzer_ConnManager.hpp
"
56
57
#include <Tpetra_Map.hpp>
58
#include <Tpetra_MultiVector.hpp>
59
#include <Tpetra_Import.hpp>
60
#include <Tpetra_Export.hpp>
61
62
namespace
panzer
63
{
64
68
template
<
typename
LocalOrdinal,
typename
GlobalOrdinal>
69
class
FaceToElement
{
70
private
:
71
FaceToElement
(
const
FaceToElement
&);
// disallowed
72
73
public
:
74
75
FaceToElement
();
76
77
#ifndef PANZER_HIDE_DEPRECATED_CODE
82
[[deprecated]]
83
FaceToElement
(
panzer::ConnManager
& conn);
84
#endif
85
86
FaceToElement
(
panzer::ConnManager
& conn,
87
const
Teuchos::RCP<
const
Teuchos::Comm<int>> comm);
88
89
#ifndef PANZER_HIDE_DEPRECATED_CODE
95
[[deprecated]]
96
void
initialize
(
panzer::ConnManager
& conn);
97
#endif
98
101
void
initialize
(
panzer::ConnManager
& conn,
102
const
Teuchos::RCP<
const
Teuchos::Comm<int>> comm);
103
104
105
GlobalOrdinal
getLeftElem
(GlobalOrdinal face_id)
const
106
{LocalOrdinal lid =
face_map_
->getLocalElement(face_id);
return
elems_by_face_
(lid,0);}
107
108
GlobalOrdinal
getRightElem
(GlobalOrdinal face_id)
const
109
{LocalOrdinal lid =
face_map_
->getLocalElement(face_id);
return
elems_by_face_
(lid,1);}
110
111
int
getLeftBlock
(GlobalOrdinal face_id)
const
112
{LocalOrdinal lid =
face_map_
->getLocalElement(face_id);
return
blocks_by_face_
(lid,0);}
113
114
int
getRightBlock
(GlobalOrdinal face_id)
const
115
{LocalOrdinal lid =
face_map_
->getLocalElement(face_id);
return
blocks_by_face_
(lid,1);}
116
117
int
getLeftProc
(GlobalOrdinal face_id)
const
118
{LocalOrdinal lid =
face_map_
->getLocalElement(face_id);
return
procs_by_face_
(lid,0);}
119
120
int
getRightProc
(GlobalOrdinal face_id)
const
121
{LocalOrdinal lid =
face_map_
->getLocalElement(face_id);
return
procs_by_face_
(lid,1);}
122
123
PHX::View<const GlobalOrdinal*[2]>
getFaceToElementsMap
()
const
124
{
return
elems_by_face_
; }
125
126
PHX::View<const int*[2]>
getFaceToCellLocalIdxMap
()
const
127
{
return
lidx_by_face_
; }
128
129
protected
:
130
131
PHX::View<GlobalOrdinal *[2]>
elems_by_face_
;
132
PHX::View<int *[2]>
lidx_by_face_
;
133
PHX::View<int *[2]>
blocks_by_face_
;
134
PHX::View<int *[2]>
procs_by_face_
;
135
136
typedef
Tpetra::KokkosCompat::KokkosDeviceWrapperNode<PHX::Device>
NodeType
;
137
typedef
Tpetra::Map<LocalOrdinal, GlobalOrdinal, NodeType>
Map
;
138
typedef
Tpetra::Export<LocalOrdinal, GlobalOrdinal, NodeType>
Export
;
139
typedef
Tpetra::Import<LocalOrdinal, GlobalOrdinal, NodeType>
Import
;
140
typedef
Tpetra::MultiVector<GlobalOrdinal, LocalOrdinal, GlobalOrdinal, NodeType>
GOMultiVector
;
141
142
143
Teuchos::RCP<const Map>
face_map_
;
144
145
};
146
147
}
148
149
#endif
Panzer_ConnManager.hpp
panzer::ConnManager
Pure virtual base class for supplying mesh connectivity information to the DOF Manager.
Definition
Panzer_ConnManager.hpp:58
panzer::FaceToElement::face_map_
Teuchos::RCP< const Map > face_map_
Definition
Panzer_FaceToElement.hpp:143
panzer::FaceToElement::GOMultiVector
Tpetra::MultiVector< GlobalOrdinal, LocalOrdinal, GlobalOrdinal, NodeType > GOMultiVector
Definition
Panzer_FaceToElement.hpp:140
panzer::FaceToElement::Export
Tpetra::Export< LocalOrdinal, GlobalOrdinal, NodeType > Export
Definition
Panzer_FaceToElement.hpp:138
panzer::FaceToElement::lidx_by_face_
PHX::View< int *[2]> lidx_by_face_
Definition
Panzer_FaceToElement.hpp:132
panzer::FaceToElement::getLeftElem
GlobalOrdinal getLeftElem(GlobalOrdinal face_id) const
Definition
Panzer_FaceToElement.hpp:105
panzer::FaceToElement::elems_by_face_
PHX::View< GlobalOrdinal *[2]> elems_by_face_
Definition
Panzer_FaceToElement.hpp:131
panzer::FaceToElement::getRightElem
GlobalOrdinal getRightElem(GlobalOrdinal face_id) const
Definition
Panzer_FaceToElement.hpp:108
panzer::FaceToElement::getRightProc
int getRightProc(GlobalOrdinal face_id) const
Definition
Panzer_FaceToElement.hpp:120
panzer::FaceToElement::getRightBlock
int getRightBlock(GlobalOrdinal face_id) const
Definition
Panzer_FaceToElement.hpp:114
panzer::FaceToElement::getLeftProc
int getLeftProc(GlobalOrdinal face_id) const
Definition
Panzer_FaceToElement.hpp:117
panzer::FaceToElement::procs_by_face_
PHX::View< int *[2]> procs_by_face_
Definition
Panzer_FaceToElement.hpp:134
panzer::FaceToElement::initialize
void initialize(panzer::ConnManager &conn)
Definition
Panzer_FaceToElement_impl.hpp:101
panzer::FaceToElement::getFaceToCellLocalIdxMap
PHX::View< const int *[2]> getFaceToCellLocalIdxMap() const
Definition
Panzer_FaceToElement.hpp:126
panzer::FaceToElement::Map
Tpetra::Map< LocalOrdinal, GlobalOrdinal, NodeType > Map
Definition
Panzer_FaceToElement.hpp:137
panzer::FaceToElement::Import
Tpetra::Import< LocalOrdinal, GlobalOrdinal, NodeType > Import
Definition
Panzer_FaceToElement.hpp:139
panzer::FaceToElement::FaceToElement
FaceToElement()
Definition
Panzer_FaceToElement_impl.hpp:68
panzer::FaceToElement::NodeType
Tpetra::KokkosCompat::KokkosDeviceWrapperNode< PHX::Device > NodeType
Definition
Panzer_FaceToElement.hpp:136
panzer::FaceToElement::getLeftBlock
int getLeftBlock(GlobalOrdinal face_id) const
Definition
Panzer_FaceToElement.hpp:111
panzer::FaceToElement::blocks_by_face_
PHX::View< int *[2]> blocks_by_face_
Definition
Panzer_FaceToElement.hpp:133
panzer::FaceToElement::getFaceToElementsMap
PHX::View< const GlobalOrdinal *[2]> getFaceToElementsMap() const
Definition
Panzer_FaceToElement.hpp:123
panzer::FaceToElement::FaceToElement
FaceToElement(const FaceToElement &)
panzer
Computes .
Definition
Panzer_BasisValues_Evaluator_decl.hpp:54
Generated by
1.17.0