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