Seems reasonable to me.

On Thu, Jan 16, 2014 at 12:45 PM, Roy Stogner <> wrote:

Sylvain is working on a GRINS-compatible physics module that is going
to want to do some preprocessing at every assembly step to calculate
some radiation terms.

I'm currently thinking that the most appropriate place for this is as
a DifferentiablePhysics::preassembly() method, defaulting to doing
nothing, which gets called near the beginning (after vectors are
closed) of each FEMSystem::assembly(), and which can then be
subclassed by middleware and user code.  We could add a
DifferentiablePhysics::postassembly() later if it's ever needed.

Obvious pros:
Maximum flexibility, for people like Sylvain whose requirements
(another damn integro-differential equations!) don't fit well into the
existing FEMSystem framework.
Completely backwards API compatible with existing code.

Obvious cons:
The library can't get at the guts of such a coarse user-supplied
function, so there's no way to automatically multithread or even
MPI-parallelize the contents.

Before I implement this, can anyone think of any issues (or any
alternatives) I'm missing?

CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today.
Libmesh-devel mailing list