|
| | Material (const MaterialData< number > &material_data, const MaterialTypes material_type) |
| |
| const MaterialData< number > & | get_data () const |
| |
| template<typename value_type > |
| MaterialParameterValues< value_type, number > | compute_parameters (const MaterialUpdateFlags::MaterialUpdateFlags &flags) const |
| |
| template<typename value_type > |
| MaterialParameterValues< value_type, number > | compute_parameters (const value_type &v, const MaterialUpdateFlags::MaterialUpdateFlags &flags) const |
| |
| template<typename value_type > |
| MaterialParameterValues< value_type, number > | compute_parameters (const value_type &level_set_heaviside, const value_type &temperature, const MaterialUpdateFlags::MaterialUpdateFlags &flags) const |
| |
| template<typename value_type , int dim> |
| MaterialParameterValues< value_type, number > | compute_parameters (const FECellIntegrator< dim, 1, number > &level_set_heaviside_val, const FECellIntegrator< dim, 1, number > &temperature_val, const MaterialUpdateFlags::MaterialUpdateFlags &flags, const unsigned int q_index) const |
| |
| template<typename value_type , int dim> |
| MaterialParameterValues< value_type, number > | compute_parameters (const FECellIntegrator< dim, 1, number > &level_set_heaviside_val, const std::vector< FECellIntegrator< dim, 1, number > > &temperature_val, const MaterialUpdateFlags::MaterialUpdateFlags &flags, const unsigned int q_index) const |
| |
| bool | has_dependency (const FieldType &field_type) const |
| |
|
| template<typename value_type > |
| MaterialParameterValues< value_type, number > | compute_parameters_internal (const value_type &v1, const value_type &v2, const MaterialUpdateFlags::MaterialUpdateFlags &flags) const |
| |
| template<typename value_type > |
| value_type | compute_two_phase_fluid_property (const value_type &level_set_heaviside, const value_type &gas_value, const value_type &liquid_solid_value) const |
| |
| template<typename value_type > |
| value_type | compute_two_phase_fluid_density_consistent_with_evaporation (const value_type &level_set_heaviside, const value_type &gas_density, const value_type &liquid_solid_density) const |
| |
| template<typename value_type > |
| value_type | compute_solid_liquid_phases_property (const value_type &temperature_dependent_solid_fraction, const value_type &liquid_value, const value_type &solid_value) const |
| |
| template<typename value_type > |
| value_type | compute_temperature_derivative_of_solid_liquid_phases_property (const value_type &temperature_dependent_solid_fraction, const value_type &liquid_value, const value_type &solid_value) const |
| |
| template<typename value_type > |
| value_type | compute_solid_liquid_gas_phases_property (const value_type &level_set_heaviside, const value_type &temperature_dependent_solid_fraction, const value_type &gas_value, const value_type &liquid_value, const value_type &solid_value) const |
| |
| template<typename value_type > |
| value_type | compute_solid_liquid_gas_phases_density_consistent_with_evaporation (const value_type &level_set_heaviside, const value_type &temperature_dependent_solid_fraction, const value_type &gas_value, const value_type &liquid_value, const value_type &solid_value) const |
| |
| template<typename value_type > |
| value_type | compute_temperature_derivative_of_solid_liquid_gas_property (const value_type &level_set_heaviside, const value_type &temperature_dependent_solid_fraction, const value_type &liquid_value, const value_type &solid_value) const |
| |
| template<typename value_type > |
| value_type | compute_solid_liquid_phases_specific_heat_capacity (const value_type &temperature_dependent_solid_fraction, const value_type &liquid_value, const value_type &solid_value) const |
| |
| template<typename value_type > |
| value_type | compute_solid_liquid_gas_phases_specific_heat_capacity (const value_type &level_set_heaviside, const value_type &temperature_dependent_solid_fraction, const value_type &gas_value, const value_type &liquid_value, const value_type &solid_value) const |
| |
| template<typename value_type > |
| value_type | compute_temperature_derivative_of_solid_liquid_specific_heat_capacity (const value_type &temperature_dependent_solid_fraction, const value_type &liquid_value, const value_type &solid_value) const |
| |
| template<typename value_type > |
| value_type | compute_temperature_derivative_of_solid_liquid_gas_specific_heat_capacity (const value_type &level_set_heaviside, const value_type &temperature_dependent_solid_fraction, const value_type &liquid_value, const value_type &solid_value) const |
| |
| template<typename value_type > |
| value_type | compute_temperature_derivative_of_solid_liquid_gas_density_consistent_with_evaporation (const value_type &level_set_heaviside, const value_type &temperature_dependent_solid_fraction, const value_type &gas_value, const value_type &liquid_value, const value_type &solid_value) const |
| |
| number | compute_temperature_dependent_solid_fraction (const number temperature) const |
| |
| dealii::VectorizedArray< number > | compute_temperature_dependent_solid_fraction (const dealii::VectorizedArray< number > &temperature) const |
| |
template<typename number >
template<typename value_type , int dim>
This overload of compute_parameters() can be used for any material_type.
The level_set_heaviside_val and temperature_val FECellIntegrators are evaluated only if the respective values are required for the current material_type. I.e. for
Before the evaluation of the respective FECellIntegrator's, the values must be set via FEEvaluation::evaluate() with EvaluationFlags::values, or via FEEvaluationBase::submit_value(). The values are evaluated at the quadrature point number q_index.
template<typename number >
template<typename value_type , int dim>
Same as above, but with the ability to handle a cut temperature.
The FECellIntegrator for the temperature is wrapped in a std::vector. If that vector has two entries, the cell is assumed to be an intersected cell and the first entry is the liquid side and the second entry is the gas side. Then we use the heaviside level set as an indicator to select the correct temperature value for each quadrature point.
template<typename number >
template<typename value_type >
| value_type MeltPoolDG::Material< number >::compute_solid_liquid_gas_phases_density_consistent_with_evaporation |
( |
const value_type & |
level_set_heaviside, |
|
|
const value_type & |
temperature_dependent_solid_fraction, |
|
|
const value_type & |
gas_value, |
|
|
const value_type & |
liquid_value, |
|
|
const value_type & |
solid_value |
|
) |
| const |
|
inlineprivate |
Determine the density x of a material containing solid/liquid/gas phases consistently with mass flux due to evaporation. Across the interface, the density is distributed following a reciprocal distribution function
1 ls (1-ls) — = --------------------------— + -----— x ___________________________ x_g | | (1) | (sf * x_s + (1-sf) * x_l) | |___________________________|
^-----------------------------------------^
(2)
with the heaviside representation of the level set function ls (level_set_heaviside) and the solid fraction sf (temperature_dependent_solid_fraction). (1) is calculated using compute_solid_liquid_phases_property() and is plugged into compute_two_phase_fluid_density_consistent_with_evaporation() (2) resulting in the parameter x.
gas_value The parameter's value for the gaseous phase liquid_value The parameter's value for the liquid phase solid_value The parameter's value for the solid phase
template<typename number >
template<typename value_type >
| value_type MeltPoolDG::Material< number >::compute_solid_liquid_gas_phases_property |
( |
const value_type & |
level_set_heaviside, |
|
|
const value_type & |
temperature_dependent_solid_fraction, |
|
|
const value_type & |
gas_value, |
|
|
const value_type & |
liquid_value, |
|
|
const value_type & |
solid_value |
|
) |
| const |
|
inlineprivate |
Determine the parameter of a material containing solid/liquid/gas phases.
/ \
x = (1-ls) * x_g + ls * | (1 - sf) * x_l + sf * x_s | \ /
^--------------------------—^ (1) ^---------------------------------------------—^ (2)
with the heaviside representation of the level set function ls (level_set_heaviside) and the solid fraction sf (temperature_dependent_solid_fraction). (1) is calculated using compute_solid_liquid_phases_property() and is plugged into compute_two_phase_fluid_property() (2) reulting in the parameter x.
gas_value The parameter's value for the gaseous phase liquid_value The parameter's value for the liquid phase solid_value The parameter's value for the solid phase
template<typename number >
template<typename value_type >
| value_type MeltPoolDG::Material< number >::compute_solid_liquid_gas_phases_specific_heat_capacity |
( |
const value_type & |
level_set_heaviside, |
|
|
const value_type & |
temperature_dependent_solid_fraction, |
|
|
const value_type & |
gas_value, |
|
|
const value_type & |
liquid_value, |
|
|
const value_type & |
solid_value |
|
) |
| const |
|
inlineprivate |
Compute the effective specific heat capacity for a three-phase solid-liquid-gas material.
The solid and liquid phase values are interpolated using the temperature-dependent solid fraction. If an apparent heat capacity model is enabled, its latent-heat contribution is added to the solid-liquid contribution before blending with the gas phase through the level-set Heaviside value.
- Template Parameters
-
| value_type | Scalar or vectorized value type. |
- Parameters
-
| level_set_heaviside | Heaviside value used to interpolate between the gas phase and the condensed solid-liquid phases. |
| temperature_dependent_solid_fraction | Temperature-dependent solid fraction used for the solid-liquid interpolation. |
| gas_value | Specific heat capacity of the gas phase. |
| liquid_value | Specific heat capacity of the liquid phase. |
| solid_value | Specific heat capacity of the solid phase. |
- Returns
- Effective solid-liquid-gas specific heat capacity, including the apparent heat capacity contribution if enabled.
template<typename number >
template<typename value_type >
| value_type MeltPoolDG::Material< number >::compute_solid_liquid_phases_property |
( |
const value_type & |
temperature_dependent_solid_fraction, |
|
|
const value_type & |
liquid_value, |
|
|
const value_type & |
solid_value |
|
) |
| const |
|
inlineprivate |
Determine a material parameter for the solid/liquid phases. In the mushy zone (where the solid_fraction is between 0 and 1) the material parameter will be interpolated by a smooth cubic spline function, see UtilityFunctions::interpolate_cubic(),
x = x_l + (x_s - x_l) * (-2*sf^3 + 3*sf^2)
with the solid_fraction sf (temperature_dependent_solid_fraction), the value of the solid phase x_s (solid_value) and the value of the liquid phase x_l (liquid_value).
template<typename number >
template<typename value_type >
| value_type MeltPoolDG::Material< number >::compute_solid_liquid_phases_specific_heat_capacity |
( |
const value_type & |
temperature_dependent_solid_fraction, |
|
|
const value_type & |
liquid_value, |
|
|
const value_type & |
solid_value |
|
) |
| const |
|
inlineprivate |
Compute the effective specific heat capacity for a two-phase solid-liquid material.
The solid and liquid phase values are interpolated using the temperature-dependent solid fraction. If an apparent heat capacity model is enabled, its latent-heat contribution is added to the interpolated phase value.
- Template Parameters
-
| value_type | Scalar or vectorized value type. |
- Parameters
-
| temperature_dependent_solid_fraction | Temperature-dependent solid fraction used for the solid-liquid interpolation. |
| liquid_value | Specific heat capacity of the liquid phase. |
| solid_value | Specific heat capacity of the solid phase. |
- Returns
- Effective solid-liquid specific heat capacity, including the apparent heat capacity contribution if enabled.
template<typename number >
| number MeltPoolDG::Material< number >::compute_temperature_dependent_solid_fraction |
( |
const number |
temperature | ) |
const |
|
inlineprivate |
Compute the solid fraction depending on the SolidLiquidPropertiesTransitionType.
SolidLiquidPropertiesTransitionType = mushy_zone If the temperature is greater than the liquidus temperature, then the solid fraction is zero. If the temperature is less than the solidus temperature, then the solid fraction is one. In between there is a linear interpolation.
SolidLiquidPropertiesTransitionType = sharp The solid fraction is zero above the melting point and one below the melting point.
- Note
- The computation of the solid fraction within this function is performed solely based on the temperature. In the case of a solid/liquid/gaseous material, thus the gaseous phase is ignored.
template<typename number >
template<typename value_type >
| value_type MeltPoolDG::Material< number >::compute_temperature_derivative_of_solid_liquid_gas_density_consistent_with_evaporation |
( |
const value_type & |
level_set_heaviside, |
|
|
const value_type & |
temperature_dependent_solid_fraction, |
|
|
const value_type & |
gas_value, |
|
|
const value_type & |
liquid_value, |
|
|
const value_type & |
solid_value |
|
) |
| const |
|
inlineprivate |
Determine the derivative of the density with respect to the temperature for a material containing solid/liquid/gaseous phases consistent with the mass flux due to evaporation. This function returns the temperature derivatives of the values determined by compute_solid_liquid_gas_phases_density_consistent_with_evaporation().
The derivative dx_d_T of the solid/liquid/gaseous phases material is computed by
dx ls * x_g² d x_ls -— = ------------------------------------------— * -----— dT ( x_ls * ( 1 + ls * ( x_g / x_ls - 1 ) ) )² dT
with the heaviside representation of the level set function ls (level_set_heaviside), the value of the gaseous phase x_g (gas_value), the value of the liquid(and solid) phase x_ls as determined by compute_solid_liquid_phases_property() and its temperature derivative dx_ls_d_T as determined by compute_temperature_derivative_of_solid_liquid_phases_property().
gas_value The parameter's value for the gaseous phase liquid_value The parameter's value for the liquid phase solid_value The parameter's value for the solid phase
template<typename number >
template<typename value_type >
| value_type MeltPoolDG::Material< number >::compute_temperature_derivative_of_solid_liquid_gas_property |
( |
const value_type & |
level_set_heaviside, |
|
|
const value_type & |
temperature_dependent_solid_fraction, |
|
|
const value_type & |
liquid_value, |
|
|
const value_type & |
solid_value |
|
) |
| const |
|
inlineprivate |
Determine the derivative of a material parameter with respect to the temperature for a material containing solid/liquid/gaseous phases. This function returns the temperature derivatives of the values determined by compute_solid_liquid_gas_phases_property(). Across the interface, the derivative reduces to zero if TwoPhaseFluidPropertiesTransitionType is sharp. Otherwise the derivative d_x/d_T is computed by
dx dx_ls -— = ls * ----— dT dT
with the heaviside representation of the level set function ls (level_set_heaviside), the derivative of the liquid(and solid) phase x_ls, which is determined by compute_temperature_derivative_of_solid_liquid_phases_property().
- Note
- The gaseous phases is identified based on the level set value only. Thus, its temperature derivative is zero.
liquid_value The parameter's value for the liquid phase solid_value The parameter's value for the solid phase
template<typename number >
template<typename value_type >
| value_type MeltPoolDG::Material< number >::compute_temperature_derivative_of_solid_liquid_gas_specific_heat_capacity |
( |
const value_type & |
level_set_heaviside, |
|
|
const value_type & |
temperature_dependent_solid_fraction, |
|
|
const value_type & |
liquid_value, |
|
|
const value_type & |
solid_value |
|
) |
| const |
|
inlineprivate |
Compute the temperature derivative of the effective specific heat capacity for a three-phase solid-liquid-gas material.
The derivative contains the contribution from the temperature-dependent solid-liquid interpolation and, if enabled, the temperature derivative of the apparent heat capacity. The gas phase is assumed to be independent of temperature in this derivative contribution, while the condensed phase contribution is blended with the gas phase through the level-set Heaviside value.
- Template Parameters
-
| value_type | Scalar or vectorized value type. |
- Parameters
-
| level_set_heaviside | Heaviside value used to interpolate between the gas phase and the condensed solid-liquid phases. |
| temperature_dependent_solid_fraction | Temperature-dependent solid fraction used for the solid-liquid interpolation. |
| liquid_value | Specific heat capacity of the liquid phase. |
| solid_value | Specific heat capacity of the solid phase. |
- Returns
- Temperature derivative of the effective solid-liquid-gas specific heat capacity, including the apparent heat capacity derivative if enabled.
template<typename number >
template<typename value_type >
| value_type MeltPoolDG::Material< number >::compute_temperature_derivative_of_solid_liquid_phases_property |
( |
const value_type & |
temperature_dependent_solid_fraction, |
|
|
const value_type & |
liquid_value, |
|
|
const value_type & |
solid_value |
|
) |
| const |
|
inlineprivate |
Determine the derivative of a material parameter for the solid/liquid phases, calculated by compute_solid_liquid_phases_property(), with respect to the temperature, given as
dx d sf -— = (x_s - x_l) * (-6*sf^2 + 6*sf) * ---— dT dT
d sf -1 ---— = ------------— , if T_sol < T < T_liq , 0 otherwise dT T_liq - T_sol
with the solid_fraction sf (temperature_dependent_solid_fraction), the value of the solid phase x_s (solid_value), the value of the liquid phase x_l (liquid_value), the liquidus temperature T_liq and the solidus temperature T_sol.
template<typename number >
template<typename value_type >
| value_type MeltPoolDG::Material< number >::compute_temperature_derivative_of_solid_liquid_specific_heat_capacity |
( |
const value_type & |
temperature_dependent_solid_fraction, |
|
|
const value_type & |
liquid_value, |
|
|
const value_type & |
solid_value |
|
) |
| const |
|
inlineprivate |
Compute the temperature derivative of the effective specific heat capacity for a two-phase solid-liquid material.
The derivative contains the contribution from the temperature-dependent solid-liquid interpolation. If an apparent heat capacity model is enabled, the temperature derivative of the apparent heat capacity is added.
- Template Parameters
-
| value_type | Scalar or vectorized value type. |
- Parameters
-
| temperature_dependent_solid_fraction | Temperature-dependent solid fraction used for the solid-liquid interpolation. |
| liquid_value | Specific heat capacity of the liquid phase. |
| solid_value | Specific heat capacity of the solid phase. |
- Returns
- Temperature derivative of the effective solid-liquid specific heat capacity, including the apparent heat capacity derivative if enabled.
template<typename number >
template<typename value_type >
| value_type MeltPoolDG::Material< number >::compute_two_phase_fluid_density_consistent_with_evaporation |
( |
const value_type & |
level_set_heaviside, |
|
|
const value_type & |
gas_density, |
|
|
const value_type & |
liquid_solid_density |
|
) |
| const |
|
inlineprivate |
Determine the density for two phase flow consistent with mass flux due to evaporation. If level_set_heaviside = 0 this function returns the gas_density and if ls_heaviside_val = 1 it returns the liquid_solid_density. Across the interface, the density is distributed following a reciprocal distribution function
1 ls (1-ls) — = -— + -----— x x_l x_g
with the heaviside representation of the level set function ls (level_set_heaviside), the density of the gaseous phase x_g (gas_density) and the density of the liquid (and solid) phase x_l (liquid_solid_density).
- Note
- In case of a material containing solid/liquid/gas phases, the value of
liquid_solid_value represents the liquid/solid phase's (level set = 1) value, as determined by compute_solid_liquid_phases_property().
template<typename number >
template<typename value_type >
| value_type MeltPoolDG::Material< number >::compute_two_phase_fluid_property |
( |
const value_type & |
level_set_heaviside, |
|
|
const value_type & |
gas_value, |
|
|
const value_type & |
liquid_solid_value |
|
) |
| const |
|
inlineprivate |
Determine a material parameter for two phase flow. If level_set_heaviside = 0, the parameter results in the gas_value and if ls_heaviside_val = 1 it results in the liquid_solid_value. Across the interface, the parameter jumps if TwoPhaseFluidPropertiesTransitionType is "sharp". Otherwise, the parameter x is distributed according to the level set function
x = (1-ls) * x_g + ls * x_l
with the heaviside representation of the level set function ls (level_set_heaviside), the value of the gaseous phase x_g (gas_value) and the value of the liquid (and solid) phase x_l (liquid_solid_value).
- Note
- In case of a material containing solid/liquid/gas phases, the value of
liquid_solid_value represents the liquid/solid phase's (level set = 1) value, as determined by compute_solid_liquid_phases_property().