multigrid

emg3d.solver.multigrid(grid, model, sfield, efield, var, **kwargs)[source]

Multigrid solver for 3D controlled-source electromagnetic (CSEM) data.

Multigrid solver as presented in [Muld06], including semicoarsening and line relaxation as presented in and [Muld07].

  • The electric field is stored in-place in efield.
  • The number of multigrid cycles is stored in var.it.
  • The current error (l2-norm) is stored in var.l2.
  • The reference error (l2-norm of sfield) is stored in var.l2_refe.

This function is called by solve().

Parameters:
grid : emg3d.meshes.TensorMesh

The grid. See emg3d.meshes.TensorMesh.

model : emg3d.models.VolumeModel

The Model. See emg3d.models.VolumeModel.

sfield : emg3d.fields.SourceField

The source field. See emg3d.fields.get_source_field().

efield : emg3d.fields.Field

The electric field. See emg3d.fields.Field.

var : MGParameters instance

As returned by multigrid().

**kwargs : Recursion parameters.

Do not use; only used internally by recursion; level (current coarsening level) and new_cycmax (new maximum of MG cycles, takes care of V/W/F-cycling).