Skip to content

Time Mesh

Partition of the time interval into slabs.

pinn_rk.mesh

Classes

TimeMesh dataclass

Time partition 0 = t0 < ... < tN = T and step sizes k_n.

Source code in src\pinn_rk\mesh.py
@dataclass(frozen=True)
class TimeMesh:
    """
    Time partition 0 = t0 < ... < tN = T and step sizes k_n.
    """

    nodes: Tensor  # [N+1]
    steps: Tensor  # [N]

    @staticmethod
    def uniform(T: float, N: int, device: torch.device = torch.device("cpu")) -> TimeMesh:
        if not (T > 0 and N >= 1):
            raise ValueError("T must be > 0 and N >= 1.")
        nodes = torch.linspace(0.0, T, N + 1, device=device, dtype=torch.float64)
        steps = nodes[1:] - nodes[:-1]
        return TimeMesh(nodes=nodes, steps=steps)