forked from idaholab/moose
/
MaterialWarehouse.C
123 lines (109 loc) · 3.81 KB
/
MaterialWarehouse.C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/****************************************************************/
/* DO NOT MODIFY THIS HEADER */
/* MOOSE - Multiphysics Object Oriented Simulation Environment */
/* */
/* (c) 2010 Battelle Energy Alliance, LLC */
/* ALL RIGHTS RESERVED */
/* */
/* Prepared by Battelle Energy Alliance, LLC */
/* Under Contract No. DE-AC07-05ID14517 */
/* With the U. S. Department of Energy */
/* */
/* See COPYRIGHT for full restrictions */
/****************************************************************/
// MOOSE includes
#include "MaterialWarehouse.h"
#include "Material.h"
void
MaterialWarehouse::addObjects(std::shared_ptr<Material> block, std::shared_ptr<Material> neighbor, std::shared_ptr<Material> face, THREAD_ID tid /*=0*/)
{
MooseObjectWarehouse<Material>::addObject(block, tid);
_neighbor_materials.addObject(neighbor, tid);
_face_materials.addObject(face, tid);
}
const MooseObjectWarehouse<Material> &
MaterialWarehouse::operator[](Moose::MaterialDataType data_type) const
{
switch (data_type)
{
case Moose::NEIGHBOR_MATERIAL_DATA:
return _neighbor_materials;
break;
case Moose::FACE_MATERIAL_DATA:
return _face_materials;
break;
default:
return *this;
}
}
void
MaterialWarehouse::initialSetup(THREAD_ID tid /*=0*/) const
{
MooseObjectWarehouse<Material>::initialSetup(tid);
_neighbor_materials.initialSetup(tid);
_face_materials.initialSetup(tid);
}
void
MaterialWarehouse::timestepSetup(THREAD_ID tid /*=0*/) const
{
MooseObjectWarehouse<Material>::timestepSetup(tid);
_neighbor_materials.timestepSetup(tid);
_face_materials.timestepSetup(tid);
}
void
MaterialWarehouse::subdomainSetup(THREAD_ID tid /*=0*/) const
{
MooseObjectWarehouse<Material>::subdomainSetup(tid);
_neighbor_materials.subdomainSetup(tid);
_face_materials.subdomainSetup(tid);
}
void
MaterialWarehouse::subdomainSetup(SubdomainID id, THREAD_ID tid /*=0*/) const
{
MooseObjectWarehouse<Material>::subdomainSetup(id, tid);
_neighbor_materials.subdomainSetup(id, tid);
_face_materials.subdomainSetup(id, tid);
}
void
MaterialWarehouse::residualSetup(THREAD_ID tid /*=0*/) const
{
MooseObjectWarehouse<Material>::residualSetup(tid);
_neighbor_materials.residualSetup(tid);
_face_materials.residualSetup(tid);
}
void
MaterialWarehouse::jacobianSetup(THREAD_ID tid /*=0*/) const
{
MooseObjectWarehouse<Material>::jacobianSetup(tid);
_neighbor_materials.jacobianSetup(tid);
_face_materials.jacobianSetup(tid);
}
void
MaterialWarehouse::updateActive(THREAD_ID tid /*=0*/)
{
MooseObjectWarehouse<Material>::updateActive(tid);
_neighbor_materials.updateActive(tid);
_face_materials.updateActive(tid);
}
void
MaterialWarehouse::sort(THREAD_ID tid /*=0*/)
{
MooseObjectWarehouse<Material>::sort(tid);
_neighbor_materials.sort(tid);
_face_materials.sort(tid);
}
void
MaterialWarehouse::updateBlockMatPropDependency(SubdomainID id, std::set<MaterialProperty *> & needed_mat_props, THREAD_ID /*tid = 0*/) const
{
if (hasActiveBlockObjects(id, tid))
updateMatPropDependencyHelper(needed_mat_props, getActiveBlockObjects(id, tid));
}
void
MaterialWarehouse::updateMatPropDependencyHelper(std::set<MaterialProperty *> & needed_mat_props, const std::vector<MooseSharedPointer<T> > & objects)
{
for (typename std::vector<MooseSharedPointer<T> >::const_iterator it = objects.begin(); it != objects.end(); ++it)
{
const std::set<MaterialProperty *> & mp_deps = (*it)->getMatPropDependencies();
needed_mat_props.insert(mp_deps.begin(), mp_deps.end());
}
}