Chaste Commit::baa90ac2819b962188b7562f2326be23c47859a7
ExtendedBidomainTissue< SPACE_DIM > Class Template Reference

#include <ExtendedBidomainTissue.hpp>

+ Inheritance diagram for ExtendedBidomainTissue< SPACE_DIM >:
+ Collaboration diagram for ExtendedBidomainTissue< SPACE_DIM >:

Public Member Functions

 ExtendedBidomainTissue (AbstractCardiacCellFactory< SPACE_DIM > *pCellFactory, AbstractCardiacCellFactory< SPACE_DIM > *pCellFactorySecondCell, AbstractStimulusFactory< SPACE_DIM > *pExtracellularStimulusFactory)
 
 ExtendedBidomainTissue (std::vector< AbstractCardiacCellInterface * > &rCellsDistributed, std::vector< AbstractCardiacCellInterface * > &rSecondCellsDistributed, std::vector< boost::shared_ptr< AbstractStimulusFunction > > &rExtraStimuliDistributed, std::vector< double > &rGgapsDistributed, AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM > *pMesh, c_vector< double, SPACE_DIM > intracellularConductivitiesSecondCell)
 
virtual ~ExtendedBidomainTissue ()
 
void SetIntracellularConductivitiesSecondCell (c_vector< double, SPACE_DIM > conductivities)
 
AbstractCardiacCellInterfaceGetCardiacSecondCell (unsigned globalIndex)
 
boost::shared_ptr< AbstractStimulusFunctionGetExtracellularStimulus (unsigned globalIndex)
 
const std::vector< AbstractCardiacCellInterface * > & rGetSecondCellsDistributed () const
 
const std::vector< double > & rGetGapsDistributed () const
 
const std::vector< boost::shared_ptr< AbstractStimulusFunction > > & rGetExtracellularStimulusDistributed () const
 
c_vector< double, SPACE_DIM > GetIntracellularConductivitiesSecondCell () const
 
virtual void SolveCellSystems (Vec existingSolution, double time, double nextTime, bool updateVoltage=false)
 
void CreateIntracellularConductivityTensorSecondCell ()
 
void SetGgapHeterogeneities (std::vector< boost::shared_ptr< AbstractChasteRegion< SPACE_DIM > > > &rGgapHeterogeneityRegions, std::vector< double > rGgapValues)
 
void CreateGGapConductivities ()
 
const c_matrix< double, SPACE_DIM, SPACE_DIM > & rGetExtracellularConductivityTensor (unsigned elementIndex)
 
const c_matrix< double, SPACE_DIM, SPACE_DIM > & rGetIntracellularConductivityTensorSecondCell (unsigned elementIndex)
 
ReplicatableVectorrGetIionicCacheReplicatedSecondCell ()
 
ReplicatableVectorrGetIntracellularStimulusCacheReplicatedSecondCell ()
 
ReplicatableVectorrGetExtracellularStimulusCacheReplicated ()
 
ReplicatableVectorrGetGgapCacheReplicated ()
 
double GetAmFirstCell ()
 
double GetAmSecondCell ()
 
double GetAmGap ()
 
double GetCmFirstCell ()
 
double GetCmSecondCell ()
 
double GetGGap ()
 
void SetAmFirstCell (double value)
 
void SetAmSecondCell (double value)
 
void SetAmGap (double value)
 
void SetCmFirstCell (double value)
 
void SetCmSecondCell (double value)
 
void SetGGap (double value)
 
bool HasTheUserSuppliedExtracellularStimulus ()
 
void SetUserSuppliedExtracellularStimulus (bool flag)
 
template<class Archive >
void SaveExtendedBidomainCells (Archive &archive, const unsigned int version) const
 
template<class Archive >
void SaveExtracellularStimulus (Archive &archive, const unsigned int version) const
 
template<class Archive >
void LoadExtracellularStimulus (Archive &archive, const unsigned int version, std::vector< boost::shared_ptr< AbstractStimulusFunction > > &rStimuli, AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM > *pMesh)
 
- Public Member Functions inherited from AbstractCardiacTissue< SPACE_DIM >
 AbstractCardiacTissue (AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM > *pCellFactory, bool exchangeHalos=false)
 
 AbstractCardiacTissue (AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > *pMesh)
 
virtual ~AbstractCardiacTissue ()
 
bool HasPurkinje ()
 
void SetCacheReplication (bool doCacheReplication)
 
bool GetDoCacheReplication ()
 
const c_matrix< double, SPACE_DIM, SPACE_DIM > & rGetIntracellularConductivityTensor (unsigned elementIndex)
 
AbstractCardiacCellInterfaceGetCardiacCell (unsigned globalIndex)
 
AbstractCardiacCellInterfaceGetPurkinjeCell (unsigned globalIndex)
 
AbstractCardiacCellInterfaceGetCardiacCellOrHaloCell (unsigned globalIndex)
 
ReplicatableVectorrGetIionicCacheReplicated ()
 
ReplicatableVectorrGetIntracellularStimulusCacheReplicated ()
 
ReplicatableVectorrGetPurkinjeIionicCacheReplicated ()
 
ReplicatableVectorrGetPurkinjeIntracellularStimulusCacheReplicated ()
 
void UpdateCaches (unsigned globalIndex, unsigned localIndex, double nextTime)
 
void UpdatePurkinjeCaches (unsigned globalIndex, unsigned localIndex, double nextTime)
 
void ReplicateCaches ()
 
const std::vector< AbstractCardiacCellInterface * > & rGetCellsDistributed () const
 
const std::vector< AbstractCardiacCellInterface * > & rGetPurkinjeCellsDistributed () const
 
const AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > * pGetMesh () const
 
void SetConductivityModifier (AbstractConductivityModifier< ELEMENT_DIM, SPACE_DIM > *pModifier)
 
void SaveCardiacCells (Archive &archive, const unsigned int version) const
 
void LoadCardiacCells (Archive &archive, const unsigned int version)
 

Static Public Member Functions

template<class Archive >
static void LoadExtendedBidomainCells (Archive &archive, const unsigned int version, std::vector< AbstractCardiacCellInterface * > &rCells, std::vector< AbstractCardiacCellInterface * > &rSecondCells, std::vector< double > &rGgaps, AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM > *pMesh)
 

Private Member Functions

template<class Archive >
void serialize (Archive &archive, const unsigned int version)
 
void CreateExtracellularConductivityTensors ()
 
void UpdateAdditionalCaches (unsigned globalIndex, unsigned localIndex, double nextTime)
 
void ReplicateAdditionalCaches ()
 

Private Attributes

AbstractConductivityTensors< SPACE_DIM, SPACE_DIM > * mpIntracellularConductivityTensorsSecondCell
 
c_vector< double, SPACE_DIM > mIntracellularConductivitiesSecondCell
 
AbstractConductivityTensors< SPACE_DIM, SPACE_DIM > * mpExtracellularConductivityTensors
 
ReplicatableVector mExtracellularStimulusCacheReplicated
 
ReplicatableVector mGgapCacheReplicated
 
ReplicatableVector mIionicCacheReplicatedSecondCell
 
ReplicatableVector mIntracellularStimulusCacheReplicatedSecondCell
 
std::vector< AbstractCardiacCellInterface * > mCellsDistributedSecondCell
 
std::vector< boost::shared_ptr< AbstractStimulusFunction > > mExtracellularStimuliDistributed
 
std::vector< doublemGgapDistributed
 
double mAmFirstCell
 
double mAmSecondCell
 
double mAmGap
 
double mCmFirstCell
 
double mCmSecondCell
 
double mGGap
 
bool mUserSuppliedExtracellularStimulus
 
std::vector< boost::shared_ptr< AbstractChasteRegion< SPACE_DIM > > > mGgapHeterogeneityRegions
 
std::vector< doublemGgapValues
 

Friends

class TestExtendedBidomainTissue
 
class boost::serialization::access
 

Additional Inherited Members

- Protected Member Functions inherited from AbstractCardiacTissue< SPACE_DIM >
void CalculateHaloNodesFromNodeExchange ()
 
void SetUpHaloCells (AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM > *pCellFactory)
 
- Protected Attributes inherited from AbstractCardiacTissue< SPACE_DIM >
AbstractTetrahedralMesh< ELEMENT_DIM, SPACE_DIM > * mpMesh
 
AbstractConductivityTensors< ELEMENT_DIM, SPACE_DIM > * mpIntracellularConductivityTensors
 
std::vector< AbstractCardiacCellInterface * > mCellsDistributed
 
std::vector< AbstractCardiacCellInterface * > mPurkinjeCellsDistributed
 
ReplicatableVector mIionicCacheReplicated
 
ReplicatableVector mPurkinjeIionicCacheReplicated
 
ReplicatableVector mIntracellularStimulusCacheReplicated
 
ReplicatableVector mPurkinjeIntracellularStimulusCacheReplicated
 
HeartConfigmpConfig
 
DistributedVectorFactorympDistributedVectorFactory
 
std::string mFibreFilePathNoExtension
 
AbstractConductivityModifier< ELEMENT_DIM, SPACE_DIM > * mpConductivityModifier
 
bool mHasPurkinje
 
bool mDoCacheReplication
 
bool mMeshUnarchived
 
bool mExchangeHalos
 
std::vector< unsignedmHaloNodes
 
std::vector< AbstractCardiacCellInterface * > mHaloCellsDistributed
 
std::map< unsigned, unsignedmHaloGlobalToLocalIndexMap
 
std::vector< std::vector< unsigned > > mNodesToSendPerProcess
 
std::vector< std::vector< unsigned > > mNodesToReceivePerProcess
 

Detailed Description

template<unsigned SPACE_DIM>
class ExtendedBidomainTissue< SPACE_DIM >

Class that provides functionalities to specify a tissue within the context of the extended bidomain framework.

The extended bidomain equations are of the form:

  • div ( sigma_i1 grad Phi_1 ) + Am1*Cm1*d(phi_1)/dt - Am2*Cm2*d(phi_e)/dt + Am1*I_ion1 - Am1*I_stim1 + Amgap*G_gap*(phi_1 - phi_2)
  • div ( sigma_i2 grad Phi_2 ) + Am2*Cm2*d(phi_2)/dt - Am2*Cm2*d(phi_e)/dt + Am2*I_ion2 - Am2*I_stim2 - Amgap*G_gap*(phi_1 - phi_2) div ( sigma_e grad Phi_e ) + div ( sigma_i1 grad Phi_1 ) + div ( sigma_i2 grad Phi_2 ) = I_stim

    The unknowns are:

    • Phi_1 (intracellular potential of the first cell).
    • Phi_2 (intracellular potential of the second cell).
    • Phi_e (extracellular potential).

    Am1, Am2 and Amgap are surface-to-volume ratios for first cell, second cell and gap junction. User can set their values. Cm1 and cm2 are capaciatnce values of first and second cell respectively sigma_i1 and sigma_i2 are intracellular conductivity tensors of first and second cell respectively sigma_e is the conductivity tensor for the extracellular space G_gap is the conductance (in ms/cm2) of the gap junction channel.

Definition at line 77 of file ExtendedBidomainTissue.hpp.

Constructor & Destructor Documentation

◆ ExtendedBidomainTissue() [1/2]

template<unsigned SPACE_DIM>
ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue ( AbstractCardiacCellFactory< SPACE_DIM > *  pCellFactory,
AbstractCardiacCellFactory< SPACE_DIM > *  pCellFactorySecondCell,
AbstractStimulusFactory< SPACE_DIM > *  pExtracellularStimulusFactory 
)

Constructor sets up extracellular conductivity tensors.

Parameters
pCellFactoryfactory to pass on to the base class constructor
pCellFactorySecondCellfactory to pass on to the base class constructor for the second cell
pExtracellularStimulusFactoryfactory for creating extracellular stimuli

Definition at line 72 of file ExtendedBidomainTissue.cpp.

References GenericEventHandler< 16, HeartEventHandler >::BeginEvent(), AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::CreateCardiacCellForNode(), ExtendedBidomainTissue< SPACE_DIM >::CreateExtracellularConductivityTensors(), AbstractStimulusFactory< ELEMENT_DIM, SPACE_DIM >::CreateStimulusForNode(), GenericEventHandler< 16, HeartEventHandler >::EndEvent(), AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::FinaliseCellCreation(), DistributedVectorFactory::GetLocalOwnership(), DistributedVectorFactory::GetLow(), AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::GetMesh(), AbstractStimulusFactory< ELEMENT_DIM, SPACE_DIM >::GetMesh(), AbstractCardiacCellFactory< ELEMENT_DIM, SPACE_DIM >::GetNumberOfCells(), AbstractStimulusFactory< ELEMENT_DIM, SPACE_DIM >::GetNumberOfCells(), ExtendedBidomainTissue< SPACE_DIM >::mCellsDistributedSecondCell, ExtendedBidomainTissue< SPACE_DIM >::mExtracellularStimuliDistributed, ExtendedBidomainTissue< SPACE_DIM >::mExtracellularStimulusCacheReplicated, ExtendedBidomainTissue< SPACE_DIM >::mGgapCacheReplicated, ExtendedBidomainTissue< SPACE_DIM >::mGgapDistributed, ExtendedBidomainTissue< SPACE_DIM >::mIionicCacheReplicatedSecondCell, ExtendedBidomainTissue< SPACE_DIM >::mIntracellularStimulusCacheReplicatedSecondCell, AbstractCardiacTissue< SPACE_DIM >::mpDistributedVectorFactory, AbstractCardiacTissue< SPACE_DIM >::mpMesh, PetscTools::ReplicateException(), ReplicatableVector::Resize(), and AbstractCardiacCellInterface::SetUsedInTissueSimulation().

◆ ExtendedBidomainTissue() [2/2]

template<unsigned SPACE_DIM>
ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue ( std::vector< AbstractCardiacCellInterface * > &  rCellsDistributed,
std::vector< AbstractCardiacCellInterface * > &  rSecondCellsDistributed,
std::vector< boost::shared_ptr< AbstractStimulusFunction > > &  rExtraStimuliDistributed,
std::vector< double > &  rGgapsDistributed,
AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM > *  pMesh,
c_vector< double, SPACE_DIM >  intracellularConductivitiesSecondCell 
)

Archiving constructor

Parameters
rCellsDistributedlocal cell models (recovered from archive)
rSecondCellsDistributedlocal cell models for second cells (recovered from archive)
rExtraStimuliDistributedlocal extracellular stimuli (recovered from archive)
rGgapsDistributeddistributed Ggaps (recovered from archive)
pMesha pointer to the AbstractTetrahedral mesh (recovered from archive).
intracellularConductivitiesSecondCella vector with the orthotropic conductivities for the second cell (this is needed because the second cell values may not be taken from HeartConfig as the the ones for the first cell are).

Definition at line 142 of file ExtendedBidomainTissue.cpp.

References ExtendedBidomainTissue< SPACE_DIM >::CreateExtracellularConductivityTensors(), ExtendedBidomainTissue< SPACE_DIM >::CreateIntracellularConductivityTensorSecondCell(), DistributedVectorFactory::GetProblemSize(), ExtendedBidomainTissue< SPACE_DIM >::mCellsDistributedSecondCell, ExtendedBidomainTissue< SPACE_DIM >::mExtracellularStimuliDistributed, ExtendedBidomainTissue< SPACE_DIM >::mExtracellularStimulusCacheReplicated, ExtendedBidomainTissue< SPACE_DIM >::mGgapCacheReplicated, ExtendedBidomainTissue< SPACE_DIM >::mGgapDistributed, ExtendedBidomainTissue< SPACE_DIM >::mIionicCacheReplicatedSecondCell, ExtendedBidomainTissue< SPACE_DIM >::mIntracellularStimulusCacheReplicatedSecondCell, AbstractCardiacTissue< SPACE_DIM >::mpDistributedVectorFactory, and ReplicatableVector::Resize().

◆ ~ExtendedBidomainTissue()

template<unsigned SPACE_DIM>
ExtendedBidomainTissue< SPACE_DIM >::~ExtendedBidomainTissue ( )
virtual

Destructor

Definition at line 470 of file ExtendedBidomainTissue.cpp.

Member Function Documentation

◆ CreateExtracellularConductivityTensors()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::CreateExtracellularConductivityTensors ( )
private

Convenience method for extracellular conductivity tensors creation

Definition at line 362 of file ExtendedBidomainTissue.cpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue(), and ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue().

◆ CreateGGapConductivities()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::CreateGGapConductivities ( )

Create the pattern of Ggap across the mesh based upon mCellHeterogeneityRegions, mGgapValues and mGgap. This will fill in mGgapDistributed. It will set mGgap everywhere except in the areas mCellHeterogeneityRegions[i] where it will put mGgapValues[i] instead. If mCellHeterogeneityRegions (and mGgapValues) are empty, mGgap will be set everywhere.

Definition at line 181 of file ExtendedBidomainTissue.cpp.

◆ CreateIntracellularConductivityTensorSecondCell()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::CreateIntracellularConductivityTensorSecondCell ( )

Convenience method for intracellular conductivity tensors creation for the second cell

Definition at line 219 of file ExtendedBidomainTissue.cpp.

References GenericEventHandler< 16, HeartEventHandler >::BeginEvent(), and HeartConfig::Instance().

Referenced by ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue().

◆ GetAmFirstCell()

template<unsigned SPACE_DIM>
double ExtendedBidomainTissue< SPACE_DIM >::GetAmFirstCell ( )
Returns
Am for the first cell

Definition at line 638 of file ExtendedBidomainTissue.cpp.

◆ GetAmGap()

template<unsigned SPACE_DIM>
double ExtendedBidomainTissue< SPACE_DIM >::GetAmGap ( )
Returns
Am for the gap junction

Definition at line 650 of file ExtendedBidomainTissue.cpp.

◆ GetAmSecondCell()

template<unsigned SPACE_DIM>
double ExtendedBidomainTissue< SPACE_DIM >::GetAmSecondCell ( )
Returns
Am for the second cell

Definition at line 644 of file ExtendedBidomainTissue.cpp.

◆ GetCardiacSecondCell()

template<unsigned SPACE_DIM>
AbstractCardiacCellInterface * ExtendedBidomainTissue< SPACE_DIM >::GetCardiacSecondCell ( unsigned  globalIndex)
Returns
a pointer to the second cell
Parameters
globalIndexthe global index in the mesh

Definition at line 535 of file ExtendedBidomainTissue.cpp.

◆ GetCmFirstCell()

template<unsigned SPACE_DIM>
double ExtendedBidomainTissue< SPACE_DIM >::GetCmFirstCell ( )
Returns
Cm for the first cell

Definition at line 656 of file ExtendedBidomainTissue.cpp.

◆ GetCmSecondCell()

template<unsigned SPACE_DIM>
double ExtendedBidomainTissue< SPACE_DIM >::GetCmSecondCell ( )
Returns
Cm for the second cell

Definition at line 662 of file ExtendedBidomainTissue.cpp.

◆ GetExtracellularStimulus()

template<unsigned SPACE_DIM>
boost::shared_ptr< AbstractStimulusFunction > ExtendedBidomainTissue< SPACE_DIM >::GetExtracellularStimulus ( unsigned  globalIndex)
Returns
a pointer to the extracellular stimulus. Useful for testing
Parameters
globalIndexthe global index in the mesh

Definition at line 541 of file ExtendedBidomainTissue.cpp.

◆ GetGGap()

template<unsigned SPACE_DIM>
double ExtendedBidomainTissue< SPACE_DIM >::GetGGap ( )
Returns
the conducatnce of the gap junction (mGGap)

Definition at line 668 of file ExtendedBidomainTissue.cpp.

◆ GetIntracellularConductivitiesSecondCell()

template<unsigned SPACE_DIM>
c_vector< double, SPACE_DIM > ExtendedBidomainTissue< SPACE_DIM >::GetIntracellularConductivitiesSecondCell ( ) const
Returns
the intracellular conductivities of the second cell

Definition at line 501 of file ExtendedBidomainTissue.cpp.

◆ HasTheUserSuppliedExtracellularStimulus()

template<unsigned SPACE_DIM>
bool ExtendedBidomainTissue< SPACE_DIM >::HasTheUserSuppliedExtracellularStimulus ( )

This method gives access to the member variable mUserSuppliedExtracellularStimulus, which is false by default but turned true if the user supplies an extracellular stimulus in any form.

Returns
true if the user supplied an extracellular stimulus.

Definition at line 332 of file ExtendedBidomainTissue.cpp.

◆ LoadExtendedBidomainCells()

template<unsigned SPACE_DIM>
template<class Archive >
static void ExtendedBidomainTissue< SPACE_DIM >::LoadExtendedBidomainCells ( Archive &  archive,
const unsigned int  version,
std::vector< AbstractCardiacCellInterface * > &  rCells,
std::vector< AbstractCardiacCellInterface * > &  rSecondCells,
std::vector< double > &  rGgaps,
AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM > *  pMesh 
)
inlinestatic

Load our tissue from an archive. This is the equivalent of LoadCardiacCells in the abstract class. it loads the two cells instead of only one.

Handles the checkpoint migration case, deleting loaded cells immediately if they are not local to this process.

Parameters
archivethe process-specific archive to load from
versionarchive version
rCellsvector to fill in with pointers to local cells
rSecondCellsvector to fill in with pointers to the second cells
rGgapsvector of values of gap junctions
pMeshthe mesh, so we can get at the node permutation, if any

Definition at line 472 of file ExtendedBidomainTissue.hpp.

References DistributedVectorFactory::GetLocalOwnership(), DistributedVectorFactory::GetLow(), DistributedVectorFactory::GetOriginalFactory(), DistributedVectorFactory::IsGlobalIndexLocal(), and NEVER_REACHED.

◆ LoadExtracellularStimulus()

template<unsigned SPACE_DIM>
template<class Archive >
void ExtendedBidomainTissue< SPACE_DIM >::LoadExtracellularStimulus ( Archive &  archive,
const unsigned int  version,
std::vector< boost::shared_ptr< AbstractStimulusFunction > > &  rStimuli,
AbstractTetrahedralMesh< SPACE_DIM, SPACE_DIM > *  pMesh 
)
inline

This method is the equivalent of LoadCardiacCells but Load the extracellular stimulus instead

Parameters
archivethe master archive; cells will actually be written to the process-specific archive.
version
rStimulithe extracellular stimuli (will be filled from the archive).
pMeshthe mesh (needed to work out number of nodes). Here it is assumed we have already unarchived the mesh somewhere and the pointer passed in is not NULL.

Definition at line 580 of file ExtendedBidomainTissue.hpp.

References DistributedVectorFactory::GetLocalOwnership(), DistributedVectorFactory::GetLow(), DistributedVectorFactory::GetOriginalFactory(), and DistributedVectorFactory::IsGlobalIndexLocal().

◆ ReplicateAdditionalCaches()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::ReplicateAdditionalCaches ( )
private

The parent class AbstractCardiacTissue has a method ReplicateCaches that replicates some caches of general use. This method replicates more caches that are specific to extended bidomain problems, namely:

  • Iionic and intracellular stimulus for the second cell
  • Extracellular stimulus
  • Gap junction conductivities (Ggap)

It is typically called right after the ReplicateCaches method in the parent class.

Definition at line 605 of file ExtendedBidomainTissue.cpp.

◆ rGetExtracellularConductivityTensor()

template<unsigned SPACE_DIM>
const c_matrix< double, SPACE_DIM, SPACE_DIM > & ExtendedBidomainTissue< SPACE_DIM >::rGetExtracellularConductivityTensor ( unsigned  elementIndex)
virtual
Returns
the extracellular conductivity tensor for the given element
Parameters
elementIndexindex of the element of interest

Reimplemented from AbstractCardiacTissue< SPACE_DIM >.

Definition at line 507 of file ExtendedBidomainTissue.cpp.

◆ rGetExtracellularStimulusCacheReplicated()

template<unsigned SPACE_DIM>
ReplicatableVector & ExtendedBidomainTissue< SPACE_DIM >::rGetExtracellularStimulusCacheReplicated ( )
Returns
the extracellular stimulus

Definition at line 626 of file ExtendedBidomainTissue.cpp.

◆ rGetExtracellularStimulusDistributed()

template<unsigned SPACE_DIM>
const std::vector< boost::shared_ptr< AbstractStimulusFunction > > & ExtendedBidomainTissue< SPACE_DIM >::rGetExtracellularStimulusDistributed ( ) const
Returns
a reference to the vector of distributed extracellular stimuli. Needed for archiving.

Definition at line 356 of file ExtendedBidomainTissue.cpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::SaveExtracellularStimulus().

◆ rGetGapsDistributed()

template<unsigned SPACE_DIM>
const std::vector< double > & ExtendedBidomainTissue< SPACE_DIM >::rGetGapsDistributed ( ) const
Returns
a reference to the vector of distributed values of Ggaps. Needed for archiving.

Definition at line 350 of file ExtendedBidomainTissue.cpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::SaveExtendedBidomainCells().

◆ rGetGgapCacheReplicated()

template<unsigned SPACE_DIM>
ReplicatableVector & ExtendedBidomainTissue< SPACE_DIM >::rGetGgapCacheReplicated ( )
Returns
the values of ggap

Definition at line 632 of file ExtendedBidomainTissue.cpp.

◆ rGetIionicCacheReplicatedSecondCell()

template<unsigned SPACE_DIM>
ReplicatableVector & ExtendedBidomainTissue< SPACE_DIM >::rGetIionicCacheReplicatedSecondCell ( )
Returns
the entire ionic current cache for the second cell

Definition at line 614 of file ExtendedBidomainTissue.cpp.

◆ rGetIntracellularConductivityTensorSecondCell()

template<unsigned SPACE_DIM>
const c_matrix< double, SPACE_DIM, SPACE_DIM > & ExtendedBidomainTissue< SPACE_DIM >::rGetIntracellularConductivityTensorSecondCell ( unsigned  elementIndex)
Returns
the intracellular conductivity tensor for the given element for tehs econd cell
Parameters
elementIndexindex of the element of interest

Definition at line 521 of file ExtendedBidomainTissue.cpp.

◆ rGetIntracellularStimulusCacheReplicatedSecondCell()

template<unsigned SPACE_DIM>
ReplicatableVector & ExtendedBidomainTissue< SPACE_DIM >::rGetIntracellularStimulusCacheReplicatedSecondCell ( )
Returns
the entire stimulus current cache for the second cell

Definition at line 620 of file ExtendedBidomainTissue.cpp.

◆ rGetSecondCellsDistributed()

template<unsigned SPACE_DIM>
const std::vector< AbstractCardiacCellInterface * > & ExtendedBidomainTissue< SPACE_DIM >::rGetSecondCellsDistributed ( ) const
Returns
a reference to the vector of distributed cells (second cell). Needed for archiving.

Definition at line 344 of file ExtendedBidomainTissue.cpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::SaveExtendedBidomainCells().

◆ SaveExtendedBidomainCells()

template<unsigned SPACE_DIM>
template<class Archive >
void ExtendedBidomainTissue< SPACE_DIM >::SaveExtendedBidomainCells ( Archive &  archive,
const unsigned int  version 
) const
inline

This method is the equivalent of SaveCardiacCells in the abstract class but save both cells of the extended bidomain tissue

Parameters
archivethe master archive; cells will actually be written to the process-specific archive.
version

Definition at line 425 of file ExtendedBidomainTissue.hpp.

References ProcessSpecificArchive< Archive >::Get(), AbstractCardiacTissue< SPACE_DIM >::mpDistributedVectorFactory, NEVER_REACHED, AbstractCardiacTissue< SPACE_DIM >::rGetCellsDistributed(), ExtendedBidomainTissue< SPACE_DIM >::rGetGapsDistributed(), and ExtendedBidomainTissue< SPACE_DIM >::rGetSecondCellsDistributed().

◆ SaveExtracellularStimulus()

template<unsigned SPACE_DIM>
template<class Archive >
void ExtendedBidomainTissue< SPACE_DIM >::SaveExtracellularStimulus ( Archive &  archive,
const unsigned int  version 
) const
inline

This method is the equivalent of SaveCardiacCells but Saves the extracellular stimulus instead

Parameters
archivethe master archive; cells will actually be written to the process-specific archive.
version

Definition at line 558 of file ExtendedBidomainTissue.hpp.

References ProcessSpecificArchive< Archive >::Get(), AbstractCardiacTissue< SPACE_DIM >::mpDistributedVectorFactory, and ExtendedBidomainTissue< SPACE_DIM >::rGetExtracellularStimulusDistributed().

◆ serialize()

◆ SetAmFirstCell()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::SetAmFirstCell ( double  value)
Parameters
valueAm for the first cell

Definition at line 674 of file ExtendedBidomainTissue.cpp.

◆ SetAmGap()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::SetAmGap ( double  value)
Parameters
valueAm for the gap junction

Definition at line 686 of file ExtendedBidomainTissue.cpp.

◆ SetAmSecondCell()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::SetAmSecondCell ( double  value)
Parameters
valueAm for the second cell

Definition at line 680 of file ExtendedBidomainTissue.cpp.

◆ SetCmFirstCell()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::SetCmFirstCell ( double  value)
Parameters
valueCm for the first cell

Definition at line 698 of file ExtendedBidomainTissue.cpp.

◆ SetCmSecondCell()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::SetCmSecondCell ( double  value)
Parameters
valueCm for the first cell

Definition at line 704 of file ExtendedBidomainTissue.cpp.

◆ SetGGap()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::SetGGap ( double  value)
Parameters
valueconductance, in mS of the gap junction

Definition at line 692 of file ExtendedBidomainTissue.cpp.

◆ SetGgapHeterogeneities()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::SetGgapHeterogeneities ( std::vector< boost::shared_ptr< AbstractChasteRegion< SPACE_DIM > > > &  rGgapHeterogeneityRegions,
std::vector< double rGgapValues 
)

Set the values of mCellHeterogeneityRegions and mGgapValues for the heterogeneities of Ggap.

Parameters
rGgapHeterogeneityRegionsa vector of (pointers to) heterogeneity regions for gap junctions
rGgapValuesa vector (of the same size as rGgapHeterogeneityRegions) with the respective values of Ggap for every region.

Definition at line 172 of file ExtendedBidomainTissue.cpp.

◆ SetIntracellularConductivitiesSecondCell()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::SetIntracellularConductivitiesSecondCell ( c_vector< double, SPACE_DIM >  conductivities)

Sets the value of the conductivities for the second cell.

Parameters
conductivitiesthe conductivities to be set.

Definition at line 492 of file ExtendedBidomainTissue.cpp.

◆ SetUserSuppliedExtracellularStimulus()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::SetUserSuppliedExtracellularStimulus ( bool  flag)

This method allows modifications of the mUserSuppliedExtracellularStimulus flag (false by default). Other classes (e.g., Problem classes) can use this method to tell the Tissue that the user specified an extracellular stimulus.

Parameters
flag; true if you want to tell the Tissue object that the user supplied an extracellular stimulus explicitly

Definition at line 338 of file ExtendedBidomainTissue.cpp.

◆ SolveCellSystems()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::SolveCellSystems ( Vec  existingSolution,
double  time,
double  nextTime,
bool  updateVoltage = false 
)
virtual

Integrate the cell ODEs and update ionic current etc for each of the cells, between the two times provided. This is a re-implementation from the version in the base class.

Parameters
existingSolutionthe current voltage solution vector
timethe current simulation time
nextTimewhen to simulate the cells until
updateVoltage(unused here)

Reimplemented from AbstractCardiacTissue< SPACE_DIM >.

Definition at line 547 of file ExtendedBidomainTissue.cpp.

References DistributedVector::Begin(), GenericEventHandler< 16, HeartEventHandler >::BeginEvent(), DistributedVector::End(), GenericEventHandler< 16, HeartEventHandler >::EndEvent(), and PetscTools::ReplicateException().

◆ UpdateAdditionalCaches()

template<unsigned SPACE_DIM>
void ExtendedBidomainTissue< SPACE_DIM >::UpdateAdditionalCaches ( unsigned  globalIndex,
unsigned  localIndex,
double  nextTime 
)
private

The parent class AbstractCardiacTissue has a method UpdateCaches that updates some caches of general use. This method updates more caches that are specific to extended bidomain problems, namely:

  • Iionic and intracellular stimulus for the second cell
  • Extracellular stimulus
  • Gap junction conductivities (Ggap)

It is typically called right after the UpdateCaches method in the parent class.

Parameters
globalIndexglobal index of the entry to update
localIndexlocal index of the entry to update
nextTimethe next PDE time point, at which to evaluate the stimulus current

Definition at line 596 of file ExtendedBidomainTissue.cpp.

Friends And Related Symbol Documentation

◆ boost::serialization::access

template<unsigned SPACE_DIM>
friend class boost::serialization::access
friend

Needed for serialization.

Definition at line 83 of file ExtendedBidomainTissue.hpp.

◆ TestExtendedBidomainTissue

template<unsigned SPACE_DIM>
friend class TestExtendedBidomainTissue
friend

Definition at line 80 of file ExtendedBidomainTissue.hpp.

Member Data Documentation

◆ mAmFirstCell

template<unsigned SPACE_DIM>
double ExtendedBidomainTissue< SPACE_DIM >::mAmFirstCell
private

the Am for the first cell, set by the problem class and picked up by the assembler

Definition at line 152 of file ExtendedBidomainTissue.hpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::serialize().

◆ mAmGap

template<unsigned SPACE_DIM>
double ExtendedBidomainTissue< SPACE_DIM >::mAmGap
private

the Am for the gap junction, set by the problem class and picked up by the assembler

Definition at line 156 of file ExtendedBidomainTissue.hpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::serialize().

◆ mAmSecondCell

template<unsigned SPACE_DIM>
double ExtendedBidomainTissue< SPACE_DIM >::mAmSecondCell
private

the Am for the second cell, set by the problem class and picked up by the assembler

Definition at line 154 of file ExtendedBidomainTissue.hpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::serialize().

◆ mCellsDistributedSecondCell

template<unsigned SPACE_DIM>
std::vector< AbstractCardiacCellInterface* > ExtendedBidomainTissue< SPACE_DIM >::mCellsDistributedSecondCell
private

The vector of cells (the second one). Distributed.

Definition at line 143 of file ExtendedBidomainTissue.hpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue(), and ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue().

◆ mCmFirstCell

template<unsigned SPACE_DIM>
double ExtendedBidomainTissue< SPACE_DIM >::mCmFirstCell
private

the Cm for the first cell, set by the problem class and picked up by the assembler

Definition at line 158 of file ExtendedBidomainTissue.hpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::serialize().

◆ mCmSecondCell

template<unsigned SPACE_DIM>
double ExtendedBidomainTissue< SPACE_DIM >::mCmSecondCell
private

the Cm for the second cell, set by the problem class and picked up by the assembler

Definition at line 160 of file ExtendedBidomainTissue.hpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::serialize().

◆ mExtracellularStimuliDistributed

template<unsigned SPACE_DIM>
std::vector<boost::shared_ptr<AbstractStimulusFunction> > ExtendedBidomainTissue< SPACE_DIM >::mExtracellularStimuliDistributed
private

The vector of stimuli for the extracellular stimulus. Distributed.

Definition at line 146 of file ExtendedBidomainTissue.hpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue(), and ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue().

◆ mExtracellularStimulusCacheReplicated

template<unsigned SPACE_DIM>
ReplicatableVector ExtendedBidomainTissue< SPACE_DIM >::mExtracellularStimulusCacheReplicated
private

Cache containing all the stimulus currents for each node, replicated over all processes.

Definition at line 122 of file ExtendedBidomainTissue.hpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue(), and ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue().

◆ mGGap

template<unsigned SPACE_DIM>
double ExtendedBidomainTissue< SPACE_DIM >::mGGap
private

the conductance of the gap junction, in mS/cm2. Set by the problem class and picked up by the assembler

Definition at line 162 of file ExtendedBidomainTissue.hpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::serialize().

◆ mGgapCacheReplicated

template<unsigned SPACE_DIM>
ReplicatableVector ExtendedBidomainTissue< SPACE_DIM >::mGgapCacheReplicated
private

Cache containing all the stimulus currents for each node, replicated over all processes.

Definition at line 128 of file ExtendedBidomainTissue.hpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue(), and ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue().

◆ mGgapDistributed

template<unsigned SPACE_DIM>
std::vector<double> ExtendedBidomainTissue< SPACE_DIM >::mGgapDistributed
private

The vector of gap junction conductances. Distributed

Definition at line 149 of file ExtendedBidomainTissue.hpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue(), and ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue().

◆ mGgapHeterogeneityRegions

template<unsigned SPACE_DIM>
std::vector<boost::shared_ptr<AbstractChasteRegion<SPACE_DIM> > > ExtendedBidomainTissue< SPACE_DIM >::mGgapHeterogeneityRegions
private

vector of regions for Ggap heterogeneities

Definition at line 204 of file ExtendedBidomainTissue.hpp.

◆ mGgapValues

template<unsigned SPACE_DIM>
std::vector<double> ExtendedBidomainTissue< SPACE_DIM >::mGgapValues
private

values of heterogeneous Ggaps corresponding to mGgapHeterogeneityRegions. This has the same size as mGgapHeterogeneityRegions

Definition at line 206 of file ExtendedBidomainTissue.hpp.

◆ mIionicCacheReplicatedSecondCell

template<unsigned SPACE_DIM>
ReplicatableVector ExtendedBidomainTissue< SPACE_DIM >::mIionicCacheReplicatedSecondCell
private

Cache containing all the ionic currents for each node for the seconed cell, replicated over all processes.

Definition at line 134 of file ExtendedBidomainTissue.hpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue(), and ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue().

◆ mIntracellularConductivitiesSecondCell

template<unsigned SPACE_DIM>
c_vector<double, SPACE_DIM> ExtendedBidomainTissue< SPACE_DIM >::mIntracellularConductivitiesSecondCell
private

Stores the values of the conductivities for the second cell. Accessible via get and set methods. The problem class will set it This variable is a convenient interface for other classes. It is used to fill in mpIntracellularConductivityTensorsSecondCell.

Definition at line 112 of file ExtendedBidomainTissue.hpp.

◆ mIntracellularStimulusCacheReplicatedSecondCell

template<unsigned SPACE_DIM>
ReplicatableVector ExtendedBidomainTissue< SPACE_DIM >::mIntracellularStimulusCacheReplicatedSecondCell
private

Cache containing all the stimulus currents for each node for the second cell, replicated over all processes.

Definition at line 140 of file ExtendedBidomainTissue.hpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue(), and ExtendedBidomainTissue< SPACE_DIM >::ExtendedBidomainTissue().

◆ mpExtracellularConductivityTensors

template<unsigned SPACE_DIM>
AbstractConductivityTensors<SPACE_DIM, SPACE_DIM>* ExtendedBidomainTissue< SPACE_DIM >::mpExtracellularConductivityTensors
private

Extracellular conductivity tensors.

Definition at line 116 of file ExtendedBidomainTissue.hpp.

◆ mpIntracellularConductivityTensorsSecondCell

template<unsigned SPACE_DIM>
AbstractConductivityTensors<SPACE_DIM, SPACE_DIM>* ExtendedBidomainTissue< SPACE_DIM >::mpIntracellularConductivityTensorsSecondCell
private

Intracellular conductivity tensors for the second cell.

Definition at line 106 of file ExtendedBidomainTissue.hpp.

◆ mUserSuppliedExtracellularStimulus

template<unsigned SPACE_DIM>
bool ExtendedBidomainTissue< SPACE_DIM >::mUserSuppliedExtracellularStimulus
private

Whether the extracellular stimulus that is passed in was supplied by the user or not (it could be the default zero implementation). Initialise to false (user did not pass in anything).

Definition at line 168 of file ExtendedBidomainTissue.hpp.

Referenced by ExtendedBidomainTissue< SPACE_DIM >::serialize().


The documentation for this class was generated from the following files: