import pairoptions

def jacobiasmoptions(*args):
	#ASMOPTIONS - return Additive Shwartz Method with Jacobi preconditioner petsc options
	#
	#   Usage:
	#      options=jacobiasmoptions;
	
	#retrieve options provided in varargin
	arguments=pairoptions.pairoptions(*args) 
	
	options=[['toolkit','petsc'],['mat_type','aij'],['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
