ASL  0.1.7
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....
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<T>
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.