Magnetic forces and torques of a system of magnets in when B fields are known

7 views (last 30 days)
Hello, I'm attempting to calculate the forces and torques experiences by a system of magnets in a magnetic field set up by another system of magnets.
I have calculated the B fields created by both of the systems. The field created by the system that can move is described "field_rotor.mat". It is a 60x60x60x3 matrix, where for every point of space Bx, By, Bz is stored. Matrix "field_stator.mat" describes the field set up by the static system of magnets and it is the same size.
I'm attempting the calculate the total forces and torques experiences by the magnets of which field is described in "field_rotor.mat".
I have also attached the positions of the magnets of the rotor system as "rotor_mag_pos.mat".
According to wikipedia:
From this we can derive in pseudocode:
Force = V/µ * grad(dot(Br,B) )
Torque = V/µ * cross(Br,B)
Volume of the magnets is ((0.4*10^-3)/2)^2 *pi * 0.2*10^-3 = 2.5133e-11 cubic meters. µ is 1.257 x 10 -6.
I calculate the force by :
Vol_magnet = 2.5133e-11;
mu0 = 1.257e-6;
torque = Vol_magnet/mu0 *cross(field_rotor,field_stator,4);
I dont understand how to calculate the force..
  1 Comment
ABG
ABG on 23 Oct 2022
If you know the value(s) of B, and you are able to calculate the values of m, the only thing you need to do is to perform the multiplication of m*B using the correct size of matrices, and then calculate the force.
From what I see, I think you've already done that propperly.

Sign in to comment.

Answers (1)

SAI SRUJAN
SAI SRUJAN on 17 Oct 2023
Hi ,
I understand that you are facing issues when calculating the force and torque experienced by a system of magnets in a magnetic field.
In the final simplification of equations of force and torque, the following mathematical operations are being employed.
  • Dot Product
  • Cross Product
  • Gradient
When calculating forces, kindly ensure that the matrices used for dot and cross operations have similar dimensions.
We can use "dot", "cross", and "gradient" functions in MATLAB that can effectively address this matter.
You can follow the below given example to proceed further,
vector1 = [1, 2, 3];
vector2 = [4, 5, 6];
dotProduct = dot(vector1, vector2);
crossProduct = cross(vector1,vector2);
grad = gradient(vector1);
You can refer to the below documentation to understand more about "dot" , "cross" and "gradient" functions in MATLAB.

Categories

Find more on Scripts in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!