Magnetic forces and torques of a system of magnets in when B fields are known
6 次查看(过去 30 天)
显示 更早的评论
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:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1123590/image.png)
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 个评论
ABG
2022-10-23
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.
回答(1 个)
SAI SRUJAN
2023-10-17
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.
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!