Source code for festim.temperature.temperature

import sympy as sp
import fenics as f


[docs] class Temperature: """ Class for Temperature in FESTIM Args: value (sp.Add, int, float, optional): The value of the temperature. Defaults to None. Attributes: T (fenics.Function): the function attributed with temperature T_n (fenics.Function): the previous function value (sp.Add, int, float): the expression of temperature expression (fenics.Expression): the expression of temperature as a fenics object Usage: >>> import festim as F >>> my_model = F.Simulation(...) >>> my_model.T = F.Temperature(300 + 10 * F.x + F.t) """ def __init__(self, value=None) -> None: self.T = None self.T_n = None self.value = value self.expression = None
[docs] def create_functions(self, mesh): """Creates functions self.T, self.T_n Args: mesh (festim.Mesh): the mesh """ V = f.FunctionSpace(mesh.mesh, "CG", 1) self.T = f.Function(V, name="T") self.T_n = f.Function(V, name="T_n") self.expression = f.Expression(sp.printing.ccode(self.value), t=0, degree=2) self.T.assign(f.interpolate(self.expression, V)) self.T_n.assign(self.T)
[docs] def update(self, t): """Updates T_n, expression, and T with respect to time Args: t (float): the time """ self.T_n.assign(self.T) self.expression.t = t self.T.assign(f.interpolate(self.expression, self.T.function_space()))
def is_steady_state(self): return "t" not in sp.printing.ccode(self.value)