ML22143A829

From kanterella
Revision as of 00:42, 18 November 2024 by StriderTol (talk | contribs) (StriderTol Bot change)
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 FAV O R-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

- Convert to free form.f90 files documentation (detailed code descriptions with

- Modularization source parsing)

- Begin removal of obsolete Fortran - Created new SQA documents:

  • Testing improvements:

- New integration tests for better coverage (58

- A few unit tests - Created new Manuals:

- Automatically run testing on GitHub for all code

05/25/2022 NRC-Industry Meeting 5 FAV O R-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 NRC s 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