1 #ifndef __MESHMOVER_LINEAR_ELASTICITY_H__ 2 #define __MESHMOVER_LINEAR_ELASTICITY_H__ 4 #include <deal.II/lac/trilinos_sparse_matrix.h> 6 #include "parameters/all_parameters.h" 8 #include "high_order_grid.h" 16 template <
int dim = PHILIP_DIM,
typename real =
double>
20 using VectorType = dealii::LinearAlgebra::distributed::Vector<real>;
23 #if PHILIP_DIM==1 // dealii::parallel::distributed::Triangulation<dim> does not work for 1D 34 using Triangulation = dealii::parallel::distributed::Triangulation<dim>;
40 const std::shared_ptr<dealii::MappingFEField<dim,dim,VectorType,DoFHandlerType>>
mapping_fe_field,
42 const dealii::LinearAlgebra::distributed::Vector<int> &_boundary_ids_vector,
43 const dealii::LinearAlgebra::distributed::Vector<double> &_boundary_displacements_vector);
67 apply_dXvdXvs(std::vector<dealii::LinearAlgebra::distributed::Vector<double>> &list_of_vectors, dealii::TrilinosWrappers::SparseMatrix &output_matrix);
77 apply_dXvdXvs(
const dealii::LinearAlgebra::distributed::Vector<double> &input_vector, dealii::LinearAlgebra::distributed::Vector<double> &output_vector);
88 const dealii::LinearAlgebra::distributed::Vector<double> &input_vector,
89 dealii::LinearAlgebra::distributed::Vector<double> &output_vector);
104 std::vector<dealii::LinearAlgebra::distributed::Vector<double>>
dXvdXs;
130 const std::shared_ptr<dealii::MappingFEField<dim,dim,VectorType,DoFHandlerType>>
mapping_fe_field;
152 dealii::LinearAlgebra::distributed::Vector<double>
system_rhs;
179 dealii::LinearAlgebra::distributed::Vector<double>
tensor_to_vector(
const std::vector<dealii::Tensor<1,dim,real>> &boundary_displacements_tensors)
const;
dealii::LinearAlgebra::distributed::Vector< double > system_rhs_unconstrained
MPI_Comm mpi_communicator
MPI communicator.
const dealii::LinearAlgebra::distributed::Vector< int > & boundary_ids_vector
dealii::TrilinosWrappers::SparseMatrix system_matrix
System matrix corresponding to linearized elasticity problem.
dealii::ConditionalOStream pcout
ConditionalOStream for output.
dealii::IndexSet locally_owned_dofs
Locally owned DoFs.
const std::shared_ptr< dealii::MappingFEField< dim, dim, VectorType, DoFHandlerType > > mapping_fe_field
MappingFEField corresponding to curved mesh.
Files for the baseline physics.
dealii::IndexSet locally_relevant_dofs
Locally relevant DoFs.
void apply_dXvdXvs_transpose(const dealii::LinearAlgebra::distributed::Vector< double > &input_vector, dealii::LinearAlgebra::distributed::Vector< double > &output_vector)
dealii::LinearAlgebra::distributed::Vector< double > tensor_to_vector(const std::vector< dealii::Tensor< 1, dim, real >> &boundary_displacements_tensors) const
dealii::AffineConstraints< double > dirichlet_boundary_constraints
void apply_dXvdXvs(std::vector< dealii::LinearAlgebra::distributed::Vector< double >> &list_of_vectors, dealii::TrilinosWrappers::SparseMatrix &output_matrix)
dealii::parallel::distributed::Triangulation< dim > Triangulation
dealii::TrilinosWrappers::SparseMatrix system_matrix_unconstrained
const Triangulation & triangulation
std::vector< dealii::types::global_dof_index > local_dofs_per_process
List of number of DoFs per process.
dealii::LinearAlgebra::distributed::Vector< double > system_rhs
VectorType get_volume_displacements()
LinearElasticity(const Triangulation &_triangulation, const std::shared_ptr< dealii::MappingFEField< dim, dim, VectorType, DoFHandlerType >> mapping_fe_field, const DoFHandlerType &_dof_handler, const dealii::LinearAlgebra::distributed::Vector< int > &_boundary_ids_vector, const dealii::LinearAlgebra::distributed::Vector< double > &_boundary_displacements_vector)
Constructor.
dealii::DoFHandler< dim > DoFHandlerType
DoFHandler.
void setup_system()
Allocation and boundary condition setup.
VectorType displacement_solution
void assemble_system()
Assemble the system and its right-hand side.
const DoFHandlerType & dof_handler
Same DoFHandler as the HighOrderGrid.
dealii::AffineConstraints< double > hanging_node_constraints
dealii::LinearAlgebra::distributed::Vector< real > VectorType
Distributed vector of double.
dealii::AffineConstraints< double > all_constraints
const unsigned int this_mpi_process
MPI rank.
const dealii::QGauss< dim > quadrature_formula
Integration strength of the mesh order plus one.
unsigned int solve_linear_problem()
std::vector< dealii::LinearAlgebra::distributed::Vector< double > > dXvdXs
const unsigned int n_mpi_processes
Number of MPI processes.
const dealii::LinearAlgebra::distributed::Vector< double > & boundary_displacements_vector