#1066: Implement IMEX integrators in MoL ------------------------------------+--------------------------------------- Reporter: eschnett | Owner: Type: enhancement | Status: new Priority: major | Milestone: Component: EinsteinToolkit thorn | Version: Resolution: | Keywords: ------------------------------------+---------------------------------------
Comment (by rhaas):
The code in line 659 of the patch seems to be incorrect to me since it will always require a RHS2 for evolved grid arrays.
There is also no test included that would allow us to check whether the merge succeeded.
I attach an updated patch that applies against rev202 of MoL (ie after the multipatch changes).
After this code has been merged in (or before if we find that the tests fail), we should rewrite the registration and changetype code. This is currently very messy with very much duplicated code and very long. Registration etc. should be possible with very few lines of code and a C++ map object, something like: {{{ enum MoLType {MoL_Type_Invalid = 0, MoL_Type_SafeAndrRestore. MoL_Type_Constrained, MoL_Type_Evolved, MoL_Type_EvolvedSlow, MoL_Type_EvolvedIMEX}; map<int,int> RegisteredVariables; map<init,int> RHSIndex, RHS2Index;
void MoLRegisterEvolved(groupIdx,rhsIdx) { RegisteredVariables[groupIdx] = MoL_Type_Evolved; RHSIndex[groupIdx] = rhsIdx; }
void MoLChangeToConstrained(groupIdx) { RegisteredVariables[groupIdx] = MoL_Type_Constrained; if(RHSIndex.count(groupIdx)) RHSIndex.erase(groupIdx); } }}} Rather than the 197 lines currently used.