Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix multiple linear/nonlinear solves #241

Merged

Conversation

landinjm
Copy link
Contributor

The change variables were hard coded so that only the first TIME_INDEPENDENT equation would have its change variable (for Newton-Picard iteration). This prevented the addition of multiple TIME_INDEPENDENT (#166) equations. To fix this, I switched the FEEvaluation vectors to unordered maps instead.

This way, we can assign the FEEvaluation to the global variable index rather than the index of variable type (e.g. phi might be the 4th explicit variable and the 5th global variable. In the prior scheme we would index based on the 4th explicit). Doing so also reduced the convolutedness of loadVariableAttributes.cc and variableContainer.cc.

Some minor optimizations were also made in regard to dereferencing over and over. Before we had this

scalar_vars_map[var_index]->reinit(cell);
scalar_vars_map[var_index]->read_dof_values(*src[i]);
scalar_vars_map[var_index]->evaluate(varInfoList[i].evaluation_flags);

Instead, I stored the pointer in a local variable.

auto *scalar_FEEval_ptr = scalar_vars_map[var_index].get();
scalar_FEEval_ptr->reinit(cell);
scalar_FEEval_ptr->read_dof_values(*src[i]);
scalar_FEEval_ptr->evaluate(var_info.evaluation_flags);

Since these are called for every cell and every step, the performance improvement should be rather significant.

@landinjm landinjm force-pushed the fix_multiple_linear_solves branch from 9c4a5c0 to 7f9b2cc Compare September 16, 2024 18:27
@landinjm landinjm linked an issue Sep 16, 2024 that may be closed by this pull request
@landinjm landinjm merged commit 6510515 into prisms-center:development Sep 16, 2024
2 checks passed
@landinjm landinjm deleted the fix_multiple_linear_solves branch September 16, 2024 19:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Issue solving with more than one time independent variable
1 participant