-
Notifications
You must be signed in to change notification settings - Fork 37
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
Enable EQP for nonlinear elastic example #218
Conversation
@axla-io is this ready for review? |
@chldkdtn Not yet! I still have to refactor the code so that it maintains good practices for .cpp and .hpp files. I get a compilation error locally for my latest commit, although it seems to compile on GitHub actions. I'll try to do this change within the week. |
@chldkdtn I fixed the .hpp style issue and it should be ready for review soon. I want to make a commit cleaning up the repo a bit and then I'll request a review. |
@axla-io to resolve the conflicts, please do |
and input arguments
Need to review before finishing
and implemented what was straightforward
to make consistent with class definition
And made fast calculation TODO
@dylan-copeland has just informed me that EQP implementation for nonlinear elasticity has dependency to FOM scale, but it should be easy to remove the dependency. It would be ideal to remove that dependency in this PR so that we can use the optimized code for hyper-reduction comparison paper as well. |
@chldkdtn Yes, I saw @dylan-copeland s implementation in mixed_nonlinear_diffusion. |
* implementation works and gives speed up * Removed unnecessary variables * Final benchmark
I just merged the optimized EQP lifting from a sub-branch into this one, so now the PR is complete and ready to merge. |
I was asked to review the PR, and it looks good to me! |
* initial commit * Updated ROM operator class definition and input arguments * EQP hyperreduction setup * Added hyperreduction until line 1000 * Setting BCs * Finished implementation in main * Started ROM operator initialization Need to review before finishing * Gone through the code and implemented what was straightforward * Mult_hyperreduced * small fixes to make consistent with class definition * removed eqp_lifting code, since it's not necessary * Started eqp coefficient computation implementation And made fast calculation TODO * Updated SetupEQP to make tests run * Some more fixes for the compiler * Changed rrdim -> rxdim * Started SetupEqp_snapshots for hyperelastic nonlinear operator * Added sketch for compute reduced eqp * Code compiles * Added element function to G row computation * Testing element vector error * Debugging. Vshape not implemented for this class... * fixed bug * Explicitly adding model to eqp loop * segfault fix * segfault fix 2 * debug segfault * actual debug fix * perhaps segfault fix * small fix * New test. * testing * changed back * testing back again * Hopefully * Finished writing the test. * Fixed compilation * Debugging elvect size * passing by reference * Fix for element vector * check all errors * Synced with hyperelasticintegrator. * Divide error by two * changed points to check error * Clean up * testing SetupEQPSnapshots * testing errors for NNLS * small fix * removed testing * Remove normalize constraints * Fixed segfault * Reduced EQP is building * Running but wrong * Runs! * Fixed some issues * rank-myid fix * Syntax improvements * fixed bug for v0 * small fix * Implemented time windowing * Added command line option for time windowing * Added EQP command line examples * Cleaned up code * Sketch for optimized EQP * Continued fast eqp implementation * Improved regular EQP * V-basis speedup * Storing DS now * Solved segmentation fault in non eqp hyperreduction * Adding QDEIM option to some examples. * updated gitignore * Matrix multiplication optimization * Tested precompute optimization * Numbering works now. * Testing .hpp fix again * Fixed .hpp style issue * Delete the RomOperator to remove a memory leak * Updated RomOperator structure to have less leaks in timestepping * Cause of segfault error found * Segfault fixed * Removed EQP bug * Add x0 to setupEQP * add matrix row/col rescaling methods * normalize NNLS constraints * Added x0 * Fixed bug in NNLS constraint forming loop. * Max iters increased * improved eqp speed * resetting temp variable now * Moved temporary variable to the correct position * Minor formatting changes * Removed duplicate lines in examples * build succeeds * Updated formatting * Astyle 3.1. * updated .gitignore * ++ increment * Removed ReducedSystemOperator * Removed unnecessary comments * Added consts * Added more ++ increments * Removed unnecessary HSINV * Comments * LibROM native read / write * Added pointer deletion * librom runs * New benchmarks * elementmatrix first implementation * Construct em outside loop * Added element matrices to ROM class * Reduced EQP fast uses em * Em on everything * Debugged EQP * Formatting * Removed unnecessary comment * Removed more unnecessary comments * Implemented subsampling * measure elapsed time for EQP * Measure elapsed time for all methods * Update .gitignore * Optimized lifting of FOM dimension in Nonlinear elasticity EQP (#259) * implementation works and gives speed up * Removed unnecessary variables * Final benchmark --------- Co-authored-by: Dylan Copeland <[email protected]> Co-authored-by: Chris Vales <[email protected]> Co-authored-by: Dylan Copeland <[email protected]>
* initial commit * Updated ROM operator class definition and input arguments * EQP hyperreduction setup * Added hyperreduction until line 1000 * Setting BCs * Finished implementation in main * Started ROM operator initialization Need to review before finishing * Gone through the code and implemented what was straightforward * Mult_hyperreduced * small fixes to make consistent with class definition * removed eqp_lifting code, since it's not necessary * Started eqp coefficient computation implementation And made fast calculation TODO * Updated SetupEQP to make tests run * Some more fixes for the compiler * Changed rrdim -> rxdim * Started SetupEqp_snapshots for hyperelastic nonlinear operator * Added sketch for compute reduced eqp * Code compiles * Added element function to G row computation * Testing element vector error * Debugging. Vshape not implemented for this class... * fixed bug * Explicitly adding model to eqp loop * segfault fix * segfault fix 2 * debug segfault * actual debug fix * perhaps segfault fix * small fix * New test. * testing * changed back * testing back again * Hopefully * Finished writing the test. * Fixed compilation * Debugging elvect size * passing by reference * Fix for element vector * check all errors * Synced with hyperelasticintegrator. * Divide error by two * changed points to check error * Clean up * testing SetupEQPSnapshots * testing errors for NNLS * small fix * removed testing * Remove normalize constraints * Fixed segfault * Reduced EQP is building * Running but wrong * Runs! * Fixed some issues * rank-myid fix * Syntax improvements * fixed bug for v0 * small fix * Implemented time windowing * Added command line option for time windowing * Added EQP command line examples * Cleaned up code * Sketch for optimized EQP * Continued fast eqp implementation * Improved regular EQP * V-basis speedup * Storing DS now * Solved segmentation fault in non eqp hyperreduction * Adding QDEIM option to some examples. * updated gitignore * Matrix multiplication optimization * Tested precompute optimization * Numbering works now. * Testing .hpp fix again * Fixed .hpp style issue * Delete the RomOperator to remove a memory leak * Updated RomOperator structure to have less leaks in timestepping * Cause of segfault error found * Segfault fixed * Removed EQP bug * Add x0 to setupEQP * add matrix row/col rescaling methods * normalize NNLS constraints * Added x0 * Fixed bug in NNLS constraint forming loop. * Max iters increased * improved eqp speed * resetting temp variable now * Moved temporary variable to the correct position * Minor formatting changes * Removed duplicate lines in examples * build succeeds * Updated formatting * Astyle 3.1. * updated .gitignore * ++ increment * Removed ReducedSystemOperator * Removed unnecessary comments * Added consts * Added more ++ increments * Removed unnecessary HSINV * Comments * LibROM native read / write * Added pointer deletion * librom runs * New benchmarks * elementmatrix first implementation * Construct em outside loop * Added element matrices to ROM class * Reduced EQP fast uses em * Em on everything * Debugged EQP * Formatting * Removed unnecessary comment * Removed more unnecessary comments * Implemented subsampling * measure elapsed time for EQP * Measure elapsed time for all methods * Update .gitignore * Optimized lifting of FOM dimension in Nonlinear elasticity EQP (#259) * implementation works and gives speed up * Removed unnecessary variables * Final benchmark --------- Co-authored-by: Dylan Copeland <[email protected]> Co-authored-by: Chris Vales <[email protected]> Co-authored-by: Dylan Copeland <[email protected]>
This PR adds EQP based hyperreduction to the nonlinear elastic example.
Current steps to take:
Implement EQP hyperrreduction in main file
Implement
SetupEQP_snapshots
Implement
HyperelasticNLFIntegrator_ComputeReducedEQP
Fast reduced EQP
Remember to do formatting
Future work