Source code for festim.settings
from typing import Literal
import festim as F
[docs]
class Settings:
"""Settings for a festim simulation.
Args:
atol (float or callable): Absolute tolerance for the solver.
rtol (float or callable): Relative tolerance for the solver.
max_iterations (int, optional): Maximum number of iterations for the
solver. Defaults to 30.
transient (bool, optional): Whether the simulation is transient or not.
final_time (float, optional): Final time for a transient simulation.
Defaults to None
element_degree (int, optional): Degree order for finite element.
Defaults to 1.
stepsize (festim.Stepsize, optional): stepsize for a transient
simulation. Defaults to None
convergence_criterion: resiudal or incremental (for Newton solver)
Attributes:
atol (float or callable): Absolute tolerance for the solver.
rtol (float or callable): Relative tolerance for the solver.
max_iterations (int): Maximum number of iterations for the solver.
transient (bool): Whether the simulation is transient or not.
final_time (float): Final time for a transient simulation.
element_degree (int): Degree order for finite element.
stepsize (festim.Stepsize): stepsize for a transient
simulation.
convergence_criterion: resiudal or incremental (for Newton solver)
"""
def __init__(
self,
atol,
rtol,
max_iterations=30,
transient=True,
final_time=None,
element_degree=1,
stepsize=None,
convergence_criterion: Literal["residual", "incremental"] = "residual",
) -> None:
self.atol = atol
self.rtol = rtol
self.max_iterations = max_iterations
self.transient = transient
self.final_time = final_time
self.element_degree = element_degree
self.stepsize = stepsize
self.convergence_criterion = convergence_criterion
@property
def stepsize(self):
return self._stepsize
@stepsize.setter
def stepsize(self, value):
if value is None:
self._stepsize = None
elif isinstance(value, (float, int)):
self._stepsize = F.Stepsize(initial_value=value)
elif isinstance(value, F.Stepsize):
self._stepsize = value
else:
raise TypeError("stepsize must be an of type int, float or festim.Stepsize")