waves
Basic FE playground
DiscreteProblem.h
Go to the documentation of this file.
1 #ifndef KATOPTRON_DISCRETEPROBLEM_H
2 #define KATOPTRON_DISCRETEPROBLEM_H
3 
4 #include "katoptron.h"
5 #include "Map.h"
6 #include "Domain.h"
7 #include "Loads.h"
8 #include "Algebraic.h"
9 #include "ElementMatrices.h"
10 #include "ElementVectors.h"
11 
12 #include <Xpetra_Map.hpp>
13 #include <Xpetra_TpetraMap.hpp>
14 #include <Xpetra_BlockedMap.hpp>
15 #include <Xpetra_BlockedCrsMatrix.hpp>
16 #include <Xpetra_BlockedMultiVector.hpp>
17 #include <Xpetra_TpetraCrsMatrix.hpp>
18 #include <Xpetra_TpetraMultiVector.hpp>
19 #include <Xpetra_CrsMatrixWrap.hpp>
20 //#include <Xpetra_UseShortNames.hpp>
21 
22 #include "LinearSolver.h"
23 
24 #include "Mortar.h"
25 
26 #include <mpi.h>
27 
28 namespace katoptron
29 {
30 
39 template <typename scalar>
41 {
42 private:
43  Kokkos::View<scalar *, Kokkos::LayoutRight> old_old_activity;
44  Kokkos::View<scalar *, Kokkos::LayoutRight> old_activity;
45 
46 public:
47  //
48  // Convenience typedefs
49  //
53  typedef Tpetra::Export<local_ordinal_type, global_ordinal_type> export_type;
54 
59 
65 
71 #ifndef SWIG
72  Teuchos::RCP<Domain<scalar>> domain;
73  Teuchos::RCP<Loads<scalar>> loads;
74  Teuchos::RCP<Algebraic<scalar>> algebraic;
75 #endif
76  size_t numPrimalDPN;
77 
78  DiscreteProblem(Problem &pbl, size_t _numPrimalDPN,
79  Teuchos::RCP<Teuchos::ParameterList> randomParams,
80  Kokkos::View<scalar *, Kokkos::LayoutLeft> m_rv_values);
81 
83  {
84  std::cout << "~DiscreteProblem()\n";
85  }
86 
87 #ifndef SWIG
88  void createBlockMatrix(scalar gamma, bool write, bool merge);
89  void createBlockMVector(bool write);
90  void computeMatrices(void);
91  void computeContactMatrices(MPI_Comm comm);
92  void computeLoads(bool scaled = false);
93  Mask<scalar> updateActivity(int active_set_iteration);
94 
95 #endif
96 };
97 }; // namespace katoptron
98 
99 #endif //KATOPTRON_DISCRETEPROBLEM_H
katoptron::Map::local_ordinal_type
int local_ordinal_type
Definition: Map.h:27
katoptron::DiscreteProblem::xpetra_bmap_type
Map::xpetra_bmap_type xpetra_bmap_type
Definition: DiscreteProblem.h:58
katoptron::Matrices::xpetra_wcrs_type
Xpetra::CrsMatrixWrap< scalar, local_ordinal_type, global_ordinal_type, node_type > xpetra_wcrs_type
Definition: Matrices.h:62
katoptron::Matrices::xpetra_tcrs_type
Xpetra::TpetraCrsMatrix< scalar, local_ordinal_type, global_ordinal_type, node_type > xpetra_tcrs_type
Definition: Matrices.h:64
katoptron::DiscreteProblem::xpetra_tcrs_type
Matrices< scalar >::xpetra_tcrs_type xpetra_tcrs_type
Definition: DiscreteProblem.h:70
ElementVectors.h
katoptron::DiscreteProblem::xpetra_wcrs_type
Matrices< scalar >::xpetra_wcrs_type xpetra_wcrs_type
Definition: DiscreteProblem.h:68
katoptron::DiscreteProblem::algebraic
Teuchos::RCP< Algebraic< scalar > > algebraic
Definition: DiscreteProblem.h:74
Domain.h
katoptron::Map::global_ordinal_type
int global_ordinal_type
Definition: Map.h:28
katoptron::DiscreteProblem::global_ordinal_type
Map::global_ordinal_type global_ordinal_type
Definition: DiscreteProblem.h:51
katoptron::DiscreteProblem::xpetra_tmvector_type
Vectors< scalar >::xpetra_tmvector_type xpetra_tmvector_type
Definition: DiscreteProblem.h:64
katoptron::DiscreteProblem::old_activity
Kokkos::View< scalar *, Kokkos::LayoutRight > old_activity
Definition: DiscreteProblem.h:44
katoptron::DiscreteProblem::xpetra_bmvector_type
Vectors< scalar >::xpetra_bmvector_type xpetra_bmvector_type
Definition: DiscreteProblem.h:62
katoptron::DiscreteProblem::numPrimalDPN
size_t numPrimalDPN
Definition: DiscreteProblem.h:76
katoptron::DiscreteProblem::tpetra_crs_type
Matrices< scalar >::tpetra_crs_type tpetra_crs_type
Definition: DiscreteProblem.h:66
katoptron::DiscreteProblem::xpetra_tmap_type
Map::xpetra_tmap_type xpetra_tmap_type
Definition: DiscreteProblem.h:57
katoptron::Matrices::xpetra_crs_type
Xpetra::CrsMatrix< scalar, local_ordinal_type, global_ordinal_type, node_type > xpetra_crs_type
Definition: Matrices.h:61
katoptron::Map::xpetra_map_type
Xpetra::Map< local_ordinal_type, global_ordinal_type, node_type > xpetra_map_type
Definition: Map.h:31
katoptron::DiscreteProblem::old_old_activity
Kokkos::View< scalar *, Kokkos::LayoutRight > old_old_activity
Definition: DiscreteProblem.h:43
katoptron::DiscreteProblem::local_ordinal_type
Map::local_ordinal_type local_ordinal_type
Definition: DiscreteProblem.h:50
katoptron::DiscreteProblem::xpetra_map_type
Map::xpetra_map_type xpetra_map_type
Definition: DiscreteProblem.h:56
katoptron::Vectors::xpetra_mvector_type
Xpetra::MultiVector< scalar, local_ordinal_type, global_ordinal_type, node_type > xpetra_mvector_type
Definition: Vectors.h:38
katoptron::DiscreteProblem::xpetra_crs_type
Matrices< scalar >::xpetra_crs_type xpetra_crs_type
Definition: DiscreteProblem.h:67
Algebraic.h
katoptron::DiscreteProblem::export_type
Tpetra::Export< local_ordinal_type, global_ordinal_type > export_type
Definition: DiscreteProblem.h:53
katoptron::DiscreteProblem::tpetra_map_type
Map::tpetra_map_type tpetra_map_type
Definition: DiscreteProblem.h:55
Mortar.h
katoptron
katoptron namespace
Definition: Algebraic.h:18
katoptron::DiscreteProblem::xpetra_mvector_type
Vectors< scalar >::xpetra_mvector_type xpetra_mvector_type
Definition: DiscreteProblem.h:63
katoptron::DiscreteProblem::computeMatrices
void computeMatrices(void)
Compute the primal matrix.
Definition: DiscreteProblem.hpp:831
katoptron::DiscreteProblem::computeLoads
void computeLoads(bool scaled=false)
Compute the rhs.
Definition: DiscreteProblem.hpp:1041
katoptron::Matrices::tpetra_crs_type
Tpetra::CrsMatrix< scalar, local_ordinal_type, global_ordinal_type, node_type > tpetra_crs_type
Definition: Matrices.h:58
katoptron::Vectors::tpetra_mvector_type
Tpetra::MultiVector< scalar, local_ordinal_type, global_ordinal_type, node_type > tpetra_mvector_type
Definition: Vectors.h:35
katoptron::DiscreteProblem::~DiscreteProblem
~DiscreteProblem()
Definition: DiscreteProblem.h:82
katoptron::DiscreteProblem::computeContactMatrices
void computeContactMatrices(MPI_Comm comm)
Compute the contacts matrices.
Definition: DiscreteProblem.hpp:818
katoptron::Map::xpetra_bmap_type
Xpetra::BlockedMap< local_ordinal_type, global_ordinal_type, node_type > xpetra_bmap_type
Definition: Map.h:33
katoptron::Map::tpetra_map_type
Tpetra::Map< local_ordinal_type, global_ordinal_type, node_type > tpetra_map_type
Definition: Map.h:30
katoptron::DiscreteProblem::tpetra_vector_type
Vectors< scalar >::tpetra_vector_type tpetra_vector_type
Definition: DiscreteProblem.h:60
ElementMatrices.h
katoptron::Map::node_type
KokkosClassic::DefaultNode::DefaultNodeType node_type
Definition: Map.h:29
katoptron::Map::xpetra_tmap_type
Xpetra::TpetraMap< local_ordinal_type, global_ordinal_type, node_type > xpetra_tmap_type
Definition: Map.h:32
katoptron::Vectors::xpetra_tmvector_type
Xpetra::TpetraMultiVector< scalar, local_ordinal_type, global_ordinal_type, node_type > xpetra_tmvector_type
Definition: Vectors.h:39
LinearSolver.h
katoptron::DiscreteProblem::xpetra_bcrs_type
Matrices< scalar >::xpetra_bcrs_type xpetra_bcrs_type
Definition: DiscreteProblem.h:69
katoptron::Problem
Class which is used to specify in Python the thermomechanical to solve.
Definition: wProblem.h:19
katoptron::DiscreteProblem::domain
Teuchos::RCP< Domain< scalar > > domain
Definition: DiscreteProblem.h:72
katoptron::DiscreteProblem::tpetra_mvector_type
Vectors< scalar >::tpetra_mvector_type tpetra_mvector_type
Definition: DiscreteProblem.h:61
katoptron.h
katoptron::DiscreteProblem::node_type
Map::node_type node_type
Definition: DiscreteProblem.h:52
katoptron::Vectors::xpetra_bmvector_type
Xpetra::BlockedMultiVector< scalar, local_ordinal_type, global_ordinal_type, node_type > xpetra_bmvector_type
Definition: Vectors.h:37
katoptron::Matrices::xpetra_bcrs_type
Xpetra::BlockedCrsMatrix< scalar, local_ordinal_type, global_ordinal_type, node_type > xpetra_bcrs_type
Definition: Matrices.h:63
katoptron::DiscreteProblem::createBlockMVector
void createBlockMVector(bool write)
Create the block vectors.
Definition: DiscreteProblem.hpp:714
katoptron::Vectors::tpetra_vector_type
Tpetra::Vector< scalar, local_ordinal_type, global_ordinal_type, node_type > tpetra_vector_type
Definition: Vectors.h:34
Map.h
katoptron::DiscreteProblem::DiscreteProblem
DiscreteProblem(Problem &pbl, size_t _numPrimalDPN, Teuchos::RCP< Teuchos::ParameterList > randomParams, Kokkos::View< scalar *, Kokkos::LayoutLeft > m_rv_values)
DiscreteProblem constructor.
Definition: DiscreteProblem.hpp:28
katoptron::DiscreteProblem::loads
Teuchos::RCP< Loads< scalar > > loads
Definition: DiscreteProblem.h:73
Loads.h
katoptron::DiscreteProblem::updateActivity
Mask< scalar > updateActivity(int active_set_iteration)
Update the activity of the Lagrange multipliers and return a Mask which stores true for the converged...
Definition: DiscreteProblem.hpp:56
katoptron::DiscreteProblem
Class which is used to store all the information related to the discretized problem:
Definition: DiscreteProblem.h:40
katoptron::DiscreteProblem::createBlockMatrix
void createBlockMatrix(scalar gamma, bool write, bool merge)
Create the block matrix.
Definition: DiscreteProblem.hpp:479