Index: /issm/trunk-jpl/src/m/classes/inversion.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/inversion.py	(revision 26869)
+++ /issm/trunk-jpl/src/m/classes/inversion.py	(revision 26870)
@@ -131,8 +131,21 @@
         md = checkfield(md, 'fieldname', 'inversion.step_threshold', 'size', [md.inversion.nsteps])
         md = checkfield(md, 'fieldname', 'inversion.cost_functions', 'size', [num_costfunc], 'values', supportedcostfunctions())
-        md = checkfield(md, 'fieldname', 'inversion.cost_functions_coefficients', 'size', [md.mesh.numberofvertices, num_costfunc], '>=', 0)
-        md = checkfield(md, 'fieldname', 'inversion.gradient_scaling', 'size', [md.inversion.nsteps, num_controls])
-        md = checkfield(md, 'fieldname', 'inversion.min_parameters', 'size', [md.mesh.numberofvertices, num_controls])
-        md = checkfield(md, 'fieldname', 'inversion.max_parameters', 'size', [md.mesh.numberofvertices, num_controls])
+        if num_costfunc == 1:
+            md.inversion.cost_functions_coefficients = np.squeeze(md.inversion.cost_functions_coefficients)
+            md = checkfield(md, 'fieldname', 'inversion.cost_functions_coefficients', 'size', [md.mesh.numberofvertices], '>=', 0)
+        else:
+            md = checkfield(md, 'fieldname', 'inversion.cost_functions_coefficients', 'size', [md.mesh.numberofvertices, num_costfunc], '>=', 0)
+
+        if num_controls == 1:
+            md.inversion.gradient_scaling = np.squeeze(md.inversion.gradient_scaling)
+            md.inversion.min_parameters = np.squeeze(md.inversion.min_parameters)
+            md.inversion.max_parameters = np.squeeze(md.inversion.max_parameters)
+            md = checkfield(md, 'fieldname', 'inversion.gradient_scaling', 'size', [md.inversion.nsteps])
+            md = checkfield(md, 'fieldname', 'inversion.min_parameters', 'size', [md.mesh.numberofvertices])
+            md = checkfield(md, 'fieldname', 'inversion.max_parameters', 'size', [md.mesh.numberofvertices])
+        else:
+            md = checkfield(md, 'fieldname', 'inversion.gradient_scaling', 'size', [md.inversion.nsteps, num_controls])
+            md = checkfield(md, 'fieldname', 'inversion.min_parameters', 'size', [md.mesh.numberofvertices, num_controls])
+            md = checkfield(md, 'fieldname', 'inversion.max_parameters', 'size', [md.mesh.numberofvertices, num_controls])
 
         # Only SSA, HO and FS are supported right now
Index: /issm/trunk-jpl/src/m/inversions/marshallcostfunctions.py
===================================================================
--- /issm/trunk-jpl/src/m/inversions/marshallcostfunctions.py	(revision 26869)
+++ /issm/trunk-jpl/src/m/inversions/marshallcostfunctions.py	(revision 26870)
@@ -14,5 +14,8 @@
               505: 'ThicknessAcrossGradient'}
 
-    data = [cfDict[cf] for cf in cost_functions]
+    if type(cost_functions == int):
+        data = [cfDict[cost_functions]]
+    else:
+        data = [cfDict[cf] for cf in cost_functions]
     #  #copy list first
     # data = copy.deepcopy(cost_functions)
