16 self, namespace, output, subdirectory, template_prefix, output_path
18 if self.
d[
"POLYNOMIAL_TYPE"] ==
"legendre":
19 QuadratureWeights, QuadratureNodes = MathUtils.getGaussLegendre(
20 self.
d[
"NUMBER_OF_DOF"]
22 OtherQuadratureWeights, OtherQuadratureNodes = MathUtils.getGaussLobatto(
23 self.
d[
"NUMBER_OF_DOF"]
25 elif self.
d[
"POLYNOMIAL_TYPE"] ==
"lobatto":
26 QuadratureWeights, QuadratureNodes = MathUtils.getGaussLobatto(
27 self.
d[
"NUMBER_OF_DOF"]
29 OtherQuadratureWeights, OtherQuadratureNodes = MathUtils.getGaussLobatto(
30 self.
d[
"NUMBER_OF_DOF"]
32 QuadratureNodes = QuadratureNodes[::-1]
35 "Quadrature type " + self.
d[
"POLYNOMIAL_TYPE"] +
" not supported."
38 weightsVector = MathUtils.vectorPad(
39 QuadratureWeights, self.
d[
"NUMBER_OF_DOF_PADDED"] - self.
d[
"NUMBER_OF_DOF"]
41 self.
d[
"weights1"] = weightsVector
42 self.
d[
"w1Size"] = len(self.
d[
"weights1"])
43 self.
d[
"w1_seq"] = range(self.
d[
"w1Size"])
46 self.
d[
"iweights1"] = [
47 1.0 / self.
d[
"weights1"][i]
if self.
d[
"weights1"][i] != 0.0
else 0.0
48 for i
in self.
d[
"w1_seq"]
51 if self.
d[
"DIMENSIONS"] == 2:
53 weightsVector = MathUtils.vectorPad(
55 Architectures.get_pad_size(
56 self.
d[
"ARCHITECTURE"], len(QuadratureWeights)
59 self.
d[
"weights2"] = weightsVector
60 self.
d[
"w2Size"] = len(self.
d[
"weights2"])
61 self.
d[
"w2_seq"] = range(self.
d[
"w2Size"])
65 QuadratureWeights[i] * QuadratureWeights[j]
66 for i
in range(self.
d[
"NUMBER_OF_DOF"])
67 for j
in range(self.
d[
"NUMBER_OF_DOF"])
69 weightsVector = MathUtils.vectorPad(
71 Architectures.get_pad_size(self.
d[
"ARCHITECTURE"], len(weightsVector)),
73 self.
d[
"weights3"] = weightsVector
74 self.
d[
"w3Size"] = len(self.
d[
"weights3"])
75 self.
d[
"w3_seq"] = range(self.
d[
"w3Size"])
79 QuadratureWeights[i] * QuadratureWeights[j] * QuadratureWeights[k]
80 for i
in range(self.
d[
"NUMBER_OF_DOF"])
81 for j
in range(self.
d[
"NUMBER_OF_DOF"])
82 for k
in range(self.
d[
"NUMBER_OF_DOF"])
84 weightsVector = MathUtils.vectorPad(
86 Architectures.get_pad_size(self.
d[
"ARCHITECTURE"], len(weightsVector)),
88 self.
d[
"weights4"] = weightsVector
89 self.
d[
"w4Size"] = len(self.
d[
"weights4"])
90 self.
d[
"w4_seq"] = range(self.
d[
"w4Size"])
94 QuadratureWeights[i] * QuadratureWeights[j]
95 for i
in range(self.
d[
"NUMBER_OF_DOF"])
96 for j
in range(self.
d[
"NUMBER_OF_DOF"])
98 weightsVector = MathUtils.vectorPad(
100 Architectures.get_pad_size(self.
d[
"ARCHITECTURE"], len(weightsVector)),
102 self.
d[
"weights2"] = weightsVector
103 self.
d[
"w2Size"] = len(self.
d[
"weights2"])
104 self.
d[
"w2_seq"] = range(self.
d[
"w2Size"])
108 QuadratureWeights[i] * QuadratureWeights[j] * QuadratureWeights[k]
109 for i
in range(self.
d[
"NUMBER_OF_DOF"])
110 for j
in range(self.
d[
"NUMBER_OF_DOF"])
111 for k
in range(self.
d[
"NUMBER_OF_DOF"])
113 weightsVector = MathUtils.vectorPad(
115 Architectures.get_pad_size(self.
d[
"ARCHITECTURE"], len(weightsVector)),
117 self.
d[
"weights3"] = weightsVector
118 self.
d[
"w3Size"] = len(self.
d[
"weights3"])
119 self.
d[
"w3_seq"] = range(self.
d[
"w3Size"])
124 * QuadratureWeights[j]
125 * QuadratureWeights[k]
126 * QuadratureWeights[l]
127 for i
in range(self.
d[
"NUMBER_OF_DOF"])
128 for j
in range(self.
d[
"NUMBER_OF_DOF"])
129 for k
in range(self.
d[
"NUMBER_OF_DOF"])
130 for l
in range(self.
d[
"NUMBER_OF_DOF"])
132 weightsVector = MathUtils.vectorPad(
134 Architectures.get_pad_size(self.
d[
"ARCHITECTURE"], len(weightsVector)),
136 self.
d[
"weights4"] = weightsVector
137 self.
d[
"w4Size"] = len(self.
d[
"weights4"])
138 self.
d[
"w4_seq"] = range(self.
d[
"w4Size"])
141 self.
d[
"iweights3"] = [
142 1.0 / self.
d[
"weights3"][i]
if self.
d[
"weights3"][i] != 0.0
else 0.0
143 for i
in self.
d[
"w3_seq"]
146 self.
d[
"QuadratureWeights"], self.
d[
"QuadratureNodes"] = (
150 self.
d[
"quadrature_seq"] = range(self.
d[
"NUMBER_OF_DOF"])
153 headfile_template=template_prefix +
"Quadrature.template.h",
154 cppfile_template=template_prefix +
"Quadrature.template.cpp",
155 classname=output_path +
"/Quadrature",
157 subdirectory=subdirectory +
".",
159 default_overwrite=
True,
160 apply_iteratively=
True,
162 output.add(generated_kernels)
163 output.makefile.add_h_file(output_path +
"/Quadrature.h", generated=
True)
164 output.makefile.add_cpp_file(output_path +
"/Quadrature.cpp", generated=
True)