@@ -21,6 +21,7 @@ void create_A(RArray2D& A) {
21
21
22
22
constexpr_for<1 , INT_NEQS+1 >([&] (auto irow)
23
23
{
24
+
24
25
constexpr_for<1 , INT_NEQS+1 >([&] (auto jcol)
25
26
{
26
27
@@ -134,6 +135,89 @@ void linear_algebra() {
134
135
std::cout << std::setw (20 ) << x (jcol) << " " << std::setw (20 ) << b (jcol) << std::endl;
135
136
}
136
137
138
+ std::cout << std::endl;
139
+
140
+ std::cout << " the Jacobian mask seen by RHS::is_jacobian_term_used()" << std::endl;
141
+
142
+ // now output the Jacobian mask as seen by `is_jacobian_term_used<>()`
143
+
144
+ std::cout << std::setw (4 ) << " *" << " " ;
145
+
146
+ constexpr_for<1 , INT_NEQS+1 >([&] (auto i)
147
+ {
148
+ if constexpr (i < INT_NEQS) {
149
+ std::cout << std::setw (4 ) << short_spec_names_cxx[i-1 ] << " " ;
150
+ } else {
151
+ std::cout << std::setw (4 ) << " enuc" << " " ;
152
+ }
153
+ });
154
+
155
+ std::cout << std::endl;
156
+
157
+ constexpr_for<1 , INT_NEQS+1 >([&] (auto irow)
158
+ {
159
+
160
+ if constexpr (irow < INT_NEQS) {
161
+ std::cout << std::setw (4 ) << short_spec_names_cxx[irow-1 ] << " " ;
162
+ } else {
163
+ std::cout << std::setw (4 ) << " enuc" << " " ;
164
+ }
165
+
166
+ constexpr_for<1 , INT_NEQS+1 >([&] (auto jcol)
167
+ {
168
+ std::cout << std::setw (4 ) << RHS::is_jacobian_term_used<irow, jcol>() << " " ;
169
+ });
170
+ std::cout << std::endl;
171
+ });
172
+
173
+ std::cout << std::endl;
174
+
175
+ // now try to output a Jacobian mask based on the actual Jacobian
176
+
177
+ ArrayUtil::MathArray2D<1 , INT_NEQS, 1 , INT_NEQS> jac;
178
+
179
+ burn_t burn_state;
180
+ burn_state.rho = 1 .e8 ;
181
+ burn_state.T = 1 .e9 ;
182
+ for (int i = 0 ; i < NumSpec; ++i) {
183
+ burn_state.xn [i] = 1.0 / static_cast <amrex::Real>(NumSpec);
184
+ }
185
+
186
+ actual_jac (burn_state, jac);
187
+
188
+ std::cout << " the Jacobian mask from calling actual_jac" << std::endl;
189
+
190
+ std::cout << std::setw (4 ) << " *" << " " ;
191
+
192
+ for (int i = 1 ; i <= INT_NEQS; ++i) {
193
+ if (i < INT_NEQS) {
194
+ std::cout << std::setw (4 ) << short_spec_names_cxx[i-1 ] << " " ;
195
+ } else {
196
+ std::cout << std::setw (4 ) << " enuc" << " " ;
197
+ }
198
+ }
199
+
200
+ std::cout << std::endl;
201
+
202
+ for (int irow = 1 ; irow <= INT_NEQS; ++irow) {
203
+ if (irow < INT_NEQS) {
204
+ std::cout << std::setw (4 ) << short_spec_names_cxx[irow-1 ] << " " ;
205
+ } else {
206
+ std::cout << std::setw (4 ) << " enuc" << " " ;
207
+ }
208
+
209
+ for (int jcol = 1 ; jcol <= INT_NEQS; ++jcol) {
210
+
211
+ if (jac (irow, jcol) != 0.0 ) {
212
+ std::cout << std::setw (4 ) << 1 << " " ;
213
+ } else {
214
+ std::cout << std::setw (4 ) << 0 << " " ;
215
+ }
216
+ }
217
+ std::cout << std::endl;
218
+ }
219
+
220
+
137
221
}
138
222
139
223
#endif
0 commit comments