## Continuity 6 Solvers

Contents

### Where are the important files?

- Electrophysiology
- pcty/server/problem/Electrophysiology/Electrophysiology.py
- pcty/server/problem/Electrophysiology/ContODESolver.py
- src/ep/? (f2py wrappers)
- src/ep/electrophys/? (actual fortran source)

- Biomechanics
- pcty/server/problem/Biomechanics/SolversBM.py
- pcty/server/problem/Biomechanics/SolversBMParallel.py
- 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
Electrophysiology.py, 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

- SuperLU
- 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
See page 783 and references 8,18,21,28 of Vetter et al 2000

- PETSc
http://www-unix.mcs.anl.gov/petsc/petsc-as/ (has python bindings; looks very promising)

- How does it work?

### ODE Solvers

#### Where are they found?

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

- pcty/server/problem/Electrophysiology.py calls cont2ODESolver() (line 1026)

#### What do we use?

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