sfepy/sfepy — Issue #33: evalTerm() and BC handling
Author: rc
Created: 2012-01-30 10:24:23+00:00
State: open

ProblemDefinition.timeUpdate() works only if equations are set.

This is a problem as currently timeUpdate() must be called prior to calling
evalTerm() (or evalTermOP()), as it expects the BC are already set.

Thus instead of just:
problem.timeUpdate()
mtxAF = evalTermOP( dummyF, mtxTerm, problem,
dwMode = 'matrix', tangentMatrix = problem.mtxA )
one must do:
problem.setEquations( {'eq': mtxTerm} )
problem.timeUpdate()
mtxAF = evalTermOP( dummyF, mtxTerm, problem,
dwMode = 'matrix', tangentMatrix = problem.mtxA )

solution:

either: call BC updating code in evalTerm() after the term equation is set

or (better but more difficult): decouple Equations.describeGeometry and
Variables.setupDofConns() - actually the latter is only needed to update the BC

need to think also of some mechanism in evalTerm() of how to control what
has been already computed and what has not, so that it is not unnecessarily
slow. For example, the equations _are_ actually already set and thus the
Variables.setupDofConns() call is not necessary.

Migrated from http://code.google.com/p/sfepy/issues/detail?id=29

earlier comments

robert.cimrman said, at 2008-12-05T13:15:41.000Z:

See http://hg.sympy.org/sfepy/rev/6d896c1bfad3 for a partial solution.

robert.cimrman said, at 2010-04-01T10:05:28.000Z:

The whole problem definition building is going to change...