// ============================================================================
// == ==
// == AMDiS - Adaptive multidimensional simulations ==
// == ==
// ============================================================================
// == ==
// == crystal growth group ==
// == ==
// == Stiftung caesar ==
// == Ludwig-Erhard-Allee 2 ==
// == 53175 Bonn ==
// == germany ==
// == ==
// ============================================================================
// == ==
// == http://www.caesar.de/cg/AMDiS ==
// == ==
// ============================================================================
/** \file FiniteElemSpace.h */
/** \defgroup FEMSpace FEMSpace
* @{
@}
*/
#ifndef AMDIS_FINITEELEMSPACE_H
#define AMDIS_FINITEELEMSPACE_H
#include
#include
#include "MemoryManager.h"
namespace AMDiS {
// ============================================================================
// ===== forward declarations =================================================
// ============================================================================
class DOFAdmin;
class BasisFunction;
class Mesh;
template class DOFVector;
template class DimVec;
// ============================================================================
// ===== class FiniteElemSpace ================================================
// ============================================================================
/** \ingroup FEMSpace
* \brief
* A FiniteElemSpace is a triple of a DOFAdmin and a set of BasisFunction on a
* Mesh.
*/
class FiniteElemSpace
{
public:
MEMORY_MANAGED(FiniteElemSpace);
/** \brief
*
*/
static FiniteElemSpace *provideFESpace(DOFAdmin *admin,
const BasisFunction *basFcts,
Mesh *mesh,
const std::string& name_ = "");
/** \brief
* destructor
*/
virtual ~FiniteElemSpace() {};
/** \brief
* Returns \ref name
*/
inline std::string getName() const {
return name;
};
/** \brief
* Returns \ref admin
*/
inline DOFAdmin* getAdmin() const {
return admin;
};
/** \brief
* Returns \ref basFcts
*/
inline const BasisFunction* getBasisFcts() const {
return basFcts;
};
/** \brief
* Returns \ref mesh
*/
inline Mesh* getMesh() const {
return mesh;
};
protected:
/** \brief
* Constructs a FiniteElemSpace with name name_ and the given DOFAdmin,
* BasisFunction and Mesh.
*/
FiniteElemSpace(DOFAdmin* admin_,
const BasisFunction* basisFcts,
Mesh* mesh,
const std::string& name_="");
protected:
/** \brief
* Name of this FiniteElemSpace
*/
const std::string name;
/** \brief
* DOFAdmin corresponding to this FiniteElemSpace
*/
DOFAdmin* admin;
/** \brief
* set of BasisFunction of this FiniteElemSpace
*/
const BasisFunction* basFcts;
/** \brief
* The Mesh this FiniteElemSpace belongs to
*/
Mesh* mesh;
/** \brief
*
*/
static std::vector feSpaces;
};
}
#endif // !_FINITEELEMSPACE_H_