AbstractContinuousDomain.h
Go to the documentation of this file.
/*****************************************************************************
*
* Copyright (c) 2003-2020 by The University of Queensland
* http://www.uq.edu.au
*
* Primary Business: Queensland, Australia
* Licensed under the Apache License, version 2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Development until 2012 by Earth Systems Science Computational Center (ESSCC)
* Development 2012-2013 by School of Earth Sciences
* Development from 2014-2017 by Centre for Geoscience Computing (GeoComp)
* Development from 2019 by School of Earth and Environmental Sciences
**
*****************************************************************************/
#ifndef __ESCRIPT_ABSTRACTCONTINUOUSDOMAIN_H__
#define __ESCRIPT_ABSTRACTCONTINUOUSDOMAIN_H__
#include "system_dep.h"
#include "AbstractDomain.h"
#include "AbstractSystemMatrix.h"
#include "AbstractTransportProblem.h"
#include <string>
#include <vector>
namespace escript {
//
// Forward declaration
class Data;
class ESCRIPT_DLL_API AbstractContinuousDomain : public AbstractDomain
{
public:
AbstractContinuousDomain();
virtual ~AbstractContinuousDomain();
virtual bool isValidFunctionSpaceType(int functionSpaceType) const;
virtual std::string getDescription() const;
virtual int getContinuousFunctionCode() const;
virtual int getReducedContinuousFunctionCode() const;
virtual int getFunctionCode() const;
virtual int getReducedFunctionCode() const;
virtual int getFunctionOnBoundaryCode() const;
virtual int getReducedFunctionOnBoundaryCode() const;
virtual int getFunctionOnContactZeroCode() const;
virtual int getReducedFunctionOnContactZeroCode() const;
virtual int getFunctionOnContactOneCode() const;
virtual int getReducedFunctionOnContactOneCode() const;
virtual int getSolutionCode() const;
virtual int getReducedSolutionCode() const;
virtual int getDiracDeltaFunctionsCode() const;
virtual int getSystemMatrixTypeId(const boost::python::object& options) const;
virtual int getTransportTypeId(int solver, int preconditioner, int package, bool symmetry) const;
virtual void setToIntegrals(std::vector<DataTypes::real_t>& integrals,
const escript::Data& arg) const;
virtual void setToIntegrals(std::vector<DataTypes::cplx_t>& integrals,
const escript::Data& arg) const;
// /**
// \brief
// Return the domain as const AbstractContinuousDomain&
// */
// static const AbstractContinuousDomain& asAbstractContinuousDomain(const AbstractDomain& domain);
virtual void addPDEToSystem(
AbstractSystemMatrix& mat, escript::Data& rhs,
const escript::Data& A, const escript::Data& B, const escript::Data& C,
const escript::Data& D, const escript::Data& X, const escript::Data& Y,
const escript::Data& d, const escript::Data& y,
const escript::Data& d_contact, const escript::Data& y_contact,
const escript::Data& d_dirac, const escript::Data& y_dirac) const;
// We do not require this method at this level since the python side checks to ensure it exists
// before calling it.
// /**
// \brief
// adds a PDE onto the lumped stiffness matrix matrix
// */
// virtual void addPDEToLumpedSystem(
// escript::Data& mat,
// const escript::Data& D,
// const escript::Data& d) const;
virtual void addPDEToRHS(escript::Data& rhs,
const escript::Data& X, const escript::Data& Y,
const escript::Data& y, const escript::Data& y_contact, const escript::Data& y_dirac) const;
virtual void addPDEToTransportProblem(
AbstractTransportProblem& tp, escript::Data& source,
const escript::Data& M,
const escript::Data& A, const escript::Data& B, const escript::Data& C,const escript::Data& D,
const escript::Data& X,const escript::Data& Y,
const escript::Data& d, const escript::Data& y,
const escript::Data& d_contact,const escript::Data& y_contact,
const escript::Data& d_dirac,const escript::Data& y_dirac) const;
virtual ASM_ptr newSystemMatrix(
const int row_blocksize,
const escript::FunctionSpace& row_functionspace,
const int column_blocksize,
const escript::FunctionSpace& column_functionspace,
const int type) const;
virtual ATP_ptr newTransportProblem(
const int blocksize,
const escript::FunctionSpace& functionspace,
const int type) const;
virtual DataTypes::dim_t getNumDataPointsGlobal() const;
virtual std::pair<int,DataTypes::dim_t> getDataShape(int functionSpaceCode) const;
virtual void setNewX(const escript::Data& arg);
virtual void Print_Mesh_Info(const bool full=false) const;
};
} // end of namespace
#endif // __ESCRIPT_ABSTRACTCONTINUOUSDOMAIN_H__
AbstractDomain.h
AbstractSystemMatrix.h
AbstractTransportProblem.h
escript::AbstractContinuousDomain
AbstractContinuousDomain, base class for continuous domains.
Definition: AbstractContinuousDomain.h:47
escript::AbstractDomain
Base class for all escript domains.
Definition: AbstractDomain.h:51
escript::AbstractSystemMatrix
Base class for escript system matrices.
Definition: AbstractSystemMatrix.h:44
escript::AbstractTransportProblem
Give a short description of what AbstractTransportProblem does.
Definition: AbstractTransportProblem.h:45
escript::Data
Data represents a collection of datapoints.
Definition: Data.h:64
escript::FunctionSpace
Definition: FunctionSpace.h:36
ESCRIPT_DLL_API
#define ESCRIPT_DLL_API
Definition: escriptcore/src/system_dep.h:30
escript::DataTypes::dim_t
index_t dim_t
Definition: DataTypes.h:66
escript
Definition: AbstractContinuousDomain.cpp:23
escript::ATP_ptr
boost::shared_ptr< AbstractTransportProblem > ATP_ptr
Definition: AbstractTransportProblem.h:161
escript::ASM_ptr
boost::shared_ptr< AbstractSystemMatrix > ASM_ptr
Definition: AbstractSystemMatrix.h:33
paso::M
static dim_t M
Definition: SparseMatrix_saveHB.cpp:37
system_dep.h