17 std::string& scenario_string,
18 std::string& topography_string,
21 double a_interface_factor,
22 double a_max_distance_to_direct_surface
24 Context<Shortcuts, basisSize>(scenario_string, a_domainInfo) {
28 Topography* topography = TopographyFactory::createTopography(topography_string, a_domainInfo);
30 topography, a_domainInfo, a_solverInfo, a_interface_factor, a_max_distance_to_direct_surface
47 int numberOfData = s.NumberOfUnknowns + s.NumberOfAuxiliaryVariables;
50 kernels::idx4 id_xyzn(basisSize, basisSize, basisSize, Dimensions);
51 kernels::idx4 id_xyzf(basisSize, basisSize, basisSize, numberOfData);
53 double offset_x = center[0] - 0.5 * dx[0];
54 double offset_y = center[1] - 0.5 * dx[1];
55 double offset_z = center[2] - 0.5 * dx[2];
57 double width_x = dx[0];
58 double width_y = dx[1];
59 double width_z = dx[2];
61 double nodes[basisSize * basisSize * basisSize * Dimensions];
62 double alpha[basisSize * basisSize * basisSize];
63 double quad_nodes[basisSize];
66 std::copy_n(kernels::legendre::nodes[basisSize - 1], basisSize, quad_nodes);
68 for (
int i = 1; i < basisSize + 1; i++) {
69 quad_nodes[i - 1] = i /
static_cast<double>(basisSize + 1);
73 for (
int k = 0; k < basisSize; k++) {
74 double z = (offset_z + width_z * quad_nodes[k]);
75 for (
int j = 0; j < basisSize; j++) {
76 double y = (offset_y + width_y * quad_nodes[j]);
77 for (
int i = 0; i < basisSize; i++) {
78 double x = (offset_x + width_x * quad_nodes[i]);
79 nodes[id_xyzn(k, j, i, 0)] = x;
80 nodes[id_xyzn(k, j, i, 1)] = y;
81 nodes[id_xyzn(k, j, i, 2)] = z;
88 for (
int k = 0; k < basisSize; k++) {
89 for (
int j = 0; j < basisSize; j++) {
90 for (
int i = 0; i < basisSize; i++) {
91 luh[id_xyzf(k, j, i, s.alpha)] = alpha[id_xyz(k, j, i)];
92 this->
scenario->initUnknownsPointwise(nodes + id_xyzn(k, j, i, 0), center, t, dt, luh + id_xyzf(k, j, i, 0));
93 assertion(luh[id_xyzf(k, j, i, s.rho)] > 0.0);
98 for (
int k = 0; k < basisSize; k++) {
99 for (
int j = 0; j < basisSize; j++) {
100 for (
int i = 0; i < basisSize; i++) {
101 for (
int m = 0; m < numberOfData; m++) {
104 assertion(luh[id_xyzf(k, j, i, s.rho)] > 0.0);