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

1 

2"""MainConductorAC_CC.py:""" 

3 

4import os 

5import sys 

6 

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 

11 

12if len(sys.argv) == 3: 

13 sys.path.insert(0, os.path.join(os.getcwd(), 'steam-fiqus-dev')) 

14from fiqus.data.DataFiQuS import FDM 

15 

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 

38 

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() 

59 

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) 

68 

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) 

78 

79 

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} 

92 

93 

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) 

103 

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) 

109 

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) 

114 

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) 

120 

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) 

125 

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} 

138 

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) 

148