Example #1
0
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()
Example #2
0
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()
Example #3
0
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()
Example #4
0
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()
Example #5
0
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()
Example #6
0
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()