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"
59typedef enum ElectricsProblemType_
65} ElectricsProblemType;
93template<
unsigned DIM,
unsigned ELEC_PROB_DIM=1>
98friend class TestAbstractContractionCellFactory;
99friend class TestCardiacElectroMechanicsProblem;
100friend class TestCardiacElectroMechanicsFurtherFunctionality;
101friend class TestElectroMechanicsExactSolution;
208 ElectricsProblemType electricsProblemType,
213 std::string outputDirectory);
241 double Max(std::vector<double>& vec);
void SetOutputDeformationGradientsAndStress(double timestep)
TetrahedralMesh< DIM, DIM > * mpElectricsMesh
double Max(std::vector< double > &vec)
QuadraticMesh< DIM > * mpMechanicsMesh
virtual void OnEndOfTimeStep(unsigned counter)
out_stream mpWatchedLocationFile
unsigned mNumElecTimestepsPerMechTimestep
std::vector< c_matrix< double, DIM, DIM > > mDeformationGradientsForEachMechanicsElement
FineCoarseMeshPair< DIM > * mpMeshPair
unsigned mWatchedElectricsNodeIndex
AbstractNonlinearElasticitySolver< DIM > * mpMechanicsSolver
virtual void PrepareForSolve()
void DetermineWatchedNodes()
static const int WRITE_EVERY_NTH_TIME
CompressibilityType mCompressibilityType
std::string mOutputDirectory
void SetNoElectricsOutput()
AbstractCardiacMechanicsSolverInterface< DIM > * mpCardiacMechSolver
std::vector< double > mInterpolatedCalciumConcs
virtual ~CardiacElectroMechanicsProblem()
c_matrix< double, DIM, DIM > mModifiedConductivityTensor
c_matrix< double, DIM, DIM > & rCalculateModifiedConductivityTensor(unsigned elementIndex, const c_matrix< double, DIM, DIM > &rOriginalConductivity, unsigned domainIndex)
void SetWatchedPosition(c_vector< double, DIM > watchedLocation)
std::vector< double > mStretchesForEachMechanicsElement
std::vector< c_vector< double, DIM > > & rGetDeformedPosition()
void WriteWatchedLocationData(double time, Vec voltage)
unsigned mWatchedMechanicsNodeIndex
ElectroMechanicsProblemDefinition< DIM > * mpProblemDefinition
std::string mDeformationOutputDirectory
c_vector< double, DIM > mWatchedLocation
std::vector< double > mInterpolatedVoltages
AbstractCardiacProblem< DIM, DIM, ELEC_PROB_DIM > * mpElectricsProblem
AbstractNonlinearElasticitySolver< DIM > * GetMechanicsSolver()
unsigned mNumTimestepsToOutputDeformationGradientsAndStress