www.mooseframework.org
FeatureVolumeFraction.C
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 #include "FeatureVolumeFraction.h"
11 #include <cmath>
12 
14 
15 template <>
16 InputParameters
18 {
19  InputParameters params = validParams<GeneralPostprocessor>();
20  MooseEnum value_type("VOLUME_FRACTION AVRAMI", "VOLUME_FRACTION");
21  params.addParam<MooseEnum>(
22  "value_type", value_type, "The value to output (VOLUME_FRACTION or AVRAMI value)");
23  params.addRequiredParam<PostprocessorName>("mesh_volume",
24  "Postprocessor from which to get mesh volume");
25  params.addRequiredParam<VectorPostprocessorName>("feature_volumes",
26  "The feature volume VectorPostprocessorValue.");
27  params.addParam<Real>(
28  "equil_fraction", -1.0, "Equilibrium volume fraction of 2nd phase for Avrami analysis");
29  return params;
30 }
31 
32 FeatureVolumeFraction::FeatureVolumeFraction(const InputParameters & parameters)
33  : GeneralPostprocessor(parameters),
34  _value_type(getParam<MooseEnum>("value_type").getEnum<ValueType>()),
35  _mesh_volume(getPostprocessorValue("mesh_volume")),
36  _feature_volumes(getVectorPostprocessorValue("feature_volumes", "feature_volumes")),
37  _equil_fraction(getParam<Real>("equil_fraction")),
38  _avrami_value(0)
39 {
40 }
41 
42 void
44 {
45 }
46 
47 void
49 {
50  Real volume = 0.0;
51 
52  // sum the values in the vector to get total volume
53  for (const auto & feature_volume : _feature_volumes)
54  volume += feature_volume;
55 
56  mooseAssert(!MooseUtils::absoluteFuzzyEqual(_mesh_volume, 0.0), "Mesh volume is zero");
57  _volume_fraction = volume / _mesh_volume;
58 
60 }
61 
62 Real
64 {
65  switch (_value_type)
66  {
68  return _volume_fraction;
69  case ValueType::AVRAMI:
70  return _avrami_value;
71  default:
72  return 0;
73  }
74 }
75 
76 Real
78 {
79  return std::log(std::log(1.0 / (1.0 - (_volume_fraction / _equil_fraction))));
80 }
FeatureVolumeFraction::_mesh_volume
const PostprocessorValue & _mesh_volume
Definition: FeatureVolumeFraction.h:39
FeatureVolumeFraction::_avrami_value
Real _avrami_value
Definition: FeatureVolumeFraction.h:44
FeatureVolumeFraction::ValueType::AVRAMI
FeatureVolumeFraction::ValueType
ValueType
Definition: FeatureVolumeFraction.h:32
FeatureVolumeFraction::_value_type
const ValueType _value_type
Definition: FeatureVolumeFraction.h:38
FeatureVolumeFraction::_equil_fraction
Real _equil_fraction
Definition: FeatureVolumeFraction.h:43
FeatureVolumeFraction::_feature_volumes
const VectorPostprocessorValue & _feature_volumes
Definition: FeatureVolumeFraction.h:40
validParams< FeatureVolumeFraction >
InputParameters validParams< FeatureVolumeFraction >()
Definition: FeatureVolumeFraction.C:17
registerMooseObject
registerMooseObject("PhaseFieldApp", FeatureVolumeFraction)
FeatureVolumeFraction::calculateAvramiValue
Real calculateAvramiValue()
Definition: FeatureVolumeFraction.C:77
FeatureVolumeFraction.h
FeatureVolumeFraction::execute
virtual void execute() override
Definition: FeatureVolumeFraction.C:48
FeatureVolumeFraction::initialize
virtual void initialize() override
Definition: FeatureVolumeFraction.C:43
FeatureVolumeFraction::getValue
virtual Real getValue() override
Definition: FeatureVolumeFraction.C:63
FeatureVolumeFraction::ValueType::VOLUME_FRACTION
FeatureVolumeFraction::FeatureVolumeFraction
FeatureVolumeFraction(const InputParameters &parameters)
Definition: FeatureVolumeFraction.C:32
FeatureVolumeFraction
Definition: FeatureVolumeFraction.h:20
FeatureVolumeFraction::_volume_fraction
Real _volume_fraction
Definition: FeatureVolumeFraction.h:42