simu

Define and load diffusion simulation.

class simu.Simulation(config, work_dir, logger)[source]

Bases: object

Handle system properties, simulation conditions, simulation results.

This is a base class that organizes all input parameter processing and prepares simulation results. It is meant to be used only through subclasses NewSimulation (create new simulation) or ReadSimulation (read simulation from log file), not directly by the user.

This is a 1D version, with constant temperature, time-invariant space grid and time step.

Variables:
  • work_dir (pathlib.Path) – Work directory.

  • logger (log_utils.CustomLogger) – Logger.

  • data_dir (pathlib.Path) – Data directory, user- or package-provided (see paths.get_data_dir()).

  • config (dict) – Simulation input parameters.

  • db_register (dict) – Names and file paths of databases in data folder.

  • default_parameters (dict) – Parameters used when not specified in user input.

  • comps (list of str) – System constituents (Va + atom components).

  • inds (list of str) – Independent constituents (Va + atom components).

  • phase (str) – System phase name.

  • temperature (temperature.Temperature) – Temperature program.

  • TK (float) – Temperature in Kelvin

  • TC (float) – Temperature in Celsius

  • databases (dict) – Databases used in the simulation (thermo, mobility, molar_volume, vacancy_formation_energy)

  • V_partial (dict) – Partial molar volumes.

  • thermo (thermodynamics.Thermodynamics) – Thermodynamic properties.

  • mobility (mobility.Mobility) – Mobility properties.

  • space (space.SpaceGrid) – Space grid parameters.

  • boundary_conditions (dict) – Instances of boundary_conditions.BoundaryConditions, with ‘left’ and ‘right’ as keys.

  • lattice (lattice.Lattice) – Parameters relative to vacancy annihilation/creation.

  • initial_conditions (initial_conditions.InitialConditions) – Initial conditions.

  • time (time.TimeGrid) – Time-related parameters.

  • L_mean_kind (str) – Kind of mean used to compute L values at nodes.

  • ready (bool) – Whether simulation is ready to run.

  • simres (results.SimulationResults) – Simulation results.

  • results (dict) – Simulation results, nested dicts with syntax res[th][var][k], see results.SimulationResults.

  • res (dict) – Alias of results.

  • result – Function to access simulation results, see results.SimulationResults.result().

__init__(config, work_dir, logger)[source]

Class constructor.

check_required_parameters()[source]

Make sure required parameters are present in input dict.

get_constituents()[source]

Get atom components from input dict and add vacancies.

get_database_register()[source]

Get database register from ‘user_data.toml’.

Four categories of databases are handled:

  • Partial molar volume

  • Vacancy formation energy

  • Thermodynamics

  • Mobility

All are optional : if no entry in ‘user_data.toml’, default to empty dict.

get_default_parameters()[source]

Get default parameters.

For each parameter defined in constants.factory_default_parameters, look for entry in ‘user_data.toml’, and default to entry in constants.factory_default_parameters.

get_thermo_handler()[source]

Process input parameters and make thermodynamic properties handler.

Returns:

Thermodynamic properties handler.

Return type:

thermodynamics.Thermodynamics

get_mob_handler()[source]

Process input parameters and make mobility properties handler.

Returns:

Mobility properties handler.

Return type:

mobility.Mobility

get_database_from_register(name, table)[source]

Get database file path from register.

Parameters:
  • name (str) – Database name.

  • table (str) – Database category.

Raises:

utils.UserInputError – If database not found in register.

Returns:

val – Database file path.

Return type:

str

get_boundary_conditions(min_atom_fraction)[source]

Make dict of boundary_conditions.BoundaryConditions instances.

Parameters:

min_atom_fraction (min_atom_fraction : float) – Minimum atom fraction accepted.

Returns:

dctboundary_conditions.BoundaryConditions instances.

Return type:

dict

class simu.NewSimulation(file=None, config=None, ref=None, log=True)[source]

Bases: Simulation

Create new simulation from input file or dict.

Process user input and make Simulation instance. The user is expected to provide either a file or a dict, using the ‘file’ or ‘config’ keyword argument.

See Simulation for documentation on attributes and methods.

__init__(file=None, config=None, ref=None, log=True)[source]

Class constructor.

prepare_simulation_log()[source]

Add simulation info to log.

run(show_completion=False, verbose=1)[source]

Prepare log and run diffusion simulation.

Parameters:
  • show_completion (bool, optional) – Print completion rate to screen while simulation is running. The default is False.

  • verbose (int, optional) – Verbosity level, sets amount of information printed while simulation is running. Valid values: 0 (less verbose) and 1 (more verbose). The default is 1. See solvers.solver() and solvers.remesh().

Raises:

utils.UserInputError – If simulation is not ready.

class simu.ReadSimulation(file)[source]

Bases: Simulation

Create simulation from log file.

See Simulation for documentation on attributes and methods.

__init__(file)[source]

Class constructor.

Read log file of a previous simulation, get input dict and simulation results and make instance of results.SimulationResults.

simu.intro_msg()[source]

Prepare intro message.

simu.get_timedate(file_format=False)[source]

Get current timedate str.