5. Building Block View

5.1 Level 1: Core System Overview

The core system is decomposed into several packages:

        classDiagram
    class Problem {
        +Equation eq
        +ContinuationStepper continuation_stepper
        +NewtonSolver newton_solver
        +EigenSolver eigen_solver
        +continuation_step()
        +newton_solve()
    }
    class Equation {
        +u: Array
        +rhs(u)
        +jacobian(u)
    }
    class ContinuationStepper {
        <<interface>>
        +step(problem)
    }
    class NewtonSolver {
        <<interface>>
        +solve(f, u0, jac)
    }
    class FiniteDifferencesEquation {
        +build_FD_matrices()
    }
    class PseudoArclengthContinuation {
        +step(problem)
    }

    Problem o-- Equation
    Problem o-- ContinuationStepper
    Problem o-- NewtonSolver
    Equation <|-- FiniteDifferencesEquation
    ContinuationStepper <|-- PseudoArclengthContinuation
    

5.1.1 Core Components

  • Problem: Acts as the central hub, aggregating equations, solvers, and settings.

  • Equation: Base class for defining the mathematical model.

  • ContinuationStepper: Strategy for parameter continuation (e.g., Natural, Pseudo-Arclength).

  • NewtonSolver: Algorithms for solving the resulting nonlinear systems.