https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Enumerations | Functions
MoelansInterfaceFits Namespace Reference

Polynomial fits for the interface relations of the multi-order-parameter model of Moelans et al., Phys. More...

Enumerations

enum class  Fit { MOELANS2022 , MOELANS2009 }
 Fits selectable through the "interface_fit" parameter. More...
 

Functions

InputParameters validParams ()
 Parameters for objects using these fits.
 
Real inverseGamma (Real g2, Fit fit)
 1/gamma as a function of g^2
 
Real f0Interf (Real inverse_gamma, Fit fit)
 f0_interf as a function of 1/gamma
 
bool inRange (Real g2, Fit fit)
 Whether g^2 lies within the range the fit was made for.
 

Detailed Description

Polynomial fits for the interface relations of the multi-order-parameter model of Moelans et al., Phys.

Rev. B 78, 024113 (2008): sigma = g(gamma) sqrt(kappa m), l = sqrt(kappa / (m f0_interf(gamma))) g(gamma) and f0_interf(gamma) are only known numerically. The fits give 1/gamma as a polynomial in g^2 and f0_interf as a polynomial in 1/gamma.

Enumeration Type Documentation

◆ Fit

enum class MoelansInterfaceFits::Fit
strong

Fits selectable through the "interface_fit" parameter.

Enumerator
MOELANS2022 

N. Moelans, Mater. Des. 217, 110592 (2022), supplementary material Sec. I.

MOELANS2009 

Earlier fit from N. Moelans, parameters.m (2009)

Definition at line 26 of file MoelansInterfaceFits.h.

27{
32};
@ MOELANS2009
Earlier fit from N. Moelans, parameters.m (2009)
@ MOELANS2022
N. Moelans, Mater. Des. 217, 110592 (2022), supplementary material Sec. I.

Function Documentation

◆ f0Interf()

Real MoelansInterfaceFits::f0Interf ( Real  inverse_gamma,
Fit  fit 
)

f0_interf as a function of 1/gamma

Definition at line 44 of file MoelansInterfaceFits.C.

45{
46 // coefficients in ascending powers of 1/gamma
47 static constexpr std::array<Real, 7> c2022{
48 {0.2907, -0.5563, 1.0686, -1.5281, 1.2244, -0.4955, 0.0788}};
49 static constexpr std::array<Real, 7> c2009{
50 {0.2792, -0.4324, 0.6107, -0.7749, 0.6367, -0.2924, 0.05676}};
51 return MathUtils::polynomial(fit == Fit::MOELANS2022 ? c2022 : c2009, inverse_gamma);
52}
R polynomial(const C &c, const T x)

Referenced by GBAnisotropy::GBAnisotropy(), GBWidthAnisotropy::GBWidthAnisotropy(), and TEST().

◆ inRange()

bool MoelansInterfaceFits::inRange ( Real  g2,
Fit  fit 
)

Whether g^2 lies within the range the fit was made for.

Definition at line 55 of file MoelansInterfaceFits.C.

56{
57 // the 2022 fit covers 0.098 <= g <= 0.766, i.e. 0.53 <= gamma <= 40 (Moelans 2022, Sec. 5)
58 if (fit == Fit::MOELANS2022)
59 return g2 >= 0.098 * 0.098 && g2 <= 0.766 * 0.766;
60
61 // no range is documented for the 2009 fit; it is not checked so earlier results are reproduced
62 return true;
63}

Referenced by GBAnisotropyBase::checkFitRange(), GrandPotentialInterface::GrandPotentialInterface(), and TEST().

◆ inverseGamma()

Real MoelansInterfaceFits::inverseGamma ( Real  g2,
Fit  fit 
)

1/gamma as a function of g^2

Definition at line 35 of file MoelansInterfaceFits.C.

36{
37 // coefficients in ascending powers of g^2
38 static constexpr std::array<Real, 5> c2022{{2.0033, -8.1819, 10.323, -1.8169, -3.0944}};
39 static constexpr std::array<Real, 5> c2009{{2.007, -8.183, 9.965, -0.09364, -5.288}};
40 return MathUtils::polynomial(fit == Fit::MOELANS2022 ? c2022 : c2009, g2);
41}

Referenced by GBAnisotropyBase::computeQpProperties(), GBAnisotropy::GBAnisotropy(), GBWidthAnisotropy::GBWidthAnisotropy(), GrandPotentialInterface::GrandPotentialInterface(), TEST(), and TEST().

◆ validParams()

InputParameters MoelansInterfaceFits::validParams ( )

Parameters for objects using these fits.

Definition at line 20 of file MoelansInterfaceFits.C.

21{
23 // the enum values match the Fit enum class
24 MooseEnum fit("moelans2022=0 moelans2009=1", "moelans2022");
25 params.addParam<MooseEnum>(
26 "interface_fit",
27 fit,
28 "Polynomial fits relating gamma to the interfacial free energy and diffuse interface width: "
29 "'moelans2022' (N. Moelans, Mater. Des. 217, 110592, 2022, valid for 0.53 <= gamma <= 40) "
30 "or the earlier 'moelans2009' fits");
31 return params;
32}
InputParameters emptyInputParameters()
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)

Referenced by GBAnisotropyBase::validParams(), and GrandPotentialInterface::validParams().