Hi Roy,

First of all thank you for the really fast answer.

Roy Stogner schrieb:
On Wed, 14 Feb 2007, Ingo Schmidt wrote:

I'm looking for someone with experience applying libmesh to nonlinear
structural dynamics, e.g. material and/or large displacements/strains
who could answer me some (essential and specific) questions?

a) Which "System" (DiffSystem(FEMSystem), NonLinImplicit,
TransientSystem) is the best choice?

>From your perspective, the best choice may be to start with a
LinearImplicitSystem and let your application code add the additional
vectors and perform the particular time integration & nonlinear solve
strategies that you need.

That's what I thougt first, too. But It would be a pity not to avail the given libmesh structure and implementing such algorithms anew.
Furthermore violates that strategy, in my opinion, a bit the philosophy and ideas of libmesh and impair the whole framework (or?).
From my perspective, I'd like to have more FEMSystem users giving me
suggestions for make that interface more flexible, but I'll understand
if you don't think the additional framework features are worth
becoming a guinea pig for new library code.

That would not be the problem.  There will be no big difference between bugfixing in libmesh or in my own coding.
b) It seems that the FEMSystem is in principle a really good framework,
but are the necessary changes to consider e.g. the second time
derivatives, other time stepping schemes etc. feasible without
destroying the given FEMSystem structure?

Keep in mind that "destroying the given FEMSystem structure" is still
an option - my latest major change was committed to CVS yesterday.
The warning call printed out by "untested();" in the DiffSystem
constructor isn't going to be taken out by 0.6.0, and as long as you'd
be ready to make simple changes to your code to handle any slight
future API breakage, we'd be willing to introduce some slight API
breakage on your behalf as well.

Second time derivatives could be handled in several ways depending on
your formulation - the most obvious that comes to mind would be to
introduce a new TimeSolver subclass that treats *_time_derivative()
methods as returning weighted second derivatives.  I'd have to know
the details of the time stepping schemes you have in mind to tell you
how feasible they are.
I'd like to sustain the newmark time stepping scheme and modify it due to different orders of time derivates for the displacement (second) and pressure (first) field.
Subsequently, I tinker with the idea of employing a discontinous galerkin method. Therefore the new FEMSystem could be a perfect framework for switching between different time stepping schemes.

The other idea was to do multiple inheritance for the newmarksystem class (LinImplSys and NonLinImplSys) but I'm not able to estimate the effort of implementing that (including PETSc interface programming, i.e. SNESSetFunction, SNESSetJacobian, SNESSetUpdate, etc... ) and if there will appear some general conflicts in libmesh....

Alltogether the FEMSystem seems to me the best choice. So I will go on to dismantle example 18 to become familiar with that FEMSystem. Is there a chance to get more information about the solved (strong and weak form, discretised in time and space) PDE? I mean I'm not that familiar with fluid dynamics and that Navier-Stokes stuff.

Thanks in advance.


Dipl.-Ing. Ingo Schmidt
Institute of Modelling and Computation

Hamburg University of Technology	
Building L/ room: 3032			
21075 Hamburg