def main(): # Define spherical tiles tile_val = magtense.Tiles(1) # Define tile as spheroid tile_val.set_tile_type(7) tile_val.set_size([0.5, 2, 0.5]) tile_val.set_offset([0.1, 0.3, 0.45]) tile_val.set_rotation_i([np.pi / 2, -np.pi / 3, np.pi / 4], 0) tile_val.set_remanence(1.2 / (4 * np.pi * 1e-7)) tile_val.set_easy_axis([[0, 1, 0]]) tile_val.set_rot_axis_i([-2, 1, 2], 0) # Config for oblate spheroid # tile_val.set_size([2, 2, 0.5]) # Plot geometry # create_plot(tile_val) eval_offset = [0.3, 0.45, 0.2] model_offset = [1, 0.75, 1] # Load reference points from COMSOL calculation COMSOL_eval_path = os.path.dirname(os.path.abspath(__file__)) \ + '/../../documentation/examples_FEM_validation/Validation_spheroid/' (eval_points_x, H_norm_x_COMSOL) = load_COMSOL_eval('py_Validation_spheroid_prolate_normH_x.txt', \ eval_offset, COMSOL_eval_path, model_offset=model_offset, unit='T') (eval_points_y, H_norm_y_COMSOL) = load_COMSOL_eval('py_Validation_spheroid_prolate_normH_y.txt', \ eval_offset, COMSOL_eval_path, model_offset=model_offset, unit='T') (eval_points_z, H_norm_z_COMSOL) = load_COMSOL_eval('py_Validation_spheroid_prolate_normH_z.txt', \ eval_offset, COMSOL_eval_path, model_offset=model_offset, unit='T') # x-axis (updated_tiles_x, H_x) = magtense.run_simulation(tile_val, eval_points_x) H_norm_x_MagTense = get_norm_magnetic_flux(H_x) # y-axis (updated_tiles_y, H_y) = magtense.run_simulation(tile_val, eval_points_y) H_norm_y_MagTense = get_norm_magnetic_flux(H_y) # z-axis (updated_tiles_z, H_z) = magtense.run_simulation(tile_val, eval_points_z) H_norm_z_MagTense = get_norm_magnetic_flux(H_z) fig, ax = plt.subplots(1, 3) fig.suptitle("SPHEROID - MagTensePython vs. COMSOL") add_subplot(ax[0], eval_points_x[:, 0], 'x_axis', H_norm_x_MagTense, H_norm_x_COMSOL) add_subplot(ax[1], eval_points_y[:, 1], 'y_axis', H_norm_y_MagTense, H_norm_y_COMSOL) add_subplot(ax[2], eval_points_z[:, 2], 'z_axis', H_norm_z_MagTense, H_norm_z_COMSOL) plt.show()
def valid_circ_inv(): # Define validation tile tile_val = magtense.Tiles(1) tile_val.set_center_pos([[0.3, math.pi / 0.55, 0.6]]) tile_val.set_dev_center([0.15, math.pi / 6, 0.4]) tile_val.set_offset_i([0.3, 0.5, 0.1], 0) tile_val.set_rotation_i([0, 0, 0], 0) tile_val.set_tile_type(4) tile_val.set_remanence(1.2 / (4 * math.pi * 1e-7)) tile_val.set_easy_axis([[0.41562694, 0.41562694, 0.80901699]]) tile_val.set_color([[1, 0, 0]]) eval_offset = [0.6271937452259475, 0.27251823835641853, 0.7] # Load reference points from COMSOL calculation COMSOL_eval_path = os.path.dirname(os.path.abspath(__file__)) \ + '/../../documentation/examples_FEM_validation/Validation_circpiece_inverted/' (eval_points_x, H_norm_x_COMSOL) = load_COMSOL_eval( 'Validation_circpiece_inverted_normH_x.txt', eval_offset, COMSOL_eval_path) (eval_points_y, H_norm_y_COMSOL) = load_COMSOL_eval( 'Validation_circpiece_inverted_normH_y.txt', eval_offset, COMSOL_eval_path) (eval_points_z, H_norm_z_COMSOL) = load_COMSOL_eval( 'Validation_circpiece_inverted_normH_z.txt', eval_offset, COMSOL_eval_path) # x-axis (updated_tiles_x, H_x) = magtense.run_simulation(tile_val, eval_points_x) H_norm_x_MagTense = get_norm_magnetic_flux(H_x) # y-axis (updated_tiles_y, H_y) = magtense.run_simulation(tile_val, eval_points_y) H_norm_y_MagTense = get_norm_magnetic_flux(H_y) # z-axis (updated_tiles_z, H_z) = magtense.run_simulation(tile_val, eval_points_z) H_norm_z_MagTense = get_norm_magnetic_flux(H_z) fig, ax = plt.subplots(1, 3) fig.suptitle("CIRCPIECE_INV - MagTensePython vs. COMSOL") add_subplot(ax[0], eval_points_x[:, 0], 'x_axis', H_norm_x_MagTense, H_norm_x_COMSOL) add_subplot(ax[1], eval_points_y[:, 1], 'y_axis', H_norm_y_MagTense, H_norm_y_COMSOL) add_subplot(ax[2], eval_points_z[:, 2], 'z_axis', H_norm_z_MagTense, H_norm_z_COMSOL) plt.show()
def valid_circpiece(): # Define validation tile tile_val = magtense.Tiles(1) tile_val.set_center_pos([[0.45, math.pi / 3, 0.35]]) tile_val.set_dev_center([0.5, math.pi / 7, 0.15]) tile_val.set_offset_i([0.1, 0.3, 0.2], 0) tile_val.set_rotation_i([0, 0, 0], 0) tile_val.set_tile_type(3) tile_val.set_remanence(1.2 / (4 * math.pi * 1e-7)) tile_val.set_easy_axis([[-0.3095974, -0.22493568, 0.92387953]]) tile_val.set_color([[1, 0, 0]]) eval_offset = [0.406328622087633, 0.8631363102808783, 0.55] # Load reference points from COMSOL calculation COMSOL_eval_path = os.path.dirname(os.path.abspath(__file__)) \ + '/../../documentation/examples_FEM_validation/Validation_circpiece/' (eval_points_x, H_norm_x_COMSOL) = load_COMSOL_eval('Validation_circpiece_normH_x.txt', eval_offset, COMSOL_eval_path) (eval_points_y, H_norm_y_COMSOL) = load_COMSOL_eval('Validation_circpiece_normH_y.txt', eval_offset, COMSOL_eval_path) (eval_points_z, H_norm_z_COMSOL) = load_COMSOL_eval('Validation_circpiece_normH_z.txt', eval_offset, COMSOL_eval_path) # x-axis (updated_tiles_x, H_x) = magtense.run_simulation(tile_val, eval_points_x) H_norm_x_MagTense = get_norm_magnetic_flux(H_x) # y-axis (updated_tiles_y, H_y) = magtense.run_simulation(tile_val, eval_points_y) H_norm_y_MagTense = get_norm_magnetic_flux(H_y) # z-axis (updated_tiles_z, H_z) = magtense.run_simulation(tile_val, eval_points_z) H_norm_z_MagTense = get_norm_magnetic_flux(H_z) fig, ax = plt.subplots(1, 3) fig.suptitle("CIRCPIECE - MagTensePython vs. COMSOL") add_subplot(ax[0], eval_points_x[:, 0], 'x_axis', H_norm_x_MagTense, H_norm_x_COMSOL) add_subplot(ax[1], eval_points_y[:, 1], 'y_axis', H_norm_y_MagTense, H_norm_y_COMSOL) add_subplot(ax[2], eval_points_z[:, 2], 'z_axis', H_norm_z_MagTense, H_norm_z_COMSOL) plt.show()
def main(): # Define validation tile tile_val = magtense.Tiles(1) vert = np.array([[2.5, 3, 1], [2, 1, 4], [1.5, 4, 3], [4.5, 5, 2]]) tile_val.set_vertices(vert.transpose()) tile_val.set_tile_type(5) tile_val.set_remanence(1.2 / (4 * np.pi * 1e-7)) tile_val.set_easy_axis([[0.324264068, 0.734846928, 0.891545179]]) tile_val.set_color([[1, 0, 0]]) eval_offset = [3, 3, 2.5] # Load reference points from COMSOL calculation COMSOL_eval_path = os.path.dirname(os.path.abspath(__file__)) \ + '/../../documentation/examples_FEM_validation/Validation_tetrahedron/' (eval_points_x, H_norm_x_COMSOL) = load_COMSOL_eval('Validation_tetrahedron_normH_x.txt', eval_offset, COMSOL_eval_path) (eval_points_y, H_norm_y_COMSOL) = load_COMSOL_eval('Validation_tetrahedron_normH_y.txt', eval_offset, COMSOL_eval_path) (eval_points_z, H_norm_z_COMSOL) = load_COMSOL_eval('Validation_tetrahedron_normH_z.txt', eval_offset, COMSOL_eval_path) # x-axis (updated_tiles_x, H_x) = magtense.run_simulation(tile_val, eval_points_x) H_norm_x_MagTense = get_norm_magnetic_flux(H_x) # y-axis (updated_tiles_y, H_y) = magtense.run_simulation(tile_val, eval_points_y) H_norm_y_MagTense = get_norm_magnetic_flux(H_y) # z-axis (updated_tiles_z, H_z) = magtense.run_simulation(tile_val, eval_points_z) H_norm_z_MagTense = get_norm_magnetic_flux(H_z) fig, ax = plt.subplots(1, 3) fig.suptitle("TETRAHEDRON - MagTensePython vs. COMSOL") add_subplot(ax[0], eval_points_x[:, 0], 'x_axis', H_norm_x_MagTense, H_norm_x_COMSOL) add_subplot(ax[1], eval_points_y[:, 1], 'y_axis', H_norm_y_MagTense, H_norm_y_COMSOL) add_subplot(ax[2], eval_points_z[:, 2], 'z_axis', H_norm_z_MagTense, H_norm_z_COMSOL) plt.show()
def main(): # Define spherical tiles tile_val = magtense.Tiles(1) # Define tile as sphere tile_val.set_tile_type(6) tile_val.set_size([0.25, 0, 0]) tile_val.set_offset([0.3, 0.5, 0.1]) tile_val.set_remanence(1.2 / (4 * np.pi * 1e-7)) tile_val.set_easy_axis([[1, 0, -1]]) eval_offset = [0.3, 0.4, 0.15] model_offset = [0.25, 0.25, 0.75] # Load reference points from COMSOL calculation COMSOL_eval_path = os.path.dirname(os.path.abspath(__file__)) \ + '/../../documentation/examples_FEM_validation/Validation_sphere/' (eval_points_x, H_norm_x_COMSOL) = load_COMSOL_eval('py_Validation_sphere_normH_x.txt', \ eval_offset, COMSOL_eval_path, model_offset=model_offset, unit='T') (eval_points_y, H_norm_y_COMSOL) = load_COMSOL_eval('py_Validation_sphere_normH_y.txt', \ eval_offset, COMSOL_eval_path, model_offset=model_offset, unit='T') (eval_points_z, H_norm_z_COMSOL) = load_COMSOL_eval('py_Validation_sphere_normH_z.txt', \ eval_offset, COMSOL_eval_path, model_offset=model_offset, unit='T') # x-axis (updated_tiles_x, H_x) = magtense.run_simulation(tile_val, eval_points_x) H_norm_x_MagTense = get_norm_magnetic_flux(H_x) # y-axis (updated_tiles_y, H_y) = magtense.run_simulation(tile_val, eval_points_y) H_norm_y_MagTense = get_norm_magnetic_flux(H_y) # z-axis (updated_tiles_z, H_z) = magtense.run_simulation(tile_val, eval_points_z) H_norm_z_MagTense = get_norm_magnetic_flux(H_z) fig, ax = plt.subplots(1, 3) fig.suptitle("SPHERE - MagTensePython vs. COMSOL") add_subplot(ax[0], eval_points_x[:, 0], 'x_axis', H_norm_x_MagTense, H_norm_x_COMSOL) add_subplot(ax[1], eval_points_y[:, 1], 'y_axis', H_norm_y_MagTense, H_norm_y_COMSOL) add_subplot(ax[2], eval_points_z[:, 2], 'z_axis', H_norm_z_MagTense, H_norm_z_COMSOL) plt.show()
def valid_prism(): # Define validation tile eval_offset = [0.5, 0.4, 0.1] tile_val = magtense.Tiles(1) tile_val.set_size([[0.6, 0.1, 0.3]]) tile_val.set_offset_i(eval_offset,0) tile_val.set_rotation_i([math.pi/2, -math.pi/3, math.pi/4],0) tile_val.set_tile_type(2) tile_val.set_remanence(1.2 / (4*math.pi*1e-7)) tile_val.set_easy_axis([[0.35355339, 0.61237244, 0.70710678]]) tile_val.set_color([[1, 0, 0]]) # Load reference points from COMSOL calculation COMSOL_eval_path = os.path.dirname(os.path.abspath(__file__)) + '/../../documentation/examples_FEM_validation/Validation_prism/' (eval_points_x, H_norm_x_COMSOL) = load_COMSOL_eval('Validation_prism_normH_x.txt', eval_offset, COMSOL_eval_path) (eval_points_y, H_norm_y_COMSOL) = load_COMSOL_eval('Validation_prism_normH_y.txt', eval_offset, COMSOL_eval_path) (eval_points_z, H_norm_z_COMSOL) = load_COMSOL_eval('Validation_prism_normH_z.txt', eval_offset, COMSOL_eval_path) # x-axis (updated_tiles_x, H_x) = magtense.run_simulation(tile_val, eval_points_x) H_norm_x_MagTense = get_norm_magnetic_flux(H_x) # y-axis (updated_tiles_y, H_y) = magtense.run_simulation(tile_val, eval_points_y) H_norm_y_MagTense = get_norm_magnetic_flux(H_y) # z-axis (updated_tiles_z, H_z) = magtense.run_simulation(tile_val, eval_points_z) H_norm_z_MagTense = get_norm_magnetic_flux(H_z) fig, ax = plt.subplots(1,3) fig.suptitle("PRISM - MagTensePython vs. COMSOL") add_subplot(ax[0], eval_points_x[:,0], 'x_axis', H_norm_x_MagTense, H_norm_x_COMSOL) add_subplot(ax[1], eval_points_y[:,1], 'y_axis', H_norm_y_MagTense, H_norm_y_COMSOL) add_subplot(ax[2], eval_points_z[:,2], 'z_axis', H_norm_z_MagTense, H_norm_z_COMSOL) plt.show()