Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
    • Help
    • Support
    • Submit feedback
    • Contribute to GitLab
  • Sign in
O
openmc
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 70
    • Issues 70
    • List
    • Boards
    • Labels
    • Milestones
  • Merge Requests 9
    • Merge Requests 9
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Shikhar Kumar
  • openmc
  • Merge Requests
  • !1101

Merged
Opened Oct 19, 2018 by Shikhar Kumar@shikhark
  • Report abuse
Report abuse

Move most tally filters to C++

  • Overview 55
  • Commits 41
  • Changes 87

Created by: smharper

With this PR, nearly all of the tally filter implementation is handled by C++. I didn't touch EnergyFilter, its subclass EnergyoutFilter, or DelayedGroupFilter because I assume they will be trouble due to how they're used in subroutines like score_fission_eout.

The implementation for each of the filters is pretty short, so I've decided to try leaving them as header-only. I think it can be a bit of a pain to constantly have to search both .cpp and .h files for implementation, and that split doesn't feel worth it for these filters which usually have far less than 100 LoC of actual implementation. Let me know if you guys disagree.

One nice benefit of this PR is that it allows us to remove a bunch of geometry-related Fortran interoperability boilerplate. Particularly good examples of this are the distribcell setup code and the mesh binning code.

Note that a big chunk of C-API code touched by this PR is not covered by our test suite. I made my own one-off tests and I believe I've checked all the C-API functions, but I do still request a careful review of those bits.

On that note, @paulromano, how would you feel about cutting back the scope of the C-API a bit in terms of tally filters? Consider functions like openmc_zernike_filter_set_params. I can't think of many use cases for changing a Zernike filter's parameters midway through a run so I guess the primary use case for functions like this is as an alternative to XML-based input. But I remember you said recently that we should probably be pushing the C++ API as the XML alternative which makes a lot of sense to me.

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
0
Labels
None
Assign labels
  • View project labels
Reference: shikhark/openmc!1101