Hi everyone,
I am trying to implement a Dirichlet boundary condition for a problem very similar to step-44. The boundary condition is just a displacement in the +x direction on the +x face of a cube. However, when I call VectorTools::interpolate_boundary_values, it seems it's calling a default (zero?) version of Function<dim>::value rather than IncrementalDisplacement<dim>::value, which should override the default value function.
Any help on how to solve this issue would be appreciated.
Attached is a minimal working example. In my opinion, if my overridden function is being called, then the cout statement inside of it ("Overridden value function called") should be displayed, right?
Some things I've tried:
- Removing the "override" keyword and see if deal.II would raise an exception. The program runs entirely and nothing is displayed on the terminal.
- Calling the function IncrementalDisplacement<dim>::value directly. This works fine.
- Overloading vector_value and vector_value_list. Same thing, these functions are not being called either.
- Stepping into the VectorTools::interpolate_boundary_values function using gdb, but the output is the following:
(gdb) step
dealii::VectorTools::interpolate_boundary_values<3, 3, double> (dof=..., boundary_component=1, boundary_function=..., constraints=..., component_mask=...)
at /home/javier/dealii-9.3/tmp/unpack/deal.II-v9.3.2/include/deal.II/numerics/vector_tools_boundary.templates.h:603
603 /home/javier/dealii-9.3/tmp/unpack/deal.II-v9.3.2/include/deal.II/numerics/vector_tools_boundary.templates.h: No such file or directory.
Thanks!
Javier