LCOV - code coverage report
Current view: top level - src/actions - Tricrystal2CircleGrainsICAction.C (source / functions) Hit Total Coverage
Test: idaholab/moose phase_field: #31405 (292dce) with base fef103 Lines: 24 25 96.0 %
Date: 2025-09-04 07:55:36 Functions: 3 3 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //* This file is part of the MOOSE framework
       2             : //* https://mooseframework.inl.gov
       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 "Tricrystal2CircleGrainsICAction.h"
      11             : #include "Factory.h"
      12             : #include "Parser.h"
      13             : #include "FEProblem.h"
      14             : #include "Conversion.h"
      15             : 
      16             : #include <sstream>
      17             : #include <stdexcept>
      18             : 
      19             : #include "libmesh/libmesh.h"
      20             : #include "libmesh/exodusII_io.h"
      21             : #include "libmesh/equation_systems.h"
      22             : #include "libmesh/nonlinear_implicit_system.h"
      23             : #include "libmesh/explicit_system.h"
      24             : #include "libmesh/string_to_enum.h"
      25             : 
      26             : const Real Tricrystal2CircleGrainsICAction::_abs_zero_tol = 1e-12;
      27             : 
      28             : registerMooseAction("PhaseFieldApp", Tricrystal2CircleGrainsICAction, "add_ic");
      29             : 
      30             : InputParameters
      31          16 : Tricrystal2CircleGrainsICAction::validParams()
      32             : {
      33          16 :   InputParameters params = Action::validParams();
      34          16 :   params.addClassDescription("Sets initial conditions for the order parameters representing the "
      35             :                              "tri-crystal grain structure");
      36          32 :   params.addRequiredParam<unsigned int>("op_num", "number of order parameters to create");
      37          32 :   params.addRequiredParam<std::string>("var_name_base", "specifies the base name of the variables");
      38          32 :   params.addParam<std::vector<SubdomainName>>(
      39             :       "block", {}, "Block restriction for the initial condition");
      40             : 
      41          16 :   return params;
      42           0 : }
      43             : 
      44          16 : Tricrystal2CircleGrainsICAction::Tricrystal2CircleGrainsICAction(const InputParameters & params)
      45             :   : Action(params),
      46          16 :     _var_name_base(getParam<std::string>("var_name_base")),
      47          48 :     _op_num(getParam<unsigned int>("op_num"))
      48             : {
      49          16 : }
      50             : 
      51             : void
      52          16 : Tricrystal2CircleGrainsICAction::act()
      53             : {
      54             : #ifdef DEBUG
      55             :   Moose::err << "Inside the Tricrystal2CircleGrainsICAction Object" << std::endl;
      56             : #endif
      57             : 
      58             :   // Loop through the number of order parameters
      59          64 :   for (unsigned int op = 0; op < _op_num; op++)
      60             :   {
      61             :     // Create variable names
      62          48 :     std::string var_name = _var_name_base;
      63          48 :     std::stringstream out;
      64             :     out << op;
      65          48 :     var_name.append(out.str());
      66             : 
      67             :     // Set parameters for BoundingBoxIC
      68          96 :     InputParameters poly_params = _factory.getValidParams("Tricrystal2CircleGrainsIC");
      69          96 :     poly_params.set<VariableName>("variable") = var_name;
      70          48 :     poly_params.set<unsigned int>("op_index") = op;
      71          48 :     poly_params.applySpecificParameters(parameters(), {"op_num", "block"});
      72             : 
      73             :     // Add initial condition
      74         144 :     _problem->addInitialCondition("Tricrystal2CircleGrainsIC",
      75          48 :                                   "Tricrystal2CircleGrainsIC_" + Moose::stringify(op),
      76             :                                   poly_params);
      77          48 :   }
      78          16 : }

Generated by: LCOV version 1.14