ASL  0.1.6
Advanced Simulation Library
aclGenerators.h
Go to the documentation of this file.
1 /*
2  * Advanced Simulation Library <http://asl.org.il>
3  *
4  * Copyright 2015 Avtech Scientific <http://avtechscientific.com>
5  *
6  *
7  * This file is part of Advanced Simulation Library (ASL).
8  *
9  * ASL is free software: you can redistribute it and/or modify it
10  * under the terms of the GNU Affero General Public License as
11  * published by the Free Software Foundation, version 3 of the License.
12  *
13  * ASL is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU Affero General Public License for more details.
17  *
18  * You should have received a copy of the GNU Affero General Public License
19  * along with ASL. If not, see <http://www.gnu.org/licenses/>.
20  *
21  */
22 
23 
24 #ifndef ACLGENERATORS_H
25 #define ACLGENERATORS_H
26 
29 #include <math/aslVectors.h>
30 #include <math/aslMatrices.h>
31 
32 
33 namespace acl
34 {
36  template <typename T> VectorOfElements generateVEConstant(T a);
38  template <typename T> VectorOfElements generateVEConstant(T a, T b);
40  template <typename T> VectorOfElements generateVEConstant(T a, T b, T c);
42  template <typename T> VectorOfElements generateVEConstantN(unsigned int n, T a);
44  template <typename T> VectorOfElements generateVEConstant(unsigned int n, const T* const a);
46  template <typename T> VectorOfElements generateVEConstant(const std::vector<T> & a);
48  template <typename T> VectorOfElements generateVEConstant(const asl::AVec<T> & a);
50  template <typename T> MatrixOfElements generateMEConstant(const asl::AMatr<T> & a);
51 
53  template <typename T> VectorOfElementsData generateVEData(unsigned int length,
54  unsigned int nComponents,
55  CommandQueue queue);
56 
58  template <typename T> VectorOfElementsData generateVEData(unsigned int length,
59  unsigned int nComponents = 1);
60 
62  VectorOfElementsData generateVEData(unsigned int length,
63  TypeID typeID,
64  unsigned int nComponents,
65  CommandQueue queue);
66 
68  VectorOfElementsData generateVEData(unsigned int length,
69  TypeID typeID,
70  unsigned int nComponents = 1);
71 
72 
74  VectorOfElements generateVELocalArray(unsigned int componentSize,
75  TypeID typeID,
76  unsigned int size);
77 
79  template <typename T> VectorOfElements generateVEPrivateArray(const vector<T> & data);
81  template <typename T> VectorOfElements generateVEPrivateArray(const vector<asl::AVec<T>> & data);
82 
84  template <typename T> VectorOfElements generateVEPrivateArray(const vector<T> & data,
85  TypeID typeID);
87  template <typename T> VectorOfElements generateVEPrivateArray(const vector<asl::AVec<T>> & data,
88  TypeID typeID);
89 
91  template <typename T> VectorOfElements generateVEDataSub(T,
92  unsigned int sublength,
93  unsigned int length,
94  unsigned int nComponents,
95  CommandQueue queue);
96 
98  template <typename T> VectorOfElements generateVEVariableR(T& a);
100  template <typename T> VectorOfElements generateVEVariableR(T& a, T& b);
102  template <typename T> VectorOfElements generateVEVariableR(T& a, T& b, T& c);
104  template <typename T> VectorOfElements generateVEVariableR(asl::AVec<T>& a);
105 
106 
108  template <typename T> VectorOfElements generateVEVariableSP(std::shared_ptr<T> a);
110  template <typename T> VectorOfElements generateVEVariableSP(std::shared_ptr<T> a, std::shared_ptr<T> b);
112  template <typename T> VectorOfElements generateVEVariableSP(std::shared_ptr<T> a, std::shared_ptr<T> b, std::shared_ptr<T> c);
114  template <typename T> VectorOfElements generateVEVariableSP(std::shared_ptr<asl::AVec<T>> a);
115 
116 
118  template <typename T> VectorOfElements generateVEPrivateVariable(unsigned int n);
119 
121  VectorOfElements generateVEPrivateVariable(unsigned int n, TypeID t);
122 
124  MatrixOfElements generateMEPrivateVariable(unsigned int nR, unsigned int nC, TypeID t);
125 
126 
128  VectorOfElements generateVESubElements(VectorOfElements a, unsigned int length, int offset);
129 
131  VectorOfElements generateVESubElements(VectorOfElements a, unsigned int length, VectorOfElements offset);
132 
134  VectorOfElements generateVEShftedElements(VectorOfElements a, int offset);
135 
137  VectorOfElements generateVEShftedElements(VectorOfElements a, const std::vector<int> & offset);
138 
140  VectorOfElements generateVEShiftedElements(VectorOfElements a, VectorOfElements offset);
141 
144 
148  VectorOfElements generateVEPolynom(VectorOfElements x, VectorOfElements coefs);
149 
151  VectorOfElements generateParsedVE(const VectorOfElements & fields,
152  const vector<string> & names,
153  const string & statement);
154 
155 
157  template <typename T=int>MatrixOfElements generateMEUnit(unsigned int n);
158 
160  MatrixOfElements generateMEDiagonal(const VectorOfElements & d);
161 
163 
166  MatrixOfElements generateMEGivensRotation(unsigned int k,
167  unsigned int l,
168  const VectorOfElements & sc);
169 
170 
171  // insert local variable which takes values accoding to index \ingroup generateVE
172  template <typename T> VectorOfElements indexDependedConstant(vector<unsigned int> r,
173  vector<T> values);
174 
175 
178  VectorOfElements generateVEIndex(unsigned int size = 0);
179 
182  VectorOfElements generateVEGroupID();
183 
186  VectorOfElements generateVEIndexExt(unsigned int size = 0);
187 
188 } //namespace acl
189 
190 #endif // ACLGENERATORS_H
MatrixOfElements generateMEGivensRotation(unsigned int k, unsigned int l, const VectorOfElements &sc)
MatrixOfElements generateMEPrivateVariable(unsigned int nR, unsigned int nC, TypeID t)
Generates VectorOfElements with n Element of acl::PrivateVariable with type t.
VectorOfElements generateVEVariableSP(std::shared_ptr< T > a)
Generates VectorOfElements with 1 Element acl::VariableReference with reference on a...
MatrixOfElements generateMEUnit(unsigned int n)
VectorOfElements generateVEGroupID()
Advanced Computational Language.
Definition: acl.h:40
VectorOfElements generateVEShftedElements(VectorOfElements a, int offset)
Generates VectorOfElements which contains SubElements of the corresponding element of a...
Matrices.
std::shared_ptr< cl::CommandQueue > CommandQueue
Definition: acl.h:51
VectorOfElements generateVEIndexExt(unsigned int size=0)
VectorOfElementsData generateVEData(unsigned int length, unsigned int nComponents, CommandQueue queue)
Generates VectorOfElements with nComponents Elements acl::Vector with size length.
VectorOfElements generateVEVariableR(T &a)
Generates VectorOfElements with 1 Element acl::VariableReference with reference on a...
VectorOfElements generateVEDataSub(T, unsigned int sublength, unsigned int length, unsigned int nComponents, CommandQueue queue)
Generates VectorOfElements with nComponents Elements acl::Subvector with size sublength. length is the vector size.
VectorOfElements indexDependedConstant(vector< unsigned int > r, vector< T > values)
const Block offset(const Block &bl, int a=1)
VectorOfElements generateVESubElements(VectorOfElements a, unsigned int length, int offset)
Generates VectorOfElements which contains SubElements of the corresponding element of a...
VectorOfElements generateVEPolynom(VectorOfElements x, VectorOfElements coefs)
definition of class АVec
VectorOfElements generateVEConstant(T a)
Generates VectorOfElements with 1 Element acl::Constant with value a.
VectorOfElements generateVELocalArray(unsigned int componentSize, TypeID typeID, unsigned int size)
Generates VectorOfElements with size Elements acl::LocalArray of type typeID with size componentSize...
VectorOfElements generateVEShiftedElements(VectorOfElements a, VectorOfElements offset)
Generates VectorOfElements which contains SubElements of the corresponding element of a...
TypeID
Definition: aclTypes.h:38
MatrixOfElements generateMEDiagonal(const VectorOfElements &d)
VectorOfElements generateVEConstantN(unsigned int n, T a)
Generates VectorOfElements with n Elements acl::Constant with values a.
VectorOfElements generateVEPrivateVariable(unsigned int n)
Generates VectorOfElements with n Element of acl::PrivateVariable.
MatrixOfElements generateMEConstant(const asl::AMatr< T > &a)
Generates VectorOfElements correspondinng to a.
VectorOfElements generateParsedVE(const VectorOfElements &fields, const vector< string > &names, const string &statement)
VectorOfElements generateVEIndex(unsigned int size=0)
VectorOfElements generateVEPrivateArray(const vector< T > &data)
Generates VectorOfElements with size Elements acl::PrivateArray of type with data defined by data...