From: Roy Stogner <roystgnr@ic...>  20050113 23:41:20

I've just finished committing the last chunks of my support for fourthorder problems to libMesh. The features: With the "enablesecond" configure option turned on, you can now query finite element objects for second derivative information, expressed as rank 2 tensors. With this you should be able to formulate discontinuous Galerkin approximations to fourthorder problems. You can now create CloughTocher macrotriangles (and the quadrature rules to integrate them properly), which form C1differentiable (and so H2 conforming) finite element spaces. With these, assuming enablesecond is on, you can formulate continuous Galerkin approximations to 2D fourthorder problems. Example 15 (remember to "cvs update d" to get new directories) demonstrates, using the biharmonic equation. The nonfeatures: Since only the C1 elements let you solve fourthorder problems easily, I've only added second derivative calculations to the other finite element classes where it was easy to do so  the rest are just stubs and warnings. Adding C1 infinite elements, in particular, looked like it would be ugly. The CloughTocher elements still work for second order problems with second derivative calculations off, but there's probably no point  they might be slightly more efficient than regular cubics in the solver but are certainly much less efficient in the assembly stage. Cubic triangles are the only C1 elements right now  I'm working on cubic quads and tets now, but it's not my top priority, and these things are a bear to code and debug. The problems: With "enablesecond" turned on, second derivatives are calculated and stored whether you need them or not  the memory hit is insignificant but I'll bet the speed hit is noticeable. In the long run we ought to have a method of making finite element reinit()s calculate precisely what each application code wants and no more; in the short run "enablesecond" ought to be left off unless you're using it. I've tested this code against my own applications and the libMesh examples, but since it makes low level additions to the FEBase class, I'm worried that it might work on my computer and break yours. Anyone working with the main CVS tree might want to pay extra attention to the next postupdate run you make; anyone who wants to help might also try testing their own code with "enablesecond" too.  Roy Stogner 