From: Lee, J. H. <jae...@li...> - 2019-03-28 16:02:01
|
I was modifying the subdivision FE example code in miscellaneous/ex11 to handle large deformations and do a bending and inflation of a circular plate in Cirak and Ortiz 2001 (https://pdfs.semanticscholar.org/6fb5/bf884883eda23383e1502f62dd63d2b6b39e.pdf), and the way it currently handles its BCs is by penalty method. But by doing so, it’s also pinning some elements that are actually in the mesh body in addition to pinning the ghost elements. Is there particular reason that it does that? For example, if I just pin the ghost elements by imposing penalty term just for the three nodes associated with a ghost element, it “looks” like it’s doing the right thing. for (unsigned int n = 1; n < 3; ++n) <——————— switched 4 to 3 to not pin the element that is in the actual mesh. { const dof_id_type u_dof = nodes[n]->dof_number(KL_system.number(), u_var, 0); const dof_id_type v_dof = nodes[n]->dof_number(KL_system.number(), v_var, 0); const dof_id_type w_dof = nodes[n]->dof_number(KL_system.number(), w_var, 0); KL_system.matrix->add(u_dof, u_dof, penalty); KL_system.matrix->add(v_dof, v_dof, penalty); KL_system.matrix->add(w_dof, w_dof, penalty); } I am just not sure if doing so will cause any issues. Also, what would be the best approach if I want to impose boundary conditions other than pinning on the ghost elements (i.e. both displacement and rotation free)? Thank you for your help! Best, Mike |