from pairoptions import pairoptions


def jacobiasmoptions(*args):
    #ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
    #
    #   Usage:
    #      options = jacobiasmoptions

    #retrieve options provided in *args
    arguments = pairoptions(*args)

    options = [['toolkit', 'petsc'],
               ['mat_type', 'mpiaij'],
               ['ksp_type', 'gmres'],
               ['pc_type', 'asm'],
               ['sub_pc_type', 'jacobi'],
               ['pc_asm_overlap', 3],
               ['ksp_max_it', 100],
               ['ksp_rtol', 1e-15]]

    #now, go through our arguments, and write over default options.
    for i in range(len(arguments.list)):
        arg1 = arguments.list[i][0]
        arg2 = arguments.list[i][1]
        found = 0
        for j in range(len(options)):
            joption = options[j][0]
            if joption == arg1:
                joption[1] = arg2
                options[j] = joption
                found = 1
                break
        if not found:
            #this option did not exist, add it:
            options.append([arg1, arg2])
    return options
