LCOV - code coverage report
Current view: top level - src/transfers - MultiAppNeutronicsSpectrumTransfer.C (source / functions) Hit Total Coverage
Test: idaholab/magpie: 5710af Lines: 0 25 0.0 %
Date: 2025-07-21 23:34:39 Functions: 0 3 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /**********************************************************************/
       2             : /*                     DO NOT MODIFY THIS HEADER                      */
       3             : /* MAGPIE - Mesoscale Atomistic Glue Program for Integrated Execution */
       4             : /*                                                                    */
       5             : /*            Copyright 2017 Battelle Energy Alliance, LLC            */
       6             : /*                        ALL RIGHTS RESERVED                         */
       7             : /**********************************************************************/
       8             : 
       9             : #include "MultiAppNeutronicsSpectrumTransfer.h"
      10             : #include "MultiApp.h"
      11             : #include "FEProblem.h"
      12             : #include "MooseTypes.h"
      13             : #include "MultiIndex.h"
      14             : #include "UserObject.h"
      15             : #include "NeutronicsSpectrumSamplerBase.h"
      16             : #include "PKAGeneratorNeutronicsBase.h"
      17             : 
      18             : registerMooseObject("MagpieApp", MultiAppNeutronicsSpectrumTransfer);
      19             : 
      20             : InputParameters
      21           0 : MultiAppNeutronicsSpectrumTransfer::validParams()
      22             : {
      23           0 :   InputParameters params = MultiAppTransfer::validParams();
      24           0 :   params.addRequiredParam<UserObjectName>("pka_neutronics", "PKA generator object name.");
      25           0 :   params.addRequiredParam<UserObjectName>("radiation_damage_sampler",
      26             :                                           "Neutronics user object providing the PDF data.");
      27           0 :   return params;
      28           0 : }
      29             : 
      30           0 : MultiAppNeutronicsSpectrumTransfer::MultiAppNeutronicsSpectrumTransfer(
      31           0 :     const InputParameters & parameters)
      32             :   : MultiAppTransfer(parameters),
      33           0 :     _pka_generator_name(getParam<UserObjectName>("pka_neutronics")),
      34           0 :     _neutronics_pdf_name(getParam<UserObjectName>("radiation_damage_sampler"))
      35             : {
      36           0 :   if (_direction != TO_MULTIAPP)
      37           0 :     mooseError("MultiAppNeutronicsSpectrumTransfer can only send data from a neutronics master app "
      38             :                "to a mesoscale multiapp.");
      39           0 : }
      40             : 
      41             : void
      42           0 : MultiAppNeutronicsSpectrumTransfer::execute()
      43             : {
      44             :   // get the neutronics PDF user object
      45             :   FEProblemBase & from_problem = _multi_app->problemBase();
      46             :   const NeutronicsSpectrumSamplerBase & neutronics_pdf =
      47           0 :       from_problem.getUserObject<NeutronicsSpectrumSamplerBase>(_neutronics_pdf_name);
      48             : 
      49             :   // loop over all sub apps and copy over the neutronics data
      50           0 :   for (unsigned int i = 0; i < _multi_app->numGlobalApps(); ++i)
      51           0 :     if (_multi_app->hasLocalApp(i))
      52             :     {
      53           0 :       std::vector<unsigned int> zaids = neutronics_pdf.getZAIDs();
      54           0 :       std::vector<Real> energies = neutronics_pdf.getEnergies();
      55           0 :       MultiIndex<Real> probabilities = neutronics_pdf.getPDF(i);
      56             : 
      57           0 :       for (THREAD_ID tid = 0; tid < libMesh::n_threads(); ++tid)
      58             :       {
      59             :         PKAGeneratorNeutronicsBase & pka_uo = const_cast<PKAGeneratorNeutronicsBase &>(
      60           0 :             _multi_app->appProblemBase(i).getUserObject<PKAGeneratorNeutronicsBase>(
      61             :                 _pka_generator_name, tid));
      62           0 :         pka_uo.setPDF(zaids, energies, probabilities);
      63             :       }
      64           0 :     }
      65           0 : }

Generated by: LCOV version 1.14