Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to add boundary vertex to mesh #1170

Closed
amir90 opened this issue Nov 25, 2019 · 2 comments
Closed

How to add boundary vertex to mesh #1170

amir90 opened this issue Nov 25, 2019 · 2 comments
Assignees

Comments

@amir90
Copy link

amir90 commented Nov 25, 2019

Hi,

In example 2 (linear static analysis) the essential boundary conditions are faces of the mesh.

  1. I need to run a simple tetrahedral linear static analysis where I need to fix nodes.
    However, there is no addbdrVertex to the mesh. I found AdjustVDofs, but I am unsure how to use it, and have not found any examples of it.

  2. I also need the forces to act on a few known nodes, How do I select individual nodal DOFs for the forces to act on?

Thanks.

@jakubcerveny
Copy link
Member

Hi @amir90, in FEM it's incorrect to prescribe BCs or loads on zero measure sets (single nodes). It may look like it's working but when you refine the mesh, you get a different BC or load. In fact, as you keep refining, your stresses will go to infinity. You should fix (or load) boundary elements, i.e., edges in 2D and faces in 3D.

@tzanio
Copy link
Member

tzanio commented Dec 1, 2019

To add to @jakubcerveny's answer -- if you really need to, you can use the EliminateVDofs method of BilinearForm to eliminate a list of Dirichlet degrees of freedom.

See

mfem/fem/bilinearform.hpp

Lines 478 to 487 in 18f0cf0

/// Eliminate the given @a vdofs. NOTE: here, @a vdofs is a list of DOFs.
void EliminateVDofs(const Array<int> &vdofs, const Vector &sol, Vector &rhs,
DiagonalPolicy dpolicy = DIAG_ONE);
/// Eliminate the given @a vdofs, storing the eliminated part internally.
/** This method works in conjunction with EliminateVDofsInRHS() and allows
elimination of boundary conditions in multiple right-hand sides. In this
method, @a vdofs is a list of DOFs. */
void EliminateVDofs(const Array<int> &vdofs,
DiagonalPolicy dpolicy = DIAG_ONE);
as well as #35, #80 (comment) and #737.

@tzanio tzanio closed this as completed Dec 8, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants