https://mooseframework.inl.gov
Loading...
Searching...
No Matches
GrainDataTracker.h
Go to the documentation of this file.
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#pragma once
11
12#include "GrainTracker.h"
13
18template <typename T>
20{
21public:
23
25 const T & getData(unsigned int grain_id) const;
26
27protected:
29 virtual T newGrain(unsigned int new_grain_id) = 0;
30
31 virtual void newGrainCreated(unsigned int new_grain_id);
32
34 std::vector<T> & _grain_data;
35};
36
37template <typename T>
39 : GrainTracker(parameters), _grain_data(declareRestartableData<std::vector<T>>("grain_data"))
40{
41}
42
43template <typename T>
44const T &
45GrainDataTracker<T>::getData(unsigned int grain_id) const
46{
47 mooseAssert(grain_id < _grain_data.size(), "Requested data for invalid grain index.");
48 return _grain_data[grain_id];
49}
50
51template <typename T>
52void
53GrainDataTracker<T>::newGrainCreated(unsigned int new_grain_id)
54{
55 if (_grain_data.size() <= new_grain_id)
56 _grain_data.resize(new_grain_id + 1);
57
58 _grain_data[new_grain_id] = newGrain(new_grain_id);
59}
const double T
GrainTracker derived class template to base objects on which maintain physical parameters for individ...
const T & getData(unsigned int grain_id) const
return data for selected grain
virtual void newGrainCreated(unsigned int new_grain_id)
This method is called when a new grain is detected.
std::vector< T > & _grain_data
per grain data
virtual T newGrain(unsigned int new_grain_id)=0
implement this method to initialize the data for the new grain
GrainDataTracker(const InputParameters &parameters)
const InputParameters & parameters() const