Coverage for fiqus/getdp_runners/RunGetdpCCT.py: 98%
52 statements
« prev ^ index » next coverage.py v7.4.4, created at 2025-03-15 03:42 +0100
« prev ^ index » next coverage.py v7.4.4, created at 2025-03-15 03:42 +0100
1import os
2import timeit
3from pathlib import Path
5import gmsh
7from fiqus.utils.Utils import FilesAndFolders as uff
8from fiqus.utils.Utils import GmshUtils
9from fiqus.data.RegionsModelFiQuS import RegionsModel
10from fiqus.pro_assemblers.ProAssembler import ASS_PRO as ass_pro
13class RunGetdpCCT:
14 def __init__(self, fdm, GetDP_path: dict = None, verbose=True):
15 """
16 Class to preparing brep files by adding terminals.
17 :param fdm: FiQuS data model
18 :param verbose: If True more information is printed in python console.
19 """
20 self.cctdm = fdm.magnet
21 self.GetDP_path = GetDP_path
22 self.model_folder = os.path.join(os.getcwd())
23 self.magnet_name = fdm.general.magnet_name
24 self.mesh_folder = Path(self.model_folder).parent
25 self.verbose = verbose
26 self.cctrm = uff.read_data_from_yaml(os.path.join(self.model_folder, f'{self.magnet_name}.regions'), RegionsModel)
27 self.ap = ass_pro(os.path.join(self.model_folder, self.magnet_name))
28 self.gu = GmshUtils(self.model_folder, self.verbose)
29 self.gu.initialize(verbosity_Gmsh=fdm.run.verbosity_Gmsh)
30 self.pos_names = []
31 # for variable, volume, file_ext in zip(self.cctdm.solve.variables, self.cctdm.solve.volumes, self.cctdm.solve.file_exts):
32 # self.pos_names.append(f'{variable}_{volume}.{file_ext}')
34 def assemble_pro(self):
35 if self.verbose:
36 print('Assembling Pro File Started')
37 start_time = timeit.default_timer()
38 if self.verbose:
39 print('Assembling pro file')
40 self.ap.assemble_combined_pro(template=self.cctdm.solve.pro_template, rm=self.cctrm, dm=self.cctdm)
41 if self.verbose:
42 print(f'Assembling Pro File Took {timeit.default_timer() - start_time:.2f} s')
44 def solve_and_postprocess(self, gui=False):
45 command = "-solve -v2 -pos"
46 model_file = 'Center_line.csv'
47 self._run(command=command, model_file=model_file, gui=gui)
49 def postprocess(self, gui=False):
50 command = "-v2 -pos"
51 model_file = 'Test.dat'
52 self._run(command=command, model_file=model_file, gui=gui)
54 def _run(self, command, model_file, gui=False):
55 if self.verbose:
56 print('Solving Started !!!')
57 start_time = timeit.default_timer()
58 getdp_binary = self.GetDP_path
59 gmsh.onelab.run(f"{self.magnet_name}", f"{getdp_binary} {os.path.join(self.model_folder, self.magnet_name)}.pro {command} -msh {os.path.join(self.mesh_folder, self.magnet_name)}.msh")
60 gmsh.onelab.setChanged("GetDP", 0)
62 self.model_file = os.path.join(self.model_folder, model_file)
63 if self.verbose:
64 print(''
65 f'Solving Took {timeit.default_timer() - start_time:.2f} s !!!'
66 '')
67 if gui:
68 self.gu.launch_interactive_GUI()
69 else:
70 gmsh.clear()
71 gmsh.finalize()