EMSolver.hpp 3.45 KB
Newer Older
Simone Rossi's avatar
Simone Rossi committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//@HEADER
/*
 *******************************************************************************

 Copyright (C) 2004, 2005, 2007 EPFL, Politecnico di Milano, INRIA
 Copyright (C) 2010 EPFL, Politecnico di Milano, Emory University

 This file is part of LifeV.

 LifeV is free software; you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 LifeV is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General Public License
 along with LifeV.  If not, see <http://www.gnu.org/licenses/>.

 *******************************************************************************
 */
//@HEADER
/*!
 @file
 @brief Class for solving the Monodomain equations in electrophysiology.

 @date 02-2013
 @author Simone Rossi <simone.rossi@epfl.ch>

 @last update 02-2013

 This class provides interfaces to solve the monodomain equation
 ( reaction diffusion equation ) using the ETA framework.
 The solution can be performed using three different methods:
 -operator splitting method (at this point available only with forward Euler
 for the reaction step and backward Euler for the diffusion step. );
 -Ionic Currents Interpolation (at this point only forward Euler);
 -State Variable interpolation (at this point only forward Euler).
 */

#ifndef _EMSOLVER_H_
#define _EMSOLVER_H_


Simone Rossi's avatar
Simone Rossi committed
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <lifev/em/solver/electrophysiology/EMMonodomainSolver.hpp>
//
//#include <lifev/em/solver/EMStructuralOperator.hpp>
//#include <lifev/em/solver/EMGeneralizedActiveHolzapfelOgdenMaterial.hpp>
//#include <lifev/em/solver/EMActiveStrainSolver.hpp>
//#include <lifev/core/interpolation/RBFlocallyRescaledVectorial.hpp>
//#include <lifev/core/interpolation/RBFlocallyRescaledScalar.hpp>
//#include <lifev/core/interpolation/RBFrescaledVectorial.hpp>
//#include <lifev/core/interpolation/RBFrescaledScalar.hpp>
////#include <lifev/core/interpolation/RBFscalar.hpp>
//#include <lifev/core/interpolation/RBFvectorial.hpp>
//
//#include <lifev/bc_interface/3D/bc/BCInterface3D.hpp>
//
//
//#include <lifev/em/solver/EMEvaluate.hpp>
Simone Rossi's avatar
Simone Rossi committed
64
65
66
67
68
69

namespace LifeV
{

//! EMSolver - Class featuring the solution of the electromechanical problem with monodomain equation

Simone Rossi's avatar
Simone Rossi committed
70
template<typename Mesh , typename IonicModel, typename ActivationModel>
Simone Rossi's avatar
Simone Rossi committed
71
72
73
class EMSolver
{

Simone Rossi's avatar
Simone Rossi committed
74
75
76
	EMSolver();

	EMSolver(const EMSolver& solver);
Simone Rossi's avatar
Simone Rossi committed
77

Simone Rossi's avatar
Simone Rossi committed
78
79
80
81
82
	EMSolver(EMSolver&& solver);

public:
	EMMonodomainSolver<Mesh, IonicModel> M_monodomain;
	ActivationModel M_activationModel;
Simone Rossi's avatar
Simone Rossi committed
83
};
Simone Rossi's avatar
Simone Rossi committed
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110

/////////////////////
// CONSTRUCTORS
template<typename Mesh , typename IonicModel, typename ActivationModel>
EMSolver<Mesh, IonicModel, ActivationModel>::EMSolver()
{
}


/////////////////////
// COPY CONSTRUCTORS
template<typename Mesh , typename IonicModel, typename ActivationModel>
EMSolver<Mesh, IonicModel, ActivationModel>::EMSolver(const EMSolver& solver) :
    M_monodomain(solver.M_monodomain),
    M_activationModel(solver.M_activationModel)
{
}

/////////////////////
// MOVE CONSTRUCTORS
template<typename Mesh , typename IonicModel, typename ActivationModel>
EMSolver<Mesh, IonicModel, ActivationModel>::EMSolver(EMSolver&& solver) :
    M_monodomain(solver.M_monodomain)
{
}


Simone Rossi's avatar
Simone Rossi committed
111
112
113

} // namespace LifeV

Simone Rossi's avatar
Simone Rossi committed
114
115
116



Simone Rossi's avatar
Simone Rossi committed
117
#endif //_MONODOMAINSOLVER_H_