diff --git a/Regression/Checksum/benchmarks_json/test_1d_theta_implicit_planar_pinch.json b/Regression/Checksum/benchmarks_json/test_1d_theta_implicit_planar_pinch.json index e0181550184..51b96021c09 100644 --- a/Regression/Checksum/benchmarks_json/test_1d_theta_implicit_planar_pinch.json +++ b/Regression/Checksum/benchmarks_json/test_1d_theta_implicit_planar_pinch.json @@ -1,29 +1,29 @@ { "lev=0": { - "Bx": 2.1912736317756045, - "By": 2.4851292469084845, + "Bx": 2.347554229130745, + "By": 2.254227700454954, "Bz": 0.0, - "Ex": 502596276.2641554, - "Ey": 445077555.93355495, - "Ez": 735298254.8259611, - "divE": 7738179438748.199, - "jx": 20295346360.21621, - "jy": 18500166578.05146, - "jz": 12896152163.81817, - "rho": 68.51529412833617 + "Ex": 551393126.2574284, + "Ey": 491617943.23209137, + "Ez": 714658615.6303692, + "divE": 7016314161711.369, + "jx": 18692954464.699497, + "jy": 20177259050.167336, + "jz": 12721426909.097504, + "rho": 62.123763388017494 }, - "electrons": { - "particle_momentum_x": 6.633861262255149e-21, - "particle_momentum_y": 6.57156805052218e-21, - "particle_momentum_z": 6.612071131081156e-21, - "particle_position_x": 163.63366259142643, + "deuterium": { + "particle_momentum_x": 4.035760123452947e-19, + "particle_momentum_y": 4.004963598310352e-19, + "particle_momentum_z": 4.0782810816965124e-19, + "particle_position_x": 163.6336698244632, "particle_weight": 1.4999875e+21 }, - "deuterium": { - "particle_momentum_x": 4.0555219989281625e-19, - "particle_momentum_y": 4.012108093779528e-19, - "particle_momentum_z": 4.037274466067505e-19, - "particle_position_x": 163.63366984188605, + "electrons": { + "particle_momentum_x": 6.6030232424328065e-21, + "particle_momentum_y": 6.60813358729526e-21, + "particle_momentum_z": 6.559430730541378e-21, + "particle_position_x": 163.63367200208899, "particle_weight": 1.4999875e+21 } } diff --git a/Regression/Checksum/benchmarks_json/test_2d_theta_implicit_planar_pinch.json b/Regression/Checksum/benchmarks_json/test_2d_theta_implicit_planar_pinch.json index 98897009b30..9e5c71ebed9 100644 --- a/Regression/Checksum/benchmarks_json/test_2d_theta_implicit_planar_pinch.json +++ b/Regression/Checksum/benchmarks_json/test_2d_theta_implicit_planar_pinch.json @@ -1,31 +1,31 @@ { "lev=0": { - "Bx": 9.069162586111297, - "By": 19.361810144285307, - "Bz": 12.107034717007863, - "Ex": 4193780781.9712296, - "Ey": 3007724460.40948, - "Ez": 4187550905.2162943, - "divE": 46810632867690.65, - "jx": 94112859497.26407, - "jy": 118766765057.53568, - "jz": 136347119759.39658, - "rho": 414.24713064231827 + "Bx": 9.275768517413653, + "By": 19.472307474063484, + "Bz": 11.610979590557633, + "Ex": 4177113295.3698635, + "Ey": 2879051080.583498, + "Ez": 4181787135.040885, + "divE": 47250533638439.05, + "jx": 91271135865.5671, + "jy": 115116958556.87042, + "jz": 142255859953.87067, + "rho": 418.1507147637307 }, - "electrons": { - "particle_momentum_x": 5.2809601200365096e-20, - "particle_momentum_y": 5.295981363178306e-20, - "particle_momentum_z": 5.2829658537615036e-20, - "particle_position_x": 1309.3090607484742, - "particle_position_y": 96.00683559953801, + "deuterium": { + "particle_momentum_x": 3.2203338208705e-18, + "particle_momentum_y": 3.2127841653787054e-18, + "particle_momentum_z": 3.2284163892421025e-18, + "particle_position_x": 1309.3091292829426, + "particle_position_y": 96.00796866051637, "particle_weight": 1.6501375e+18 }, - "deuterium": { - "particle_momentum_x": 3.2166143445626475e-18, - "particle_momentum_y": 3.2209130431028616e-18, - "particle_momentum_z": 3.226813184396913e-18, - "particle_position_x": 1309.3091292978781, - "particle_position_y": 96.00796866718042, + "electrons": { + "particle_momentum_x": 5.297572837196199e-20, + "particle_momentum_y": 5.298600055672404e-20, + "particle_momentum_z": 5.276908853465337e-20, + "particle_position_x": 1309.3090771126394, + "particle_position_y": 96.00571854694559, "particle_weight": 1.6501375e+18 } } diff --git a/Source/Evolve/WarpXEvolve.cpp b/Source/Evolve/WarpXEvolve.cpp index 064f61beb10..e5a151f1580 100644 --- a/Source/Evolve/WarpXEvolve.cpp +++ b/Source/Evolve/WarpXEvolve.cpp @@ -192,7 +192,8 @@ WarpX::Evolve (int numsteps) // Update timestep for electrostatic solver if a constant dt is not provided // This first synchronizes the position and velocity before setting the new timestep - if (electromagnetic_solver_id == ElectromagneticSolverAlgo::None && + if ((electromagnetic_solver_id == ElectromagneticSolverAlgo::None || + evolve_scheme == EvolveScheme::ThetaImplicitEM) && !m_const_dt.has_value() && m_dt_update_interval.contains(step+1)) { if (verbose_step) { amrex::Print() << Utils::TextMsg::Info("updating timestep"); @@ -384,13 +385,13 @@ void WarpX::OneStep ( // implicit solver if (m_implicit_solver) { + // advance fields and particles by one time step + m_implicit_solver->OneStep(a_cur_time, a_dt, a_step); + // perform particle collisions ExecutePythonCallback("beforecollisions"); mypc->doCollisions(a_step, a_cur_time, a_dt); ExecutePythonCallback("aftercollisions"); - - // advance fields and particles by one time step - m_implicit_solver->OneStep(a_cur_time, a_dt, a_step); } // explicit solver else {