def METHOD_NAME(self):
    if not any(socket.is_linked for socket in self.outputs):
        return
    surfaces_s = self.inputs['Surface'].sv_get()
    surfaces_s = ensure_nesting_level(surfaces_s, 2, data_types=(SvSurface,))
    src_point_s = self.inputs['UVPoints'].sv_get(default=[[]])
    src_point_s = ensure_nesting_level(src_point_s, 4)
    src_u_s = self.inputs['U'].sv_get()
    src_u_s = ensure_nesting_level(src_u_s, 3)
    src_v_s = self.inputs['V'].sv_get()
    src_v_s = ensure_nesting_level(src_v_s, 3)
    need_values = self.outputs['Curvature1'].is_linked or self.outputs['Curvature2'].is_linked
    need_directions = self.outputs['Dir1'].is_linked or self.outputs['Dir2'].is_linked
    need_gauss = self.outputs['Gauss'].is_linked
    need_mean = self.outputs['Mean'].is_linked
    need_matrix = self.outputs['Matrix'].is_linked
    c1_out = []
    c2_out = []
    dir1_out = []
    dir2_out = []
    mean_out = []
    gauss_out = []
    matrix_out = []
    for surfaces, src_points_i, src_u_i, src_v_i in zip_long_repeat(surfaces_s, src_point_s, src_u_s, src_v_s):
        new_curvatures = []
        for surface, src_points, src_us, src_vs in zip_long_repeat(surfaces, src_points_i, src_u_i, src_v_i):
            if self.input_mode == 'VERTICES':
                us, vs = self.parse_input(src_points)
            else:
                maxlen = max(len(src_us), len(src_vs))
                src_us = repeat_last_for_length(src_us, maxlen)
                src_vs = repeat_last_for_length(src_vs, maxlen)
                us, vs = np.array(src_us), np.array(src_vs)
            calculator = surface.curvature_calculator(us, vs, order=self.order)
            data = calculator.calc(need_values = need_values,
                                need_directions = need_directions,
                                need_gauss = need_gauss,
                                need_mean = need_mean,
                                need_matrix = need_matrix)
            if need_values:
                c1_out.append(data.principal_value_1.tolist())
                c2_out.append(data.principal_value_2.tolist())
            if need_directions:
                dir1_out.append(data.principal_direction_1.tolist())
                dir2_out.append(data.principal_direction_2.tolist())
            if need_mean:
                mean_out.append(data.mean.tolist())
            if need_gauss:
                gauss_out.append(data.gauss.tolist())
            if need_matrix:
                matrix_out.extend(data.matrix)
    self.outputs['Curvature1'].sv_set(c1_out)
    self.outputs['Curvature2'].sv_set(c2_out)
    self.outputs['Dir1'].sv_set(dir1_out)
    self.outputs['Dir2'].sv_set(dir2_out)
    self.outputs['Mean'].sv_set(mean_out)
    self.outputs['Gauss'].sv_set(gauss_out)
    self.outputs['Matrix'].sv_set(matrix_out)