www.mooseframework.org
DiscreteNucleationInserterBase.h
Go to the documentation of this file.
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 #pragma once
11 
12 #include "ElementUserObject.h"
13 
15 
16 template <>
18 
25 class DiscreteNucleationInserterBase : public ElementUserObject
26 {
27 public:
28  DiscreteNucleationInserterBase(const InputParameters & parameters);
29 
31  using NucleusLocation = std::pair<Real, Point>;
32 
34  using NucleusList = std::vector<NucleusLocation>;
35 
36  // counter pair to track insertions and deletion in the current timestep
37  using NucleusChanges = std::pair<unsigned int, unsigned int>;
38 
39  virtual bool isMapUpdateRequired() const { return _update_required; }
40  virtual const NucleusList & getNucleusList() const { return _global_nucleus_list; }
41  virtual const NucleusChanges & getInsertionsAndDeletions() const { return _changes_made; }
42 
43  virtual const Real & getRate() const = 0;
44 
45 protected:
48 
51 
54 };
55 
validParams< DiscreteNucleationInserterBase >
InputParameters validParams< DiscreteNucleationInserterBase >()
Definition: DiscreteNucleationInserterBase.C:14
DiscreteNucleationInserterBase::DiscreteNucleationInserterBase
DiscreteNucleationInserterBase(const InputParameters &parameters)
Definition: DiscreteNucleationInserterBase.C:21
DiscreteNucleationInserterBase
This UserObject manages the insertion and expiration of nuclei in the simulation domain it manages a ...
Definition: DiscreteNucleationInserterBase.h:25
DiscreteNucleationInserterBase::isMapUpdateRequired
virtual bool isMapUpdateRequired() const
Definition: DiscreteNucleationInserterBase.h:39
DiscreteNucleationInserterBase::_global_nucleus_list
NucleusList & _global_nucleus_list
the global list of all nuclei over all processors
Definition: DiscreteNucleationInserterBase.h:47
DiscreteNucleationInserterBase::NucleusList
std::vector< NucleusLocation > NucleusList
Every MPI task should keep a full list of nuclei (in case they cross domains with their finite radii)
Definition: DiscreteNucleationInserterBase.h:34
DiscreteNucleationInserterBase::getNucleusList
virtual const NucleusList & getNucleusList() const
Definition: DiscreteNucleationInserterBase.h:40
DiscreteNucleationInserterBase::_update_required
bool _update_required
is a map update required
Definition: DiscreteNucleationInserterBase.h:53
DiscreteNucleationInserterBase::NucleusChanges
std::pair< unsigned int, unsigned int > NucleusChanges
Definition: DiscreteNucleationInserterBase.h:37
DiscreteNucleationInserterBase::getInsertionsAndDeletions
virtual const NucleusChanges & getInsertionsAndDeletions() const
Definition: DiscreteNucleationInserterBase.h:41
DiscreteNucleationInserterBase::NucleusLocation
std::pair< Real, Point > NucleusLocation
A nucleus has an expiration time and a location.
Definition: DiscreteNucleationInserterBase.h:31
DiscreteNucleationInserterBase::getRate
virtual const Real & getRate() const =0
DiscreteNucleationInserterBase::_changes_made
NucleusChanges _changes_made
count the number of nucleus insertions and deletions
Definition: DiscreteNucleationInserterBase.h:50