12 #ifndef ASMHANDLER_HPP_ 13 #define ASMHANDLER_HPP_ 15 #include <opm/common/utility/platform_dependent/disable_warnings.h> 17 #include <dune/geometry/referenceelements.hh> 18 #include <dune/common/fmatrix.hh> 19 #include <dune/istl/bvector.hh> 20 #include <dune/common/fvector.hh> 22 #include <opm/common/utility/platform_dependent/reenable_warnings.h> 30 namespace Elasticity {
34 template<
class Gr
idType>
38 static const int dim = GridType::dimension;
44 typedef typename GridType::LeafGridView::template Codim<0>::Iterator
LeafIterator;
55 for (MPCMap::iterator it=
mpcs.begin(); it !=
mpcs.end();++it)
109 void addElement(
const Dune::FieldMatrix<double,esize,esize>* K,
110 const Dune::FieldVector<double,esize>* S,
114 void addMatElement(
const int i,
const int j,
const double val)
139 MPC*
getMPC(
int node,
int dof);
145 const std::pair<Direction,NodeValue>& entry);
170 for (MPCMap::iterator it =
mpcs.begin();
171 it !=
mpcs.end();++it)
201 void addDOF(
int row,
int erow,
202 const Dune::FieldMatrix<double,esize,esize>* K,
203 const Dune::FieldVector<double,esize>* S,
222 typedef typename fixMap::iterator
fixIt;
Matrix A
The linear operator.
Definition: asmhandler.hpp:231
int getEquationForDof(int node, int dof)
Get the equation number for a given dof on a given node.
Definition: asmhandler.hpp:79
Helper class with some matrix operations.
void printOperator() const
Print the current operator.
Definition: asmhandler_impl.hpp:235
size_t getEqns() const
Get the number of equations in the system.
Definition: asmhandler.hpp:70
MPC * getMPC(int node, int dof)
Look for and return a MPC for a specified node+dof.
Definition: asmhandler_impl.hpp:205
MPCMap mpcs
The set of MPC.
Definition: asmhandler.hpp:210
Dune::BlockVector< Dune::FieldVector< double, 1 > > Vector
A vector holding our RHS.
Definition: matrixops.hpp:33
Representation of multi-point constraint (MPC) equations.
void addMPC(MPC *mpc)
Add a MPC.
Definition: asmhandler_impl.hpp:187
ASMHandler & operator=(const ASMHandler &)=delete
No copying of this class.
GridType::LeafGridView::template Codim< 0 >::Iterator LeafIterator
An iterator over grid cells.
Definition: asmhandler.hpp:44
void printLoadVector() const
Print the current load vector.
Definition: asmhandler_impl.hpp:241
~ASMHandler()
Destructor.
Definition: asmhandler.hpp:53
void addElement(const Dune::FieldMatrix< double, esize, esize > *K, const Dune::FieldVector< double, esize > *S, const LeafIterator &cell, Vector *b=NULL)
Add an element matrix/vector to the system.
Definition: asmhandler_impl.hpp:85
GridType::LeafGridView::IndexSet LeafIndexSet
A set of indices.
Definition: asmhandler.hpp:41
AdjacencyPattern adjacencyPattern
Holds the adjacency pattern of the sparse matrix.
Definition: asmhandler.hpp:228
void expandSolution(Vector &result, const Vector &u)
Expand a system vector to a solution vector.
Definition: asmhandler_impl.hpp:145
ASMHandler(const GridType &gv_)
The default constructor.
Definition: asmhandler.hpp:48
void determineAdjacencyPattern()
Internal function. Calculate adjacency pattern.
Definition: asmhandler_impl.hpp:375
std::map< int, MPC * > MPCMap
A mapping from dof to MPCs.
Definition: mpc.hh:156
Inverting small matrices.
Definition: ImplicitAssembly.hpp:43
bool isFixed(int node)
Check if a node is marked as fixed (in any direction)
Definition: asmhandler.hpp:149
void initForAssembly()
This function needs to be called before starting the element assembly.
Definition: asmhandler_impl.hpp:22
void addDOF(int row, int erow, const Dune::FieldMatrix< double, esize, esize > *K, const Dune::FieldVector< double, esize > *S, const LeafIndexSet &set, const LeafIterator &cell, Vector *b, double scale=1.f)
Internal function.
Definition: asmhandler_impl.hpp:52
Vector & getLoadVector()
Obtain a reference to the load vector.
Definition: asmhandler.hpp:93
Dune::BCRSMatrix< Dune::FieldMatrix< double, 1, 1 > > Matrix
A sparse matrix holding our operator.
Definition: matrixops.hpp:27
Dune::FieldVector< double, dim > NodeValue
A vectorial node value.
Definition: asmhandler.hpp:66
Matrix & getOperator()
Obtain a reference to the linear operator.
Definition: asmhandler.hpp:86
Class handling finite element assembly.
Definition: asmhandler.hpp:35
void extractValues(Dune::FieldVector< double, comp > &v, const Vector &u, const LeafIterator &it)
Extract values corresponding to cell.
Definition: asmhandler_impl.hpp:114
fixMap::iterator fixIt
Iterator over a fixmap.
Definition: asmhandler.hpp:222
std::pair< Direction, NodeValue > fixEntry
Fixed nodes.
Definition: asmhandler.hpp:216
void preprocess()
Internal function. Generate meqn for registered MPC/fixed nodes.
Definition: asmhandler_impl.hpp:315
Class handling finite element assembly - template implementations.
size_t maxeqn
The number of equations in the system.
Definition: asmhandler.hpp:240
Vector b
The load vector.
Definition: asmhandler.hpp:234
void updateFixedNode(int node, const std::pair< Direction, NodeValue > &entry)
Update/add a fixed node.
Definition: asmhandler_impl.hpp:214
const GridType & gv
A reference to the grid in use.
Definition: asmhandler.hpp:237
void resolveMPCChain(MPC *mpc)
Internal function.
Definition: asmhandler_impl.hpp:250
std::vector< std::set< int > > AdjacencyPattern
For storing matrix adjacency/sparsity patterns.
Definition: matrixops.hpp:30
static const int dim
The dimension of the grid.
Definition: asmhandler.hpp:38
std::vector< int > meqn
Vector of (interleaved) dof<->eqn mapping.
Definition: asmhandler.hpp:213
A class for representing a general multi-point constraint equation.
Definition: mpc.hh:58
Logging helper utilities.
void resolveMPCChains()
Resolve chained MPCs.
Definition: asmhandler.hpp:168
std::map< int, fixEntry > fixMap
A mapping from dof to fix value info.
Definition: asmhandler.hpp:219
void nodeAdjacency(const LeafIterator &it, int vertexsize, int row)
Internal function.
Definition: asmhandler_impl.hpp:351
AdjacencyPattern & getAdjacencyPattern()
Access current adjacency pattern.
Definition: asmhandler.hpp:162
fixMap fixedNodes
The map holding information about our fixed nodes.
Definition: asmhandler.hpp:225