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

Refactor measurement and printing for future features #302

Open
wants to merge 12 commits into
base: main
Choose a base branch
from

Conversation

phdum-a
Copy link
Collaborator

@phdum-a phdum-a commented Nov 19, 2024

Refactoring of measurement and printing system in preparation for multi-excitation support.

  • Separates outs measurements (to be done in PostOperator only) from printing (to be done by Solvers)
  • Printing is now change from Postpro functions into small printer classes which also hold a table of results, rather than printing row-by-row. (This is where multi-excitations will add extra columns).
  • The output path is now handled using std::filesystem more consistently
  • Measurements in PostOperator are now cached so that printers don't have to worry about that the getter functions might trigger an expensive calculation or one that requires MPI communication.
  • Add PALACE_MFEM_USE_EXCEPTIONS build flag for unit tests, since catch can't test for aborts.
  • Other small tweaks and improvements

Note: The output of all solvers after these changes should be identical to the current output*, for easy testing. Changes which alter output will be in subsequent PRs.
[*With one trivial change in the logger for eigenvalues from \omega/2pi -> f]

@phdum-a phdum-a force-pushed the phdum/new_postpro branch 2 times, most recently from 910b6eb to 2e4ec3d Compare November 22, 2024 23:01
- export build commands
- Used for testing since Catch does not support testing aborts
- Add tests
- Add table wrapper for csv files for open-write-close
- Make empty cell NULL
- switch post-processing functions to small classes that store data in tables
- replace sequential row printing
- separate write during sweep step and final write more clearly
- Requires non-empty output dir
- Canonicalize and sync among processors
- Introduces palace::fs namespace to stop injecting into std
- Simplify checks since output directory always exists
- Cleaner separation between measurement (PostOperator) and printing (in solvers)
- Treat frequency as measurement to be supplied by solver
- Add caching system in PostOperator for all measurements, extending port case
- Simplify energy measurements using caching system
- Store pointer view to lumped/wave port operators in PostOperator where appropriate
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants