On Tue, 2 Apr 2013, Shiyuan Gu wrote: > In case of no hanging nodes contraint, and the boundary condition is > only Dirichlet, should the asymmetric_constraint_rows always be set to true > in the function of > DofMap::heterogenously_constraint_element_matrix_and_vector? Thanks. > > I am looking at the libmesh examples introduction_ex4. Changing > asymmetric_constraint_rows from true to false will give wrong solution. > dof_map.heterogenously_constrain_element_matrix_and_vector (Ke, Fe, > dof_indices,true); > > void DofMap::heterogenously_constrain_element_matrix_and_vector > (DenseMatrix<Number>& matrix, > DenseVector<Number>& rhs, > std::vector<dof_id_type>& elem_dofs, > bool asymmetric_constraint_rows)
One goal of the symmetric constraint rows option is to preserve the symmetry of an otherwise symmetric Jacobian, but the cost of that is we don't get to indirectly enforce the constraints by handing rows for them to the linear solver, and so when you want the constrained dof coefficients to take their correct values after a solve you need to either use a solver which calls enforce_constraints_exactly (generally our nonlinear solvers do this; our linear solvers don't) or you need to call enforce_constraints exactly yourself after the solve. If you add a call like: system.get_dof_map().enforce_constraints_exactly(system); after your solve, does that fix things? If not, then we've got a bug that needs to be fixed. If so, then we've merely got some misleading documentation that needs to be fixed. --- Roy ------------------------------------------------------------------------------ Minimize network downtime and maximize team effectiveness. Reduce network management and security costs.Learn how to hire the most talented Cisco Certified professionals. Visit the Employer Resources Portal http://www.cisco.com/web/learning/employer_resources/index.html _______________________________________________ Libmesh-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-users
