Skip to content

Commit a217b59

Browse files
committed
simple test works in backward euler
1 parent 255d749 commit a217b59

File tree

5 files changed

+319
-244
lines changed

5 files changed

+319
-244
lines changed

src/common/DirectSystemSolve.hpp

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,17 @@
11
#include "macros.hpp"
22

33
#include<cmath>
4+
5+
namespace hpcReact
6+
{
47
template< typename REAL_TYPE, int N >
58
HPCREACT_HOST_DEVICE void solveNxN_pivoted(REAL_TYPE A[N][N], REAL_TYPE b[N], REAL_TYPE x[N])
69
{
7-
int pivot[3] = {0, 1, 2}; // Row index tracker
10+
int pivot[N] = {0, 1, 2}; // Row index tracker
11+
for (int i = 0; i < N; i++)
12+
{
13+
pivot[i] = i;
14+
}
815

916
// **Step 1: Forward Elimination with Pivoting**
1017
for (int k = 0; k < N-1; k++)
@@ -42,8 +49,14 @@ HPCREACT_HOST_DEVICE void solveNxN_pivoted(REAL_TYPE A[N][N], REAL_TYPE b[N], RE
4249
}
4350

4451
// **Step 2: Back-Substitution**
45-
x[2] = b[pivot[2]] / A[pivot[2]][2];
46-
x[1] = (b[pivot[1]] - A[pivot[1]][2] * x[2]) / A[pivot[1]][1];
47-
x[0] = (b[pivot[0]] - A[pivot[0]][1] * x[1] - A[pivot[0]][2] * x[2]) / A[pivot[0]][0];
52+
for (int i = N - 1; i >= 0; --i) {
53+
x[i] = b[pivot[i]];
54+
for (int j = i + 1; j < N; j++) {
55+
x[i] -= A[pivot[i]][j] * x[j];
56+
}
57+
x[i] /= A[pivot[i]][i]; // Normalize
58+
}
59+
4860
}
4961

62+
} // namespace hpcReact

src/reactions/bulkGeneric/KineticReactions.hpp

Lines changed: 46 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,29 @@ namespace bulkGeneric
88
{
99

1010
template< typename REAL_TYPE,
11-
typename REAL_DATA_ARRAY_1D_VIEW_TYPE,
12-
typename REAL_CONST_DATA_ARRAY_1D_VIEW_TYPE,
13-
typename REAL_DATA_ARRAY_2D_VIEW_TYPE,
1411
typename INT_TYPE,
1512
typename INDEX_TYPE >
1613
class KineticReactions
1714
{
1815
public:
1916

2017
using RealType = REAL_TYPE;
21-
using RealDataArrayView1d = REAL_DATA_ARRAY_1D_VIEW_TYPE;
22-
using RealConstDataArrayView1d = REAL_CONST_DATA_ARRAY_1D_VIEW_TYPE;
23-
using RealDataArrayView2d = REAL_DATA_ARRAY_2D_VIEW_TYPE;
18+
// using RealDataArrayView1d = REAL_DATA_ARRAY_1D_VIEW_TYPE;
19+
// using RealConstDataArrayView1d = REAL_CONST_DATA_ARRAY_1D_VIEW_TYPE;
20+
// using RealDataArrayView2d = REAL_DATA_ARRAY_2D_VIEW_TYPE;
2421
using IntType = INT_TYPE;
2522
using IndexType = INDEX_TYPE;
2623

27-
template< typename PARAMS_DATA >
24+
template< typename PARAMS_DATA,
25+
typename ARRAY_1D_TO_CONST,
26+
typename ARRAY_1D,
27+
typename ARRAY_2D >
2828
static HPCREACT_HOST_DEVICE inline void
2929
computeReactionRates( RealType const & temperature,
3030
PARAMS_DATA const & params,
31-
RealConstDataArrayView1d const & primarySpeciesConcentration,
32-
RealDataArrayView1d & reactionRates,
33-
RealDataArrayView2d & reactionRatesDerivatives )
31+
ARRAY_1D_TO_CONST const & primarySpeciesConcentration,
32+
ARRAY_1D & reactionRates,
33+
ARRAY_2D & reactionRatesDerivatives )
3434
{
3535
computeReactionRates_impl< PARAMS_DATA, true >( temperature,
3636
params,
@@ -39,14 +39,16 @@ class KineticReactions
3939
reactionRatesDerivatives );
4040
}
4141

42-
template< typename PARAMS_DATA >
42+
template< typename PARAMS_DATA,
43+
typename ARRAY_1D_TO_CONST,
44+
typename ARRAY_1D >
4345
static HPCREACT_HOST_DEVICE inline void
4446
computeReactionRates( RealType const & temperature,
4547
PARAMS_DATA const & params,
46-
RealConstDataArrayView1d const & primarySpeciesConcentration,
47-
RealDataArrayView1d & reactionRates)
48+
ARRAY_1D_TO_CONST const & primarySpeciesConcentration,
49+
ARRAY_1D & reactionRates)
4850
{
49-
RealDataArrayView2d reactionRatesDerivatives;
51+
REAL_TYPE reactionRatesDerivatives[PARAMS_DATA::numReactions][PARAMS_DATA::numSpecies] = { 0.0 };
5052
computeReactionRates_impl< PARAMS_DATA, false >( temperature,
5153
params,
5254
primarySpeciesConcentration,
@@ -55,13 +57,16 @@ class KineticReactions
5557
}
5658

5759

58-
template< typename PARAMS_DATA >
60+
template< typename PARAMS_DATA,
61+
typename ARRAY_1D_TO_CONST,
62+
typename ARRAY_1D,
63+
typename ARRAY_2D >
5964
static HPCREACT_HOST_DEVICE inline void
6065
computeSpeciesRates( RealType const & temperature,
6166
PARAMS_DATA const & params,
62-
RealConstDataArrayView1d const & primarySpeciesConcentration,
63-
RealDataArrayView1d & speciesRates,
64-
RealDataArrayView2d & primarySpeciesRatesDerivatives )
67+
ARRAY_1D_TO_CONST const & primarySpeciesConcentration,
68+
ARRAY_1D & speciesRates,
69+
ARRAY_2D & primarySpeciesRatesDerivatives )
6570
{
6671
computeSpeciesRates_impl< PARAMS_DATA, true >( temperature,
6772
params,
@@ -70,14 +75,16 @@ class KineticReactions
7075
primarySpeciesRatesDerivatives );
7176
}
7277

73-
template< typename PARAMS_DATA >
78+
template< typename PARAMS_DATA,
79+
typename ARRAY_1D_TO_CONST,
80+
typename ARRAY_1D >
7481
static HPCREACT_HOST_DEVICE inline void
7582
computeSpeciesRates( RealType const & temperature,
7683
PARAMS_DATA const & params,
77-
RealConstDataArrayView1d const & primarySpeciesConcentration,
78-
RealDataArrayView1d & speciesRates )
84+
ARRAY_1D_TO_CONST const & primarySpeciesConcentration,
85+
ARRAY_1D & speciesRates )
7986
{
80-
RealDataArrayView2d primarySpeciesRatesDerivatives;
87+
double primarySpeciesRatesDerivatives;
8188
computeSpeciesRates_impl< PARAMS_DATA, false >( temperature,
8289
params,
8390
primarySpeciesConcentration,
@@ -87,21 +94,29 @@ class KineticReactions
8794

8895

8996
private:
90-
template< typename PARAMS_DATA, bool CALCULATE_DERIVATIVES >
97+
template< typename PARAMS_DATA,
98+
bool CALCULATE_DERIVATIVES,
99+
typename ARRAY_1D_TO_CONST,
100+
typename ARRAY_1D,
101+
typename ARRAY_2D >
91102
static HPCREACT_HOST_DEVICE inline void
92103
computeReactionRates_impl( RealType const & temperature,
93104
PARAMS_DATA const & params,
94-
RealConstDataArrayView1d const & primarySpeciesConcentration,
95-
RealDataArrayView1d & reactionRates,
96-
RealDataArrayView2d & reactionRatesDerivatives );
105+
ARRAY_1D_TO_CONST const & primarySpeciesConcentration,
106+
ARRAY_1D & reactionRates,
107+
ARRAY_2D & reactionRatesDerivatives );
97108

98-
template< typename PARAMS_DATA, bool CALCULATE_DERIVATIVES >
109+
template< typename PARAMS_DATA,
110+
bool CALCULATE_DERIVATIVES,
111+
typename ARRAY_1D_TO_CONST,
112+
typename ARRAY_1D,
113+
typename ARRAY_2D >
99114
static HPCREACT_HOST_DEVICE inline void
100115
computeSpeciesRates_impl( RealType const & temperature,
101-
PARAMS_DATA const & params,
102-
RealConstDataArrayView1d const & primarySpeciesConcentration,
103-
RealDataArrayView1d & speciesRates,
104-
RealDataArrayView2d & primarySpeciesRatesDerivatives );
116+
PARAMS_DATA const & params,
117+
ARRAY_1D_TO_CONST const & primarySpeciesConcentration,
118+
ARRAY_1D & speciesRates,
119+
ARRAY_2D & primarySpeciesRatesDerivatives );
105120

106121
};
107122

0 commit comments

Comments
 (0)