essential vs natural boundary conditions
When you solve a PDE you also have to say what happens at the edges of the domain — the boundary conditions. In the finite element method, edges come in two very different flavours depending on HOW they enter the weak form. Some you must enforce by hand on the function space (essential); others take care of themselves, baked automatically into the integral (natural). The names describe the method's relationship to each, not the physics.
An ESSENTIAL (Dirichlet) condition prescribes the VALUE of the solution on part of the boundary, like fixing a membrane's height to zero along a clamped edge: u = g there. The weak form cannot enforce this through an integral, so it must be imposed directly — you restrict the trial space to functions that already equal g on that boundary, and you require the test functions to VANISH there (there is nothing to test where the value is already known). A NATURAL (Neumann) condition prescribes the FLUX or derivative, like a known heat flow or zero traction: du/dn = h. This one enters the weak form for free — it is exactly the boundary term produced by integration by parts. You simply leave that boundary term in (rather than killing it with a vanishing test function), and the condition is satisfied automatically, in a weak average sense.
This split is one of the most elegant features of the finite element method, and a frequent source of beginner confusion. The honesty to remember: a natural condition is satisfied only WEAKLY — approximately, in the integrated sense, not pointwise — and it becomes exact only as the mesh refines, whereas an essential condition is imposed exactly on the discrete solution. A zero-flux (homogeneous Neumann) boundary needs literally no code at all: doing nothing imposes it. And mixing them up — trying to 'enforce' a Neumann value by hand, or forgetting to constrain a Dirichlet node — leads to a singular system or a wrong answer.
Heat in a rod: fixing the left end at 100 degrees (u(0) = 100) is essential — you set that nodal value directly and remove its row from the unknowns. Insulating the right end (du/dn = 0, no heat flux) is natural — you literally do nothing, and the zero boundary term in the weak form imposes it for you.
Value conditions are imposed by hand; flux conditions ride in free on the boundary term.
Natural (Neumann) conditions hold only weakly and become exact as h shrinks; essential (Dirichlet) conditions are imposed exactly. A homogeneous Neumann condition requires no code at all — but a pure-Neumann problem leaves the solution undetermined up to a constant, giving a singular stiffness matrix.