diff --git a/__main__.py b/__main__.py
index c428ce797b848c0d03d0e2551d45b67679dc45b6..2ba2d523890790a79802ba2c9032494eb20227f2 100755
--- a/__main__.py
+++ b/__main__.py
@@ -44,6 +44,7 @@ parser_field.add_argument('-cv', help='CV simulation', action="store_true")
 parser_field.add_argument("-wf", help="WeightField Simulation", action="store_true")
 parser_field.add_argument("-v_current", help="Current voltage for step-by-step simulation", type=float)
 parser_field.add_argument("-noise", help="Detector Noise simulation", action="store_true")
+parser_field.add_argument('-umf', help='use umf solver', action="store_true")
 
 
 parser_fpga = subparsers.add_parser('fpga', help='FPGA design')
@@ -100,4 +101,4 @@ if kwargs['batch'] != 0:
 else:
     submodule = importlib.import_module(submodule)
     submodule.main(kwargs)
-    
+    
\ No newline at end of file
diff --git a/field/__init__.py b/field/__init__.py
index 4c0dd8bec8e1d2e2e02d3ed65443cf5a85cae3b8..2bceb6b2e39224fbbaaaba82fca01a6d44085e5d 100755
--- a/field/__init__.py
+++ b/field/__init__.py
@@ -3,6 +3,7 @@ import logging
 def main(kwargs):
     label = kwargs['label']
     verbose = kwargs['verbose'] 
+    is_umf = kwargs['umf']
 
     if verbose == 1: # -v 
         logging.basicConfig(level=logging.INFO)
@@ -12,5 +13,15 @@ def main(kwargs):
     logging.info('This is INFO messaage')
     logging.debug('This is DEBUG messaage')
 
-    from . import solver_section
-    solver_section.main(kwargs)
+    if is_umf is not True:
+        from . import solver_section
+        solver_section.main(kwargs)
+    else:
+        import subprocess
+        import sys
+        args = sys.argv[1:]
+        args.remove('-umf')
+        command_tail = " ".join(args)
+        command_head = "python3 -mdevsim.umfpack.umfshim raser/__main__.py"
+        command = command_head + " " + command_tail
+        subprocess.run([command], shell=True)
diff --git a/util/batchjob.py b/util/batchjob.py
index 0ad16b10b2bea966bd4420c320a685f885f74809..4f2ae9a236522a9137668fd84ba92043e6ccfc3b 100644
--- a/util/batchjob.py
+++ b/util/batchjob.py
@@ -37,6 +37,12 @@ def main(destination_subfolder, command, batch_number, args):
                 + BINDPATH + " " \
                 + IMGFILE + " " \
                 + "python3 raser"
+    if "-umf" in command:
+        command = command.replace("-umf", "")
+        raser_shell = "/usr/bin/apptainer exec --env-file cfg/env -B" + " " \
+                + BINDPATH + " " \
+                + IMGFILE + " " \
+                + "python3 -mdevsim.umfpack.umfshim raser/__main__.py"
     gen_job(jobfile_name, run_code=raser_shell+' '+command)
     submit_job(jobfile_name, destination_subfolder, group, mem, test=test)