idaholab / moose

Multiphysics Object Oriented Simulation Environment
https://www.mooseframework.org
GNU Lesser General Public License v2.1
1.71k stars 1.04k forks source link

Discrete Nucleus Insertion to take variable nucleus radius #14544

Open amjokisaari opened 4 years ago

amjokisaari commented 4 years ago

Currently the Discrete Nucleation in the phase field module has only a fixed nucleus radius specified a priori by the user. However, nucleus size could vary depending on local conditions such as concentration supersaturation or subgrain size.

Currently the nucleus radius is specified in DiscreteNucleationMap and the nucleus information is contained in the DiscreteNucleationInserterBase as the NucleusList type, which is a pair consisting of a Real (hold time) and a Point (nucleus center).

The proposed design is as follows:
1) The NucleusList type in DiscreteNucleationInserterBase is changed into a tuple containing a Real (hold time), a Point (nucleus center), and a Real (radius).

2) The radius is either provided as a material property or a user-specified value, and is incorporated in DiscreteNucleationInserter. When a nucleus is added, the radius at the quadrature point or the user-specified value is provided.

3) The radius input parameter is removed from DiscreteNucleationMap. To generate the map, each nucleus has its own radius used.

Impact involves changing the API. The current input parameter for the radius will need to be deprecated. Will probably impact DiscreteNucleationFromFile. Tests will need to be updated. A new method for dataStore() and probably dataLoad() will need to be defined for having restart capability.

amjokisaari commented 4 years ago

@dschwen, can you add your comments that we discussed?

dschwen commented 4 years ago