www.mooseframework.org
PFCEnergyDensity.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 "PFCEnergyDensity.h"
11 #include "libmesh/utility.h"
12 
13 registerMooseObject("PhaseFieldApp", PFCEnergyDensity);
14 
15 template <>
16 InputParameters
18 {
19  InputParameters params = validParams<AuxKernel>();
20  params.addRequiredCoupledVar("v", "Array of coupled variables");
21  return params;
22 }
23 
24 PFCEnergyDensity::PFCEnergyDensity(const InputParameters & parameters)
25  : AuxKernel(parameters),
26  _order(coupledComponents("v")),
27  _a(getMaterialProperty<Real>("a")),
28  _b(getMaterialProperty<Real>("b"))
29 {
30  _vals.resize(_order);
31  _coeff.resize(_order);
32 
33  std::string coeff_name_base = "C";
34 
35  for (unsigned int i = 0; i < _order; ++i)
36  {
37  _vals[i] = &coupledValue("v", i);
38  std::string coeff_name = coeff_name_base;
39  std::stringstream out;
40  out << i * 2;
41  coeff_name.append(out.str());
42  _console << coeff_name << std::endl;
43  _coeff[i] = &getMaterialProperty<Real>(coeff_name);
44  }
45 }
46 
47 Real
49 {
50  Real val = Utility::pow<2>((*_vals[0])[_qp]) * (1.0 - (*_coeff[0])[_qp]) / 2.0;
51 
52  // Loop Through Variables
53  // the sign of negative terms have been taken care of by changing the sign of the coefficients;
54  for (unsigned int i = 1; i < _order; ++i)
55  val += (*_coeff[i])[_qp] * (*_vals[0])[_qp] * (*_vals[i])[_qp] / 2.0;
56 
57  val += (_b[_qp] / 12.0 * Utility::pow<4>((*_vals[0])[_qp])) -
58  (_a[_qp] / 6.0 * Utility::pow<3>((*_vals[0])[_qp]));
59 
60  return val;
61 }
validParams< PFCEnergyDensity >
InputParameters validParams< PFCEnergyDensity >()
Definition: PFCEnergyDensity.C:17
registerMooseObject
registerMooseObject("PhaseFieldApp", PFCEnergyDensity)
PFCEnergyDensity.h
PFCEnergyDensity::_a
const MaterialProperty< Real > & _a
Definition: PFCEnergyDensity.h:32
PFCEnergyDensity
Definition: PFCEnergyDensity.h:20
PFCEnergyDensity::_b
const MaterialProperty< Real > & _b
Definition: PFCEnergyDensity.h:33
PFCEnergyDensity::_coeff
std::vector< const MaterialProperty< Real > * > _coeff
Definition: PFCEnergyDensity.h:29
PFCEnergyDensity::computeValue
virtual Real computeValue()
Definition: PFCEnergyDensity.C:48
PFCEnergyDensity::_vals
std::vector< const VariableValue * > _vals
Definition: PFCEnergyDensity.h:28
PFCEnergyDensity::_order
unsigned int _order
Definition: PFCEnergyDensity.h:31
PFCEnergyDensity::PFCEnergyDensity
PFCEnergyDensity(const InputParameters &parameters)
Definition: PFCEnergyDensity.C:24