Creating a boundary condition within an object, i.e. to measure flux

Mesh generators, CAD programs, and other tools
raback
Site Admin
Posts: 4812
Joined: 22 Aug 2009, 11:57
Antispam: Yes
Location: Espoo, Finland
Contact:

Re: Creating a boundary condition within an object, i.e. to measure flux

Post by raback »

Hi

What version of Gmsh do you have? I get:

Code: Select all

elmeruser@elmeruser-VirtualBox:~/ElmerWrk/core$ gmsh -3 coreWire.geo
Info    : Running 'gmsh -3 coreWire.geo' [Gmsh 4.4.1, 1 node, max. 1 thread]
Info    : Started on Thu Oct 27 18:56:07 2022
Info    : Reading 'coreWire.geo'...
Error   : Unknown number option 'Mesh.MeshSizeFromCurvature'
Info    : Done reading 'coreWire.geo'
Info    : Reading 'coreWire.geo.opt'...
Error   : Unknown string option 'General.BuildInfo'
Error   : Unknown string option 'General.ScriptingLanguages'
Error   : Unknown number option 'General.AbortOnError'
Error   : Unknown number option 'General.DetachedProcess'
Error   : Unknown number option 'General.FltkRefreshRate'
Error   : Unknown number option 'General.NativeFileChooser'
Segmentation fault (core dumped)
Edit: I downloaded a fresh Gmsh and seems to work fine there.

-Peter
raback
Site Admin
Posts: 4812
Joined: 22 Aug 2009, 11:57
Antispam: Yes
Location: Espoo, Finland
Contact:

Re: Creating a boundary condition within an object, i.e. to measure flux

Post by raback »

Hi,

You could try this one (with more iterations). The ~zero field at the interface is due to the fact that nodal fields are enforced to be continuous. Rather look at elemental fields... The magnetic energy for [x,y] table is integrated over. Here the code does not know what to do. I added some warnings and eliminated NaNs in the code (in devel).

-Peter
Attachments
coreWire.sif
(6.45 KiB) Downloaded 68 times
uplatise
Posts: 15
Joined: 11 Oct 2022, 00:10
Antispam: Yes
Contact:

Re: Creating a boundary condition within an object, i.e. to measure flux

Post by uplatise »

Hi Peter,

thank you for the tip, the elemental fields do show correct results, however results only make sense with mean:

Code: Select all

  Mask Name 1 = "Flux1"
  Variable 1 = Magnetic Flux Density e 1
  Operator 1 = boundary int mean
  Variable 2 = Magnetic Flux Density e 2
  Operator 2 = boundary int mean
  Variable 3 = Magnetic Flux Density e 3
  Operator 3 = boundary int mean
  Variable 4 = Magnetic Flux Density e
  Operator 4 = area
EDIT: my mistake above -> they're correct also with "int" only dividing by "area"

I've noticed that if mesh isn't sufficiently fine then B-H non-linear characteristics may distort the accuracy due to high concentration (flows) at certain nodes (which will incorrectly saturate and limit the H). So mesh creation is really a critical point in non-linear sim.

Technically parallel reduction could be possible by taking in account the area if given as one of the mandatory (when parallel = true and mean used), or auto enabled unless given, operators: SUM A_i * mean_i / SUM A_i

Uros.
Rich_B
Posts: 421
Joined: 24 Aug 2009, 20:18

Re: Creating a boundary condition within an object, i.e. to measure flux

Post by Rich_B »

Hello,

Attached is another gmsh model of the flux core, this time with a rectangular cross section. The dimensions of the core were taken from the referenced paper. The geo file was designed to make it easy to refine the mesh in the cross section.

Included are two cross section views, using a mesh with nominally 4 elements on a side of the rectangular cross section.

Rich.
rect-core-1.png
rect-core-1.png (208.78 KiB) Viewed 1214 times
rect-core-2.png
rect-core-2.png (309.31 KiB) Viewed 1214 times
Attachments
coreWire-rectangular.zip
(2.78 KiB) Downloaded 68 times
uplatise
Posts: 15
Joined: 11 Oct 2022, 00:10
Antispam: Yes
Contact:

Re: Creating a boundary condition within an object, i.e. to measure flux

Post by uplatise »

Hi Rich,

thank you for the nice example and also runs very fast ~32 seconds, non-parallel exec. gmsh generates around 200k elements.

Had to "!Mask Name" to get calcs in the rectCore.dat file.

This particular material from the article has the following params:

Code: Select all

  PFM Dipoles Field Strength(1) = Real 70
  PFM Dipoles Flux Density(1)   = Real 0.361
  H-B Curve = Variable "dummy"
    Procedure "MagnetoDynamics" "PlatiseFerroModel"
Sim then runs abount 45 seconds, and results show slightly higher flux 0.09 T on linear u_r = 3000, and 0.12 T with above.

Next thing will be to add "coil around" ...

Uros.
Rich_B
Posts: 421
Joined: 24 Aug 2009, 20:18

Re: Creating a boundary condition within an object, i.e. to measure flux

Post by Rich_B »

Hello Uros,

Yes, adding coils would make sense, after adding two holes for the infinity loop.

Could you go through the math again, about how to calculate the expected magnetic flux density?

Rich.
raback
Site Admin
Posts: 4812
Joined: 22 Aug 2009, 11:57
Antispam: Yes
Location: Espoo, Finland
Contact:

Re: Creating a boundary condition within an object, i.e. to measure flux

Post by raback »

Hi,

Nice case! There is a value of being fast. Trying out different options is then so much faster.

Maybe you can add this also to the "elmer-elmag" repo.

-Peter
Post Reply