Index: /issm/trunk-jpl/src/m/solvers/SolvOptionTranslater.sh
===================================================================
--- /issm/trunk-jpl/src/m/solvers/SolvOptionTranslater.sh	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/SolvOptionTranslater.sh	(revision 25246)
@@ -0,0 +1,122 @@
+PythonFiles=($(find . -name "*.py"))
+#PythonFiles=(~/Model/issm_dev/src/m/classes/clusters/generic.py)
+#PythonFiles=($(find . -name $1))
+operators=(- + \\* \\/ \< \>)
+multop=(+= -= \\*= == \>= \<= !=)
+compop=(\< \> == \>= \<= !=)
+keywords=(axis delimiter fmt shell mode dtype zlib)
+
+#needs:
+#   -negative number don't need spaces
+#   -equals in options don't need spaces
+
+for PythonName in "${PythonFiles[@]}"; do
+    startword=($(awk '{print $1; exit}' "$PythonName" ))
+
+    if [[ "$startword" == "function" ]]; then
+	echo treating "$PythonName"
+	cp "$PythonName" "$PythonName".bkp
+
+	#first add the imports
+	sed -i '1s/^/from collections import OrderedDict\n\n\n/' "$PythonName"
+	sed -i '1s/^/from pairoptions import pairoptions\n/' "$PythonName"
+	# and the return
+	echo "return solverOptions" >> "$PythonName"
+
+	#define the function
+	sed -i "s/function solverOptions=\([a-z]\+\)(varargin)/def \1(\*args):/g" "$PythonName"
+
+	#brutal indentation from line 6, but that should work here
+	sed -i '6~1s/^/    /' "$PythonName"
+
+
+	#first deal with equal signs
+	#-should e spaced one except when ==, += , -= and if part of options
+	sed -i "s/\([][:alnum:]]\+\)=\([[:alnum:]'\"]\+\)/\1 = \2/g"  "$PythonName"
+	sed -i  's/ \+= \+/ = /g' "$PythonName"   #reduce number of spaces to one before and after =
+
+	#replace varargin
+	sed -i 's/varargin{:}/*args/g' "$PythonName"
+	sed -i 's/varargin/*args/g' "$PythonName"
+
+	#change getfieldvalue
+	sed -i 's/getfieldvalue(options, /options.getfieldvalue(/g' "$PythonName"
+
+	#replace struct
+	sed -i 's/struct()/OrderedDict()/g' "$PythonName"
+
+	#change to dict format
+	sed -i "s/\(solverOptions\).\([a-z]\+[_[a-z]\+]*\)/\1['\2']/g" "$PythonName"
+
+	#shift commment command from matlab
+	sed -i 's/%/#/g' "$PythonName"
+
+	#Add spaces after coma and limit to one space
+	sed -i  's/,/, /g' "$PythonName"
+	sed -i  's/, \+/, /g' "$PythonName"
+
+	#two space for inline comments
+	sed -i  's/\([[:alnum:]]\) \+#/\1  #/g' "$PythonName"
+
+	#fix equals continuing with brackets
+	sed -i 's/=\[/ = \[/g' "$PythonName"
+	sed -i 's/ \+= \[/ = \[/g' "$PythonName"
+	#same for quote
+	sed -i "s/='/ = '/g" "$PythonName"
+	sed -i "s/ \+= '/ = '/g" "$PythonName"
+
+
+	#deal with operators (+, -, /, *)
+	for OP in "${operators[@]}"; do
+    	    sed -i  's/'"$OP"'/ '"$OP"' /g' "$PythonName"
+    	    sed -i  's/ \+'"$OP"' \+/ '"$OP"' /g' "$PythonName"
+	done
+	sed -i 's/\* args/\*args/g' "$PythonName"
+
+	# get multiple operators back together
+	sed -i  's/+ \+=/+=/g' "$PythonName"
+	sed -i  's/- \+=/-=/g' "$PythonName"
+	sed -i  's/= \+=/==/g' "$PythonName"
+	sed -i  's/> \+=/>=/g' "$PythonName"
+	sed -i  's/< \+=/<=/g' "$PythonName"
+	sed -i  's/! \+=/!=/g' "$PythonName"
+	sed -i  's/\* \+\*/\*\*/g' "$PythonName"
+	sed -i  's/e - /e-/g' "$PythonName"
+
+	#power operator does not need spaces
+	sed -i  's/ \+\*\* \+/\*\*/g' "$PythonName"
+
+	# and fix their spacing
+	for MOP in "${multop[@]}"; do
+    	    sed -i  's/'"$MOP"'/ '"$MOP"' /g' "$PythonName"
+    	    sed -i  's/ \+'"$MOP"' \+/ '"$MOP"' /g' "$PythonName"
+	done
+
+	# get comparison operators without space in strings (for checkfield)
+	for OP in "${compop[@]}";do
+	    sed -i "s/' "$OP" '/'"$OP"'/g" "$PythonName"
+	done
+
+
+	sed -i  's/ \+= \+/ = /g' "$PythonName"   #reduce number of spaces to one before and after =
+
+	# fix path names
+	templength=1
+	while [ $templength -gt 0 ]; do
+    	    sed -i  "s/'\([^ ]*\) \/ /'\1\//g w temp.tmp" "$PythonName"
+    	    templength=$(wc -l < temp.tmp)
+	done
+
+	#replace tab by 4 spaces
+	sed -i 's/\t/    /g' "$PythonName"
+
+	#some extraneous spaces
+	sed -i 's/( /(/g' "$PythonName"
+	#remove trailing spaces too
+	sed -i  's/[ \t]*$//' "$PythonName"
+
+	#remove end of line semicolon and backslash
+	sed -i 's/;$//g' "$PythonName"
+	sed -i 's/\\$//g' "$PythonName"
+    fi
+done
Index: /issm/trunk-jpl/src/m/solvers/asmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/asmoptions.py	(revision 25245)
+++ /issm/trunk-jpl/src/m/solvers/asmoptions.py	(revision 25246)
@@ -1,3 +1,3 @@
-import pairoptions
+from pairoptions import pairoptions
 
 
@@ -8,6 +8,6 @@
     #      options = asmoptions
 
-    #retrieve options provided in varargin
-    arguments = pairoptions.pairoptions(*args)
+    #retrieve options provided in *args
+    arguments = pairoptions(*args)
 
     options = [['toolkit', 'petsc'],
Index: /issm/trunk-jpl/src/m/solvers/bcgsasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgsasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgsasmoptions.py	(revision 25246)
@@ -0,0 +1,19 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+from pairoptions import pairoptions
+    from collections import OrderedDict
+
+
+    def bcgsasmoptions(*args):
+
+        #retrieve options provided in *args
+        options = pairoptions(*args)
+        solverOptions = OrderedDict()
+        solverOptions['toolkit'] = 'petsc'
+        solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+        solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+        solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+        return solverOptions
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgsbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgsbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgsbjacobioptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgsbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgsgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgsgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgsgamgoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgsgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgsgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgsgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgsgasmoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgsgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgshypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgshypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgshypreoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgshypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgsjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgsjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgsjacobioptions.py	(revision 25246)
@@ -0,0 +1,19 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+from pairoptions import pairoptions
+    from collections import OrderedDict
+
+
+    def bcgsjacobioptions(*args):
+
+        options = pairoptions(*args)
+        solverOptions = OrderedDict()
+        solverOptions['toolkit'] = 'petsc'
+        solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+        solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+        solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+        return solverOptions
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgslasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgslasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgslasmoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgslbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgslbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgslbjacobioptions.py	(revision 25246)
@@ -0,0 +1,16 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslbjacobioptions(*args):
+
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+    solverOptions['ksp_max_it'] = options.getfieldvalue('ksp_max_it', 100)
+    solverOptions['ksp_rtol'] = options.getfieldvalue('ksp_rtol', 1e-15)
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgslgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgslgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgslgamgoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgslgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgslgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgslgasmoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgslhypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgslhypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgslhypreoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgsljacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgsljacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgsljacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgsljacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgslmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgslmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgslmgoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgslnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgslnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgslnoneoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgslpbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgslpbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgslpbjacobioptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgslsoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgslsoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgslsoroptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgslsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgsl')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgsmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgsmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgsmgoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgsmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgsnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgsnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgsnoneoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgsmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgspbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgspbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgspbjacobioptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgspbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bcgssoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bcgssoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bcgssoroptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bcgssoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bicgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bicgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bicgasmoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bicgbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bicgbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bicgbjacobioptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicgbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bicggamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bicggamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bicggamgoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicggamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bicggasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bicggasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bicggasmoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicggasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bicghypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bicghypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bicghypreoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicghypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bicgjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bicgjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bicgjacobioptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicgjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bicgmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bicgmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bicgmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicgmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bicgnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bicgnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bicgnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicgmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bicgpbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bicgpbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bicgpbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicgpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/bicgsoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/bicgsoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/bicgsoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def bicgsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'bicg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cggamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cggamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cggamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cggamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cggasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cggasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cggasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cggasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cghypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cghypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cghypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cghypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgneasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgneasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgneasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgneasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgnebjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgnebjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgnebjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnebjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgnegamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgnegamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgnegamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnegamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgnegasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgnegasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgnegasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnegasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgnehypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgnehypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgnehypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnehypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgnejacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgnejacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgnejacobioptions.py	(revision 25246)
@@ -0,0 +1,20 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+from pairoptions import pairoptions
+    from collections import OrderedDict
+
+
+    def cgnejacobioptions(*args):
+
+        #retrieve options provided in *args
+        options = pairoptions(*args)
+        solverOptions = OrderedDict()
+        solverOptions['toolkit'] = 'petsc'
+        solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+        solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+        solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+        return solverOptions
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgnemgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgnemgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgnemgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnemgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgnenoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgnenoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgnenoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnemgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgnepbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgnepbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgnepbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnepbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgnesoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgnesoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgnesoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnesoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgne')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgnoneoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgpbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgpbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgpbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgsasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgsasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgsasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgsbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgsbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgsbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgsgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgsgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgsgamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgsgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgsgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgsgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgshypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgshypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgshypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgshypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgsjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgsjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgsjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgsmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgsmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgsmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgsnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgsnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgsnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgsoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgsoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgsoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgspbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgspbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgspbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgspbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/cgssoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/cgssoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/cgssoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def cgssoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/conditionnumberoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/conditionnumberoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/conditionnumberoptions.py	(revision 25246)
@@ -0,0 +1,22 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+function cn = conditionnumberoptions(*args)
+    #MULTIGRIDOPTIONS - use Multigrid
+    #
+    #   Usage:
+    #      options = mgoptions
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    cn = OrderedDict()
+    cn.toolkit = 'petsc'
+    cn.mat_type = getfieldvalue(options, 'mat_type', 'mpiaij')
+    cn.ksp_type = getfieldvalue(options, 'ksp_type', 'gmres')
+    cn.pc_type = getfieldvalue(options, 'pc_type', 'none')
+    cn.ksp_monitor_singular_value = getfieldvalue(options, 'ksp_monitor_singular_value', '')
+    cn.ksp_gmres_restart = getfieldvalue(options, 'ksp_gmres_restart', 1000)
+    cn.info = getfieldvalue(options, 'info', '')
+    cn.log_summary = getfieldvalue(options, 'log_summary', '')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/crasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/crasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/crasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/crbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/crbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/crbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/crgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/crgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/crgamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/crgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/crgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/crgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/crhypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/crhypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/crhypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/crjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/crjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/crjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/crmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/crmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/crmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/crnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/crnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/crnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/crpbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/crpbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/crpbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/crsoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/crsoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/crsoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def crsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'cr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/dgmresasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/dgmresasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/dgmresasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmresasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/dgmresbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/dgmresbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/dgmresbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmresbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/dgmresgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/dgmresgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/dgmresgamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmresgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/dgmresgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/dgmresgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/dgmresgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmresgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/dgmreshypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/dgmreshypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/dgmreshypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmreshypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/dgmresjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/dgmresjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/dgmresjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmresjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/dgmresmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/dgmresmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/dgmresmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/dgmresnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/dgmresnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/dgmresnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/dgmrespbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/dgmrespbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/dgmrespbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmrespbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/dgmressoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/dgmressoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/dgmressoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def dgmressoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'dgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/fgmresasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/fgmresasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/fgmresasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmresasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/fgmresbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/fgmresbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/fgmresbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmresbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/fgmresgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/fgmresgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/fgmresgamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmresgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/fgmresgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/fgmresgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/fgmresgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmresgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/fgmreshypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/fgmreshypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/fgmreshypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmreshypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/fgmresjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/fgmresjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/fgmresjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmresjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/fgmresmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/fgmresmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/fgmresmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/fgmresnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/fgmresnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/fgmresnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/fgmrespbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/fgmrespbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/fgmrespbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmrespbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/fgmressoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/fgmressoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/fgmressoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def fgmressoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'fgmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gcrasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gcrasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gcrasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gcrbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gcrbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gcrbjacobioptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gcrgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gcrgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gcrgamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gcrgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gcrgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gcrgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gcrhypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gcrhypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gcrhypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gcrjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gcrjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gcrjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gcrmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gcrmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gcrmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gcrnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gcrnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gcrnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gcrpbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gcrpbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gcrpbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gcrsoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gcrsoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gcrsoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gcrsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gcr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gltrasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gltrasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gltrasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gltrbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gltrbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gltrbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gltrgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gltrgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gltrgamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gltrgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gltrgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gltrgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gltrhypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gltrhypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gltrhypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gltrjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gltrjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gltrjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gltrmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gltrmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gltrmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gltrnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gltrnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gltrnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gltrpbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gltrpbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gltrpbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gltrsoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gltrsoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gltrsoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gltrsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gltr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gmresasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gmresasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gmresasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmresasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gmresbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gmresbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gmresbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmresbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gmresgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gmresgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gmresgamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmresgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gmresgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gmresgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gmresgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmresgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gmreshypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gmreshypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gmreshypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmreshypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gmresjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gmresjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gmresjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmresjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gmresmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gmresmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gmresmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gmresnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gmresnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gmresnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gmrespbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gmrespbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gmrespbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmrespbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/gmressoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/gmressoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/gmressoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def gmressoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'gmres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/ibcgsasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/ibcgsasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/ibcgsasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgsasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/ibcgsbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/ibcgsbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/ibcgsbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgsbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/ibcgsgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/ibcgsgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/ibcgsgamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgsgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/ibcgsgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/ibcgsgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/ibcgsgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgsgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/ibcgshypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/ibcgshypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/ibcgshypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgshypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/ibcgsjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/ibcgsjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/ibcgsjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgsjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/ibcgsmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/ibcgsmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/ibcgsmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgsmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/ibcgsnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/ibcgsnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/ibcgsnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgsmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/ibcgspbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/ibcgspbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/ibcgspbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgspbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/ibcgssoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/ibcgssoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/ibcgssoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def ibcgssoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'ibcgs')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/issmgslsolver.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/issmgslsolver.py	(revision 25245)
+++ /issm/trunk-jpl/src/m/solvers/issmgslsolver.py	(revision 25246)
@@ -1,4 +1,4 @@
+from pairoptions import pairoptions
 from collections import OrderedDict
-import pairoptions
 
 
@@ -9,6 +9,6 @@
     #      options = issmsolver
 
-    #retrieve options provided in varargin
-    arguments = pairoptions.pairoptions(*args)
+    #retrieve options provided in *args
+    arguments = pairoptions(*args)
 
     options = OrderedDict()
Index: /issm/trunk-jpl/src/m/solvers/issmmumpssolver.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/issmmumpssolver.py	(revision 25245)
+++ /issm/trunk-jpl/src/m/solvers/issmmumpssolver.py	(revision 25246)
@@ -1,4 +1,4 @@
+from pairoptions import pairoptions
 from collections import OrderedDict
-import pairoptions
 
 
@@ -9,6 +9,6 @@
     #      options = issmsolver
 
-    #retrieve options provided in varargin
-    arguments = pairoptions.pairoptions(*args)
+    #retrieve options provided in *args
+    arguments = pairoptions(*args)
 
     options = OrderedDict()
Index: /issm/trunk-jpl/src/m/solvers/jacobiasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/jacobiasmoptions.py	(revision 25245)
+++ /issm/trunk-jpl/src/m/solvers/jacobiasmoptions.py	(revision 25246)
@@ -1,3 +1,3 @@
-import pairoptions
+from pairoptions import pairoptions
 
 
@@ -8,6 +8,6 @@
     #      options = jacobiasmoptions
 
-    #retrieve options provided in varargin
-    arguments = pairoptions.pairoptions(*args)
+    #retrieve options provided in *args
+    arguments = pairoptions(*args)
 
     options = [['toolkit', 'petsc'],
Index: /issm/trunk-jpl/src/m/solvers/lcdasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lcdasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lcdasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lcdbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lcdbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lcdbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lcdgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lcdgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lcdgamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lcdgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lcdgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lcdgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lcdhypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lcdhypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lcdhypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lcdjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lcdjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lcdjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lcdmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lcdmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lcdmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lcdnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lcdnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lcdnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lcdpbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lcdpbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lcdpbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lcdsoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lcdsoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lcdsoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lcdsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lcd')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lsqrasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lsqrasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lsqrasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lsqrbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lsqrbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lsqrbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lsqrgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lsqrgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lsqrgamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lsqrgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lsqrgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lsqrgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lsqrhypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lsqrhypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lsqrhypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lsqrjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lsqrjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lsqrjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lsqrmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lsqrmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lsqrmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lsqrnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lsqrnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lsqrnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lsqrpbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lsqrpbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lsqrpbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/lsqrsoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/lsqrsoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/lsqrsoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def lsqrsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'lsqr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/minresasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/minresasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/minresasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minresasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/minresbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/minresbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/minresbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minresbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/minresgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/minresgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/minresgamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minresgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/minresgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/minresgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/minresgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minresgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/minreshypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/minreshypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/minreshypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minreshypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/minresjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/minresjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/minresjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minresjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/minresmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/minresmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/minresmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/minresnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/minresnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/minresnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minresmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/minrespbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/minrespbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/minrespbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minrespbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/minressoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/minressoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/minressoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def minressoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'minres')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/mumpsnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/mumpsnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/mumpsnoneoptions.py	(revision 25246)
@@ -0,0 +1,40 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+function mumps = mumpsoptions(*args)
+    #MUMPSOPTIONS - return MUMPS direct solver  petsc options
+    #
+    #   Usage:
+    #      options = mumpsoptions
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    mumps = OrderedDict()
+
+    #default mumps options
+    PETSC_MAJOR = IssmConfig('_PETSC_MAJOR_')
+    PETSC_MINOR = IssmConfig('_PETSC_MINOR_')
+    if PETSC_MAJOR == 2.,
+        mumps.toolkit = 'petsc'
+        mumps.mat_type = getfieldvalue(options, 'mat_type', 'aijmumps')
+        mumps.ksp_type = getfieldvalue(options, 'ksp_type', 'preonly')
+        mumps.pc_type = getfieldvalue(options, 'pc_type', 'lu')
+        mumps.mat_mumps_icntl_14 = getfieldvalue(options, 'mat_mumps_icntl_14', 120)
+    end
+
+    if PETSC_MAJOR == 3.,
+        mumps.toolkit = 'petsc'
+        mumps.mat_type = getfieldvalue(options, 'mat_type', 'mpiaij')
+        mumps.ksp_type = getfieldvalue(options, 'ksp_type', 'preonly')
+        mumps.pc_type = getfieldvalue(options, 'pc_type', 'lu')
+        if PETSC_MINOR > 8
+            mumps.pc_factor_mat_solver_type = getfieldvalue(options, 'pc_factor_mat_solver_type', 'mumps')
+        else
+            mumps.pc_factor_mat_solver_package = getfieldvalue(options, 'pc_factor_mat_solver_package', 'mumps')
+        end
+        mumps.mat_mumps_icntl_14 = getfieldvalue(options, 'mat_mumps_icntl_14', 120)
+        mumps.mat_mumps_icntl_28 = 2; #1 = serial, 2 = parallel
+        mumps.mat_mumps_icntl_29 = 2; #parallel ordering 1 = ptscotch, 2 = parmetis
+    end
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/richardsonasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/richardsonasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/richardsonasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/richardsonbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/richardsonbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/richardsonbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/richardsongamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/richardsongamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/richardsongamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsongamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/richardsongasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/richardsongasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/richardsongasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsongasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/richardsonhypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/richardsonhypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/richardsonhypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/richardsonjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/richardsonjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/richardsonjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/richardsonmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/richardsonmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/richardsonmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/richardsonnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/richardsonnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/richardsonnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/richardsonpbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/richardsonpbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/richardsonpbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/richardsonsoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/richardsonsoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/richardsonsoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def richardsonsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'richardson')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/soroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/soroptions.py	(revision 25245)
+++ /issm/trunk-jpl/src/m/solvers/soroptions.py	(revision 25246)
@@ -1,3 +1,3 @@
-import pairoptions
+from pairoptions import pairoptions
 
 
@@ -8,6 +8,6 @@
     #      options = soroptions
 
-    #retrieve options provided in varargin
-    arguments = pairoptions.pairoptions(*args)
+    #retrieve options provided in *args
+    arguments = pairoptions(*args)
 
     options = [['toolkit', 'petsc'],
Index: /issm/trunk-jpl/src/m/solvers/stcgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/stcgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/stcgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/stcgbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/stcgbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/stcgbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcgbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/stcggamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/stcggamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/stcggamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcggamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/stcggasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/stcggasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/stcggasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcggasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/stcghypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/stcghypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/stcghypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcghypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/stcgjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/stcgjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/stcgjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcgjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/stcgmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/stcgmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/stcgmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcgmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/stcgnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/stcgnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/stcgnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcgmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/stcgpbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/stcgpbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/stcgpbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcgpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/stcgsoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/stcgsoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/stcgsoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def stcgsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'stcg')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/stokesoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/stokesoptions.py	(revision 25245)
+++ /issm/trunk-jpl/src/m/solvers/stokesoptions.py	(revision 25246)
@@ -1,3 +1,3 @@
-import pairoptions
+from pairoptions import pairoptions
 from IssmConfig import IssmConfig
 
@@ -9,6 +9,6 @@
     #      options = stokesoptions
 
-    #retrieve options provided in varargin
-    arguments = pairoptions.pairoptions(*args)
+    #retrieve options provided in *args
+    arguments = pairoptions(*args)
 
     #default stokes options
@@ -16,5 +16,5 @@
 
     if PETSC_VERSION == 2.:
-        raise RuntimeError('stokesoptions error message: multi-physics options not supported in Petsc 2')
+        raise RuntimeError('stokesoptions error message: multi - physics options not supported in Petsc 2')
     if PETSC_VERSION == 3.:
         options = [['toolkit', 'petsc'],
Index: /issm/trunk-jpl/src/m/solvers/symmlqasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/symmlqasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/symmlqasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/symmlqbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/symmlqbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/symmlqbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/symmlqgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/symmlqgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/symmlqgamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/symmlqgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/symmlqgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/symmlqgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/symmlqhypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/symmlqhypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/symmlqhypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/symmlqjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/symmlqjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/symmlqjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/symmlqmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/symmlqmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/symmlqmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/symmlqnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/symmlqnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/symmlqnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/symmlqpbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/symmlqpbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/symmlqpbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/symmlqsoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/symmlqsoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/symmlqsoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def symmlqsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'symmlq')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/tfqmrasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/tfqmrasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/tfqmrasmoptions.py	(revision 25246)
@@ -0,0 +1,14 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'asm')
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/tfqmrbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/tfqmrbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/tfqmrbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'bjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/tfqmrgamgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/tfqmrgamgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/tfqmrgamgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrgamgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gamg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/tfqmrgasmoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/tfqmrgasmoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/tfqmrgasmoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrgasmoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'gasm')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/tfqmrhypreoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/tfqmrhypreoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/tfqmrhypreoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrhypreoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'hypre')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/tfqmrjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/tfqmrjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/tfqmrjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'jacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/tfqmrmgoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/tfqmrmgoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/tfqmrmgoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'mg')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/tfqmrnoneoptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/tfqmrnoneoptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/tfqmrnoneoptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrmgoptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'none')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/tfqmrpbjacobioptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/tfqmrpbjacobioptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/tfqmrpbjacobioptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrpbjacobioptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'pbjacobi')
+
+    return solverOptions
Index: /issm/trunk-jpl/src/m/solvers/tfqmrsoroptions.py
===================================================================
--- /issm/trunk-jpl/src/m/solvers/tfqmrsoroptions.py	(revision 25246)
+++ /issm/trunk-jpl/src/m/solvers/tfqmrsoroptions.py	(revision 25246)
@@ -0,0 +1,15 @@
+from pairoptions import pairoptions
+from collections import OrderedDict
+
+
+def tfqmrsoroptions(*args):
+
+    #retrieve options provided in *args
+    options = pairoptions(*args)
+    solverOptions = OrderedDict()
+    solverOptions['toolkit'] = 'petsc'
+    solverOptions['mat_type'] = options.getfieldvalue('mat_type', 'mpiaij')
+    solverOptions['ksp_type'] = options.getfieldvalue('ksp_type', 'tfqmr')
+    solverOptions['pc_type'] = options.getfieldvalue('pc_type', 'sor')
+
+    return solverOptions
