Solving an electrophysiology problem consists of two steps: initialize and integrate. This page provides a summary of the workflow for both steps.

Initialize

  • self.SinitElectrophys();

  • guiCallback() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[/pcty/client/electrophysiologyCommands.py|class SolveElectrophysInit]

  • doit()
  • doInitilize()
  • send_cmd(['epprob.setup.Initialize])
  • Initialize() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[/pcty/server/problem/Electrophysiology/Setup.py | class Setup]
    • self.prob.LoadIonicModel() - - - - - - - - - - - - - - [/pcty/server/problem/Electrophysiology/Electrophysiology.py | class Electrophysiology]

      • self.LoadEP_module()
    • self.prob.LoadStimulus()

      • self.build_basic_ODEs()
      • self.build_ECG_nodel_dist()
      • self.build_basis_num_dep_var()
      • calcNodalDepVars()
      • self. build_elem_mesh_dofs()
      • self.build_param_set_list()
    • self.CGinitialize() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [/pcty/server/problem/Electrophysiology/Setup.py | class Setup]
      • self.dynamicInitialize()
        • self.calcInitialODEs()
        • self.initializePDEs()
        • self.setup_rPar()

Integrate

self.SintElectrophys()

  • guiCallback() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [/pcty/client/electrophysiologyCommands.py|class SolveElectrophysInt]

    • form = integrateForm() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [/pcty/client/forms/integrateForm.py|class integrateForm]
  • doit()
    • send_cmd(['epprob.control.solvers.Integrate'])
  • _ _Integrate() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[/pcty/server/problem/Solvers.py|class Solvers]
    • build_stateVarList()
    • build_stateVarIndices
    • self.prob.cgint(ren, parallel, surfaceInfo) - - - - - - - [/pcty/server/problem/Electrophysiology/Electrophysiology.py | class Electrophysiology]
      • self.initialize_odesolver()
        • odeInit() - specific to GPU/CPU serial/parallel
      • self.solveStep(t_now, surfaceInfo, ren)
        • evaluateODEs()
          • self.cgint_{serial,parallel}_odesolver()
        • self.pack_source_gal()
        • self.linearSolver.allocateAndBuild()
          • self.allocate()
          • self.build_matricies()
        • self.linearSolver.build_rhs()
        • solvePDEs()
          • self.linearSolver.cont2Axb()- - - - - - - - - [/pcty/server/problem/Electrophysiology/LinearSolverEP.py | class PyCont2Axb]

            • self.build_lhs()
              • self.setupSolver()
            • self.factorization()
              • self.ep.call_solver() - - - - - - - - - - - - - - - - - - - - - - - - - - [/pcty/server/problem/Problem.py | class Problem]
            • self.solve() - - - - - - - - - - - - - - - [/pcty/server/problem/Electrophysiology/LinearSolverEP.py | class PyCont2Axb]

              • self.ep.call_solver() - - - - - - - - - - - - - - - - - - - - - - - - - - - [/pcty/server/problem/Problem.py | class Problem]
        • _cgint_eval_soln()
        • ren.rmout._callback()