Skip to content

QoL: provide stepsize as float #846

@RemDelaporteMathurin

Description

@RemDelaporteMathurin

Users should be able to do:

import festim as F

my_model = F.Simulation()

my_model.mesh = F.MeshFromVertices([1, 2, 3, 4])

my_model.materials = F.Material(id=1, D_0=1, E_D=0)
my_model.T = 300
my_model.settings = F.Settings(
    absolute_tolerance=1e-10,
    relative_tolerance=1e-10,
    transient=True,
    final_time=10,
)

my_model.dt = 1    # <------- provide stepsize as int or float


my_model.initialise()
my_model.run()

And not provide the stepsize as a F.Stepsize object for simple cases like this.

To do so, all we need is to write a setter function in Simulation

    @property
    def dt(self):
        return self._dt

    @dt.setter
    def dt(self, value):
        if isinstance(value, (int, float)):
            self._dt = F.Stepsize(value)
        elif isinstance(value, F.Stepsize):
            self._dt = value
        else:
            raise TypeError("dt must be an int, float, or festim.Stepsize")

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions