escript  Revision_
Assert.h
Go to the documentation of this file.
1 
2 /*****************************************************************************
3 *
4 * Copyright (c) 2003-2020 by The University of Queensland
5 * http://www.uq.edu.au
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Apache License, version 2.0
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Development until 2012 by Earth Systems Science Computational Center (ESSCC)
12 * Development 2012-2013 by School of Earth Sciences
13 * Development from 2014-2017 by Centre for Geoscience Computing (GeoComp)
14 * Development from 2019 by School of Earth and Environmental Sciences
15 **
16 *****************************************************************************/
17 
18 #ifndef __ESCRIPT_ASSERT_H__
19 #define __ESCRIPT_ASSERT_H__
20 
32 #if DOASSERT
33 
34 //
35 // DOASSERT is defined, evaluate assertions and abort on failure.
36 //
37 
38 #include <escript/EsysException.h>
39 #include <iostream>
40 #include <sstream>
41 
42 #if ESYS_MPI
43 
44 #include <mpi.h>
45 
46 #define ESYS_ASSERT(assert_test, assert_msg)\
47  do {\
48  const bool result = (assert_test);\
49  if (!result) {\
50  std::ostringstream message;\
51  message << assert_msg << "\n\n"\
52  << __FILE__ << ":" << __LINE__ << ": " << #assert_test << "\n";\
53  std::cerr << message.str();\
54  MPI_Abort(MPI_COMM_WORLD, 455347);\
55  }\
56  } while (0)
57 
58 #else
59 
60 #define ESYS_ASSERT(assert_test, assert_msg)\
61  do {\
62  const bool result = (assert_test);\
63  if (!result) {\
64  std::ostringstream message;\
65  message << assert_msg << "\n\n"\
66  << __FILE__ << ":" << __LINE__ << ": " << #assert_test << "\n";\
67  throw escript::AssertException(message.str());\
68  }\
69  } while (0)
70 
71 #endif // ESYS_MPI
72 
73 #else // !DOASSERT
74 
75 //
76 // DOASSERT is not defined, replace ESYS_ASSERT macro with no-op
77 //
78 
79 #define ESYS_ASSERT(a,b)
80 
81 #endif
82 
83 #endif // __ESCRIPT_ASSERT_H__
84 
dudley::ElementFile_Jacobians::DSDX
double * DSDX
Definition: dudley/src/ElementFile.h:49
MATRIX_FORMAT_BLK1
#define MATRIX_FORMAT_BLK1
Definition: Paso.h:63
dudley::ElementFile_Jacobians::numShapes
int numShapes
number of shape functions
Definition: dudley/src/ElementFile.h:40
FINLEY_POINTS
#define FINLEY_POINTS
Definition: Finley.h:51
escript::Data::isComplex
bool isComplex() const
True if components of this data are stored as complex.
Definition: Data.cpp:1160
dudley::QuadWeight
static const double QuadWeight[4][2]
Definition: ShapeTable.h:72
finley::ElementFile::minColor
index_t minColor
minimum color value
Definition: finley/src/ElementFile.h:153
finley::Assemble_jacobians_3D_M2D_E2D
void Assemble_jacobians_3D_M2D_E2D(const double *coordinates, int numQuad, const double *QuadWeights, int numShape, dim_t numElements, int numNodes, const index_t *nodes, const double *DSDv, int numTest, const double *DTDv, double *dTdX, double *volume, const index_t *elementId)
Definition: finley/src/Assemble_jacobians.cpp:666
dudley::util::smallMatSetMult1
void smallMatSetMult1(int len, int A1, int A2, Scalar *A, int B2, const Scalar *B, const double *C)
Definition: dudley/src/Util.cpp:88
dudley::ElementFile_Jacobians
Definition: dudley/src/ElementFile.h:29
finley::Assemble_NodeCoordinates
void Assemble_NodeCoordinates(const NodeFile *nodes, escript::Data &x)
copies node coordinates into expanded Data object x
Definition: finley/src/Assemble_NodeCoordinates.cpp:34
finley::AssembleParameters::NN
int NN
leading dimension of element node table
Definition: finley/src/Assemble.h:57
paso::SystemMatrix::row_coupleBlock
SparseMatrix_ptr< T > row_coupleBlock
coupling to neighbouring processors (col - row)
Definition: SystemMatrix.h:333
escript::DataTypes::real_t
double real_t
type of all real-valued scalars in escript
Definition: DataTypes.h:52
dudley::Assemble_jacobians_3D_M2D_E2D
void Assemble_jacobians_3D_M2D_E2D(const double *coordinates, int numQuad, dim_t numElements, int numNodes, const index_t *nodes, double *dTdX, double *absD, double *quadWeight, const index_t *elementId)
Definition: dudley/src/Assemble_jacobians.cpp:255
finley::AssembleParameters::numDim
int numDim
number of spatial dimensions
Definition: finley/src/Assemble.h:55
finley::util::addScatter
void addScatter(int len, const index_t *index, int numData, const Scalar *in, Scalar *out, index_t upperBound)
Definition: finley/src/Util.cpp:55
dudley::Assemble_LumpedSystem
void Assemble_LumpedSystem(const NodeFile *nodes, const ElementFile *elements, escript::Data &lumpedMat, const escript::Data &D, bool useHRZ)
Definition: dudley/src/Assemble_LumpedSystem.cpp:26
finley::Assemble_PDE_Points
void Assemble_PDE_Points(const AssembleParameters &p, const escript::Data &d_dirac, const escript::Data &y_dirac)
Definition: finley/src/Assemble_PDE_Points.cpp:44
dudley::DudleyException
Definition: DudleyException.h:26
dudley::AssembleParameters::DOF_UpperBound
dim_t DOF_UpperBound
number of local degrees of freedom
Definition: dudley/src/Assemble.h:57
dudley::NodeFile::numDim
int numDim
number of spatial dimensions
Definition: dudley/src/NodeFile.h:146
FINLEY_REDUCED_FACE_ELEMENTS
#define FINLEY_REDUCED_FACE_ELEMENTS
Definition: Finley.h:57
escript::Data::requireWrite
void requireWrite()
Ensures data is ready for write access. This means that the data will be resolved if lazy and will be...
Definition: Data.cpp:1239
dudley::Assemble_getNormal
void Assemble_getNormal(const NodeFile *nodes, const ElementFile *elements, escript::Data &normals)
calculates the normal vector at quadrature points on face elements
Definition: dudley/src/Assemble_getNormal.cpp:26
INDEX4
#define INDEX4(_X1_, _X2_, _X3_, _X4_, _N1_, _N2_, _N3_)
Definition: index.h:27
finley::NodeFile::borrowReducedNodesTarget
const IndexVector & borrowReducedNodesTarget() const
Definition: finley/src/NodeFile.h:291
paso::SystemMatrix
this class holds a (distributed) stiffness matrix
Definition: SystemMatrix.h:50
DUDLEY_DEGREES_OF_FREEDOM
#define DUDLEY_DEGREES_OF_FREEDOM
Definition: Dudley.h:41
finley::Assemble_integrate
void Assemble_integrate(const NodeFile *nodes, const ElementFile *elements, const escript::Data &data, Scalar *integrals)
integrates data on quadrature points
Definition: finley/src/Assemble_integrate.cpp:34
finley::NodeFile::borrowTargetReducedNodes
const index_t * borrowTargetReducedNodes() const
Definition: finley/src/NodeFile.h:311
dudley::NodeFile
Definition: dudley/src/NodeFile.h:40
dudley::Nodes
@ Nodes
Definition: Dudley.h:53
MATRIX_FORMAT_CSC
#define MATRIX_FORMAT_CSC
Definition: Paso.h:62
FINLEY_REDUCED_ELEMENTS
#define FINLEY_REDUCED_ELEMENTS
Definition: Finley.h:56
dudley::Assemble_CopyElementData
void Assemble_CopyElementData(const ElementFile *elements, escript::Data &out, const escript::Data &in)
copies data between different types of elements
Definition: dudley/src/Assemble_CopyElementData.cpp:27
finley::AssembleParameters::F
escript::Data & F
right-hand side to be updated
Definition: finley/src/Assemble.h:45
finley::NodeFile::getNumReducedNodes
dim_t getNumReducedNodes() const
returns the number of reduced order FEM nodes (on this rank)
Definition: finley/src/NodeFile.h:261
FINLEY_REDUCED_CONTACT_ELEMENTS_1
#define FINLEY_REDUCED_CONTACT_ELEMENTS_1
Definition: Finley.h:58
INDEX2
#define INDEX2(_X1_, _X2_, _N1_)
Definition: index.h:23
finley::ElementFile_Jacobians::numShapesTotal
int numShapesTotal
total number of shape functions = BasisFunctions->numShapes * numSides
Definition: finley/src/ElementFile.h:49
dudley::Assemble_addToSystemMatrix< cplx_t >
void Assemble_addToSystemMatrix< cplx_t >(escript::AbstractSystemMatrix *S, const std::vector< index_t > &Nodes, int numEq, const std::vector< cplx_t > &array)
Definition: dudley/src/Assemble_addToSystemMatrix.cpp:78
dudley::NodeFile::borrowTargetDegreesOfFreedom
const index_t * borrowTargetDegreesOfFreedom() const
returns the mapping from local degrees of freedom to a target
Definition: dudley/src/NodeFile.h:234
finley::setNumSamplesError
void setNumSamplesError(const char *c, int n0, int n1)
Definition: finley/src/Assemble_PDE.cpp:58
escript::Data::getSampleDataRO
const DataTypes::real_t * getSampleDataRO(DataTypes::RealVectorType::size_type sampleNo, DataTypes::real_t dummy=0) const
Return the sample data for the given sample no. Please do not use this unless you NEED to access samp...
Definition: Data.h:1991
dudley::AssembleParameters::numShapes
int numShapes
Definition: dudley/src/Assemble.h:60
finley::Assemble_AverageElementData
void Assemble_AverageElementData(const ElementFile *elements, escript::Data &out, const escript::Data &in)
averages data
Definition: finley/src/Assemble_AverageElementData.cpp:33
dudley::Assemble_interpolate
void Assemble_interpolate(const NodeFile *nodes, const ElementFile *elements, const escript::Data &data, escript::Data &output)
interpolates nodal data in a data array onto elements (=integration points)
Definition: dudley/src/Assemble_interpolate.cpp:27
paso::Coupler
Definition: Coupler.h:100
dudley::ElementFile::Nodes
index_t * Nodes
Nodes[INDEX(k, i, numNodes)] is the k-th node in the i-th element.
Definition: dudley/src/ElementFile.h:133
escript::Data::getDataPointShape
const DataTypes::ShapeType & getDataPointShape() const
Return a reference to the data point shape.
Definition: Data.h:705
finley::ElementFile_Jacobians::volume
double * volume
local volume
Definition: finley/src/ElementFile.h:56
escript::NotImplementedError
An exception class for features which are not (yet) implemented.
Definition: EsysException.h:90
finley::FinleyException
Definition: FinleyException.h:27
dudley::DTDV_3D
static const double DTDV_3D[4][3]
Definition: ShapeTable.h:43
FINLEY_NODES
#define FINLEY_NODES
Definition: Finley.h:48
finley::util::smallMatMult
void smallMatMult(int A1, int A2, double *A, int B2, const std::vector< double > &B, const std::vector< double > &C)
multiplies two matrices: A(1:A1,1:A2) := B(1:A1,1:B2)*C(1:B2,1:A2)
Definition: finley/src/Util.cpp:74
escript::Data::getNumberOfTaggedValues
size_t getNumberOfTaggedValues() const
For tagged Data returns the number of tags with values. For non-tagged data will return 0 (even Data ...
Definition: Data.cpp:5855
finley::ElementFile_Jacobians::node_selection
const int * node_selection
Definition: finley/src/ElementFile.h:52
finley::AssembleParameters::col_numShapes
int col_numShapes
Definition: finley/src/Assemble.h:74
finley::ElementFile_Jacobians
Definition: finley/src/ElementFile.h:29
escript::DataTypes::DataVectorAlt::data
ElementType * data()
Definition: DataVectorAlt.h:200
finley::AssembleParameters::numElements
dim_t numElements
number of elements
Definition: finley/src/Assemble.h:59
dudley::NodeFile::getNumNodes
dim_t getNumNodes() const
returns the number of FEM nodes (on this rank)
Definition: dudley/src/NodeFile.h:204
paso::SystemMatrix::pattern
SystemMatrixPattern_ptr pattern
Definition: SystemMatrix.h:312
dudley::AssembleParameters::S
escript::AbstractSystemMatrix * S
system matrix to be updated
Definition: dudley/src/Assemble.h:43
dudley::Assemble_AverageElementData
void Assemble_AverageElementData(const ElementFile *elements, escript::Data &out, const escript::Data &in)
averages data
Definition: dudley/src/Assemble_AverageElementData.cpp:29
finley::Assemble_jacobians_2D_M1D_E1D
void Assemble_jacobians_2D_M1D_E1D(const double *coordinates, int numQuad, const double *QuadWeights, int numShape, dim_t numElements, int numNodes, const index_t *nodes, const double *DSDv, int numTest, const double *DTDv, double *dTdX, double *volume, const index_t *elementId)
Definition: finley/src/Assemble_jacobians.cpp:140
dudley::ElementFile_Jacobians::numQuad
int numQuad
number of quadrature nodes used to calculate jacobians
Definition: dudley/src/ElementFile.h:38
finley::AssembleParameters::col_jac
ElementFile_Jacobians * col_jac
Definition: finley/src/Assemble.h:71
finley::Assemble_jacobians_1D
void Assemble_jacobians_1D(const double *coordinates, int numQuad, const double *QuadWeights, int numShape, dim_t numElements, int numNodes, const index_t *nodes, const double *DSDv, int numTest, const double *DTDv, double *dTdX, double *volume, const index_t *elementId)
Definition: finley/src/Assemble_jacobians.cpp:50
finley::setShapeError
void setShapeError(const char *c, int num, const int *dims)
Definition: finley/src/Assemble_PDE.cpp:67
finley::const_ReferenceElement_ptr
boost::shared_ptr< const ReferenceElement > const_ReferenceElement_ptr
Definition: ReferenceElements.h:216
DUDLEY_NODES
#define DUDLEY_NODES
Definition: Dudley.h:42
dudley::Assemble_PDE_Single_3D
void Assemble_PDE_Single_3D(const AssembleParameters &p, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y)
Definition: dudley/src/Assemble_PDE_Single_3D.cpp:46
dudley::ElementFile::Owner
int * Owner
Owner[i] contains the rank that owns element i.
Definition: dudley/src/ElementFile.h:124
paso::SystemMatrix::col_coupleBlock
SparseMatrix_ptr< T > col_coupleBlock
coupling to neighbouring processors (row - col)
Definition: SystemMatrix.h:331
dudley::AssembleParameters
Definition: dudley/src/Assemble.h:35
finley::AssembleParameters::row_DOF_UpperBound
index_t row_DOF_UpperBound
Definition: finley/src/Assemble.h:63
dudley::NodeFile::MPIInfo
escript::JMPI MPIInfo
MPI information.
Definition: dudley/src/NodeFile.h:144
finley::AssembleParameters::row_numShapes
int row_numShapes
Definition: finley/src/Assemble.h:67
finley::Assemble_PDE_System_2D
void Assemble_PDE_System_2D(const AssembleParameters &p, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y)
Definition: finley/src/Assemble_PDE_System_2D.cpp:49
INDEX5
#define INDEX5(_X1_, _X2_, _X3_, _X4_, _X5_, _N1_, _N2_, _N3_, _N4_)
Definition: index.h:29
dudley::Assemble_NodeCoordinates
void Assemble_NodeCoordinates(const NodeFile *nodes, escript::Data &x)
copies node coordinates into expanded Data object x
Definition: dudley/src/Assemble_NodeCoordinates.cpp:27
escript::Data::getDataPointSize
int getDataPointSize() const
Return the size of the data point. It is the product of the data point shape dimensions.
Definition: Data.cpp:1360
dudley::ElementFile_Jacobians::absD
double * absD
used to compute volume
Definition: dudley/src/ElementFile.h:44
Util.h
finley::Assemble_addToSystemMatrix< real_t >
void Assemble_addToSystemMatrix< real_t >(escript::ASM_ptr S, int NN_Equa, const index_t *Nodes_Equa, int num_Equa, int NN_Sol, const index_t *Nodes_Sol, int num_Sol, const real_t *array)
Definition: finley/src/Assemble_addToSystemMatrix.cpp:49
paso::SystemMatrix::block_size
dim_t block_size
Definition: SystemMatrix.h:319
finley::Assemble_jacobians_3D_M2D_E2D_C
void Assemble_jacobians_3D_M2D_E2D_C(const double *coordinates, int numQuad, const double *QuadWeights, int numShape, dim_t numElements, int numNodes, const index_t *nodes, const double *DSDv, int numTest, const double *DTDv, double *dTdX, double *volume, const index_t *elementId)
Definition: finley/src/Assemble_jacobians.cpp:733
finley::ElementFile::Nodes
index_t * Nodes
Definition: finley/src/ElementFile.h:144
dudley::Assemble_addToSystemMatrix
void Assemble_addToSystemMatrix(escript::AbstractSystemMatrix *S, const std::vector< index_t > &Nodes, int numEq, const std::vector< Scalar > &array)
finley::NodeFile::borrowReducedDegreesOfFreedomTarget
const IndexVector & borrowReducedDegreesOfFreedomTarget() const
Definition: finley/src/NodeFile.h:301
finley::Assemble_interpolate
void Assemble_interpolate(const NodeFile *nodes, const ElementFile *elements, const escript::Data &data, escript::Data &output)
interpolates nodal data in a data array onto elements (=integration points)
Definition: finley/src/Assemble_interpolate.cpp:34
finley::Points
@ Points
Definition: Finley.h:70
dudley::QuadNums
static const int QuadNums[4][2]
Definition: ShapeTable.h:75
escript::Data::getFunctionSpace
const FunctionSpace & getFunctionSpace() const
Return the function space.
Definition: Data.h:463
FINLEY_REDUCED_DEGREES_OF_FREEDOM
#define FINLEY_REDUCED_DEGREES_OF_FREEDOM
Definition: Finley.h:54
finley::NodeFile::getNumReducedDegreesOfFreedom
dim_t getNumReducedDegreesOfFreedom() const
returns the number of reduced order degrees of freedom (on this rank)
Definition: finley/src/NodeFile.h:271
MATRIX_FORMAT_OFFSET1
#define MATRIX_FORMAT_OFFSET1
Definition: Paso.h:64
paso::SystemMatrix::type
SystemMatrixType type
Definition: SystemMatrix.h:311
dudley::DTDV_2D
static const double DTDV_2D[3 *3][2]
Definition: ShapeTable.h:37
finley::Assemble_PDE_Single_2D
void Assemble_PDE_Single_2D(const AssembleParameters &p, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y)
Definition: finley/src/Assemble_PDE_Single_2D.cpp:46
dudley::NodeFile::borrowDegreesOfFreedomTarget
const index_t * borrowDegreesOfFreedomTarget() const
returns the mapping from target to the local degrees of freedom
Definition: dudley/src/NodeFile.h:224
dudley::AssembleParameters::elements
const ElementFile * elements
element file these parameters apply to
Definition: dudley/src/Assemble.h:41
finley::NodeFile::getNumNodes
dim_t getNumNodes() const
returns the number of FEM nodes (on this rank)
Definition: finley/src/NodeFile.h:256
finley::AssembleParameters::row_numShapesTotal
int row_numShapesTotal
Definition: finley/src/Assemble.h:66
finley::AssembleParameters::S
escript::ASM_ptr S
system matrix to be updated
Definition: finley/src/Assemble.h:43
finley::AssembleParameters::col_DOF
const index_t * col_DOF
Definition: finley/src/Assemble.h:69
finley::Assemble_jacobians_3D_M2D_E3D_C
void Assemble_jacobians_3D_M2D_E3D_C(const double *coordinates, int numQuad, const double *QuadWeights, int numShape, dim_t numElements, int numNodes, const index_t *nodes, const double *DSDv, int numTest, const double *DTDv, double *dTdX, double *volume, const index_t *elementId)
Definition: finley/src/Assemble_jacobians.cpp:533
paso::util::copy
void copy(dim_t N, double *out, const double *in)
out = in
Definition: PasoUtil.h:88
finley::NodeFile::Coordinates
double * Coordinates
Coordinates[INDEX2(k,i,numDim)] is the k-th coordinate of node i.
Definition: finley/src/NodeFile.h:175
finley::AssembleParameters::col_DOF_UpperBound
index_t col_DOF_UpperBound
Definition: finley/src/Assemble.h:70
dudley::ElementFile::minColor
index_t minColor
minimum color value
Definition: dudley/src/ElementFile.h:141
dudley::Assemble_PDE_System_3D
void Assemble_PDE_System_3D(const AssembleParameters &p, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y)
Definition: dudley/src/Assemble_PDE_System_3D.cpp:49
finley::ElementFile::numElements
dim_t numElements
number of elements
Definition: finley/src/ElementFile.h:122
dudley
A suite of factory methods for creating 2D and 3D dudley domains.
Definition: dudley/src/Assemble.h:32
finley::Assemble_jacobians_3D
void Assemble_jacobians_3D(const double *coordinates, int numQuad, const double *QuadWeights, int numShape, dim_t numElements, int numNodes, const index_t *nodes, const double *DSDv, int numTest, const double *DTDv, double *dTdX, double *volume, const index_t *elementId)
Definition: finley/src/Assemble_jacobians.cpp:376
dudley::getQuadShape
bool getQuadShape(dim_t dim, bool reduced, const double **shapearr)
Definition: ShapeTable.cpp:28
finley::ElementFile_Jacobians::numElements
dim_t numElements
number of elements
Definition: finley/src/ElementFile.h:54
dudley::Assemble_getSize
void Assemble_getSize(const NodeFile *nodes, const ElementFile *elements, escript::Data &size)
Definition: dudley/src/Assemble_getSize.cpp:25
finley::ElementFile::Owner
int * Owner
Owner[i] contains the rank that owns element i.
Definition: finley/src/ElementFile.h:132
escript::Data
Data represents a collection of datapoints.
Definition: Data.h:64
dudley::DTDV_1D
static const double DTDV_1D[2][2]
Definition: ShapeTable.h:34
dudley::Assemble_jacobians_2D
void Assemble_jacobians_2D(const double *coordinates, int numQuad, dim_t numElements, int numNodes, const index_t *nodes, double *dTdX, double *absD, double *quadWeight, const index_t *elementId)
Definition: dudley/src/Assemble_jacobians.cpp:56
finley::AssembleParameters::numSides
int numSides
number of sides
Definition: finley/src/Assemble.h:51
finley::Assemble_CopyElementData
void Assemble_CopyElementData(const ElementFile *elements, escript::Data &out, const escript::Data &in)
copies data between different types of elements
Definition: finley/src/Assemble_CopyElementData.cpp:31
INDEX3
#define INDEX3(_X1_, _X2_, _X3_, _N1_, _N2_)
Definition: index.h:25
escript::DataTypes::dim_t
index_t dim_t
Definition: DataTypes.h:66
finley::ElementFile::MPIInfo
escript::JMPI MPIInfo
Definition: finley/src/ElementFile.h:117
finley::util::normalVector
void normalVector(int len, int dim, int dim1, const double *A, double *Normal)
Definition: finley/src/Util.cpp:187
escript::DataTypes::ShapeType
std::vector< int > ShapeType
The shape of a single datapoint.
Definition: DataTypes.h:44
dudley::ElementFile::numElements
dim_t numElements
number of elements
Definition: dudley/src/ElementFile.h:113
dudley::Assemble_jacobians_3D
void Assemble_jacobians_3D(const double *coordinates, int numQuad, dim_t numElements, int numNodes, const index_t *nodes, double *dTdX, double *abs_D, double *quadWeight, const index_t *elementId)
Definition: dudley/src/Assemble_jacobians.cpp:180
FINLEY_FACE_ELEMENTS
#define FINLEY_FACE_ELEMENTS
Definition: Finley.h:50
dudley::NodeFile::borrowTargetNodes
const index_t * borrowTargetNodes() const
returns the mapping from local nodes to a target
Definition: dudley/src/NodeFile.h:229
finley::AssembleParameters::col_node
const int * col_node
Definition: finley/src/Assemble.h:72
escript::AbstractSystemMatrix
Base class for escript system matrices.
Definition: AbstractSystemMatrix.h:44
dudley::ElementFile
Definition: dudley/src/ElementFile.h:53
dudley::hasReducedIntegrationOrder
bool hasReducedIntegrationOrder(const escript::Data &in)
Definition: Dudley.h:61
escript::Data::getSampleDataRW
DataTypes::real_t * getSampleDataRW(DataTypes::RealVectorType::size_type sampleNo, DataTypes::real_t dummy=0)
Return the sample data for the given sample no. Please do not use this unless you NEED to access samp...
Definition: Data.h:1956
finley::AssembleParameters::numComp
int numComp
Definition: finley/src/Assemble.h:68
paso::Coupler_ptr
boost::shared_ptr< Coupler< T > > Coupler_ptr
Definition: Coupler.h:43
finley::NodeFile::MPIInfo
escript::JMPI MPIInfo
MPI information.
Definition: finley/src/NodeFile.h:160
dudley::AssembleParameters::NN
int NN
leading dimension of element node table
Definition: dudley/src/Assemble.h:51
finley::ElementFile_Jacobians::numQuadTotal
int numQuadTotal
Definition: finley/src/ElementFile.h:41
finley::Assemble_jacobians_3D_M2D_E3D
void Assemble_jacobians_3D_M2D_E3D(const double *coordinates, int numQuad, const double *QuadWeights, int numShape, dim_t numElements, int numNodes, const index_t *nodes, const double *DSDv, int numTest, const double *DTDv, double *dTdX, double *volume, const index_t *elementId)
Definition: finley/src/Assemble_jacobians.cpp:452
FINLEY_DEGREES_OF_FREEDOM
#define FINLEY_DEGREES_OF_FREEDOM
Definition: Finley.h:47
finley::util::hasReducedIntegrationOrder
bool hasReducedIntegrationOrder(const escript::Data &in)
returns true if the data object is defined on reduced element types
Definition: finley/src/Util.h:37
dudley::Assemble_PDE_System_2D
void Assemble_PDE_System_2D(const AssembleParameters &p, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y)
Definition: dudley/src/Assemble_PDE_System_2D.cpp:49
finley::ElementFile::Color
index_t * Color
Definition: finley/src/ElementFile.h:150
dudley::AssembleParameters::DOF
const index_t * DOF
row and column degrees of freedom
Definition: dudley/src/Assemble.h:55
finley::Assemble_addToSystemMatrix
void Assemble_addToSystemMatrix(escript::ASM_ptr S, int NN_Equa, const index_t *Nodes_Equa, int num_Equa, int NN_Sol, const index_t *Nodes_Sol, int num_Sol, const Scalar *array)
FINLEY_ELEMENTS
#define FINLEY_ELEMENTS
Definition: Finley.h:49
escript::Data::isDataPointShapeEqual
bool isDataPointShapeEqual(int rank, const int *dimensions) const
Returns true if the shape matches the vector (dimensions[0],..., dimensions[rank-1])....
Definition: Data.h:567
finley::util::gather
void gather(int len, const index_t *index, int numData, const double *in, double *out)
Definition: finley/src/Util.cpp:44
DUDLEY_REDUCED_ELEMENTS
#define DUDLEY_REDUCED_ELEMENTS
Definition: Dudley.h:46
dudley::ElementFile::numDim
int numDim
number of spatial dimensions of the domain
Definition: dudley/src/ElementFile.h:147
escript::Data::isEmpty
bool isEmpty() const
Definition: Data.cpp:1132
paso::SystemMatrix::row_block_size
dim_t row_block_size
Definition: SystemMatrix.h:317
dudley::ElementFile::MPIInfo
escript::JMPI MPIInfo
Definition: dudley/src/ElementFile.h:110
escript::Data::getNumDataPoints
int getNumDataPoints() const
Return the number of data points.
Definition: Data.h:523
dudley::Assemble_CopyNodalData
void Assemble_CopyNodalData(const NodeFile *nodes, escript::Data &out, const escript::Data &in)
copies data between different types of nodal representations
Definition: dudley/src/Assemble_CopyNodalData.cpp:27
finley::Assemble_addToSystemMatrix< cplx_t >
void Assemble_addToSystemMatrix< cplx_t >(escript::ASM_ptr S, int NN_Equa, const index_t *Nodes_Equa, int num_Equa, int NN_Sol, const index_t *Nodes_Sol, int num_Sol, const cplx_t *array)
Definition: finley/src/Assemble_addToSystemMatrix.cpp:85
finley::AssembleParameters::numQuadTotal
int numQuadTotal
total number of quadrature nodes = numQuadSub * numQuadSub
Definition: finley/src/Assemble.h:47
escript::Data::numSamplesEqual
bool numSamplesEqual(int numDataPointsPerSample, int numSamples) const
Returns true if the number of data points per sample and the number of samples match the respective a...
Definition: Data.h:555
ShapeTable.h
paso::SystemMatrix::mainBlock
SparseMatrix_ptr< T > mainBlock
main block
Definition: SystemMatrix.h:329
DUDLEY_ELEMENTS
#define DUDLEY_ELEMENTS
Definition: Dudley.h:43
dudley::ElementFile_Jacobians::numDim
int numDim
number of spatial dimensions
Definition: dudley/src/ElementFile.h:36
finley::Assemble_jacobians_2D
void Assemble_jacobians_2D(const double *coordinates, int numQuad, const double *QuadWeights, int numShape, dim_t numElements, int numNodes, const index_t *nodes, const double *DSDv, int numTest, const double *DTDv, double *dTdX, double *volume, const index_t *elementId)
Definition: finley/src/Assemble_jacobians.cpp:87
dudley::Assemble_integrate< cplx_t >
template void Assemble_integrate< cplx_t >(const NodeFile *nodes, const ElementFile *elements, const escript::Data &data, std::vector< cplx_t > &out)
dudley::Assemble_jacobians_2D_M1D_E1D
void Assemble_jacobians_2D_M1D_E1D(const double *coordinates, int numQuad, dim_t numElements, int numNodes, const index_t *nodes, double *dTdX, double *absD, double *quadWeight, const index_t *elementId)
Definition: dudley/src/Assemble_jacobians.cpp:134
finley::Assemble_getSize
void Assemble_getSize(const NodeFile *nodes, const ElementFile *elements, escript::Data &size)
Definition: finley/src/Assemble_getSize.cpp:33
finley::AssembleParameters
Definition: finley/src/Assemble.h:35
finley::Assemble_PDE_System_C
void Assemble_PDE_System_C(const AssembleParameters &p, const escript::Data &D, const escript::Data &Y)
Definition: Assemble_PDE_System_C.cpp:43
dudley::Assemble_integrate
void Assemble_integrate(const NodeFile *nodes, const ElementFile *elements, const escript::Data &data, std::vector< Scalar > &integrals)
integrates data on quadrature points
Definition: dudley/src/Assemble_integrate.cpp:29
finley::ElementFile_Jacobians::offsets
const int * offsets
offset to sides (borrowed reference)
Definition: finley/src/ElementFile.h:45
finley::AssembleParameters::numSub
int numSub
number of sub-elements
Definition: finley/src/Assemble.h:53
dudley::Assemble_addToSystemMatrix< real_t >
void Assemble_addToSystemMatrix< real_t >(escript::AbstractSystemMatrix *S, const std::vector< index_t > &Nodes, int numEq, const std::vector< real_t > &array)
Definition: dudley/src/Assemble_addToSystemMatrix.cpp:49
paso::SystemMatrix::col_distribution
escript::Distribution_ptr col_distribution
Definition: SystemMatrix.h:322
DUDLEY_REDUCED_FACE_ELEMENTS
#define DUDLEY_REDUCED_FACE_ELEMENTS
Definition: Dudley.h:47
dudley::AssembleParameters::AssembleParameters
AssembleParameters(const NodeFile *nodes, const ElementFile *ef, escript::ASM_ptr sm, escript::Data &rhs, bool reducedOrder)
Definition: dudley/src/Assemble_getAssembleParameters.cpp:35
dudley::util::normalVector
void normalVector(int len, int dim, int dim1, const double *A, double *Normal)
Definition: dudley/src/Util.cpp:110
paso::SystemMatrix::col_block_size
dim_t col_block_size
Definition: SystemMatrix.h:318
dudley::Assemble_PDE_Points
void Assemble_PDE_Points(const AssembleParameters &p, const escript::Data &d_dirac, const escript::Data &y_dirac)
Definition: dudley/src/Assemble_PDE_Points.cpp:46
paso::SystemMatrix::logical_row_block_size
dim_t logical_row_block_size
Definition: SystemMatrix.h:314
finley::Assemble_gradient
void Assemble_gradient(const NodeFile *nodes, const ElementFile *elements, escript::Data &gradient, const escript::Data &data)
Definition: finley/src/Assemble_gradient.cpp:34
paso::SystemMatrix::row_distribution
escript::Distribution_ptr row_distribution
Definition: SystemMatrix.h:321
finley::AssembleParameters::elements
const ElementFile * elements
element file these parameters apply to
Definition: finley/src/Assemble.h:41
dudley::AssembleParameters::numDim
int numDim
number of spatial dimensions
Definition: dudley/src/Assemble.h:49
finley::AssembleParameters::row_jac
ElementFile_Jacobians * row_jac
Definition: finley/src/Assemble.h:64
finley::Assemble_LumpedSystem
void Assemble_LumpedSystem(const NodeFile *nodes, const ElementFile *elements, escript::Data &lumpedMat, const escript::Data &D, bool useHRZ)
Definition: finley/src/Assemble_LumpedSystem.cpp:37
dudley::ElementFile::numLocalDim
int numLocalDim
dimension of the element e.g. 2 for a line in 2D or 3D
Definition: dudley/src/ElementFile.h:150
escript::DataTypes::index_t
int index_t
type for array/matrix indices used both globally and on each rank
Definition: DataTypes.h:61
dudley::AssembleParameters::numQuad
int numQuad
number of quadrature nodes
Definition: dudley/src/Assemble.h:47
finley::NodeFile
Definition: finley/src/NodeFile.h:42
dudley::util::smallMatMult
void smallMatMult(int A1, int A2, double *A, int B2, const double *B, const double *C)
multiplies two matrices: A(1:A1,1:A2) := B(1:A1,1:B2)*C(1:B2,1:A2)
Definition: dudley/src/Util.cpp:74
finley::ElementFile::borrowJacobians
ElementFile_Jacobians * borrowJacobians(const NodeFile *, bool, bool) const
Definition: finley/src/ElementFile_jacobians.cpp:41
finley::Assemble_PDE_System_3D
void Assemble_PDE_System_3D(const AssembleParameters &p, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y)
Definition: finley/src/Assemble_PDE_System_3D.cpp:49
COMPDXDV1
#define COMPDXDV1(P)
finley::Assemble_jacobians_2D_M1D_E2D
void Assemble_jacobians_2D_M1D_E2D(const double *coordinates, int numQuad, const double *QuadWeights, int numShape, dim_t numElements, int numNodes, const index_t *nodes, const double *DSDv, int numTest, const double *DTDv, double *dTdX, double *volume, const index_t *elementId)
Definition: finley/src/Assemble_jacobians.cpp:246
finley::Assemble_PDE
void Assemble_PDE(const NodeFile *nodes, const ElementFile *elements, escript::ASM_ptr S, escript::Data &F, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y)
Definition: finley/src/Assemble_PDE.cpp:86
finley::ElementFile_Jacobians::numSides
int numSides
number of sides (=1 normal, =2 contact)
Definition: finley/src/ElementFile.h:43
FINLEY_REDUCED_CONTACT_ELEMENTS_2
#define FINLEY_REDUCED_CONTACT_ELEMENTS_2
Definition: Finley.h:59
finley::AssembleParameters::row_node
const int * row_node
Definition: finley/src/Assemble.h:65
dudley::ElementFile_Jacobians::numElements
dim_t numElements
number of elements
Definition: dudley/src/ElementFile.h:42
finley::AssembleParameters::AssembleParameters
AssembleParameters(const NodeFile *nodes, const ElementFile *ef, escript::ASM_ptr sm, escript::Data &rhs, bool reducedOrder)
Definition: finley/src/Assemble_getAssembleParameters.cpp:34
escript::FunctionSpace::getTypeCode
int getTypeCode() const
Returns the function space type code.
Definition: FunctionSpace.cpp:95
COMPDXDV0
#define COMPDXDV0(P)
finley::NodeFile::borrowTargetNodes
const index_t * borrowTargetNodes() const
returns the mapping from local nodes to a target
Definition: finley/src/NodeFile.h:306
dudley::ElementFile_Jacobians::quadweight
double quadweight
used to compute volume
Definition: dudley/src/ElementFile.h:46
escript::Data::isLazy
bool isLazy() const
Return true if this Data is lazy.
Definition: Data.cpp:1146
dudley::AssembleParameters::jac
const ElementFile_Jacobians * jac
reference to jacobians
Definition: dudley/src/Assemble.h:59
DIM
#define DIM
dudley::Assemble_integrate< real_t >
template void Assemble_integrate< real_t >(const NodeFile *nodes, const ElementFile *elements, const escript::Data &data, std::vector< real_t > &out)
finley::ElementFile
Definition: finley/src/ElementFile.h:63
finley::Assemble_jacobians_2D_M1D_E1D_C
void Assemble_jacobians_2D_M1D_E1D_C(const double *coordinates, int numQuad, const double *QuadWeights, int numShape, dim_t numElements, int numNodes, const index_t *nodes, const double *DSDv, int numTest, const double *DTDv, double *dTdX, double *volume, const index_t *elementId)
Definition: finley/src/Assemble_jacobians.cpp:186
finley::ElementFile_Jacobians::numDim
int numDim
number of spatial dimensions
Definition: finley/src/ElementFile.h:36
finley::AssembleParameters::row_DOF
const index_t * row_DOF
Definition: finley/src/Assemble.h:62
dudley::Assemble_gradient
void Assemble_gradient(const NodeFile *nodes, const ElementFile *elements, escript::Data &gradient, const escript::Data &data)
Definition: dudley/src/Assemble_gradient.cpp:29
FINLEY_REDUCED_NODES
#define FINLEY_REDUCED_NODES
Definition: Finley.h:55
dudley::ElementFile::Color
index_t * Color
Definition: dudley/src/ElementFile.h:138
finley::Assemble_getNormal
void Assemble_getNormal(const NodeFile *nodes, const ElementFile *elements, escript::Data &normals)
calculates the normal vector at quadrature points on face elements
Definition: finley/src/Assemble_getNormal.cpp:33
finley::NodeFile::borrowTargetDegreesOfFreedom
const index_t * borrowTargetDegreesOfFreedom() const
Definition: finley/src/NodeFile.h:316
finley::NodeFile::getNumDegreesOfFreedom
dim_t getNumDegreesOfFreedom() const
returns the number of degrees of freedom (on this rank)
Definition: finley/src/NodeFile.h:266
finley::const_ShapeFunction_ptr
boost::shared_ptr< const ShapeFunction > const_ShapeFunction_ptr
Definition: ShapeFunctions.h:102
dudley::AssembleParameters::F
escript::Data & F
right-hand side to be updated
Definition: dudley/src/Assemble.h:45
escript::Data::actsExpanded
bool actsExpanded() const
Return true if this Data is expanded or resolves to expanded. That is, if it has a separate value for...
Definition: Data.cpp:1118
finley::ElementFile_Jacobians::BasisFunctions
const_ShapeFunction_ptr BasisFunctions
basis function used
Definition: finley/src/ElementFile.h:38
finley::ElementFile_Jacobians::DSDX
double * DSDX
Definition: finley/src/ElementFile.h:59
finley::Assemble_PDE_Single_C
void Assemble_PDE_Single_C(const AssembleParameters &p, const escript::Data &D, const escript::Data &Y)
Definition: Assemble_PDE_Single_C.cpp:42
dudley::Assemble_PDE
void Assemble_PDE(const NodeFile *nodes, const ElementFile *elements, escript::ASM_ptr S, escript::Data &F, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y)
Definition: dudley/src/Assemble_PDE.cpp:84
escript::getMPIRankWorld
int getMPIRankWorld()
returns the MPI processor number within MPI_COMM_WORLD
Definition: Utils.cpp:105
finley::NodeFile::borrowTargetReducedDegreesOfFreedom
const index_t * borrowTargetReducedDegreesOfFreedom() const
Definition: finley/src/NodeFile.h:321
dudley::util::gather
void gather(int len, const index_t *index, int numData, const double *in, double *out)
Definition: dudley/src/Util.cpp:44
DUDLEY_POINTS
#define DUDLEY_POINTS
Definition: Dudley.h:45
S
#define S(_J_, _I_)
Definition: ShapeFunctions.cpp:122
finley::Assemble_jacobians_2D_M1D_E2D_C
void Assemble_jacobians_2D_M1D_E2D_C(const double *coordinates, int numQuad, const double *QuadWeights, int numShape, dim_t numElements, int numNodes, const index_t *nodes, const double *DSDv, int numTest, const double *DTDv, double *dTdX, double *volume, const index_t *elementId)
Definition: finley/src/Assemble_jacobians.cpp:300
finley::ElementFile::referenceElementSet
const_ReferenceElementSet_ptr referenceElementSet
the reference element to be used
Definition: finley/src/ElementFile.h:120
escript::Data::getExpandedVectorReference
DataTypes::RealVectorType & getExpandedVectorReference(DataTypes::real_t dummy=0)
Ensures that the Data is expanded and returns its underlying vector Does not check for exclusive writ...
Definition: Data.cpp:5837
escript::ASM_ptr
boost::shared_ptr< AbstractSystemMatrix > ASM_ptr
Definition: AbstractSystemMatrix.h:33
finley::AssembleParameters::numQuadSub
int numQuadSub
number of quadrature nodes per subelements
Definition: finley/src/Assemble.h:49
escript::DataTypes::cplx_t
std::complex< real_t > cplx_t
complex data type
Definition: DataTypes.h:55
finley::Assemble_CopyNodalData
void Assemble_CopyNodalData(const NodeFile *nodes, escript::Data &out, const escript::Data &in)
copies data between different types of nodal representations
Definition: finley/src/Assemble_CopyNodalData.cpp:27
dudley::AssembleParameters::shapeFns
const double * shapeFns
Definition: dudley/src/Assemble.h:61
escript::Scalar
Data Scalar(double value, const FunctionSpace &what, bool expanded)
A collection of factory functions for creating Data objects which contain data points of various shap...
Definition: DataFactory.cpp:49
finley::ElementFile_Jacobians::numSub
int numSub
number of subelements
Definition: finley/src/ElementFile.h:47
finley::AssembleParameters::numEqu
int numEqu
Definition: finley/src/Assemble.h:61
finley
A suite of factory methods for creating various finley domains.
Definition: finley/src/Assemble.h:32
finley::NodeFile::numDim
int numDim
number of spatial dimensions
Definition: finley/src/NodeFile.h:162
dudley::NodeFile::getNumDegreesOfFreedom
dim_t getNumDegreesOfFreedom() const
returns the number of degrees of freedom (on this rank)
Definition: dudley/src/NodeFile.h:209
dudley::NodeFile::Coordinates
double * Coordinates
Coordinates[INDEX2(k,i,numDim)] is the k-th coordinate of node i.
Definition: dudley/src/NodeFile.h:159
dudley::setNumSamplesError
void setNumSamplesError(const char *c, int n0, int n1)
Definition: dudley/src/Assemble_PDE.cpp:56
escript::ValueError
An exception class that signals an invalid argument value.
Definition: EsysException.h:100
DUDLEY_FACE_ELEMENTS
#define DUDLEY_FACE_ELEMENTS
Definition: Dudley.h:44
finley::Assemble_PDE_System_1D
void Assemble_PDE_System_1D(const AssembleParameters &p, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y)
Definition: Assemble_PDE_System_1D.cpp:49
finley::NodeFile::borrowDegreesOfFreedomTarget
const IndexVector & borrowDegreesOfFreedomTarget() const
Definition: finley/src/NodeFile.h:296
dudley::Assemble_PDE_Single_2D
void Assemble_PDE_Single_2D(const AssembleParameters &p, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y)
Definition: dudley/src/Assemble_PDE_Single_2D.cpp:46
FINLEY_CONTACT_ELEMENTS_2
#define FINLEY_CONTACT_ELEMENTS_2
Definition: Finley.h:53
Assemble.h
dudley::util::addScatter
void addScatter(int len, const index_t *index, int numData, const Scalar *in, Scalar *out, index_t upperBound)
Definition: dudley/src/Util.cpp:55
dudley::ElementFile::numNodes
int numNodes
number of nodes per element
Definition: dudley/src/ElementFile.h:130
finley::AssembleParameters::col_numShapesTotal
int col_numShapesTotal
Definition: finley/src/Assemble.h:73
finley::Assemble_PDE_Single_3D
void Assemble_PDE_Single_3D(const AssembleParameters &p, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y)
Definition: finley/src/Assemble_PDE_Single_3D.cpp:46
FINLEY_CONTACT_ELEMENTS_1
#define FINLEY_CONTACT_ELEMENTS_1
Definition: Finley.h:52
escript::DataTypes::IndexVector
std::vector< index_t > IndexVector
Definition: DataTypes.h:64
dudley::setShapeError
void setShapeError(const char *c, int num, const int *dims)
Definition: dudley/src/Assemble_PDE.cpp:65
dudley::ElementFile::borrowJacobians
ElementFile_Jacobians * borrowJacobians(const NodeFile *nodes, bool reducedOrder) const
Definition: dudley/src/ElementFile_jacobians.cpp:41
INDEX6
#define INDEX6(_X1_, _X2_, _X3_, _X4_, _X5_, _X6_, _N1_, _N2_, _N3_, _N4_, _N5_)
Definition: index.h:31
dudley::AssembleParameters::numEqu
int numEqu
number of equations (= matrix row/column block size)
Definition: dudley/src/Assemble.h:53
finley::ElementFile::numNodes
int numNodes
number of nodes per element
Definition: finley/src/ElementFile.h:138
finley::Assemble_PDE_Single_1D
void Assemble_PDE_Single_1D(const AssembleParameters &p, const escript::Data &A, const escript::Data &B, const escript::Data &C, const escript::Data &D, const escript::Data &X, const escript::Data &Y)
Definition: Assemble_PDE_Single_1D.cpp:46