Discussion Closed This discussion was created more than 6 months ago and has been closed. To start a new discussion with a link back to this one, click here.

Specifying a demagnetization curve of a permanent magnet

Please login with a confirmed email address before reporting spam

Hi all,

I use the magnetic fields interface (AC/DC module) to simulate a magnetic system with permanent magnets and soft iron parts.

Currently I use the "remanent flux density" constitutive relation (B = mu0 * mur * H + Br) for the permanent magnet domain of the model, with Br=constant and mur=1.

However, I have realized that this is likely not a sufficiently accurate model of the permanent magnet. I have attached a demagnetization plot (J vs. H) of our magnet with the load line marked, and I think that I need to include the complete curve and not just the specifying a value for the remanent flux density as the intrinsic flux density is highly dependent on the field strength.

The magnetic fields interface solve my model for the magnetic vector potential, A, as the dependent variable. In this case, I believe, that I need to express the material properties as functions of the magnetic flux density B, to avoid a circular variable definition (e.g. the permeability, mur, of the soft iron parts is specified as a functions of the magnetic flux density, B).

My question is: How can I specify the demagnetization curve of the permanent magnet in my model?

Thanks in advance,
Johan Gustafsson


20 Replies Last Post 20 oct. 2016, 09:34 UTC−4
Ivar KJELBERG COMSOL Multiphysics(r) fan, retired, former "Senior Expert" at CSEM SA (CH)

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago 14 févr. 2011, 15:28 UTC−5
Hi

It has also puzzled me that there are no magnets defined in the material library, I agree today most hard magnets have more or less a constant B-H relationship in their normal operation range.

You have the "soft iron with/out losses" that saturates, that is one example, not too different from the magnet (apart from the quadrant for operation).

I'm also interested to hear what are the conclusions to have a good example available, pls keep us infored ;)

--
Good luck
Ivar
Hi It has also puzzled me that there are no magnets defined in the material library, I agree today most hard magnets have more or less a constant B-H relationship in their normal operation range. You have the "soft iron with/out losses" that saturates, that is one example, not too different from the magnet (apart from the quadrant for operation). I'm also interested to hear what are the conclusions to have a good example available, pls keep us infored ;) -- Good luck Ivar

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago 22 févr. 2011, 07:04 UTC−5
Hi,

I got some help from the support, and it appears to work fine! This is how I did:

Define an interpolation function:

HofB(B)

from the B-H curve (the normal curve, not the intrinsic curve), where the H-field is defined as a function of the B-field (the inverse of the usual B-H curve. Use linear extrapolation.

Create a separate Ampere’s Law for the magnet domain and specify anisotropic relative permeability.

If the magnet is magnetized in x-direction specify the following diagonal relative permeability tensor:

murxx = mf.Bx/(mu0_const*HofB(mf.Bx))
muryy = murzz = 1
murxy = 0

If Br is in the negative x-direction use:

murxx = mf.Bx/(mu0_const*-HofB(-mf.Bx))

Because this material model (relative permeability) attains mur = B/(mu0*H), I will get the correct result on the B-H curve for Hx(Bx), and Br and Hc will be correct as they are inherently on the B-H curve.

It is easy to specify another coordinate direction for the magnetization. A general direction requires a rotational transform of the tensor (which is a bit tricky).

Regards,
Johan
Hi, I got some help from the support, and it appears to work fine! This is how I did: Define an interpolation function: HofB(B) from the B-H curve (the normal curve, not the intrinsic curve), where the H-field is defined as a function of the B-field (the inverse of the usual B-H curve. Use linear extrapolation. Create a separate Ampere’s Law for the magnet domain and specify anisotropic relative permeability. If the magnet is magnetized in x-direction specify the following diagonal relative permeability tensor: murxx = mf.Bx/(mu0_const*HofB(mf.Bx)) muryy = murzz = 1 murxy = 0 If Br is in the negative x-direction use: murxx = mf.Bx/(mu0_const*-HofB(-mf.Bx)) Because this material model (relative permeability) attains mur = B/(mu0*H), I will get the correct result on the B-H curve for Hx(Bx), and Br and Hc will be correct as they are inherently on the B-H curve. It is easy to specify another coordinate direction for the magnetization. A general direction requires a rotational transform of the tensor (which is a bit tricky). Regards, Johan

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago 1 sept. 2011, 07:09 UTC−4
Hej Johan,

I would like to add the demagnetization curve to my simulations as well. I have tried to implent it as you described it in the post. Unfortunately I am getting an error message.

Would you mind checking out the attached file?

B.R;

J. José
Hej Johan, I would like to add the demagnetization curve to my simulations as well. I have tried to implent it as you described it in the post. Unfortunately I am getting an error message. Would you mind checking out the attached file? B.R; J. José


Please login with a confirmed email address before reporting spam

Posted: 1 decade ago 18 nov. 2011, 10:34 UTC−5
Would you please attach an example of what you've explained here? Also how does this run a BH loop? Is it only the demagnetization portion of the curve? Thanks for the info.
Brock
Would you please attach an example of what you've explained here? Also how does this run a BH loop? Is it only the demagnetization portion of the curve? Thanks for the info. Brock

Cesare Tozzo COMSOL Employee

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago 5 août 2013, 09:45 UTC−4

Would you mind checking out the attached file?


(A user pointed me to this posting). About the non-converging model, it is enough to specify an initial value (e.g. "Az" equalls to "y") and the model solve (even thogh I guess the BH curve value could be not appropriate).

Modeling of hysteresis can start from this method, but need further elaboration which depends from the actual case. Then different method (as Jiles Atherton) could be more appropriate. It strongly depends from the need.

Bye

Cesare
[QUOTE] Would you mind checking out the attached file? [/QUOTE] (A user pointed me to this posting). About the non-converging model, it is enough to specify an initial value (e.g. "Az" equalls to "y") and the model solve (even thogh I guess the BH curve value could be not appropriate). Modeling of hysteresis can start from this method, but need further elaboration which depends from the actual case. Then different method (as Jiles Atherton) could be more appropriate. It strongly depends from the need. Bye Cesare

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago 5 août 2013, 17:40 UTC−4
Hi,

Following Cesare advice I have the model working.
but I have the same error if I try to change mu matrix and I cannot deal with the initial value of A.

Moreover I try to solve the model with the magnetic flux, in the same way but adding a "zero potential" condition on the external boundary box, but it says

"undefined value found in the stiffness matrix comsol
mod1.mfnc.murxx
geometry 1
domain 2 "
Hi, Following Cesare advice I have the model working. but I have the same error if I try to change mu matrix and I cannot deal with the initial value of A. Moreover I try to solve the model with the magnetic flux, in the same way but adding a "zero potential" condition on the external boundary box, but it says "undefined value found in the stiffness matrix comsol mod1.mfnc.murxx geometry 1 domain 2 "

Cesare Tozzo COMSOL Employee

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago 6 août 2013, 05:05 UTC−4
In a mfnc (default ID name for "magnetic fields no current") simulation you do not have at all. There you have (solve for) .
In mf (default ID name for "magnetic field" - then possibly with currents) simulation you solve for .
(just for clarity I remember what I mean for and which are defined in our documentation and )
For your problem, Francesco, which is unrelated to this thread, I will answer from support.
B.R.
Cesare
In a mfnc (default ID name for "magnetic fields no current") simulation you do not have [math] A [/math] at all. There you have (solve for) [math] V_m [/math]. In mf (default ID name for "magnetic field" - then possibly with currents) simulation you solve for [math] A [/math]. (just for clarity I remember what I mean for [math] A [/math] and [math] V_m [/math] which are defined in our documentation [math] B=\nabla\times A [/math] and [math] H=\nabla V_m[/math]) For your problem, Francesco, which is unrelated to this thread, I will answer from support. B.R. Cesare

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago 6 août 2013, 05:17 UTC−4
hi again,

I'm not able to understand why I have to set:
1) murxx = mf.Bx/(mu0_const*HofB(mf.Bx)) (Br in positive x-direction)
muryy = murzz = 1
murxy = 0
INITIAL VALUE Az = y

2) murxx = mf.Bx/(mu0_const*-HofB(-mf.Bx)) (Br is negative x-direction)
INITIAL VALUE Az = -y

3) muryy = mf.By/(mu0_const*HofB(mf.By)) (Br is positive y-direction)
murxx = murzz = 1
murxy = 0
INITIAL VALUE Az = -x

4) muryy = mf.By/(mu0_const*-HofB(-mf.By)) (Br is negative y-direction)
INITIAL VALUE Az = x
hi again, I'm not able to understand why I have to set: 1) murxx = mf.Bx/(mu0_const*HofB(mf.Bx)) (Br in positive x-direction) muryy = murzz = 1 murxy = 0 INITIAL VALUE Az = y 2) murxx = mf.Bx/(mu0_const*-HofB(-mf.Bx)) (Br is negative x-direction) INITIAL VALUE Az = -y 3) muryy = mf.By/(mu0_const*HofB(mf.By)) (Br is positive y-direction) murxx = murzz = 1 murxy = 0 INITIAL VALUE Az = -x 4) muryy = mf.By/(mu0_const*-HofB(-mf.By)) (Br is negative y-direction) INITIAL VALUE Az = x

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago 6 août 2013, 05:21 UTC−4

In a mfnc (default ID name for "magnetic fields no current") simulation you do not have at all. There you have (solve for) .
In mf (default ID name for "magnetic field" - then possibly with currents) simulation you solve for .
(just for clarity I remember what I mean for and which are defined in our documentation and )
For your problem, Francesco, which is unrelated to this thread, I will answer from support.
B.R.
Cesare


I read you answer after my last post.
Anyway, it is clear what you said, but how to solve the problem with mfnc?
[QUOTE] In a mfnc (default ID name for "magnetic fields no current") simulation you do not have [math] A [/math] at all. There you have (solve for) [math] V_m [/math]. In mf (default ID name for "magnetic field" - then possibly with currents) simulation you solve for [math] A [/math]. (just for clarity I remember what I mean for [math] A [/math] and [math] V_m [/math] which are defined in our documentation [math] B=\nabla\times A [/math] and [math] H=\nabla V_m[/math]) For your problem, Francesco, which is unrelated to this thread, I will answer from support. B.R. Cesare [/QUOTE] I read you answer after my last post. Anyway, it is clear what you said, but how to solve the problem with mfnc?

Cesare Tozzo COMSOL Employee

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago 6 août 2013, 05:52 UTC−4
In mfnc problems (sorry do not have time now to enter in details why - standard topic in our courses) you are required to use BH curve in the form of BofH and not HofB. The same apply when specifying instead; it has to be function of H. This does not prevent the fact that probably you need to specify an initial value for as the problem will be non-linear.
In mfnc problems (sorry do not have time now to enter in details why - standard topic in our courses) you are required to use BH curve in the form of BofH and not HofB. The same apply when specifying [math] \mu_r [/math] instead; it has to be function of H. This does not prevent the fact that probably you need to specify an initial value for [math] V_m [/math] as the problem will be non-linear.

Please login with a confirmed email address before reporting spam

Posted: 9 years ago 15 sept. 2015, 02:27 UTC−4
Dear Johan,
Where can I find some details about the "diagonal relative permeability tensor" that you have mentioned in your replies. Also I would like to know where to find out details of some functions that are used in COMSOL such as mf.Bx or mf. By etc. etc.

I wish to use two types of magnets in my design one has Br of 1.47 T and Hcj of 955kA/m and other has Br of 1.18 and Hcj of 2465 kA/m. How do you model these two magnets in the same model. I am working on design of halbach hexapole where i wish to use these to types. can you please suggest me the best way to go about this problem?

with Kind regards,
Nabhiraj
Dear Johan, Where can I find some details about the "diagonal relative permeability tensor" that you have mentioned in your replies. Also I would like to know where to find out details of some functions that are used in COMSOL such as mf.Bx or mf. By etc. etc. I wish to use two types of magnets in my design one has Br of 1.47 T and Hcj of 955kA/m and other has Br of 1.18 and Hcj of 2465 kA/m. How do you model these two magnets in the same model. I am working on design of halbach hexapole where i wish to use these to types. can you please suggest me the best way to go about this problem? with Kind regards, Nabhiraj

Please login with a confirmed email address before reporting spam

Posted: 9 years ago 15 sept. 2015, 08:04 UTC−4



I wish to use two types of magnets in my design one has Br of 1.47 T and Hcj of 955kA/m and other has Br of 1.18 and Hcj of 2465 kA/m. How do you model these two magnets in the same model. I am working on design of halbach hexapole where i wish to use these to types. can you please suggest me the best way to go about this problem?




Hi Nabhiraj,

I did something similar for a quadrupoles.
First of all I use the mfnc module. I define two interpolation functions "Global definition -> functions -> interpolations"
As Data source I chose "table" and I put the BH curve data of the magnetic material, you can find the BH curve on the web if you don't have it.
Thick "define inverse function" and use linear interpolation and extrapolation.
Then I define a variable named modM = ((BofH(mfnc.normH)/(mu0_const))-mfnc.normH) which represents the magnetization module.
You need to define two of them, like modM2=((BofH2(mfnc.normH)/(mu0_const))-mfnc.normH) for the second material

Finally define a magnetic flux density law for each magnet and in the constitutive relation chose "magnetization" and give your variable to each block with the proper angle if you need.

Cheers
Francesco


[QUOTE] I wish to use two types of magnets in my design one has Br of 1.47 T and Hcj of 955kA/m and other has Br of 1.18 and Hcj of 2465 kA/m. How do you model these two magnets in the same model. I am working on design of halbach hexapole where i wish to use these to types. can you please suggest me the best way to go about this problem? [/QUOTE] Hi Nabhiraj, I did something similar for a quadrupoles. First of all I use the mfnc module. I define two interpolation functions "Global definition -> functions -> interpolations" As Data source I chose "table" and I put the BH curve data of the magnetic material, you can find the BH curve on the web if you don't have it. Thick "define inverse function" and use linear interpolation and extrapolation. Then I define a variable named modM = ((BofH(mfnc.normH)/(mu0_const))-mfnc.normH) which represents the magnetization module. You need to define two of them, like modM2=((BofH2(mfnc.normH)/(mu0_const))-mfnc.normH) for the second material Finally define a magnetic flux density law for each magnet and in the constitutive relation chose "magnetization" and give your variable to each block with the proper angle if you need. Cheers Francesco

Please login with a confirmed email address before reporting spam

Posted: 9 years ago 16 sept. 2015, 08:20 UTC−4
Hi Francesco,
Thanks a lot for so quick reply.
I shall try these suggestions you have posted. Do you have any examples so that i can follow them?
what is this "modM = ((BofH(mfnc.normH)/(mu0_const))-mfnc.normH)" Where can I find some details regarding this type of functions?
I shall try your suggestions and get back to you with doubts if any.

thanks
Nabhiraj
Hi Francesco, Thanks a lot for so quick reply. I shall try these suggestions you have posted. Do you have any examples so that i can follow them? what is this "modM = ((BofH(mfnc.normH)/(mu0_const))-mfnc.normH)" Where can I find some details regarding this type of functions? I shall try your suggestions and get back to you with doubts if any. thanks Nabhiraj

Please login with a confirmed email address before reporting spam

Posted: 9 years ago 16 sept. 2015, 12:36 UTC−4

Hi Francesco,
Thanks a lot for so quick reply.
I shall try these suggestions you have posted. Do you have any examples so that i can follow them?
what is this "modM = ((BofH(mfnc.normH)/(mu0_const))-mfnc.normH)" Where can I find some details regarding this type of functions?
I shall try your suggestions and get back to you with doubts if any.

thanks
Nabhiraj


Sorry, my reply get lost...

modM = ((BofH(mfnc.normH)/(mu0_const))-mfnc.normH) is the variable I define to make easier and it is the magnetization of the material.
BofH is the BHcurve interpolation function Mu0_const is the permeability and normH is the independent variable in Comsol.

You need to define 2 BHcurve named BofH_i (i=1,2 depending on the material)
Then you go on model->definitions->variables and define two modM varialbles:

modM_i = ((BofH_i(mfnc.normH)/(mu0_const))-mfnc.normH)

It is basically eq(8) at page 6 here: ocw.mit.edu/resources/res-6-001-electromagnetic-fields-and-energy-spring-2008/chapter-9/09.pdf

Then you use you modM1 or modM2 for the two material in the ocnstituve relations

[QUOTE] Hi Francesco, Thanks a lot for so quick reply. I shall try these suggestions you have posted. Do you have any examples so that i can follow them? what is this "modM = ((BofH(mfnc.normH)/(mu0_const))-mfnc.normH)" Where can I find some details regarding this type of functions? I shall try your suggestions and get back to you with doubts if any. thanks Nabhiraj [/QUOTE] Sorry, my reply get lost... modM = ((BofH(mfnc.normH)/(mu0_const))-mfnc.normH) is the variable I define to make easier and it is the magnetization of the material. BofH is the BHcurve interpolation function Mu0_const is the permeability and normH is the independent variable in Comsol. You need to define 2 BHcurve named BofH_i (i=1,2 depending on the material) Then you go on model->definitions->variables and define two modM varialbles: modM_i = ((BofH_i(mfnc.normH)/(mu0_const))-mfnc.normH) It is basically eq(8) at page 6 here: http://ocw.mit.edu/resources/res-6-001-electromagnetic-fields-and-energy-spring-2008/chapter-9/09.pdf Then you use you modM1 or modM2 for the two material in the ocnstituve relations

Please login with a confirmed email address before reporting spam

Posted: 9 years ago 20 sept. 2015, 03:27 UTC−4
Dear Francesco,
I chose the interpolation function and import the HB curve that I created. Then I define the global function that you suggested, while inputting the expression, if I use HB (since I gave the name the interpolation function as HB) and rest of the expression, the expression remain brown. i.e, comsol does not recognise the expression. Somewhere I am doing the mistake. Can you please tell me the steps to correct this problem?
Regards,
Nabhiraj
Dear Francesco, I chose the interpolation function and import the HB curve that I created. Then I define the global function that you suggested, while inputting the expression, if I use HB (since I gave the name the interpolation function as HB) and rest of the expression, the expression remain brown. i.e, comsol does not recognise the expression. Somewhere I am doing the mistake. Can you please tell me the steps to correct this problem? Regards, Nabhiraj

Please login with a confirmed email address before reporting spam

Posted: 9 years ago 20 sept. 2015, 04:11 UTC−4
it is hard to say in this way.
Could you upload your model?
it is hard to say in this way. Could you upload your model?

Please login with a confirmed email address before reporting spam

Posted: 9 years ago 20 sept. 2015, 06:53 UTC−4
Dear Francesco,
pl find attached the model that i worked on with remnant flux density as the constitutive relation. Please also find attached the HB curve that i wish to use. this is for the magnet VACODYM 722HR NdBFe magnet. If you can kindly use it in the model and attach the model back to me it will be of great help. I am absolutely new user and hence... the questions are little silly in nature. I hope I will be able to catch up faster. COMSOL is a huge code and lots of features. I am finding it difficult to learn them fast.
thanks a lot for your keen interest in help us.

Regards,
Nabhiraj
Dear Francesco, pl find attached the model that i worked on with remnant flux density as the constitutive relation. Please also find attached the HB curve that i wish to use. this is for the magnet VACODYM 722HR NdBFe magnet. If you can kindly use it in the model and attach the model back to me it will be of great help. I am absolutely new user and hence... the questions are little silly in nature. I hope I will be able to catch up faster. COMSOL is a huge code and lots of features. I am finding it difficult to learn them fast. thanks a lot for your keen interest in help us. Regards, Nabhiraj


Please login with a confirmed email address before reporting spam

Posted: 9 years ago 20 sept. 2015, 07:30 UTC−4
Dear Francesco,
Instead of creating a new geometry, i inserted the geometrical sequences from my old .mph file.
There when i try to insert a blank material only one property appears which is mur. (relative permeability). There are no other parameters visible in the parameter window except mur.
I shall try making a fresh file from the beginning.
Regards,
Nabhiraj
Dear Francesco, Instead of creating a new geometry, i inserted the geometrical sequences from my old .mph file. There when i try to insert a blank material only one property appears which is mur. (relative permeability). There are no other parameters visible in the parameter window except mur. I shall try making a fresh file from the beginning. Regards, Nabhiraj

Please login with a confirmed email address before reporting spam

Posted: 9 years ago 20 sept. 2015, 11:10 UTC−4

Dear Francesco,
Instead of creating a new geometry, i inserted the geometrical sequences from my old .mph file.
There when i try to insert a blank material only one property appears which is mur. (relative permeability). There are no other parameters visible in the parameter window except mur.
I shall try making a fresh file from the beginning.
Regards,
Nabhiraj


Dear Nabhiraj

I would say that the approach you use is not the correct one.
You are using the mf module, I would suggest to use the mfnc (magnetic field no current) module for permanent magnet.
I think that the setting of the simulation would be correct if you want to use the Br max value, but you have to change the physics.

Try to set up the simulation with the correct comsol module.
If you want to use BH function you do not need to specify the material. with the mfnc module you have to select "magnetization" in the constitutive relation (probably I made a mistake in may previous answer, sorry fr that) and put the modM variable * sin(theta) (or *cos(theta)) in the M fields.
Comsol is quite hard to learn, so you will need time, of course.

Good luck
[QUOTE] Dear Francesco, Instead of creating a new geometry, i inserted the geometrical sequences from my old .mph file. There when i try to insert a blank material only one property appears which is mur. (relative permeability). There are no other parameters visible in the parameter window except mur. I shall try making a fresh file from the beginning. Regards, Nabhiraj [/QUOTE] Dear Nabhiraj I would say that the approach you use is not the correct one. You are using the mf module, I would suggest to use the mfnc (magnetic field no current) module for permanent magnet. I think that the setting of the simulation would be correct if you want to use the Br max value, but you have to change the physics. Try to set up the simulation with the correct comsol module. If you want to use BH function you do not need to specify the material. with the mfnc module you have to select "magnetization" in the constitutive relation (probably I made a mistake in may previous answer, sorry fr that) and put the modM variable * sin(theta) (or *cos(theta)) in the M fields. Comsol is quite hard to learn, so you will need time, of course. Good luck

Please login with a confirmed email address before reporting spam

Posted: 8 years ago 20 oct. 2016, 09:34 UTC−4
I have used the method linked below for specifying non-linear permanent magnets. Would appreciate any feedback on this method. It seems to work, but would be interested to hear if there is a more robust method...

www.comsol.com/community/forums/general/thread/125412/

I have used the method linked below for specifying non-linear permanent magnets. Would appreciate any feedback on this method. It seems to work, but would be interested to hear if there is a more robust method... https://www.comsol.com/community/forums/general/thread/125412/

Note that while COMSOL employees may participate in the discussion forum, COMSOL® software users who are on-subscription should submit their questions via the Support Center for a more comprehensive response from the Technical Support team.