Coverage for fiqus/mains/MainConductorAC_CC.py: 81%
67 statements
« prev ^ index » next coverage.py v7.4.4, created at 2026-01-09 01:49 +0000
« prev ^ index » next coverage.py v7.4.4, created at 2026-01-09 01:49 +0000
2"""MainConductorAC_CC.py:"""
4import os
5import sys
7from fiqus.geom_generators.GeometryConductorAC_CC import Generate_geometry
8from fiqus.mesh_generators.MeshConductorAC_CC import Mesh
9from fiqus.getdp_runners.RunGetdpConductorAC_CC import Solve
10from fiqus.post_processors.PostProcessAC_CC import Post_Process
12if len(sys.argv) == 3:
13 sys.path.insert(0, os.path.join(os.getcwd(), 'steam-fiqus-dev'))
14from fiqus.data.DataFiQuS import FDM
16class MainConductorAC_CC:
17 def __init__(self, fdm, inputs_folder_path='', verbose=True):
18 """
19 Main class for working with simulations for CAC_CC type magnets
20 :param fdm: FiQuS data model
21 :type fdm: FDM
22 :param inputs_folder_path: full path to folder with input files, i.e. conductor and STEP files
23 :type inputs_folder_path: str
24 :param verbose: if True, more info is printed in the console
25 :type verbose: bool
26 :return: nothing, only saves files on disk
27 :rtype: none
28 """
29 self.verbose = verbose
30 self.fdm = fdm
31 self.inputs_folder_path = inputs_folder_path
32 self.GetDP_path = None
33 self.geom_folder = None
34 self.mesh_folder = None
35 self.solution_folder = None
36 self.model_file = None
37 self.model_folder = None
39 def generate_geometry(self, gui=False):
40 """
41 Main method for loading the geometry of CAC_CC models
42 :param gui: if true, graphical user interface (gui) of Gmsh is opened at the end
43 :type gui: bool
44 :return: nothing, only saves files on disk
45 :rtype: none
46 """
47 os.chdir(self.geom_folder)
48 gg = Generate_geometry(fdm=self.fdm, inputs_folder_path=self.inputs_folder_path, verbose=self.verbose)
49 gg.generate_HTS_layer()
50 gg.generate_silver_top_layer()
51 gg.generate_substrate_layer()
52 gg.generate_copper_top_layer()
53 gg.generate_silver_bottom_layer()
54 gg.generate_copper_bottom_layer()
55 gg.generate_copper_left_layer()
56 gg.generate_copper_right_layer()
57 gg.generate_air_region()
58 gg.finalize_and_write()
60 def load_geometry(self, gui=False):
61 """
62 Main method for loading the geometry of CAC_CC models
63 """
64 os.chdir(self.geom_folder)
65 gg = Generate_geometry(fdm=self.fdm, inputs_folder_path=self.inputs_folder_path, verbose=self.verbose)
66 self.geometry = gg
67 gg.load_geometry(gui=gui)
69 def pre_process(self, gui=False):
70 """
71 Main method for preprocessing of CAC_CC models
72 :param gui: if true, graphical user interface (gui) of Gmsh is opened at the end
73 :type gui: bool
74 :return: nothing, only saves files on disk
75 :rtype: none
76 """
77 os.chdir(self.geom_folder)
80 def mesh(self, gui=False):
81 """
82 Main method for building the mesh of CAC_CC models
83 :param gui: if true, graphical user interface (gui) of Gmsh is opened at the end
84 :type gui: bool
85 :return: dictionary with mesh quality stats
86 :rtype: dict
87 """
88 os.chdir(self.mesh_folder)
89 m = Mesh(self.fdm)
90 m.generate_mesh(self.geom_folder)
91 return {"gamma": 0}
94 def load_mesh(self, gui=False):
95 """
96 Main method for loading the mesh of CAC_CC models
97 :param gui: if true, graphical user interface (gui) of Gmsh is opened at the end
98 :type gui: bool
99 :return: Nothing, only saves files on disk
100 :rtype: none
101 """
102 os.chdir(self.mesh_folder)
104 def solve_and_postprocess_getdp(self, gui: bool = False):
105 """
106 Assembles the .pro-file from the template, then runs the simulation and the post-processing steps using GetDP.
107 """
108 os.chdir(self.solution_folder)
110 s = Solve(self.fdm, self.GetDP_path, self.geom_folder, self.mesh_folder, self.verbose)
111 s.read_excitation(inputs_folder_path=self.inputs_folder_path)
112 s.assemble_pro()
113 s.run_getdp(solve = True, postOperation = True, gui = gui)
115 def post_process_getdp(self, gui: bool = False):
116 """
117 Runs the post-processing steps trough GetDP.
118 """
119 os.chdir(self.solution_folder)
121 s = Solve(self.fdm, self.GetDP_path, self.geom_folder, self.mesh_folder, self.verbose)
122 s.read_excitation(inputs_folder_path=self.inputs_folder_path)
123 s.assemble_pro()
124 s.run_getdp(solve = False, postOperation = True, gui = gui)
126 def post_process_python(self, gui=False):
127 """
128 Main method for postprocessing using python (without solving) of CAC_CC models
129 :param gui: if true, graphical user interface (gui) of Gmsh is opened at the end
130 :type gui: bool
131 :return: Nothing, only saves files on disk
132 :rtype: none
133 """
134 os.chdir(self.solution_folder)
135 p=Post_Process(self.fdm, verbose=self.verbose)
136 p.cleanup()
137 return {'overall_error': 0}
139 def plot_python(self, gui=False):
140 """
141 Main method for making python plots related to CAC_CC models
142 :param gui: if true, graphical user interface (gui) of Gmsh is opened at the end
143 :type gui: bool
144 :return: Nothing, only saves files on disk
145 :rtype: none
146 """
147 os.chdir(self.solution_folder)