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);
302 assert(mpMechanicsSolver);
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)