Hello everyone.
I am trying to specify x and y displacements separately in step 8 of the tutorial programs.
I am doing it as follows:
FEValuesExtractors::Scalar u_x(0);
FEValuesExtractors::Scalar u_y(1);
ComponentMask u_x_mask = fe.component_mask(u_x);
ComponentMask u_y_mask = fe.component_mask(u_y);
std::map<types::global_dof_index,double> boundary_values;
double u_x_values = 1.2; //x_displacment to be prescribed
double u_y_values = 0.0; //y_displacment to be prescribed
VectorTools::interpolate_boundary_values(dof_handler,
0,
Functions::ZeroFunction<dim>(dim),
constraints); //imposing both u_x and u_y to be zero on boudaries with id=0
VectorTools::interpolate_boundary_values(dof_handler,
1,
Functions::ConstantFunction<dim>(dim)(u_x_values,2),boundary_values,u_x_mask,
constraints);//imposing u_x=1 on boudaries with id=1
VectorTools::interpolate_boundary_values(dof_handler,
1,
Functions::ConstantFunction<dim>(dim)(u_y_values,2),boundary_values,u_y_mask,
constraints);//imposing u_y=0 on boudaries with id=1
It gives the following error:
error: no matching function for call to ‘interpolate_boundary_values.
I think I am doing mistake in the arguments but I am unable to figure it out.
Can someone please help me with this? I am just getting started with deal.ii
Thank You!