Skip to content

Commit fce4f2c

Browse files
committed
* DASPK.h: Remove #include "Array-oct.h". #include <array>.
#include <vector>. Use std::array for variable m_info. Use std::vector for variables m_iwork, m_rwork, m_abs_tol, m_rel_tol. * DASPK.cc (do_integrate): Update syntax to use std::vector `[]` to access elements. New variable "atol_tmp" of type `Array<double>` to match output of `absolute_tolerance ()`. Initialize "m_abs_tol" from "atol_tmp". New variable "rtol_tmp" of type `Array<double>` to match output of `relative_tolerance ()`. Initialize "m_rel_tol" from "rtol_tmp". Update syntax to use std::vector `.data ()` instead of `Array<...>.rwdata ()`.
1 parent 844608a commit fce4f2c

2 files changed

Lines changed: 56 additions & 55 deletions

File tree

liboctave/numeric/DASPK.cc

Lines changed: 49 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -149,24 +149,13 @@ DASPK::do_integrate (double tout)
149149

150150
m_initialized = true;
151151

152-
m_info.resize (dim_vector (20, 1));
153-
154-
for (F77_INT i = 0; i < 20; i++)
155-
m_info(i) = 0;
152+
m_info.fill (0);
156153

157154
F77_INT n = octave::to_f77_int (size ());
158155

159156
nn = n;
160157

161-
m_info(0) = 0;
162-
163-
if (m_stop_time_set)
164-
{
165-
m_rwork(0) = m_stop_time;
166-
m_info(3) = 1;
167-
}
168-
else
169-
m_info(3) = 0;
158+
m_info[0] = 0;
170159

171160
// DAEFunc
172161

@@ -199,7 +188,7 @@ DASPK::do_integrate (double tout)
199188
return retval;
200189
}
201190

202-
m_info(4) = (user_jac ? 1 : 0);
191+
m_info[4] = (user_jac ? 1 : 0);
203192

204193
DAEFunc::m_reset = false;
205194

@@ -217,24 +206,35 @@ DASPK::do_integrate (double tout)
217206
if (eavfet == 1)
218207
m_lrw += n;
219208

220-
m_iwork.resize (dim_vector (m_liw, 1));
221-
m_rwork.resize (dim_vector (m_lrw, 1));
209+
m_iwork.resize (m_liw);
210+
m_rwork.resize (m_lrw);
211+
212+
if (m_stop_time_set)
213+
{
214+
m_info[3] = 1;
215+
m_rwork[0] = m_stop_time;
216+
}
217+
else
218+
m_info[3] = 0;
222219

223220
// DASPK_options
224221

225-
m_abs_tol = absolute_tolerance ();
226-
m_rel_tol = relative_tolerance ();
222+
Array<double> atol_tmp = absolute_tolerance ();
223+
m_abs_tol.assign (atol_tmp.data (), atol_tmp.data () + atol_tmp.numel ());
224+
225+
Array<double> rtol_tmp = relative_tolerance ();
226+
m_rel_tol.assign (rtol_tmp.data (), rtol_tmp.data () + rtol_tmp.numel ());
227227

228-
F77_INT abs_tol_len = octave::to_f77_int (m_abs_tol.numel ());
229-
F77_INT rel_tol_len = octave::to_f77_int (m_rel_tol.numel ());
228+
F77_INT abs_tol_len = octave::to_f77_int (m_abs_tol.size ());
229+
F77_INT rel_tol_len = octave::to_f77_int (m_rel_tol.size ());
230230

231231
if (abs_tol_len == 1 && rel_tol_len == 1)
232232
{
233-
m_info(1) = 0;
233+
m_info[1] = 0;
234234
}
235235
else if (abs_tol_len == n && rel_tol_len == n)
236236
{
237-
m_info(1) = 1;
237+
m_info[1] = 1;
238238
}
239239
else
240240
{
@@ -249,28 +249,28 @@ DASPK::do_integrate (double tout)
249249
double hmax = maximum_step_size ();
250250
if (hmax >= 0.0)
251251
{
252-
m_rwork(1) = hmax;
253-
m_info(6) = 1;
252+
m_rwork[1] = hmax;
253+
m_info[6] = 1;
254254
}
255255
else
256-
m_info(6) = 0;
256+
m_info[6] = 0;
257257

258258
double h0 = initial_step_size ();
259259
if (h0 >= 0.0)
260260
{
261-
m_rwork(2) = h0;
262-
m_info(7) = 1;
261+
m_rwork[2] = h0;
262+
m_info[7] = 1;
263263
}
264264
else
265-
m_info(7) = 0;
265+
m_info[7] = 0;
266266

267267
octave_idx_type maxord = maximum_order ();
268268
if (maxord >= 0)
269269
{
270270
if (maxord > 0 && maxord < 6)
271271
{
272-
m_info(8) = 1;
273-
m_iwork(2) = octave::to_f77_int (maxord);
272+
m_info[8] = 1;
273+
m_iwork[2] = octave::to_f77_int (maxord);
274274
}
275275
else
276276
{
@@ -304,7 +304,7 @@ DASPK::do_integrate (double tout)
304304
m_integration_error = true;
305305
return retval;
306306
}
307-
m_iwork(40+i) = val;
307+
m_iwork[40+i] = val;
308308
}
309309
}
310310
else
@@ -320,7 +320,7 @@ DASPK::do_integrate (double tout)
320320

321321
case 0:
322322
case 2:
323-
m_info(9) = octave::to_f77_int (eiq);
323+
m_info[9] = octave::to_f77_int (eiq);
324324
break;
325325

326326
default:
@@ -354,7 +354,7 @@ DASPK::do_integrate (double tout)
354354
"%" OCTAVE_IDX_TYPE_FORMAT, eiq);
355355

356356
for (F77_INT i = 0; i < n; i++)
357-
m_iwork(lid+i) = (av(i) ? -1 : 1);
357+
m_iwork[lid+i] = (av(i) ? -1 : 1);
358358
}
359359
else
360360
{
@@ -374,12 +374,12 @@ DASPK::do_integrate (double tout)
374374
return retval;
375375
}
376376

377-
m_info(10) = octave::to_f77_int (ccic);
377+
m_info[10] = octave::to_f77_int (ccic);
378378
}
379379

380380
if (eavfet)
381381
{
382-
m_info(15) = 1;
382+
m_info[15] = 1;
383383

384384
// FIXME: this code is duplicated above.
385385

@@ -400,7 +400,7 @@ DASPK::do_integrate (double tout)
400400
eiq);
401401

402402
for (F77_INT i = 0; i < n; i++)
403-
m_iwork(lid+i) = (av(i) ? -1 : 1);
403+
m_iwork[lid+i] = (av(i) ? -1 : 1);
404404
}
405405
}
406406

@@ -410,13 +410,13 @@ DASPK::do_integrate (double tout)
410410

411411
if (ich.numel () == 6)
412412
{
413-
m_iwork(31) = octave::to_f77_int (octave::math::nint_big (ich(0)));
414-
m_iwork(32) = octave::to_f77_int (octave::math::nint_big (ich(1)));
415-
m_iwork(33) = octave::to_f77_int (octave::math::nint_big (ich(2)));
416-
m_iwork(34) = octave::to_f77_int (octave::math::nint_big (ich(3)));
413+
m_iwork[31] = octave::to_f77_int (octave::math::nint_big (ich(0)));
414+
m_iwork[32] = octave::to_f77_int (octave::math::nint_big (ich(1)));
415+
m_iwork[33] = octave::to_f77_int (octave::math::nint_big (ich(2)));
416+
m_iwork[34] = octave::to_f77_int (octave::math::nint_big (ich(3)));
417417

418-
m_rwork(13) = ich(4);
419-
m_rwork(14) = ich(5);
418+
m_rwork[13] = ich(4);
419+
m_rwork[14] = ich(5);
420420
}
421421
else
422422
{
@@ -427,7 +427,7 @@ DASPK::do_integrate (double tout)
427427
return retval;
428428
}
429429

430-
m_info(16) = 1;
430+
m_info[16] = 1;
431431
}
432432

433433
octave_idx_type pici = print_initial_condition_info ();
@@ -436,7 +436,7 @@ DASPK::do_integrate (double tout)
436436
case 0:
437437
case 1:
438438
case 2:
439-
m_info(17) = octave::to_f77_int (pici);
439+
m_info[17] = octave::to_f77_int (pici);
440440
break;
441441

442442
default:
@@ -456,13 +456,13 @@ DASPK::do_integrate (double tout)
456456
double *px = m_x.rwdata ();
457457
double *pxdot = m_xdot.rwdata ();
458458

459-
F77_INT *pinfo = m_info.rwdata ();
459+
F77_INT *pinfo = m_info.data ();
460460

461-
double *prel_tol = m_rel_tol.rwdata ();
462-
double *pabs_tol = m_abs_tol.rwdata ();
461+
double *prel_tol = m_rel_tol.data ();
462+
double *pabs_tol = m_abs_tol.data ();
463463

464-
double *prwork = m_rwork.rwdata ();
465-
F77_INT *piwork = m_iwork.rwdata ();
464+
double *prwork = m_rwork.data ();
465+
F77_INT *piwork = m_iwork.data ();
466466

467467
double *dummy = nullptr;
468468
F77_INT *idummy = nullptr;

liboctave/numeric/DASPK.h

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,10 @@
2828

2929
#include "octave-config.h"
3030

31+
#include <array>
3132
#include <string>
33+
#include <vector>
3234

33-
#include "Array-oct.h"
3435
#include "DASPK-opts.h"
3536

3637
#include "mx-fwd.h"
@@ -76,13 +77,13 @@ class OCTAVE_API DASPK : public DAE, public DASPK_options
7677
octave_f77_int_type m_liw;
7778
octave_f77_int_type m_lrw;
7879

79-
Array<octave_f77_int_type> m_info;
80-
Array<octave_f77_int_type> m_iwork;
80+
std::array<octave_f77_int_type, 20> m_info;
81+
std::vector<octave_f77_int_type> m_iwork;
8182

82-
Array<double> m_rwork;
83+
std::vector<double> m_rwork;
8384

84-
Array<double> m_abs_tol;
85-
Array<double> m_rel_tol;
85+
std::vector<double> m_abs_tol;
86+
std::vector<double> m_rel_tol;
8687
};
8788

8889
#endif

0 commit comments

Comments
 (0)