Structure and routines handling the solidification module dedicated to the resolution of electro-magnetic equations. More...
#include "cs_base.h"
#include "cs_boundary.h"
#include "cs_equation.h"
#include "cs_navsto_param.h"
#include "cs_time_plot.h"
#include "cs_time_step.h"
Go to the source code of this file.
Data Structures | |
struct | cs_solidification_voller_t |
struct | cs_solidification_binary_alloy_t |
struct | cs_solidification_t |
Macros | |
Flags specifying automatic post-processing for the solidification | |
module | |
#define | CS_SOLIDIFICATION_POST_CBULK_ADIM (1 << 0) /* = 1 */ |
Compute and post-process (C_bulk - C_0)/C_0 Only available if the model CS_SOLIDIFICATION_MODEL_BINARY_ALLOY is activated C_0 is the reference concentration. More... | |
#define | CS_SOLIDIFICATION_POST_CLIQ (1 << 1) /* = 2 */ |
Post-process Cliq the liquid solute distribution (wt %) Only available if the model CS_SOLIDIFICATION_MODEL_BINARY_ALLOY is activated. More... | |
#define | CS_SOLIDIFICATION_POST_CELL_STATE (1 << 2) /* = 4 */ |
State related to each cell between (solid, mushy, liquid or eutectic) More... | |
#define | CS_SOLIDIFICATION_POST_LIQUIDUS_TEMPERATURE (1 << 3) /* = 8 */ |
Activate the (volumic) post-processing of the liquidus temperature in each cell. More... | |
#define | CS_SOLIDIFICATION_POST_SEGREGATION_INDEX (1 << 4) /* = 16 */ |
Activate the computation and output in the file solidification.dat for each time step of the segregation index defined by sqrt( 1/|Domaine| * {Domain} ((C_bulk - C_0)/C_0)**2 ) Only available if the model CS_SOLIDIFICATION_MODEL_BINARY_ALLOY is activated. More... | |
#define | CS_SOLIDIFICATION_POST_SOLIDIFICATION_RATE (1 << 5) /* = 32 */ |
Activate the computation and output in the file solidification.dat for each time step of the integral over the computational domain of the solid fraction divided by the volume of the domain. Only available if the model CS_SOLIDIFICATION_MODEL_BINARY_ALLOY is activated. More... | |
#define | CS_SOLIDIFICATION_ADVANCED_ANALYSIS (1 << 6) /* = 64 */ |
Activate a set of post-processing (Advanced usage. Only for the understanding of the solidification process) More... | |
Flags specifying numerical options specific to the solidification | |
module | |
#define | CS_SOLIDIFICATION_WITH_SOLUTE_SOURCE_TERM (1 << 0) /*= 1 */ |
The solute equation related to the transport of the bulk concentration is treated with a source term related to an explicit advection of the quantity (C - Cl). The default behavior is to add a weighting coefficient to the (implicit) advection term related to the liquid fraction This option is related to the LEGACY strategy. More... | |
#define | CS_SOLIDIFICATION_USE_EXTRAPOLATION (1 << 1) /*= 2 */ |
Use an extrapolation during the computation of different terms according to the strategy. This extrapolation of variable at time step n+1 uses values at n and n-1: 2*u^n - u^{n-1}. More... | |
#define | CS_SOLIDIFICATION_WITH_PENALIZED_EUTECTIC (1 << 2) /*= 4 */ |
Option related to the PATH strategy. Introduced a reaction term and a source term in order to remain on the eutectic plateau. More... | |
#define | CS_SOLIDIFICATION_BINARY_ALLOY_M_FUNC (1 << 7) /*= 128 */ |
#define | CS_SOLIDIFICATION_BINARY_ALLOY_C_FUNC (1 << 8) /*= 256 */ |
#define | CS_SOLIDIFICATION_BINARY_ALLOY_G_FUNC (1 << 9) /*= 512 */ |
#define | CS_SOLIDIFICATION_BINARY_ALLOY_T_FUNC (1 <<10) /*= 1024 */ |
#define | CS_SOLIDIFICATION_BINARY_ALLOY_TCC_FUNC (1 <<11) /*= 2048 */ |
Typedefs | |
typedef cs_flag_t | cs_solidification_model_t |
typedef void() | cs_solidification_func_t(const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *ts) |
Function pointer associated to a solidification model aiming at updating/initializing the solidification variables/properties dedicated to the model. More... | |
Enumerations | |
enum | cs_solidification_model_bit_t { CS_SOLIDIFICATION_MODEL_USE_TEMPERATURE = 1<<0, CS_SOLIDIFICATION_MODEL_USE_ENTHALPY = 1<<1, CS_SOLIDIFICATION_MODEL_VOLLER_PRAKASH_87 = 1<<2, CS_SOLIDIFICATION_MODEL_BINARY_ALLOY = 1<<3 } |
Bit values for physical modelling related to the Navier-Stokes system of equations. More... | |
enum | cs_solidification_state_t { CS_SOLIDIFICATION_STATE_SOLID = 0, CS_SOLIDIFICATION_STATE_MUSHY = 1, CS_SOLIDIFICATION_STATE_LIQUID = 2, CS_SOLIDIFICATION_STATE_EUTECTIC = 3, CS_SOLIDIFICATION_N_STATES = 4 } |
Kind of state in which a cell or an entity is. More... | |
enum | cs_solidification_strategy_t { CS_SOLIDIFICATION_STRATEGY_LEGACY, CS_SOLIDIFICATION_STRATEGY_TAYLOR, CS_SOLIDIFICATION_STRATEGY_PATH, CS_SOLIDIFICATION_N_STRATEGIES } |
Kind of strategy to use to model the segregation/solidification process. This implies a setting of functions to update the liquid fraction, the thermal source terms, the liquid concentration and its related quantities. More... | |
Functions | |
bool | cs_solidification_is_activated (void) |
Test if solidification module is activated. More... | |
cs_solidification_t * | cs_solidification_get_structure (void) |
Retrieve the main structure to deal with solidification process. More... | |
void | cs_solidification_set_verbosity (int verbosity) |
Set the level of verbosity for the solidification module. More... | |
cs_solidification_t * | cs_solidification_activate (cs_solidification_model_t model, cs_flag_t options, cs_flag_t post_flag, const cs_boundary_t *boundaries, cs_navsto_param_model_t ns_model, cs_navsto_param_model_flag_t ns_model_flag, cs_navsto_param_coupling_t algo_coupling, cs_navsto_param_post_flag_t ns_post_flag) |
Activate the solidification module. More... | |
void | cs_solidification_set_forcing_eps (cs_real_t forcing_eps) |
Set the value of the epsilon parameter used in the forcing term of the momemtum equation. More... | |
void | cs_solidification_set_voller_model (cs_real_t t_solidus, cs_real_t t_liquidus, cs_real_t latent_heat, cs_real_t s_das) |
Set the main physical parameters which described the Voller and Prakash modelling. More... | |
void | cs_solidification_set_binary_alloy_model (const char *name, const char *varname, cs_real_t conc0, cs_real_t beta, cs_real_t kp, cs_real_t mliq, cs_real_t t_eutec, cs_real_t t_melt, cs_real_t solute_diff, cs_real_t latent_heat, cs_real_t s_das) |
Set the main physical parameters which described a solidification process with a binary alloy (with component A and B) Add a transport equation for the solute concentration to simulate the conv/diffusion of the alloy ratio between the two components of the alloy. More... | |
void | cs_solidification_set_segregation_opt (cs_solidification_strategy_t strategy, int n_iter_max, double tolerance, double gliq_relax, double eta_relax) |
Set the main numerical parameters which described a solidification process with a binary alloy (with component A and B) More... | |
void | cs_solidification_set_functions (cs_solidification_func_t *vel_forcing, cs_solidification_func_t *cliq_update, cs_solidification_func_t *gliq_update, cs_solidification_func_t *thm_st_update, cs_solidification_func_t *thm_conc_coupling) |
Set the functions to perform the update of physical properties and/or the computation of the thermal source term or quantities and/or the way to perform the coupling between the thermal equation and the bulk concentration computation. All this setting defines the way to compute the solidification process of a binary alloy. If a function is set to NULL then the automatic settings is kept. More... | |
cs_solidification_t * | cs_solidification_destroy_all (void) |
Free the main structure related to the solidification module. More... | |
void | cs_solidification_init_setup (void) |
Setup equations/properties related to the Solidification module. More... | |
void | cs_solidification_finalize_setup (const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant) |
Finalize the setup stage for equations related to the solidification module. More... | |
void | cs_solidification_log_setup (void) |
Summarize the solidification module in the log file dedicated to the setup. More... | |
void | cs_solidification_initialize (const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *time_step) |
Initialize the context structure used to build the algebraic system This is done after the setup step. More... | |
void | cs_solidification_compute (const cs_mesh_t *mesh, const cs_time_step_t *time_step, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant) |
Solve equations related to the solidification module. More... | |
void | cs_solidification_extra_op (const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *ts) |
Predefined extra-operations for the solidification module. More... | |
void | cs_solidification_extra_post (void *input, int mesh_id, int cat_id, int ent_flag[5], cs_lnum_t n_cells, cs_lnum_t n_i_faces, cs_lnum_t n_b_faces, const cs_lnum_t cell_ids[], const cs_lnum_t i_face_ids[], const cs_lnum_t b_face_ids[], const cs_time_step_t *time_step) |
Predefined post-processing output for the solidification module. Prototype of this function is fixed since it is a function pointer defined in cs_post.h (cs_post_time_mesh_dep_output_t) More... | |
Structure and routines handling the solidification module dedicated to the resolution of electro-magnetic equations.
#define CS_SOLIDIFICATION_ADVANCED_ANALYSIS (1 << 6) /* = 64 */ |
Activate a set of post-processing (Advanced usage. Only for the understanding of the solidification process)
#define CS_SOLIDIFICATION_BINARY_ALLOY_C_FUNC (1 << 8) /*= 256 */ |
#define CS_SOLIDIFICATION_BINARY_ALLOY_G_FUNC (1 << 9) /*= 512 */ |
#define CS_SOLIDIFICATION_BINARY_ALLOY_M_FUNC (1 << 7) /*= 128 */ |
#define CS_SOLIDIFICATION_BINARY_ALLOY_T_FUNC (1 <<10) /*= 1024 */ |
#define CS_SOLIDIFICATION_BINARY_ALLOY_TCC_FUNC (1 <<11) /*= 2048 */ |
#define CS_SOLIDIFICATION_POST_CBULK_ADIM (1 << 0) /* = 1 */ |
Compute and post-process (C_bulk - C_0)/C_0 Only available if the model CS_SOLIDIFICATION_MODEL_BINARY_ALLOY is activated C_0 is the reference concentration.
#define CS_SOLIDIFICATION_POST_CELL_STATE (1 << 2) /* = 4 */ |
State related to each cell between (solid, mushy, liquid or eutectic)
#define CS_SOLIDIFICATION_POST_CLIQ (1 << 1) /* = 2 */ |
Post-process Cliq the liquid solute distribution (wt %) Only available if the model CS_SOLIDIFICATION_MODEL_BINARY_ALLOY is activated.
#define CS_SOLIDIFICATION_POST_LIQUIDUS_TEMPERATURE (1 << 3) /* = 8 */ |
Activate the (volumic) post-processing of the liquidus temperature in each cell.
#define CS_SOLIDIFICATION_POST_SEGREGATION_INDEX (1 << 4) /* = 16 */ |
Activate the computation and output in the file solidification.dat for each time step of the segregation index defined by sqrt( 1/|Domaine| * {Domain} ((C_bulk - C_0)/C_0)**2 ) Only available if the model CS_SOLIDIFICATION_MODEL_BINARY_ALLOY is activated.
#define CS_SOLIDIFICATION_POST_SOLIDIFICATION_RATE (1 << 5) /* = 32 */ |
Activate the computation and output in the file solidification.dat for each time step of the integral over the computational domain of the solid fraction divided by the volume of the domain. Only available if the model CS_SOLIDIFICATION_MODEL_BINARY_ALLOY is activated.
#define CS_SOLIDIFICATION_USE_EXTRAPOLATION (1 << 1) /*= 2 */ |
Use an extrapolation during the computation of different terms according to the strategy. This extrapolation of variable at time step n+1 uses values at n and n-1: 2*u^n - u^{n-1}.
#define CS_SOLIDIFICATION_WITH_PENALIZED_EUTECTIC (1 << 2) /*= 4 */ |
Option related to the PATH strategy. Introduced a reaction term and a source term in order to remain on the eutectic plateau.
#define CS_SOLIDIFICATION_WITH_SOLUTE_SOURCE_TERM (1 << 0) /*= 1 */ |
The solute equation related to the transport of the bulk concentration is treated with a source term related to an explicit advection of the quantity (C - Cl). The default behavior is to add a weighting coefficient to the (implicit) advection term related to the liquid fraction This option is related to the LEGACY strategy.
typedef void() cs_solidification_func_t(const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *ts) |
Function pointer associated to a solidification model aiming at updating/initializing the solidification variables/properties dedicated to the model.
[in] | mesh | pointer to a cs_mesh_t structure |
[in] | connect | pointer to a cs_cdo_connect_t structure |
[in] | quant | pointer to a cs_cdo_quantities_t structure |
[in] | ts | pointer to a cs_time_step_t structure |
typedef cs_flag_t cs_solidification_model_t |
Bit values for physical modelling related to the Navier-Stokes system of equations.
Enumerator | |
---|---|
CS_SOLIDIFICATION_MODEL_USE_TEMPERATURE | The dynamic system of equations is associated with an energy equation solved using the temperature as variable. This is the default option. |
CS_SOLIDIFICATION_MODEL_USE_ENTHALPY | The dynamic system of equations is associated with an energy equation solved using the temperature as variable (not fully available). |
CS_SOLIDIFICATION_MODEL_VOLLER_PRAKASH_87 | Modelling introduced in Voller and Prakash entitled: "A fixed grid numerical modelling methodology for convection-diffusion mushy region phase-change problems" Int. J. Heat Transfer, 30 (8), 1987. No tracer. Only physical constants describing the solidification process are used. |
CS_SOLIDIFICATION_MODEL_BINARY_ALLOY | The basis is similar to CS_SOLIDIFICATION_MODEL_VOLLER_PRAKASH_87 A tracer equation is added corresponding to the evolution of the bulk concentration in alloy. This alloy has two chemical constituents hence the name "binary alloy". |
Kind of strategy to use to model the segregation/solidification process. This implies a setting of functions to update the liquid fraction, the thermal source terms, the liquid concentration and its related quantities.
Enumerator | |
---|---|
CS_SOLIDIFICATION_STRATEGY_LEGACY | |
CS_SOLIDIFICATION_STRATEGY_TAYLOR | |
CS_SOLIDIFICATION_STRATEGY_PATH | |
CS_SOLIDIFICATION_N_STRATEGIES |
cs_solidification_t* cs_solidification_activate | ( | cs_solidification_model_t | model, |
cs_flag_t | options, | ||
cs_flag_t | post_flag, | ||
const cs_boundary_t * | boundaries, | ||
cs_navsto_param_model_t | ns_model, | ||
cs_navsto_param_model_flag_t | ns_model_flag, | ||
cs_navsto_param_coupling_t | algo_coupling, | ||
cs_navsto_param_post_flag_t | ns_post_flag | ||
) |
Activate the solidification module.
[in] | model | type of modelling |
[in] | options | flag to handle optional parameters |
[in] | post_flag | predefined post-processings |
[in] | boundaries | pointer to the domain boundaries |
[in] | ns_model | model equations for the NavSto system |
[in] | ns_model_flag | option flag for the Navier-Stokes system |
[in] | algo_coupling | algorithm used for solving the NavSto system |
[in] | ns_post_flag | predefined post-processings for Navier-Stokes |
void cs_solidification_compute | ( | const cs_mesh_t * | mesh, |
const cs_time_step_t * | time_step, | ||
const cs_cdo_connect_t * | connect, | ||
const cs_cdo_quantities_t * | quant | ||
) |
Solve equations related to the solidification module.
[in] | mesh | pointer to a cs_mesh_t structure |
[in] | time_step | pointer to a cs_time_step_t structure |
[in] | connect | pointer to a cs_cdo_connect_t structure |
[in] | quant | pointer to a cs_cdo_quantities_t structure |
cs_solidification_t* cs_solidification_destroy_all | ( | void | ) |
Free the main structure related to the solidification module.
void cs_solidification_extra_op | ( | const cs_cdo_connect_t * | connect, |
const cs_cdo_quantities_t * | quant, | ||
const cs_time_step_t * | ts | ||
) |
Predefined extra-operations for the solidification module.
[in] | connect | pointer to a cs_cdo_connect_t structure |
[in] | quant | pointer to a cs_cdo_quantities_t structure |
[in] | ts | pointer to a cs_time_step_t structure |
void cs_solidification_extra_post | ( | void * | input, |
int | mesh_id, | ||
int | cat_id, | ||
int | ent_flag[5], | ||
cs_lnum_t | n_cells, | ||
cs_lnum_t | n_i_faces, | ||
cs_lnum_t | n_b_faces, | ||
const cs_lnum_t | cell_ids[], | ||
const cs_lnum_t | i_face_ids[], | ||
const cs_lnum_t | b_face_ids[], | ||
const cs_time_step_t * | time_step | ||
) |
Predefined post-processing output for the solidification module. Prototype of this function is fixed since it is a function pointer defined in cs_post.h (cs_post_time_mesh_dep_output_t)
[in,out] | input | pointer to a optional structure (here a cs_gwf_t structure) |
[in] | mesh_id | id of the output mesh for the current call |
[in] | cat_id | category id of the output mesh for this call |
[in] | ent_flag | indicate global presence of cells (ent_flag[0]), interior faces (ent_flag[1]), boundary faces (ent_flag[2]), particles (ent_flag[3]) or probes (ent_flag[4]) |
[in] | n_cells | local number of cells of post_mesh |
[in] | n_i_faces | local number of interior faces of post_mesh |
[in] | n_b_faces | local number of boundary faces of post_mesh |
[in] | cell_ids | list of cells (0 to n-1) |
[in] | i_face_ids | list of interior faces (0 to n-1) |
[in] | b_face_ids | list of boundary faces (0 to n-1) |
[in] | time_step | pointer to a cs_time_step_t struct. |
void cs_solidification_finalize_setup | ( | const cs_cdo_connect_t * | connect, |
const cs_cdo_quantities_t * | quant | ||
) |
Finalize the setup stage for equations related to the solidification module.
[in] | connect | pointer to a cs_cdo_connect_t structure |
[in] | quant | pointer to a cs_cdo_quantities_t structure |
cs_solidification_t* cs_solidification_get_structure | ( | void | ) |
Retrieve the main structure to deal with solidification process.
void cs_solidification_init_setup | ( | void | ) |
Setup equations/properties related to the Solidification module.
void cs_solidification_initialize | ( | const cs_mesh_t * | mesh, |
const cs_cdo_connect_t * | connect, | ||
const cs_cdo_quantities_t * | quant, | ||
const cs_time_step_t * | time_step | ||
) |
Initialize the context structure used to build the algebraic system This is done after the setup step.
[in] | mesh | pointer to a cs_mesh_t structure |
[in] | connect | pointer to a cs_cdo_connect_t structure |
[in] | quant | pointer to a cs_cdo_quantities_t structure |
[in] | time_step | pointer to a cs_time_step_t structure |
bool cs_solidification_is_activated | ( | void | ) |
Test if solidification module is activated.
void cs_solidification_log_setup | ( | void | ) |
Summarize the solidification module in the log file dedicated to the setup.
void cs_solidification_set_binary_alloy_model | ( | const char * | name, |
const char * | varname, | ||
cs_real_t | conc0, | ||
cs_real_t | beta, | ||
cs_real_t | kp, | ||
cs_real_t | mliq, | ||
cs_real_t | t_eutec, | ||
cs_real_t | t_melt, | ||
cs_real_t | solute_diff, | ||
cs_real_t | latent_heat, | ||
cs_real_t | s_das | ||
) |
Set the main physical parameters which described a solidification process with a binary alloy (with component A and B) Add a transport equation for the solute concentration to simulate the conv/diffusion of the alloy ratio between the two components of the alloy.
[in] | name | name of the binary alloy |
[in] | varname | name of the unknown related to the tracer eq. |
[in] | conc0 | reference mixture concentration |
[in] | beta | solutal dilatation coefficient |
[in] | kp | value of the distribution coefficient |
[in] | mliq | liquidus slope for the solute concentration |
[in] | t_eutec | temperature at the eutectic point |
[in] | t_melt | phase-change temperature for the pure material (A) |
[in] | solute_diff | solutal diffusion coefficient in the liquid |
[in] | latent_heat | latent heat |
[in] | s_das | secondary dendrite arm spacing |
void cs_solidification_set_forcing_eps | ( | cs_real_t | forcing_eps | ) |
Set the value of the epsilon parameter used in the forcing term of the momemtum equation.
[in] | forcing_eps | epsilon used in the penalization term to avoid a division by zero |
void cs_solidification_set_functions | ( | cs_solidification_func_t * | vel_forcing, |
cs_solidification_func_t * | cliq_update, | ||
cs_solidification_func_t * | gliq_update, | ||
cs_solidification_func_t * | thm_st_update, | ||
cs_solidification_func_t * | thm_conc_coupling | ||
) |
Set the functions to perform the update of physical properties and/or the computation of the thermal source term or quantities and/or the way to perform the coupling between the thermal equation and the bulk concentration computation. All this setting defines the way to compute the solidification process of a binary alloy. If a function is set to NULL then the automatic settings is kept.
–Advanced usage– This enables to finely control the numerical or physical modelling aspects.
[in] | vel_forcing | pointer to update the velocity forcing |
[in] | cliq_update | pointer to update the liquid concentration |
[in] | gliq_update | pointer to update the liquid fraction |
[in] | thm_st_update | pointer to update thermal source terms |
[in] | thm_conc_coupling | pointer to compute the thermo-solutal coupling |
void cs_solidification_set_segregation_opt | ( | cs_solidification_strategy_t | strategy, |
int | n_iter_max, | ||
double | tolerance, | ||
double | gliq_relax, | ||
double | eta_relax | ||
) |
Set the main numerical parameters which described a solidification process with a binary alloy (with component A and B)
[in] | strategy | strategy to perform the numerical segregation |
[in] | n_iter_max | max.number of iterations for the C/T equations |
[in] | tolerance | tolerance under which non-linear iter. stop |
[in] | gliq_relax | relaxation coefficient for the update of the liquid fraction |
[in] | eta_relax | relaxation coefficient for the update of the eta coefficient (scaling in front of the advective term) |
void cs_solidification_set_verbosity | ( | int | verbosity | ) |
Set the level of verbosity for the solidification module.
[in] | verbosity | level of verbosity to set |
void cs_solidification_set_voller_model | ( | cs_real_t | t_solidus, |
cs_real_t | t_liquidus, | ||
cs_real_t | latent_heat, | ||
cs_real_t | s_das | ||
) |
Set the main physical parameters which described the Voller and Prakash modelling.
[in] | t_solidus | solidus temperature (in K) |
[in] | t_liquidus | liquidus temperatur (in K) |
[in] | latent_heat | latent heat |
[in] | s_das | secondary dendrite space arms |