Panzer
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
disc-fe
src
Panzer_AssemblyEngine_InArgs.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
#ifndef PANZER_ASSEMBLY_ENGINE_INARGS_HPP
44
#define PANZER_ASSEMBLY_ENGINE_INARGS_HPP
45
46
#include "Teuchos_RCP.hpp"
47
#include "Teuchos_ScalarTraits.hpp"
48
49
#include "
Panzer_GlobalEvaluationDataContainer.hpp
"
50
51
class
Epetra_Vector
;
52
class
Epetra_CrsMatrix
;
53
class
Epetra_Map
;
54
55
namespace
panzer
{
56
57
class
LinearObjContainer
;
58
59
class
AssemblyEngineInArgs
{
60
public
:
61
62
AssemblyEngineInArgs
(
const
Teuchos::RCP<panzer::LinearObjContainer> & ghostedContainer,
63
const
Teuchos::RCP<panzer::LinearObjContainer> & container)
64
:
ghostedContainer_
(ghostedContainer),
container_
(container)
65
,
alpha
(
Teuchos
::ScalarTraits<double>::nan())
// also setup some painful and
66
,
beta
(
Teuchos
::ScalarTraits<double>::nan())
// hopefully loud initial values
67
,
time
(
Teuchos
::ScalarTraits<double>::nan())
68
,
step_size
(
Teuchos
::ScalarTraits<double>::nan())
69
,
stage_number
(
Teuchos
::ScalarTraits<double>::one())
70
,
evaluate_transient_terms
(false)
71
,
first_sensitivities_name
(
""
)
72
,
second_sensitivities_name
(
""
)
73
,
apply_dirichlet_beta
(false)
74
,
dirichlet_beta
(0.0)
75
{ }
76
77
AssemblyEngineInArgs
()
78
:
ghostedContainer_
(
Teuchos
::null),
container_
(
Teuchos
::null)
79
,
alpha
(
Teuchos
::ScalarTraits<double>::nan())
// also setup some painful and
80
,
beta
(
Teuchos
::ScalarTraits<double>::nan())
// hopefully loud initial values
81
,
time
(
Teuchos
::ScalarTraits<double>::nan())
82
,
step_size
(
Teuchos
::ScalarTraits<double>::nan())
83
,
stage_number
(
Teuchos
::ScalarTraits<double>::one())
84
,
evaluate_transient_terms
(false)
85
,
first_sensitivities_name
(
""
)
86
,
second_sensitivities_name
(
""
)
87
,
apply_dirichlet_beta
(false)
88
,
dirichlet_beta
(0.0)
89
{ }
90
91
Teuchos::RCP<panzer::LinearObjContainer>
ghostedContainer_
;
92
Teuchos::RCP<panzer::LinearObjContainer>
container_
;
93
94
double
alpha
;
95
double
beta
;
96
double
time
;
97
double
step_size
;
98
double
stage_number
;
99
std::vector<double>
gather_seeds
;
// generic gather seeds
100
bool
evaluate_transient_terms
;
101
std::string
first_sensitivities_name
;
102
std::string
second_sensitivities_name
;
103
104
bool
apply_dirichlet_beta
;
105
double
dirichlet_beta
;
106
113
void
addGlobalEvaluationData
(
const
std::string & key,
const
Teuchos::RCP<GlobalEvaluationData> & ged)
114
{
115
TEUCHOS_TEST_FOR_EXCEPTION(
ged_map
.find(key)!=
ged_map
.end(),std::logic_error,
116
"AssemblyEngine::addGlobalEvaluationData: Method cannot over write existing "
117
"data object with key \""
+ key +
"\""
);
118
119
ged_map
[key] = ged;
120
}
121
122
void
addGlobalEvaluationData
(
const
GlobalEvaluationDataContainer
& gedc)
123
{
124
ged_map
.insert(gedc.
begin
(),gedc.
end
());
125
}
126
128
void
fillGlobalEvaluationDataContainer
(
GlobalEvaluationDataContainer
& gedc)
const
129
{
130
std::map<std::string,Teuchos::RCP<GlobalEvaluationData> >::const_iterator itr;
131
for
(itr=
ged_map
.begin();itr!=
ged_map
.end();++itr)
132
gedc.
addDataObject
(itr->first,itr->second);
133
}
134
135
const
std::map<std::string,Teuchos::RCP<GlobalEvaluationData> > &
136
getGlobalEvaluationDataMap
()
const
137
{
return
ged_map
; }
138
139
private
:
140
std::map<std::string,Teuchos::RCP<GlobalEvaluationData> >
ged_map
;
141
};
142
143
147
inline
std::ostream &
operator<<
(std::ostream & os,
const
AssemblyEngineInArgs
& in)
148
{
149
os <<
"AE Inargs:\n"
150
<<
" alpha = "
<< in.
alpha
<<
"\n"
151
<<
" beta = "
<< in.
beta
<<
"\n"
152
<<
" time = "
<< in.
time
<<
"\n"
153
<<
" step_size = "
<< in.
step_size
<<
"\n"
154
<<
" stage_number = "
<< in.
stage_number
<<
"\n"
155
<<
" eval_tran = "
<< in.
evaluate_transient_terms
<<
"\n"
156
<<
" 1st sens_name = "
<< in.
first_sensitivities_name
<<
"\n"
157
<<
" 2nd sens_name = "
<< in.
second_sensitivities_name
<<
"\n"
158
<<
" apply_db = "
<< in.
apply_dirichlet_beta
<<
"\n"
159
<<
" db = "
<< in.
dirichlet_beta
<<
"\n"
160
<<
" seeds = "
;
161
for
(std::size_t i=0;i<in.
gather_seeds
.size();i++)
162
os << in.
gather_seeds
[i] <<
" "
;
163
os <<
"\n"
;
164
165
const
std::map<std::string,Teuchos::RCP<GlobalEvaluationData> > & ged_map
166
= in.
getGlobalEvaluationDataMap
();
167
os <<
" ged_map = "
;
168
for
(std::map<std::string,Teuchos::RCP<GlobalEvaluationData> >::const_iterator itr=ged_map.begin();
169
itr!=ged_map.end();++itr) {
170
os <<
" \""
<< itr->first <<
"\": "
;
171
itr->second->print(os);
172
os <<
"\n"
;
173
}
174
os << std::endl;
175
176
return
os;
177
}
178
179
}
180
181
#endif
Panzer_GlobalEvaluationDataContainer.hpp
Epetra_CrsMatrix
Epetra_Map
Epetra_Vector
panzer::AssemblyEngineInArgs
Definition
Panzer_AssemblyEngine_InArgs.hpp:59
panzer::AssemblyEngineInArgs::stage_number
double stage_number
Definition
Panzer_AssemblyEngine_InArgs.hpp:98
panzer::AssemblyEngineInArgs::gather_seeds
std::vector< double > gather_seeds
Definition
Panzer_AssemblyEngine_InArgs.hpp:99
panzer::AssemblyEngineInArgs::ged_map
std::map< std::string, Teuchos::RCP< GlobalEvaluationData > > ged_map
Definition
Panzer_AssemblyEngine_InArgs.hpp:140
panzer::AssemblyEngineInArgs::AssemblyEngineInArgs
AssemblyEngineInArgs(const Teuchos::RCP< panzer::LinearObjContainer > &ghostedContainer, const Teuchos::RCP< panzer::LinearObjContainer > &container)
Definition
Panzer_AssemblyEngine_InArgs.hpp:62
panzer::AssemblyEngineInArgs::addGlobalEvaluationData
void addGlobalEvaluationData(const std::string &key, const Teuchos::RCP< GlobalEvaluationData > &ged)
Definition
Panzer_AssemblyEngine_InArgs.hpp:113
panzer::AssemblyEngineInArgs::dirichlet_beta
double dirichlet_beta
Definition
Panzer_AssemblyEngine_InArgs.hpp:105
panzer::AssemblyEngineInArgs::addGlobalEvaluationData
void addGlobalEvaluationData(const GlobalEvaluationDataContainer &gedc)
Definition
Panzer_AssemblyEngine_InArgs.hpp:122
panzer::AssemblyEngineInArgs::ghostedContainer_
Teuchos::RCP< panzer::LinearObjContainer > ghostedContainer_
Definition
Panzer_AssemblyEngine_InArgs.hpp:91
panzer::AssemblyEngineInArgs::step_size
double step_size
Definition
Panzer_AssemblyEngine_InArgs.hpp:97
panzer::AssemblyEngineInArgs::getGlobalEvaluationDataMap
const std::map< std::string, Teuchos::RCP< GlobalEvaluationData > > & getGlobalEvaluationDataMap() const
Definition
Panzer_AssemblyEngine_InArgs.hpp:136
panzer::AssemblyEngineInArgs::apply_dirichlet_beta
bool apply_dirichlet_beta
Definition
Panzer_AssemblyEngine_InArgs.hpp:104
panzer::AssemblyEngineInArgs::second_sensitivities_name
std::string second_sensitivities_name
Definition
Panzer_AssemblyEngine_InArgs.hpp:102
panzer::AssemblyEngineInArgs::alpha
double alpha
Definition
Panzer_AssemblyEngine_InArgs.hpp:94
panzer::AssemblyEngineInArgs::evaluate_transient_terms
bool evaluate_transient_terms
Definition
Panzer_AssemblyEngine_InArgs.hpp:100
panzer::AssemblyEngineInArgs::container_
Teuchos::RCP< panzer::LinearObjContainer > container_
Definition
Panzer_AssemblyEngine_InArgs.hpp:92
panzer::AssemblyEngineInArgs::time
double time
Definition
Panzer_AssemblyEngine_InArgs.hpp:96
panzer::AssemblyEngineInArgs::first_sensitivities_name
std::string first_sensitivities_name
Definition
Panzer_AssemblyEngine_InArgs.hpp:101
panzer::AssemblyEngineInArgs::AssemblyEngineInArgs
AssemblyEngineInArgs()
Definition
Panzer_AssemblyEngine_InArgs.hpp:77
panzer::AssemblyEngineInArgs::beta
double beta
Definition
Panzer_AssemblyEngine_InArgs.hpp:95
panzer::AssemblyEngineInArgs::fillGlobalEvaluationDataContainer
void fillGlobalEvaluationDataContainer(GlobalEvaluationDataContainer &gedc) const
Using internal map fill the global evaluation data container object.
Definition
Panzer_AssemblyEngine_InArgs.hpp:128
panzer::GlobalEvaluationDataContainer
Definition
Panzer_GlobalEvaluationDataContainer.hpp:54
panzer::GlobalEvaluationDataContainer::addDataObject
void addDataObject(const std::string &key, const Teuchos::RCP< GlobalEvaluationData > &ged)
Definition
Panzer_GlobalEvaluationDataContainer.cpp:51
panzer::GlobalEvaluationDataContainer::begin
const_iterator begin() const
Definition
Panzer_GlobalEvaluationDataContainer.hpp:81
panzer::GlobalEvaluationDataContainer::end
const_iterator end() const
Definition
Panzer_GlobalEvaluationDataContainer.hpp:82
panzer::LinearObjContainer
Definition
Panzer_LinearObjContainer.hpp:59
Teuchos
panzer
Computes .
Definition
Panzer_BasisValues_Evaluator_decl.hpp:54
panzer::operator<<
std::ostream & operator<<(std::ostream &os, const AssemblyEngineInArgs &in)
Definition
Panzer_AssemblyEngine_InArgs.hpp:147
Generated by
1.17.0