ML22143A829

From kanterella
Jump to navigation Jump to search
11 - 2022-05 NRC-Industry Meeting - Raynaud - Favor Update
ML22143A829
Person / Time
Issue date: 05/25/2022
From: Patrick Raynaud
NRC/RES/DE
To:
Kalikian R, 301-415-5590
Shared Package
ML22143A408 List:
References
Download: ML22143A829 (9)


Text

FAVOR/FAVPRO Update Patrick Raynaud Senior Materials Engineer RES/DE/REB

The Past: FAVOR-v16.1

  • Developed and issued by ORNL late 2016
  • Legacy Fortran
  • FAVOR = FAVLOAD + FAVPFM + FAVPOST

- 3 executables

- Information passed via formatted text files

  • Serial and sequential code

- ML20017A171

- ML20017A170 05/25/2022 NRC-Industry Meeting 2

FAVOR-v16.1 Software QA (SQA)

  • Assessment of SQA documentation revealed gaps

- FAVOR was developed under ORNL SQA program, but documentation lost in time

  • What we had:

- Small integration test suite: 27 cases with poor coverage

- Theory and User manuals

- Many reports on FAVOR documenting its use and benchmarking

  • What was missing:

- SQA documentation

- Good descriptions of source code structure

- Source code version control 05/25/2022 NRC-Industry Meeting 3

Vision and Goals for FAVOR Modernization

  • Completely refactor the code to create an equivalent tool written in modern Fortran
  • GOALS

- Maintainability

- SQA and V&V improvements (testing and documentation)

- Modularity (make the code adaptable, enable easier feature addition)

- Object-oriented code

- Parallel code (performance improvements)

- Maximize automation for testing and documentation

- Merge the 3 sub-codes into 1 program: FAVPRO

- Use State-of-Practice tools and libraries

  • GitHub: source control
  • Fortran Package Manager (fpm): build and test automation
  • Veggies/Garden: unit testing framework
  • JSON: I/O 05/25/2022 NRC-Industry Meeting 4

From FAVOR-v16.1 to FAVOR-v20.1.12 (current release)

  • CMake build system
  • Documentation
  • Source code improvements: - Automatically generate FORD developer documentation (detailed code descriptions with

- Convert to free form .f90 files source parsing)

- Modularization

- Created new SQA documents:

- Begin removal of obsolete Fortran

  • Testing improvements:

- New integration tests for better coverage (58

- A few unit tests - Created new Manuals:

- Automatically run testing on GitHub for all code

  • Theory Manual: ML21175A300 05/25/2022 NRC-Industry Meeting 5

FAVOR-v20.1.12 to FAVPRO

  • FAVPRO: Fracture Analysis of Vessels - PRObabilistic
  • Current status:

- Partial JSON I/O implemented (ongoing)

- Full modularization complete

- Refactoring ongoing (bit by bit as needed / when it makes sense): goal is 100% in the next 18 months

- Move towards object-oriented functional programming

- Ongoing: merge the 3 sub-programs to reduce/remove intermediate I/O

- Parallelization is the last step (not yet started)

  • Maximum leverage of Fortran Ecosystem 05/25/2022 NRC-Industry Meeting 6

FAVOR/FAVPRO User Group Update

  • To obtain FAVOR and/or FAVPRO:

- Fill out the NRC Codes NDA

- Once approved, the code executables and input generator are downloaded via NRCs BOX service

  • All approved users become members of the User Group

- Regular meetings (first meeting on 5/19/22-5/20/22), then short virtual updates (3-6 months), one longer meeting annually (format TBD)

- Newsletters

- New code versions

- User input to the development team is encouraged (bugs, new features, etc.)

  • Cost: free!

- Could change at some point, but not in immediate future

  • What about source code?

- Can be obtained on special case-by-case basis, pending approval of special request

  • Send any FAVOR/FAVPRO questions to Patrick.Raynaud@nrc.gov 05/25/2022 NRC-Industry Meeting 7

Q&A Start of Backup Slides 05/25/2022 NRC-Industry Meeting 8

Leveraging the Modern Fortran Ecosystem

  • Fortran has a growing user community and there is renewed interest in the language
  • Fortran 2018 is a modern object-oriented parallel programming language

- High performance for scientific and engineering computations (one of the best)

  • We use the following libraries

- fpm: Fortran Package Manager as the building and testing system

- Veggies/Garden for unit test development

- assert: assertion utility -> prerequisite checks

- quaff: quantities for Fortran -> unit tracking

- rojff: return of JSON for Fortran -> JSON interface

- erloff: errors and logging for Fortran Return

- iso_varying_string: implementation of Fortran ISO_VARYING_STRING

- Others 05/25/2022 NRC-Industry Meeting 9