def METHOD_NAME(self):
    if not any(socket.is_linked for socket in self.outputs):
        return
    sfields_s = self.inputs[S_FIELD_A.idx].sv_get(default=[[None]])
    vfields_s = self.inputs[V_FIELD_A.idx].sv_get(default=[[None]])
    if not isinstance(sfields_s, (list, tuple)):
        sfields_s = [sfields_s]
    if not isinstance(vfields_s, (list, tuple)):
        vfields_s = [vfields_s]
    vfields_out = []
    sfields_out = []
    for sfields, vfields in zip_long_repeat(sfields_s, vfields_s):
        if not isinstance(sfields, (list, tuple)):
            sfields = [sfields]
        if not isinstance(vfields, (list, tuple)):
            vfields = [vfields]
        for sfield, vfield in zip_long_repeat(sfields, vfields):
            if self.operation == 'GRAD':
                vfield = SvScalarFieldGradient(sfield, self.step)
                vfields_out.append(vfield)
            elif self.operation == 'DIV':
                sfield = SvVectorFieldDivergence(vfield, self.step)
                sfields_out.append(sfield)
            elif self.operation == 'LAPLACE':
                sfield = SvScalarFieldLaplacian(sfield, self.step)
                sfields_out.append(sfield)
            elif self.operation == 'ROTOR':
                vfield = SvVectorFieldRotor(vfield, self.step)
                vfields_out.append(vfield)
            else:
                raise Exception("Unsupported operation")
    self.outputs[V_FIELD_B.idx].sv_set(vfields_out)
    self.outputs[S_FIELD_B.idx].sv_set(sfields_out)