module GridMethod.TaskModel

// General form
// Equation:
//    u'(t)(x, t) = κ * u''(x)(x, t) + f(x, t)
//    κ > 0, 0 < x < a, 0 < t < T
// Initial conditions:
//    u(x, 0) = µ(x), 0 <= x <= a
//    u(0, t) = µ_1(t), 0 <= t <= T
//    u(a, t) = µ_2(t), 0 <= t <= T

type Equation =
    { κ: float; f: float -> float -> float }

type InitialConditions =
    { a: float
      T: float
      µ: float -> float
      µ_1: float -> float
      µ_2: float -> float }

type Task =
    { Equation: Equation
      InitialConditions: InitialConditions }
