@@ -1250,9 +1250,11 @@ vmecpp::OutputQuantities vmecpp::ComputeOutputQuantities(
12501250 output_quantities.vmec_internal_results = GatherDataFromThreads (
12511251 sign_of_jacobian, s, fc, constants, radial_partitioning, decomposed_x,
12521252 models_from_threads, radial_profiles);
1253+ output_quantities.vmec_internal_results .return_outputs_even_if_not_converged = indata.return_outputs_even_if_not_converged ;
12531254
12541255 if (vmec_status == VmecStatus::NORMAL_TERMINATION ||
1255- vmec_status == VmecStatus::SUCCESSFUL_TERMINATION) {
1256+ vmec_status == VmecStatus::SUCCESSFUL_TERMINATION ||
1257+ output_quantities.vmec_internal_results .return_outputs_even_if_not_converged ) {
12561258 MeshBledingBSubZeta (
12571259 s, fc,
12581260 /* m_vmec_internal_results=*/ output_quantities.vmec_internal_results );
@@ -2599,7 +2601,7 @@ vmecpp::JxBOutFileContents vmecpp::ComputeJxBOutputFileContents(
25992601 jxbout.jperp2 [jF] = dnorm1 * tjnorm * average_jperp2;
26002602
26012603 // Some quantities are only computed if VMEC++ actually converged.
2602- if (vmec_status == VmecStatus::SUCCESSFUL_TERMINATION) {
2604+ if (vmec_status == VmecStatus::SUCCESSFUL_TERMINATION || vmec_internal_results. return_outputs_even_if_not_converged ) {
26032605 // normalized toroidal magnetic flux
26042606 jxbout.phin [jF] = vmec_internal_results.phiF [jF] /
26052607 vmec_internal_results.phiF [fc.ns - 1 ];
@@ -2636,7 +2638,7 @@ vmecpp::JxBOutFileContents vmecpp::ComputeJxBOutputFileContents(
26362638 } // jF
26372639
26382640 // Some quantities are only computed if VMEC++ actually converged.
2639- if (vmec_status == VmecStatus::SUCCESSFUL_TERMINATION) {
2641+ if (vmec_status == VmecStatus::SUCCESSFUL_TERMINATION || vmec_internal_results. return_outputs_even_if_not_converged ) {
26402642 // The loop in jxbforce.f90:594 goes over js=2,ns1,
26412643 // which means that the last half-grid point is not touched.
26422644 for (int jH = 0 ; jH < vmec_internal_results.num_half - 1 ; ++jH) {
0 commit comments