LCOV - code coverage report
Current view: top level - src/kokkos/materials - KokkosMaterialBase.K (source / functions) Hit Total Coverage
Test: idaholab/moose framework: #31761 (28487c) with base 701993 Lines: 53 54 98.1 %
Date: 2025-11-11 13:51:07 Functions: 4 4 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //* This file is part of the MOOSE framework
       2             : //* https://www.mooseframework.org
       3             : //*
       4             : //* All rights reserved, see COPYRIGHT for full restrictions
       5             : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
       6             : //*
       7             : //* Licensed under LGPL 2.1, please see LICENSE for details
       8             : //* https://www.gnu.org/licenses/lgpl-2.1.html
       9             : 
      10             : #include "KokkosMaterialBase.h"
      11             : 
      12             : #include "FEProblemBase.h"
      13             : 
      14             : namespace Moose
      15             : {
      16             : namespace Kokkos
      17             : {
      18             : 
      19             : InputParameters
      20      122036 : MaterialBase::validParams()
      21             : {
      22      122036 :   InputParameters params = ::MaterialBase::validParams();
      23             : 
      24      244072 :   params.suppressParameter<bool>("use_displaced_mesh");
      25      244072 :   params.suppressParameter<bool>("compute");
      26      244072 :   params.suppressParameter<std::vector<OutputName>>("outputs");
      27      122036 :   params.suppressParameter<std::vector<std::string>>("output_properties");
      28             : 
      29      122036 :   params.addPrivateParam<bool>(MooseBase::kokkos_object_param, true);
      30      244072 :   params.addPrivateParam<bool>("_kokkos_material", true);
      31             : 
      32      122036 :   return params;
      33           0 : }
      34             : 
      35         952 : MaterialBase::MaterialBase(const InputParameters & parameters)
      36             :   : ::MaterialBase(parameters),
      37         766 :     MeshHolder(*_fe_problem.mesh().getKokkosMesh()),
      38         766 :     AssemblyHolder(_fe_problem.kokkosAssembly()),
      39         766 :     SystemHolder(_fe_problem.getKokkosSystems()),
      40         766 :     _t(TransientInterface::_t),
      41         766 :     _t_old(TransientInterface::_t_old),
      42         766 :     _t_step(TransientInterface::_t_step),
      43         766 :     _dt(TransientInterface::_dt),
      44        2298 :     _dt_old(TransientInterface::_dt_old)
      45             : {
      46         952 : }
      47             : 
      48       50065 : MaterialBase::MaterialBase(const MaterialBase & object)
      49             :   : ::MaterialBase(object, {}),
      50             :     MeshHolder(object),
      51             :     AssemblyHolder(object),
      52             :     SystemHolder(object),
      53       41155 :     _t(object._t),
      54       41155 :     _t_old(object._t_old),
      55       41155 :     _t_step(object._t_step),
      56       41155 :     _dt(object._dt),
      57       82310 :     _dt_old(object._dt_old)
      58             : {
      59       50065 :   _element_ids = object._element_ids;
      60       50065 :   _element_side_ids = object._element_side_ids;
      61       50065 : }
      62             : 
      63             : void
      64         838 : MaterialBase::initialSetup()
      65             : {
      66         838 :   if (materialDataType() == Moose::BLOCK_MATERIAL_DATA)
      67             :   {
      68         275 :     std::set<ContiguousElementID> element_ids;
      69             : 
      70         550 :     for (auto block : blockIDs())
      71         275 :       element_ids.insert(_mesh.getKokkosMesh()->getSubdomainContiguousElementIDs(block).begin(),
      72         214 :                          _mesh.getKokkosMesh()->getSubdomainContiguousElementIDs(block).end());
      73             : 
      74         275 :     _element_ids = element_ids;
      75         275 :   }
      76             :   else
      77             :   {
      78         563 :     auto & restricted_blocks = boundaryRestricted() ? meshBlockIDs() : blockIDs();
      79         563 :     auto & restricted_boundaries = boundaryRestricted() ? boundaryIDs() : meshBoundaryIDs();
      80         563 :     auto & material_boundaries = kokkosAssembly().getMaterialBoundaries();
      81             : 
      82         563 :     std::vector<BoundaryID> boundaries;
      83             : 
      84         563 :     std::set_intersection(restricted_boundaries.begin(),
      85             :                           restricted_boundaries.end(),
      86             :                           material_boundaries.begin(),
      87             :                           material_boundaries.end(),
      88             :                           std::back_inserter(boundaries));
      89             : 
      90         563 :     std::set<Pair<ContiguousElementID, unsigned int>> element_side_ids;
      91             : 
      92         688 :     for (auto boundary : boundaries)
      93        1365 :       for (auto elem_id : _mesh.getBoundaryActiveSemiLocalElemIds(boundary))
      94             :       {
      95        1240 :         const auto elem = _mesh.elemPtr(elem_id);
      96             : 
      97        2080 :         if (elem->processor_id() == processor_id() &&
      98        1790 :             restricted_blocks.find(elem->subdomain_id()) != restricted_blocks.end())
      99        1970 :           element_side_ids.insert({_mesh.getKokkosMesh()->getContiguousElementID(elem),
     100         840 :                                    _mesh.sideWithBoundaryID(elem, boundary)});
     101         125 :       }
     102             : 
     103         563 :     _element_side_ids = element_side_ids;
     104         563 :   }
     105         838 : }
     106             : 
     107             : } // namespace Kokkos
     108             : } // namespace Moose

Generated by: LCOV version 1.14