Peano
Loading...
Searching...
No Matches
CellData.py
Go to the documentation of this file.
1# This file is part of the ExaHyPE2 project. For conditions of distribution and
2# use, please see the copyright notice at www.peano-framework.org
3from copy import deepcopy
4
5import peano4.output
6
7
8class CellData(object):
9 def __init__(self, dictionary):
10 self.d = deepcopy(dictionary)
11
13 self, namespace, output, subdirectory, template_prefix, output_path
14 ):
15 nUnknowns = self.d["NUMBER_OF_UNKNOWNS_PADDED"]
16 nUnknownsPad = self.d["NUMBER_OF_UNKNOWNS_PADDED"]
17 nAuxVar = self.d["NUMBER_OF_AUXILIARY_VARIABLES"]
18 nAuxVarPad = self.d["NUMBER_OF_AUXILIARY_VARIABLES"]
19 nData = self.d["NUMBER_OF_DATA"]
20 nDataPad = self.d["NUMBER_OF_DATA_PADDED"]
21 nDof = self.d["NUMBER_OF_DOF"]
22 nDofPad = self.d["NUMBER_OF_DOF_PADDED"]
23 nDof3D = self.d["NUMBER_OF_DOF_3D"]
24 nDim = self.d["DIMENSIONS"]
25
26 # SPT buffer sizes
27 # default values
28 self.d["lQiSize"] = -1
29 self.d["lQiNextSize"] = -1
30 self.d["lPiSize"] = -1
31 self.d["lFiSize"] = -1
32 self.d["lSiSize"] = -1
33 self.d["lQhiSize"] = -1
34 self.d["lFhiSize"] = -1
35 self.d["lShiSize"] = -1
36 self.d["gradQSize"] = -1
37 self.d["PSiSize"] = -1
38
39 if self.d["IS_LINEAR"]:
40 self.d["lQiSize"] = nDataPad * (nDof**nDim)
41 self.d["lQhiSize"] = nDataPad * (nDof**nDim)
42 self.d["lFiSize"] = nDim * (nDof**nDim) * nUnknownsPad
43 self.d["lFhiSize"] = nUnknownsPad * (nDof**nDim) * nDim
44 if self.d["USE_SOURCE"]:
45 self.d["lSiSize"] = nUnknownsPad * (nDof**nDim)
46 self.d["lShiSize"] = nUnknownsPad * (nDof**nDim)
47 if self.d["USE_NCP"]:
48 self.d["gradQSize"] = nUnknownsPad * (nDof**nDim) * nDim
49 if self.d["USE_POINT_SOURCE"]:
50 self.d["PSiSize"] = (nDof + 1) * (nDof**nDim) * nUnknownsPad
51 else: # nonlinear
52 self.d["lQiSize"] = nDataPad * (nDof ** (nDim + 1))
53 self.d["lQhiSize"] = nDataPad * (nDof**nDim)
54 if self.d["USE_FLUX"]:
55 self.d["lFiSize"] = nUnknownsPad * (nDof ** (nDim + 1)) * nDim
56 self.d["lFhiSize"] = nUnknownsPad * (nDof**nDim) * nDim
57 if self.d["USE_SOURCE"] or self.d["USE_NCP"]:
58 self.d["lSiSize"] = nUnknownsPad * (nDof ** (nDim + 1))
59 self.d["lShiSize"] = nUnknownsPad * (nDof**nDim)
60 if self.d["USE_NCP"]:
61 self.d["gradQSize"] = nUnknownsPad * (nDof**nDim) * nDim
62
63 # Face buffer size (Riemann)
64 self.d["BndFaceSize"] = nDataPad * (nDof * nDof3D)
65 self.d["BndFaceTotalSize"] = 2 * nDim * self.d["BndFaceSize"]
66 self.d["BndFluxSize"] = nUnknownsPad * (nDof * nDof3D)
67 self.d["BndFluxTotalSize"] = 2 * nDim * self.d["BndFluxSize"]
68
70 headfile_template=template_prefix + "CellData.template.h",
71 cppfile_template=template_prefix + "CellData.template.cpp",
72 classname=output_path + "/CellData",
73 namespace=namespace,
74 subdirectory=subdirectory + ".",
75 dictionary=self.d,
76 default_overwrite=True,
77 apply_iteratively=True,
78 )
79 output.add(generated_kernels)
80 output.makefile.add_h_file(output_path + "/CellData.h", generated=True)
81 output.makefile.add_cpp_file(output_path + "/CellData.cpp", generated=True)
generate_kernels(self, namespace, output, subdirectory, template_prefix, output_path)
Definition CellData.py:14