From cba516b0784c09f7131bc7f51e3fcc29ed4467bc Mon Sep 17 00:00:00 2001 From: roelof-groenewald Date: Fri, 1 Dec 2023 11:06:06 -0800 Subject: [PATCH] the external current only needs to be calculated once per field solve step --- Source/FieldSolver/WarpXPushFieldsHybridPIC.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/FieldSolver/WarpXPushFieldsHybridPIC.cpp b/Source/FieldSolver/WarpXPushFieldsHybridPIC.cpp index 0c63148400d..00c2ddab73a 100644 --- a/Source/FieldSolver/WarpXPushFieldsHybridPIC.cpp +++ b/Source/FieldSolver/WarpXPushFieldsHybridPIC.cpp @@ -54,6 +54,9 @@ void WarpX::HybridPICEvolveFields () // Get requested number of substeps to use int sub_steps = m_hybrid_pic_model->m_substeps / 2; + // Get the external current + m_hybrid_pic_model->GetCurrentExternal(m_edge_lengths); + // Reference hybrid-PIC multifabs auto& rho_fp_temp = m_hybrid_pic_model->rho_fp_temp; auto& current_fp_temp = m_hybrid_pic_model->current_fp_temp; @@ -95,7 +98,6 @@ void WarpX::HybridPICEvolveFields () // momentum equation for (int sub_step = 0; sub_step < sub_steps; sub_step++) { - m_hybrid_pic_model->GetCurrentExternal(m_edge_lengths); m_hybrid_pic_model->CalculateCurrentAmpere(Bfield_fp, m_edge_lengths); m_hybrid_pic_model->HybridPICSolveE( Efield_fp, current_fp_temp, Bfield_fp, rho_fp_temp, m_edge_lengths, @@ -124,7 +126,6 @@ void WarpX::HybridPICEvolveFields () // Now push the B field from t=n+1/2 to t=n+1 using the n+1/2 quantities for (int sub_step = 0; sub_step < sub_steps; sub_step++) { - m_hybrid_pic_model->GetCurrentExternal(m_edge_lengths); m_hybrid_pic_model->CalculateCurrentAmpere(Bfield_fp, m_edge_lengths); m_hybrid_pic_model->HybridPICSolveE( Efield_fp, current_fp, Bfield_fp, rho_fp_temp, m_edge_lengths, @@ -157,7 +158,6 @@ void WarpX::HybridPICEvolveFields () m_hybrid_pic_model->CalculateElectronPressure(DtType::Full); // Update the E field to t=n+1 using the extrapolated J_i^n+1 value - m_hybrid_pic_model->GetCurrentExternal(m_edge_lengths); m_hybrid_pic_model->CalculateCurrentAmpere(Bfield_fp, m_edge_lengths); m_hybrid_pic_model->HybridPICSolveE( Efield_fp, current_fp_temp, Bfield_fp, rho_fp, m_edge_lengths,