1def solveRiemannProblemX(faceCentre:
"const tarch::la::Vector<Dimensions,double>&", cellSize:
"const tarch::la::Vector<Dimensions,double>&", t:
"double", dt:
"double", faceData :
"const double* __restrict__", solution:
"double* __restrict__") ->
"void":
2 input = FaceDataBlock([[0, NumberOfUnknowns + NumberOfAuxiliaryVariables], [0, 2], [0, DGOrder + 1], [0, 1]],
"faceData",
"const double")
3 output = FaceDataBlock([[0, NumberOfUnknowns], [0, 2], [0, DGOrder + 1], [0, 1]],
"solution")
8 dsl_faceCentre = Vector(
"faceCentre")
9 dsl_cellSize = Vector(
"cellSize")
10 quadrature_positions = FaceDataBlock([[0, 1], [0, 1], [0, DGOrder + 1], [0, 1]], eval(
"getQuadraturePointInFace", index, dsl_faceCentre, dsl_cellSize, DGOrder, 0,
"SolverType::QuadraturePoints1d"),
"tarch::la::Vector<2, double>")
12 deltaQ = input[:, 1, :] - input[:, 0, :]
13 averageQ = 0.5 * (input[:, 1, :] + input[:, 0, :])
15 leftEigenvalues = FaceDataBlock([[0, 1], [0, 1], [0, DGOrder + 1], [0, 1]], eval(
"maxEigenvalue", input[:, 0, :], quadrature_positions, dsl_t, dsl_dt, 0))
16 rightEigenvalues = FaceDataBlock([[0, 1], [0, 1], [0, DGOrder + 1], [0, 1]], eval(
"maxEigenvalue", input[:, 1, :], quadrature_positions, dsl_t, dsl_dt, 0))
17 maxEigenvalues = max(leftEigenvalues, rightEigenvalues)
19 output[:, 0, :] = output[:, 0, :] - 0.5 * maxEigenvalues * deltaQ
20 output[:, 1, :] = output[:, 1, :] - 0.5 * maxEigenvalues * deltaQ
23 fluxLeft = FaceDataBlock([[0, NumberOfUnknowns], [0, 1], [0, DGOrder + 1], [0, 1]], eval(
"flux", input[:, 0, :], quadrature_positions, dsl_t, dsl_dt, 0))
24 fluxRight = FaceDataBlock([[0, NumberOfUnknowns], [0, 1], [0, DGOrder + 1], [0, 1]], eval(
"flux", input[:, 1, :], quadrature_positions, dsl_t, dsl_dt, 0))
25 output[:, 0, :] = output[:, 0, :] + 0.5 * (fluxLeft + fluxRight)
26 output[:, 1, :] = output[:, 1, :] + 0.5 * (fluxLeft + fluxRight)
28 if EvaluateNonconservativeProduct:
29 ncp = FaceDataBlock([[0, NumberOfUnknowns], [0, 1], [0, DGOrder + 1], [0, 1]], eval(
"nonconservativeProduct", averageQ, deltaQ, quadrature_positions, dsl_t, dsl_dt, 0))
30 output[:, 0, :] = output[:, 0, :] + 0.5 * ncp
31 output[:, 1, :] = output[:, 1, :] - 0.5 * ncp
34def solveRiemannProblemY(faceCentre:
"const tarch::la::Vector<Dimensions,double>&", cellSize:
"const tarch::la::Vector<Dimensions,double>&", t:
"double", dt:
"double", faceData :
"const double* __restrict__", solution:
"double* __restrict__") ->
"void":
35 input = FaceDataBlock([[0, NumberOfUnknowns + NumberOfAuxiliaryVariables], [0, DGOrder + 1], [0, 2], [0, 1]],
"faceData",
"const double")
36 output = FaceDataBlock([[0, NumberOfUnknowns], [0, DGOrder + 1], [0, 2], [0, 1]],
"solution")
41 dsl_faceCentre = Vector(
"faceCentre")
42 dsl_cellSize = Vector(
"cellSize")
43 quadrature_positions = FaceDataBlock([[0, 1], [0, DGOrder + 1], [0, 1], [0, 1]], eval(
"getQuadraturePointInFace", index, dsl_faceCentre, dsl_cellSize, DGOrder, 0,
"SolverType::QuadraturePoints1d"),
"tarch::la::Vector<2, double>")
45 deltaQ = input[:, :, 1] - input[:, :, 0]
46 averageQ = 0.5 * (input[:, :, 1] + input[:, :, 0])
48 bottomEigenvalues = FaceDataBlock([[0, 1], [0, DGOrder + 1], [0, 1], [0, 1]], eval(
"maxEigenvalue", input[:, :, 0], quadrature_positions, dsl_t, dsl_dt, 1))
49 topEigenvalues = FaceDataBlock([[0, 1], [0, DGOrder + 1], [0, 1], [0, 1]], eval(
"maxEigenvalue", input[:, :, 1], quadrature_positions, dsl_t, dsl_dt, 1))
50 maxEigenvalues = max(bottomEigenvalues, topEigenvalues)
52 output[:, :, 0] = output[:, :, 0] - 0.5 * maxEigenvalues * deltaQ
53 output[:, :, 1] = output[:, :, 1] - 0.5 * maxEigenvalues * deltaQ
56 fluxBottom = FaceDataBlock([[0, NumberOfUnknowns], [0, DGOrder + 1], [0, 1], [0, 1]], eval(
"flux", input[:, :, 0], quadrature_positions, dsl_t, dsl_dt, 1))
57 fluxTop = FaceDataBlock([[0, NumberOfUnknowns], [0, DGOrder + 1], [0, 1], [0, 1]], eval(
"flux", input[:, :, 1], quadrature_positions, dsl_t, dsl_dt, 1))
58 output[:, :, 0] = output[:, :, 0] + 0.5 * (fluxBottom + fluxTop)
59 output[:, :, 1] = output[:, :, 1] + 0.5 * (fluxBottom + fluxTop)
61 if EvaluateNonconservativeProduct:
62 ncp = FaceDataBlock([[0, NumberOfUnknowns], [0, DGOrder + 1], [0, 1], [0, 1]], eval(
"nonconservativeProduct", averageQ, deltaQ, quadrature_positions, dsl_t, dsl_dt, 1))
63 output[:, :, 0] = output[:, :, 0] + 0.5 * ncp
64 output[:, :, 1] = output[:, :, 1] - 0.5 * ncp