Dual time integration: adding root expressions to the execution tree
Expressions that we want to calculate for analysis' sake that aren't tied to the convergence measure need to be registered specially. At the moment the code is:
now:
integrator−>get_tree().insert_tree( factory.register_expression( new BuilderT( ... ) ) );
where the factory
has to be the integrator's execution factory (execFactory
). This is ugly and cumbersome - definitely easy to screw up by using the wrong factory
variable, for instance. We need this in Zodiac and I'm using it in my ecology example - essentially every application code that uses dual time integration needs this. I think the following method on the integrator is far more convenient and expressive. With the recently modified constructors for dual time integrators, it is impossible to call this method before the tree has been initialized.
proposed:
integrator->register_root_expression( new BuilderT( ... ) );