Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I stumbled on this:

?"NDSolve`FEM`*"
<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?

share|improve this question
6  
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
1  
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
4  
@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
show 1 more comment

3 Answers 3

up vote 10 down vote accepted

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:

  1. ACEFem
  2. IMTEK Mathematica Supplement (IMS) and here and here

To the question: NDSolve`FEM` 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.

share|improve this answer
    
Still, this isn't an answer to the question: "What is NDSolve`FEM`*?" 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
add comment

In answer to David's question in the comments to the answer, I examine the contents of

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.

share|improve this answer
    
+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
add comment

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

Documentation:

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

Needs["NDSolve`FEM`"]
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.