Skip to main content

admm_step

Function admm_step 

Source
pub fn admm_step<S>(
    buf: &mut AdmmBuffers,
    fft_ws: &mut Fft3dWorkspace,
    f_hat: &[Complex64],
    inv_a: &[f64],
    rho: f64,
    grid: &Grid,
    tol: f64,
    shrink_fn: S,
) -> bool
where S: Fn(f64, f64, f64, usize) -> (f64, f64, f64),
Expand description

Run one ADMM iteration step.

Performs the x-subproblem (spectral solve), convergence check, and fused z-subproblem + dual variable update.

The shrink_fn(vx, vy, vz, index) -> (zx, zy, zz) closure captures per-algorithm differences in the proximal operator.

§Arguments

  • buf - Pre-allocated buffers (modified in place)
  • fft_ws - FFT workspace
  • f_hat - Pre-computed constant RHS in frequency domain
  • inv_a - Pre-computed inverse operator
  • rho - ADMM penalty multiplier for divergence term
  • grid - Volume grid
  • tol - Convergence tolerance
  • shrink_fn - Proximal operator for z-subproblem

§Returns

true if converged (relative change < tol)