37 #ifndef CARDIACELECTROMECHANICSPROBLEM_HPP_
38 #define CARDIACELECTROMECHANICSPROBLEM_HPP_
44 #include "AbstractCardiacCellFactory.hpp"
45 #include "MonodomainProblem.hpp"
46 #include "TetrahedralMesh.hpp"
47 #include "QuadraticMesh.hpp"
48 #include "AbstractOdeBasedContractionModel.hpp"
49 #include "AbstractCardiacMechanicsSolver.hpp"
50 #include "AbstractCardiacMechanicsSolverInterface.hpp"
51 #include "FineCoarseMeshPair.hpp"
52 #include "AbstractConductivityModifier.hpp"
53 #include "ElectroMechanicsProblemDefinition.hpp"
59 typedef enum ElectricsProblemType_
65 } ElectricsProblemType;
93 template<
unsigned DIM,
unsigned ELEC_PROB_DIM=1>
98 friend class TestAbstractContractionCellFactory;
99 friend class TestCardiacElectroMechanicsProblem;
100 friend class TestCardiacElectroMechanicsFurtherFunctionality;
101 friend class TestElectroMechanicsExactSolution;
208 ElectricsProblemType electricsProblemType,
213 std::string outputDirectory);
241 double Max(std::vector<double>& vec);
AbstractCardiacMechanicsSolverInterface< DIM > * mpCardiacMechSolver
unsigned mNumTimestepsToOutputDeformationGradientsAndStress
std::string mDeformationOutputDirectory
virtual void PrepareForSolve()
virtual void OnEndOfTimeStep(unsigned counter)
void WriteWatchedLocationData(double time, Vec voltage)
double Max(std::vector< double > &vec)
QuadraticMesh< DIM > * mpMechanicsMesh
std::vector< double > mInterpolatedVoltages
unsigned mNumElecTimestepsPerMechTimestep
FineCoarseMeshPair< DIM > * mpMeshPair
std::vector< c_vector< double, DIM > > & rGetDeformedPosition()
CardiacElectroMechanicsProblem(CompressibilityType compressibilityType, ElectricsProblemType electricsProblemType, TetrahedralMesh< DIM, DIM > *pElectricsMesh, QuadraticMesh< DIM > *pMechanicsMesh, AbstractCardiacCellFactory< DIM > *pCellFactory, ElectroMechanicsProblemDefinition< DIM > *pProblemDefinition, std::string outputDirectory)
void SetNoElectricsOutput()
std::string mOutputDirectory
void DetermineWatchedNodes()
CompressibilityType mCompressibilityType
ElectroMechanicsProblemDefinition< DIM > * mpProblemDefinition
std::vector< double > mInterpolatedCalciumConcs
AbstractNonlinearElasticitySolver< DIM > * GetMechanicsSolver()
void SetOutputDeformationGradientsAndStress(double timestep)
std::vector< c_matrix< double, DIM, DIM > > mDeformationGradientsForEachMechanicsElement
unsigned mWatchedElectricsNodeIndex
c_matrix< double, DIM, DIM > & rCalculateModifiedConductivityTensor(unsigned elementIndex, const c_matrix< double, DIM, DIM > &rOriginalConductivity, unsigned domainIndex)
out_stream mpWatchedLocationFile
virtual ~CardiacElectroMechanicsProblem()
AbstractNonlinearElasticitySolver< DIM > * mpMechanicsSolver
AbstractCardiacProblem< DIM, DIM, ELEC_PROB_DIM > * mpElectricsProblem
c_matrix< double, DIM, DIM > mModifiedConductivityTensor
std::vector< double > mStretchesForEachMechanicsElement
unsigned mWatchedMechanicsNodeIndex
static const int WRITE_EVERY_NTH_TIME
TetrahedralMesh< DIM, DIM > * mpElectricsMesh
c_vector< double, DIM > mWatchedLocation
void SetWatchedPosition(c_vector< double, DIM > watchedLocation)