Fiber-reinforced elastodynamics¶
This tutorial composes two independent, nonmatching elastodynamics Problems:
matrix: ElastodynamicsSolver<dim,dim>
fiber: ElastodynamicsSolver<1,dim>
The canonical input is
tutorials/fiber_reinforced_elastodynamics/parameters.prm.in:
# Matrix plus embedded additive/excess fiber tutorial.
set dimension = 2
set space dimension = 2
subsection Fiber Reinforced Elastodynamics
set Output directory = @TEST_OUTPUT_DIR@/tutorial-output/fiber-reinforced-elastodynamics
subsection Time interval
set Initial time = 0.0
set Final time = 0.05
set Output time interval = 0.01
end
subsection Fixed step
set Time step = 0.01
set Number of time steps = 5
set Policy = number_of_steps
end
subsection Coupling solver
set Maximum steps = 200
set Tolerance = 1.e-10
set Block tolerance = 1.e-12
set Initial compatibility tolerance = 1.e-10
end
subsection Matrix Elastodynamics
set FE degree = 1
set Initial refinement = 2
set Dirichlet boundary ids = 0,1,2,3
subsection Grid generation
set Grid generator = hyper_cube
set Grid generator arguments = -1: 1: false
set Triangulation type = distributed
end
subsection Material
set Density = 1.0
set Lame mu = 1.0
set Lame lambda = 1.0
set Damping shear = 0.0
set Damping bulk = 0.0
end
subsection Functions
subsection Body force
set Function expression = 0; 1
set Variable names = x,y,t
end
subsection Displacement boundary
set Function expression = 0; 0
set Variable names = x,y,t
end
subsection Velocity boundary
set Function expression = 0; 0
set Variable names = x,y,t
end
subsection Initial displacement
set Function expression = 0; 0
set Variable names = x,y,t
end
subsection Initial velocity
set Function expression = 0; 0
set Variable names = x,y,t
end
end
end
subsection Fiber Elastodynamics
# These are additive/excess coefficients, not a second complete matrix
# material. Keep density positive for the SPD effective fiber block.
set FE degree = 1
set Initial refinement = 1
set Dirichlet boundary ids =
subsection Grid generation
set Grid generator = hyper_cube
set Grid generator arguments = -0.65: 0.65: false
set Triangulation type = distributed
end
subsection Material
set Density = 4.0
set Lame mu = 8.0
set Lame lambda = 8.0
set Damping shear = 0.0
set Damping bulk = 0.0
end
subsection Functions
subsection Body force
set Function expression = 0; 0
set Variable names = x,y,t
end
subsection Displacement boundary
set Function expression = 0; 0
set Variable names = x,y,t
end
subsection Velocity boundary
set Function expression = 0; 0
set Variable names = x,y,t
end
subsection Initial displacement
set Function expression = 0; 0
set Variable names = x,y,t
end
subsection Initial velocity
set Function expression = 0; 0
set Variable names = x,y,t
end
end
end
end
Run the 2D input with:
./build/fiber_reinforced_elastodynamics_debug \
build/tutorials/fiber_reinforced_elastodynamics/parameters.prm
The matrix occupies [-1,1]^2. The fiber is an independently meshed line
inside it. Its ambient vector components still have dimension two, but its FE
support is one-dimensional. The fiber coefficients are an additive excess
contribution coupled to the matrix through a line multiplier.
The application exposes matrix and fiber velocity fields and creates an
independent vector multiplier field. The constraint is assembled from
weak_term(value(field), test(lambda)) terms. Its transpose reactions enforce
velocity compatibility on the two spaces. The five semantic fields are
matrix.displacement differential
matrix.velocity differential
fiber.displacement differential
fiber.velocity differential
coupling.lambda algebraic
The application registers these contributors with IDAAdapter, accepts the
displacement and velocity fields after accepted steps, and writes the two
Problem outputs plus the multiplier on its own FE space. The application
supports 2/2 and 3/3 matrix dimension selections; the fiber is
one-dimensional in both cases.