Continuity 6 Solvers

Where are the important files?

  • Electrophysiology
    • pcty/server/problem/Electrophysiology/
    • pcty/server/problem/Electrophysiology/
    • src/ep/? (f2py wrappers)
    • src/ep/electrophys/? (actual fortran source)
  • Biomechanics
    • pcty/server/problem/Biomechanics/
    • pcty/server/problem/Biomechanics/
    • src/bm/? (f2py wrappers)
    • src/biomechanics/? (actual fortran source)

PDEs Solvers

How does it work?

  • Iterations or time sequences of linear solves

Where are they found?

  • Biomechanics (SolversBM*.py)
  • Electrophysiology
    •, Cont2Axb(), calls p_cont2axb()

Linear Solvers

Where are they found?

  • Used within the time iterations or time sequences for both Biomechanics and Electrophysiology
    • For Biomechanics uses nonlinear Newton iterations within timestep loop
    • For Electrophysiology uses time steps
  • Used for consistent stress and consistent strains
  • Also maybe used by fitting (at least it could be used)

What do we use?

  • A direct linear solver
    • SuperLU
      • Uses a sparse matrix representation
      • Sparse global matrix is assembled by summing element matrices
    • Previously we have used LaPack and NAG although they are MUCH slower

  • Solves an [A][x] = [b] problem, by reducing it to [L][U][x] = [b]
  • Requires 2 steps
    • Factorize
    • Back subsitution

What could we use?

  • Distributed SuperLU
    • Solves the linear problem in parallel
    • A lot of communications overhead–need fast interconnect between nodes
  • An “indirect” or “iterative” solver
    • How does it work?
      • [A][X*] – [b] until = 0
    • Advantages?
      • matrix-vector-product can be done matrix free (much less memory required, less communication overhead)
    • Disadvantages?
      • Requires a preconditioner

      • Not currently implemented in Continuity 6, although it was implemented in Continuity 5
    • PETSc

ODE Solvers

Where are they found?

  • Biomechanics: circulatory model
  • Electrophysiology
    • pcty/server/problem/ calls cont2ODESolver() (line 1026)
      • alls p_odesolver() (line 86)

What do we use?

  • Radau
  • Could be another implicit ODE solver e.g. Runge-Kutta