@@ -372,15 +372,9 @@ SolverMHDMuscl<3>::computeEmfAndUpdate(real_t dt, DataArray Udata)
372372// ///////////////////////////////////////////
373373template <>
374374void
375- SolverMHDMuscl<2 >::godunov_unsplit_impl(DataArray data_in, DataArray data_out, real_t dt )
375+ SolverMHDMuscl<2 >::godunov_unsplit_impl(DataArray data_in, DataArray data_out)
376376{
377377
378- real_t dtdx;
379- real_t dtdy;
380-
381- dtdx = dt / params.dx ;
382- dtdy = dt / params.dy ;
383-
384378 // fill ghost cell in data_in
385379 timers[TIMER_BOUNDARIES]->start ();
386380 make_boundaries (data_in);
@@ -396,17 +390,25 @@ SolverMHDMuscl<2>::godunov_unsplit_impl(DataArray data_in, DataArray data_out, r
396390 // convert conservative variable into primitives ones for the entire domain
397391 convertToPrimitives (data_in);
398392
393+ // compute new dt
394+ timers[TIMER_DT]->start ();
395+ compute_dt ();
396+ timers[TIMER_DT]->stop ();
397+
398+ const auto dtdx = m_dt / params.dx ;
399+ const auto dtdy = m_dt / params.dy ;
400+
399401 if (params.implementationVersion == 0 )
400402 {
401403
402404 // trace computation: fill arrays qm_x, qm_y, qp_x, qp_y
403- computeTrace (data_in, dt );
405+ computeTrace (data_in, m_dt );
404406
405407 // Compute flux via Riemann solver and update (time integration)
406- computeFluxesAndStore (dt );
408+ computeFluxesAndStore (m_dt );
407409
408410 // Compute Emf
409- computeEmfAndStore (dt );
411+ computeEmfAndStore (m_dt );
410412
411413 // actual update with fluxes
412414 UpdateFunctor2D_MHD::apply (params, data_out, Fluxes_x, Fluxes_y, dtdx, dtdy);
@@ -417,13 +419,13 @@ SolverMHDMuscl<2>::godunov_unsplit_impl(DataArray data_in, DataArray data_out, r
417419 else if (params.implementationVersion == 1 )
418420 {
419421 // trace computation: fill arrays qm_x, qm_y, qp_x, qp_y
420- computeTrace (data_in, dt );
422+ computeTrace (data_in, m_dt );
421423
422424 // Compute flux via Riemann solver and update (time integration)
423- computeFluxesAndUpdate (dt , data_out);
425+ computeFluxesAndUpdate (m_dt , data_out);
424426
425427 // Compute Emf and update magnetic field
426- computeEmfAndUpdate (dt , data_out);
428+ computeEmfAndUpdate (m_dt , data_out);
427429 }
428430 else if (params.implementationVersion == 2 )
429431 {
@@ -462,13 +464,9 @@ SolverMHDMuscl<2>::godunov_unsplit_impl(DataArray data_in, DataArray data_out, r
462464// ///////////////////////////////////////////
463465template <>
464466void
465- SolverMHDMuscl<3 >::godunov_unsplit_impl(DataArray data_in, DataArray data_out, real_t dt )
467+ SolverMHDMuscl<3 >::godunov_unsplit_impl(DataArray data_in, DataArray data_out)
466468{
467469
468- const real_t dtdx = dt / params.dx ;
469- const real_t dtdy = dt / params.dy ;
470- const real_t dtdz = dt / params.dz ;
471-
472470 // fill ghost cell in data_in
473471 timers[TIMER_BOUNDARIES]->start ();
474472 make_boundaries (data_in);
@@ -484,6 +482,15 @@ SolverMHDMuscl<3>::godunov_unsplit_impl(DataArray data_in, DataArray data_out, r
484482 // convert conservative variable into primitives ones for the entire domain
485483 convertToPrimitives (data_in);
486484
485+ // compute new dt
486+ timers[TIMER_DT]->start ();
487+ compute_dt ();
488+ timers[TIMER_DT]->stop ();
489+
490+ const auto dtdx = m_dt / params.dx ;
491+ const auto dtdy = m_dt / params.dy ;
492+ const auto dtdz = m_dt / params.dz ;
493+
487494 if (params.implementationVersion == 0 )
488495 {
489496
@@ -494,13 +501,13 @@ SolverMHDMuscl<3>::godunov_unsplit_impl(DataArray data_in, DataArray data_out, r
494501 computeMagSlopes (data_in);
495502
496503 // trace computation: fill arrays qm_x, qm_y, qm_z, qp_x, qp_y, qp_z
497- computeTrace (data_in, dt );
504+ computeTrace (data_in, m_dt );
498505
499506 // Compute flux via Riemann solver and update (time integration)
500- computeFluxesAndStore (dt );
507+ computeFluxesAndStore (m_dt );
501508
502509 // Compute Emf
503- computeEmfAndStore (dt );
510+ computeEmfAndStore (m_dt );
504511
505512 // actual update with fluxes
506513 UpdateFunctor3D_MHD::apply (params, data_out, Fluxes_x, Fluxes_y, Fluxes_z, dtdx, dtdy, dtdz);
@@ -517,13 +524,13 @@ SolverMHDMuscl<3>::godunov_unsplit_impl(DataArray data_in, DataArray data_out, r
517524 computeMagSlopes (data_in);
518525
519526 // trace computation: fill arrays qm_x, qm_y, qm_z, qp_x, qp_y, qp_z
520- computeTrace (data_in, dt );
527+ computeTrace (data_in, m_dt );
521528
522529 // Compute flux via Riemann solver and update (time integration)
523- computeFluxesAndUpdate (dt , data_out);
530+ computeFluxesAndUpdate (m_dt , data_out);
524531
525532 // Compute Emf and update magnetic field
526- computeEmfAndUpdate (dt , data_out);
533+ computeEmfAndUpdate (m_dt , data_out);
527534 }
528535 else if (params.implementationVersion == 2 )
529536 {
0 commit comments