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

Go to the source code of this file.

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::FEFamily family)
 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::FEFamily  family 
)

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

Definition at line 68 of file common_assemble_functions_elasticity_3D.cpp.

71 {
72  libMesh::ExplicitSystem& physical_variables =
73  input_systems.add_system<libMesh::ExplicitSystem> ("PhysicalConstants");
74 
75  // Physical constants are set as constant, monomial
76  physical_variables.add_variable("E", libMesh::CONSTANT, libMesh::MONOMIAL);
77  physical_variables.add_variable("mu", libMesh::CONSTANT, libMesh::MONOMIAL);
78  physical_variables.add_variable("Index", libMesh::CONSTANT, libMesh::MONOMIAL);
79 
80  libMesh::LinearImplicitSystem& elasticity_system =
81  input_systems.add_system<libMesh::LinearImplicitSystem> ("Elasticity");
82 
83  elasticity_system.add_variable("u", order, family);
84  elasticity_system.add_variable("v", order, family);
85  elasticity_system.add_variable("w", order, family);
86 
87  return elasticity_system;
88 }
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.