# What is NDSolveFEM*?

I stumbled on this:

?"NDSolveFEM*"

<list of many functions with names like ...Mesh...,Tetrahedon..., Triangle..., ProcessBCs, ...>


I'm tempted to conclude that Mathematica has built-in finite element modelling capability, but the documentation seemingly does not cover it. What does FEM mean in this context? What is an example of an equation that NDSolve would use these functions to solve?

-
As this is undocumented and only present in version 8, my interpretation has been that this is probably a new-in-9 feature yet to be completed. As you probably know, the finite element method is useful in particular for solving elliptic PDEs. It's not that unusual to find partly implemented features (e.g. Wavelets* in 7) representing a step toward new functionality for a future release. –  Oleksandr R. Mar 21 '12 at 5:06
How do people "stumble upon" undocumented features? Every couple of days someone mentions something undocumented, how do you come up with these symbols? –  David Mar 21 '12 at 5:11
@David In my case I happened to notice the InputForm of an InterpolatingFunction in relation to this issue. –  JxB Mar 21 '12 at 5:25
@David Try ?"NDSolve**" for a long list of interesting expressions. –  JxB Mar 21 '12 at 5:32
And try, say ?NIntegrate*. Which suggests that when a well-known built-in function such as NIntegrate has lots of named possible values for Method, among perhaps other options, these are implemented by individual functions within the NIntegrate context. Which is not surprising -- partial and undocumented features aside -- given that one of the design principles of Mathematica is that a user should not be forced to specify a particular method but should let the system choose the method. –  murray Mar 21 '12 at 19:31

Version 8 does not have a built-in finite element method. If you want to use the finite element method, you may want to look at the following packages:

To the question: NDSolveFEM is an internal context to NDSolve that currently does not do anything much. It's only use is as a container in the unstructured interpolation.

Hope this helps.

-
Still, this isn't an answer to the question: "What is NDSolveFEM*?" I understand that you probably won't answer that because of what you do, but this doesn't answer it either :) –  rm -rf Mar 21 '12 at 16:27
@R.M, well the it's an internal context, and it's not used besides in unstructured interpolation. –  user21 Mar 21 '12 at 16:32
thanks :) $\quad$ –  rm -rf Mar 21 '12 at 16:36
@R.M That's true, but still it's good to have those links here in a permanent (i.e. non-comment) way –  Szabolcs Mar 21 '12 at 16:38
@R.M, not a problem ;-) –  user21 Mar 21 '12 at 16:40

Names["**"]


with every release. You can find all sorts of goodies this way. In addition to the FEM stuff, you'll also find some Mesh functionality. Stephen Wolfram dropped a hint that PDEs were under development here in this talk: http://blog.wolfram.com/2009/11/12/the-rd-pipeline-for-mathematica/

Based on these observations, I'd guess that PDEs have been under development for some time but didn't quite make it in to V8. The answer to the original question is that this context is probably preparation for that but that you'll probably have to wait for V9 to really use it.

-
+1. Thank you for pointing out the Names["**"] form. As I understand, it is the same as Names[] but is very different from Names["*"] which lists names only in \$ContextPath. –  Alexey Popkov Mar 21 '12 at 20:52

Mathematica 10 now supports the Finite Element Method for certain classes of PDEs.

Documentation:

The FEM related functions are in NDSolveFEM and can be made directly accessible using

Needs["NDSolveFEM"]
`
-