CArl
Code Arlequin / C++ implementation
common_assemble_functions_elasticity_3D.h File Reference

Go to the source code of this file.

Classes

class  border_displacement_function
 3D border displacement class, derived from libMesh::FunctionBase<libMesh::Number>. More...
 
struct  border_displacement_values
 Small structure with the 3D border displacement values. More...
 

Functions

void set_displaced_border_translation (libMesh::ImplicitSystem &elasticity_system, border_displacement_values &displ, int boundary_id)
 Set a displacement border. More...
 
void set_clamped_border (libMesh::ImplicitSystem &elasticity_system, int boundary_id)
 Set a clamped border. More...
 
libMesh::ExplicitSystem & add_stress (libMesh::EquationSystems &input_systems)
 Add a stress libMesh::ExplicitSystem to the input libMesh::EquationSystems. More...
 
libMesh::LinearImplicitSystem & add_elasticity (libMesh::EquationSystems &input_systems, libMesh::Order order=libMesh::FIRST, libMesh::FEFamily family=libMesh::LAGRANGE)
 Add a linear elasticity libMesh::LinearImplicitSystem to the input libMesh::EquationSystems& input_systems. More...
 

Function Documentation

libMesh::LinearImplicitSystem& add_elasticity ( libMesh::EquationSystems &  input_systems,
libMesh::Order  order = libMesh::FIRST,
libMesh::FEFamily  family = libMesh::LAGRANGE 
)

Add a linear elasticity libMesh::LinearImplicitSystem to the input libMesh::EquationSystems& input_systems.

Definition at line 47 of file CArl_assemble_coupling.cpp.

50 {
51  libMesh::ImplicitSystem& elasticity_system =
52  input_systems.add_system<libMesh::ImplicitSystem> ("Elasticity");
53 
54  elasticity_system.add_variable("u", order, family);
55  elasticity_system.add_variable("v", order, family);
56  elasticity_system.add_variable("w", order, family);
57 
58  return elasticity_system;
59 }
libMesh::ExplicitSystem& add_stress ( libMesh::EquationSystems &  input_systems)

Add a stress libMesh::ExplicitSystem to the input libMesh::EquationSystems.

Definition at line 49 of file common_assemble_functions_elasticity_3D.cpp.

50 {
51  libMesh::ExplicitSystem& stress_system =
52  input_systems.add_system<libMesh::ExplicitSystem> ("StressSystem");
53 
54  stress_system.add_variable("sigma_00", libMesh::CONSTANT, libMesh::MONOMIAL);
55  stress_system.add_variable("sigma_01", libMesh::CONSTANT, libMesh::MONOMIAL);
56  stress_system.add_variable("sigma_02", libMesh::CONSTANT, libMesh::MONOMIAL);
57  stress_system.add_variable("sigma_10", libMesh::CONSTANT, libMesh::MONOMIAL);
58  stress_system.add_variable("sigma_11", libMesh::CONSTANT, libMesh::MONOMIAL);
59  stress_system.add_variable("sigma_12", libMesh::CONSTANT, libMesh::MONOMIAL);
60  stress_system.add_variable("sigma_20", libMesh::CONSTANT, libMesh::MONOMIAL);
61  stress_system.add_variable("sigma_21", libMesh::CONSTANT, libMesh::MONOMIAL);
62  stress_system.add_variable("sigma_22", libMesh::CONSTANT, libMesh::MONOMIAL);
63  stress_system.add_variable("vonMises", libMesh::CONSTANT, libMesh::MONOMIAL);
64 
65  return stress_system;
66 }
void set_clamped_border ( libMesh::ImplicitSystem &  elasticity_system,
int  boundary_id 
)

Set a clamped border.

Definition at line 27 of file common_assemble_functions_elasticity_3D.cpp.

28 {
29  // Defining the boundaries with Dirichlet conditions ...
30  std::set<libMesh::boundary_id_type> boundary_id_displacement;
31 
32  boundary_id_displacement.insert(boundary_id);
33 
34  std::vector<unsigned int> variables(3);
35  variables[0] = elasticity_system.variable_number("u");
36  variables[1] = elasticity_system.variable_number("v");
37  variables[2] = elasticity_system.variable_number("w");
38 
39  libMesh::ZeroFunction<> zero_function;
40 
41  // ... and set them
42  libMesh::DirichletBoundary dirichlet_bc( boundary_id_displacement,
43  variables,
44  &zero_function);
45 
46  elasticity_system.get_dof_map().add_dirichlet_boundary(dirichlet_bc);
47 }
void set_displaced_border_translation ( libMesh::ImplicitSystem &  elasticity_system,
border_displacement_values displ,
int  boundary_id 
)

Set a displacement border.

Definition at line 4 of file common_assemble_functions_elasticity_3D.cpp.

5 {
6  // Defining the boundaries with Dirichlet conditions ...
7  std::set<libMesh::boundary_id_type> boundary_id_displacement;
8 
9  boundary_id_displacement.insert(boundary_id);
10 
11  std::vector<unsigned int> variables(3);
12  variables[0] = elasticity_system.variable_number("u");
13  variables[1] = elasticity_system.variable_number("v");
14  variables[2] = elasticity_system.variable_number("w");
15 
16  border_displacement_function move_border( variables[0],variables[1],variables[2],
17  displ.x_displ,displ.y_displ,displ.z_displ);
18 
19  // ... and set them
20  libMesh::DirichletBoundary dirichlet_bc( boundary_id_displacement,
21  variables,
22  &move_border);
23 
24  elasticity_system.get_dof_map().add_dirichlet_boundary(dirichlet_bc);
25 }
3D border displacement class, derived from libMesh::FunctionBase.