escript Revision_
speckley/src/DefaultAssembler3D.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#ifndef __SPECKLEY_DEFAULTASSEMBLER3D_H__
18#define __SPECKLEY_DEFAULTASSEMBLER3D_H__
19
20#include <speckley/Speckley.h>
21#include <speckley/AbstractAssembler.h>
22#include <speckley/Brick.h>
23#include <speckley/SpeckleyException.h>
24
25#include <escript/Data.h>
26
27#include <map>
28
29namespace speckley {
30
31
33{
34public:
36 const dim_t *NE, const dim_t *NN)
38 m_dx(dx),
39 m_NE(NE),
40 m_NN(NN)
41 {
42 domain = REFCOUNTNS::static_pointer_cast<const Brick>(dom);
43 }
44
46
47 /* The default SpeckleyDomain assemblers, with original signatures */
48
52 escript::Data& rhs, const escript::Data& A,
53 const escript::Data& B, const escript::Data& C,
54 const escript::Data& D, const escript::Data& X,
55 const escript::Data& Y) const;
57 escript::Data& rhs, const escript::Data& A,
58 const escript::Data& B, const escript::Data& C,
59 const escript::Data& D, const escript::Data& X,
60 const escript::Data& Y) const;
61
65 escript::Data& rhs, const escript::Data& d,
66 const escript::Data& y) const;
68 escript::Data& rhs, const escript::Data& d,
69 const escript::Data& y) const;
70
74 escript::Data& rhs, const escript::Data& A, const escript::Data& B,
75 const escript::Data& C, const escript::Data& D,
76 const escript::Data& X, const escript::Data& Y) const;
78 escript::Data& rhs, const escript::Data& A, const escript::Data& B,
79 const escript::Data& C, const escript::Data& D,
80 const escript::Data& X, const escript::Data& Y) const;
81
86 escript::Data& rhs, const escript::Data& d,
87 const escript::Data& y) const;
90 escript::Data& rhs, const escript::Data& d,
91 const escript::Data& y) const;
92
96 escript::Data& rhs, const escript::Data& A,
97 const escript::Data& B, const escript::Data& C,
98 const escript::Data& D, const escript::Data& X,
99 const escript::Data& Y) const;
101 escript::Data& rhs, const escript::Data& A,
102 const escript::Data& B, const escript::Data& C,
103 const escript::Data& D, const escript::Data& X,
104 const escript::Data& Y) const;
105
109 escript::Data& rhs, const escript::Data& d,
110 const escript::Data& y) const;
112 escript::Data& rhs, const escript::Data& d,
113 const escript::Data& y) const;
114
118 escript::Data& rhs, const escript::Data& A, const escript::Data& B,
119 const escript::Data& C, const escript::Data& D,
120 const escript::Data& X, const escript::Data& Y) const;
122 escript::Data& rhs, const escript::Data& A, const escript::Data& B,
123 const escript::Data& C, const escript::Data& D,
124 const escript::Data& X, const escript::Data& Y) const;
125
130 escript::Data& rhs, const escript::Data& d,
131 const escript::Data& y) const;
134 escript::Data& rhs, const escript::Data& d,
135 const escript::Data& y) const;
136
137 /* The new interface for assemblers */
138
140 escript::Data& rhs, const DataMap& coefs) const;
142 escript::Data& rhs, const DataMap& coefs) const;
144 escript::Data& rhs, const DataMap& coefs) const;
147 escript::Data& rhs, const DataMap& coefs) const;
149 escript::Data& rhs, const DataMap& coefs) const;
151 escript::Data& rhs, const DataMap& coefs) const;
153 escript::Data& rhs, const DataMap& coefs) const;
156 escript::Data& rhs, const DataMap& coefs) const;
157
158 void collateFunctionSpaceTypes(std::vector<int>& fsTypes,
159 const DataMap& coefs) const;
160
161protected:
163 const double *m_dx;
164 const dim_t *m_NE;
165 const dim_t *m_NN;
166};
167
168} // namespace speckley
169
170#endif // __SPECKLEY_DEFAULTASSEMBLER3D_H__
Base class for escript system matrices.
Definition AbstractSystemMatrix.h:44
Data represents a collection of datapoints.
Definition Data.h:64
Definition speckley/src/AbstractAssembler.h:35
Brick is the 3-dimensional implementation of a SpeckleyDomain.
Definition speckley/src/Brick.h:34
Definition speckley/src/DefaultAssembler3D.h:33
~DefaultAssembler3D()
Definition speckley/src/DefaultAssembler3D.h:45
virtual void assembleComplexPDESystem(escript::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
Definition speckley/src/DefaultAssembler3D.cpp:423
virtual void assemblePDESystem(escript::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
Definition speckley/src/DefaultAssembler3D.cpp:255
virtual void assembleComplexPDEBoundarySingleReduced(escript::AbstractSystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const
Definition speckley/src/DefaultAssembler3D.cpp:642
POINTER_WRAPPER_CLASS(const Brick) domain
virtual void assembleComplexPDEBoundarySystemReduced(escript::AbstractSystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const
Definition speckley/src/DefaultAssembler3D.cpp:672
DefaultAssembler3D(escript::const_Domain_ptr dom, const double *dx, const dim_t *NE, const dim_t *NN)
Definition speckley/src/DefaultAssembler3D.h:35
virtual void assemblePDEBoundarySystemReduced(escript::AbstractSystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const
Definition speckley/src/DefaultAssembler3D.cpp:664
virtual void assembleComplexPDESystemReduced(escript::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
Definition speckley/src/DefaultAssembler3D.cpp:610
virtual void assembleComplexPDESingleReduced(escript::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
Definition speckley/src/DefaultAssembler3D.cpp:965
virtual void assemblePDEBoundarySingle(escript::AbstractSystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const
Definition speckley/src/DefaultAssembler3D.cpp:620
virtual void assemblePDESingleReduced(escript::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
Definition speckley/src/DefaultAssembler3D.cpp:956
virtual void assemblePDEBoundarySingleReduced(escript::AbstractSystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const
Definition speckley/src/DefaultAssembler3D.cpp:634
virtual void assemblePDEBoundarySystem(escript::AbstractSystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const
Definition speckley/src/DefaultAssembler3D.cpp:650
virtual void assembleComplexPDEBoundarySingle(escript::AbstractSystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const
Definition speckley/src/DefaultAssembler3D.cpp:627
void collateFunctionSpaceTypes(std::vector< int > &fsTypes, const DataMap &coefs) const
Definition speckley/src/DefaultAssembler3D.cpp:115
virtual void assemblePDESingle(escript::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
Definition speckley/src/DefaultAssembler3D.cpp:680
virtual void assembleComplexPDEBoundarySystem(escript::AbstractSystemMatrix *mat, escript::Data &rhs, const escript::Data &d, const escript::Data &y) const
Definition speckley/src/DefaultAssembler3D.cpp:657
virtual void assembleComplexPDESingle(escript::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
Definition speckley/src/DefaultAssembler3D.cpp:812
const dim_t * m_NN
Definition speckley/src/DefaultAssembler3D.h:165
const double * m_dx
Definition speckley/src/DefaultAssembler3D.h:163
const dim_t * m_NE
Definition speckley/src/DefaultAssembler3D.h:164
virtual void assemblePDESystemReduced(escript::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
Definition speckley/src/DefaultAssembler3D.cpp:600
boost::shared_ptr< const AbstractDomain > const_Domain_ptr
Definition AbstractDomain.h:44
Definition AbstractAssembler.cpp:19
std::map< std::string, escript::Data > DataMap
Definition speckley/src/domainhelpers.h:25