From a2e7d9a10f65a687224de758bc9bb51c24dfa12e Mon Sep 17 00:00:00 2001
From: fuchenxi <1256257282@qq.com>
Date: Mon, 4 Nov 2024 11:19:51 +0800
Subject: [PATCH] =?UTF-8?q?=E6=95=B4=E7=90=86umf=E6=B1=82=E8=A7=A3?=
 =?UTF-8?q?=E5=99=A8=E6=8C=87=E4=BB=A4=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 __main__.py       |  3 ++-
 field/__init__.py | 15 +++++++++++++--
 util/batchjob.py  |  6 ++++++
 3 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/__main__.py b/__main__.py
index c428ce7..2ba2d52 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 4c0dd8b..2bceb6b 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 0ad16b1..4f2ae9a 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)
 
-- 
GitLab