Artifacts at sliding boundary using Mortar BC

Clearly defined bug reports and their fixes
Post Reply
pavel
Posts: 34
Joined: 17 Apr 2014, 17:08
Antispam: Yes

Artifacts at sliding boundary using Mortar BC

Post by pavel »

Hello,

Here is a postprocessing video of a PMSM 2D MagDyn model.
http://youtu.be/1gIOrbyePo0
In the center of the airgap at several timesteps appear artifacts which spoil the simulation. First at time 4 s. And most apparent at 24 s.
These points are at every pi/2 along the airgap.

I’ve got the following warning during the solving

Code: Select all

WARNING:: InterpolateMeshToMesh: Points not found: 4 (found 3788)
It probably goes from the MeshDeform solver.
Here is my .sif file

Code: Select all

! PMSM Transient Zero Currents
! pavel.ponomarev@lut.fi

! Parameters

$ w = 0.75*pi/180 		! [rad/s] 1 degree per second
$ MPM = 890e3			! magnetization of PMs
$ MuPM = 1.06			! permeability of PMs

Header
  CHECK KEYWORDS Warn
  Mesh DB "." "."
  Include Path ""
  Results Directory "results"
End

Simulation
  Max Output Level = 3
  Coordinate System = Cartesian 
  Coordinate Scaling = 0.001
  Simulation Type = Transient
  Timestepping Method = BDF
  BDF Order = 2
  Timestep Sizes = 1
  Timestep Intervals = 121
  Steady State Max Iterations = 1
  Output Intervals = 1
  Solver Input File = case.sif
  Post File = "case_t.ep"
End

Body 1
  Target Bodies(1) = 1
  Name = "Body 1"
  Equation = 1
  Material = 1
End

Body 2
  Target Bodies(1) = 2
  Name = "Body 2"
  Equation = 1
  Material = 1
  Body Force = 1
End

Body 3
  Target Bodies(1) = 3
  Name = "Body 3"
  Equation = 1
  Material = 2
End

Body 4
  Target Bodies(1) = 4
  Name = "Body 4"
  Equation = 1
  Material = 2
End

Body 5
  Target Bodies(1) = 5
  Name = "Body 5"
  Equation = 1
  Material = 2
End

Body 6
  Target Bodies(1) = 6
  Name = "Body 6"
  Equation = 1
  Material = 2
End

Body 7
  Target Bodies(1) = 7
  Name = "Body 7"
  Equation = 1
  Material = 2
End

Body 8
  Target Bodies(1) = 8
  Name = "Body 8"
  Equation = 1
  Material = 2
End

Body 9
  Target Bodies(1) = 9
  Name = "Body 9"
  Equation = 1
  Material = 2
End

Body 10
  Target Bodies(1) = 10
  Name = "Body 10"
  Equation = 1
  Material = 2
  Body Force = 1
End

Body 11
  Target Bodies(1) = 11
  Name = "Body 11"
  Equation = 1
  Material = 3
  Body Force = 1
End

Body 12
  Target Bodies(1) = 12
  Name = "Body 12"
  Equation = 1
  Material = 6
  Body Force = 1
End

Body 13
  Target Bodies(1) = 13
  Name = "Body 13"
  Equation = 1
  Material = 5
  Body Force = 1
End

Body 14
  Target Bodies(1) = 14
  Name = "Body 14"
  Equation = 1
  Material = 4
  Body Force = 1
End

Body 15
  Target Bodies(1) = 15
  Name = "Body 15"
  Equation = 1
  Material = 2
  Body Force = 1
End

Solver 1
  Exec Solver = Before Timestep
  Equation = MeshDeform
  Procedure = "RigidMeshMapper" "RigidMeshMapper"
End

Solver 2
  Equation = MgDyn2D
  Procedure = "MagnetoDynamics2D" "MagnetoDynamics2D"
  Exec Solver = Always

  Steady State Convergence Tolerance = 1.0e-4

  Nonlinear System Convergence Tolerance = 1.0e-4
  Nonlinear System Max Iterations = 50
  Nonlinear System Relaxation Factor = 1

  Linear System Solver = Iterative
  Linear System Symmetric = True
  Linear System Iterative Method = BiCGStabL
  BiCGStabl Polynomial Degree = 4
  Linear System Max Iterations = 800
  Linear System Residual Output = 100
  Linear System Convergence Tolerance = 1.0e-7
  Linear System Preconditioning = ILU1
  Linear System Abort Not Converged = False
End

Solver 3
  Equation = MgDyn2DPost
  Procedure = "MagnetoDynamics2D" "BSolver"
  Exec Solver = After Timestep
  Linear System Solver = Iterative
  Linear System Iterative Method = BiCGStabL
  Linear System Symmetric = True
  Linear System Max Iterations = 500
  Linear System Residual Output = 50
  Linear System Preconditioning = Ilu0
  Linear System Convergence Tolerance = 1.0e-3
  Linear System Abort Not Converged = False
  Discontinuous Galerkin = True
  Average Within Materials = True
End


Solver 4
  Exec Solver = After Timestep
  Procedure = "ResultOutputSolve" "ResultOutputSolver"
  Output File Name = "case_tt"
  Vtu Format = True
  Save Geometry Ids = True
End

Solver 5
  Exec Solver = After Timestep
  Equation = SaveLine
  Procedure = "SaveData" "SaveLine"
  Save Flux = True
  Flux Variable = b
  Filename = "line.dat"
End 

Equation 1
  Name = "ModelDomain"
  Active Solvers(5) = 1 2 3 4 5 
End

Material 1
  Name = "Iron"
  Electric Conductivity = 0
! actually B-H values are in the file HB1
  H-B Curve = Variable coupled iter
    Real  Cubic
      Include HB1     
    End
End

Material 2
  Name = "Air"
  Relative Permeability = 1
  Electric Conductivity = 0
End

Material 3
  Name = "PM_right"
  Relative Permeability = $ MuPM
  Magnetization 1 = Variable time, timestep size
    Real MATC "MPM*cos(w*(tx(0)-tx(1)))"
  Magnetization 2 = Variable time, timestep size
    Real MATC "MPM*sin(w*(tx(0)-tx(1)))"

  Electric Conductivity = 0
End

Material 4
  Name = "PM_up"
  Relative Permeability = $ MuPM
  Magnetization 1 = Variable time, timestep size
    Real MATC "-MPM*sin(w*(tx(0)-tx(1)))"
  Magnetization 2 = Variable time, timestep size
    Real MATC "MPM*cos(w*(tx(0)-tx(1)))"
  Electric Conductivity = 0
End

Material 5
  Name = "PM_left"
  Electric Conductivity = 0
  Relative Permeability = $ MuPM
  Magnetization 1 = -890e3
  Magnetization 1 = Variable time, timestep size
    Real MATC "-MPM*cos(w*(tx(0)-tx(1)))"
  Magnetization 2 = Variable time, timestep size
    Real MATC "-MPM*sin(w*(tx(0)-tx(1)))"
End

Material 6
  Name = "PM_down"
  Electric Conductivity = 0
  Relative Permeability = $ MuPM
  Magnetization 1 = Variable time, timestep size
    Real MATC "MPM*sin(w*(tx(0)-tx(1)))"
  Magnetization 2 = Variable time, timestep size
    Real MATC "-MPM*cos(w*(tx(0)-tx(1)))"
End

Body Force 1
  Name = "BodyForce_Rotation"
  Mesh Rotate 3 = Variable time, timestep size
    Real MATC "180/pi*w*(tx(0)-tx(1))"  		! in degrees
End

Boundary Condition 1
  Target Boundaries(1) = 1 
  Name = "Boundary_Outer"
  Potential Condition = 0
  Potential = 0
End

Boundary Condition 2
   Target Boundaries(1) = 2
   Name = "Sliding"
   Discontinuous Boundary = Logical True
   Save Line = True
   Mortar BC = 3
End
The mesh files are in the attachment.
casePM.zip
case_mesh
(1.36 MiB) Downloaded 441 times
Do you have an idea how to avoid such an error? Is it coming from my mesh or something still to be done in 2D with mortar BC?
Version of solver is 7 (rev.6697) on Ubuntu virtual machine.

BR, Pavel
raback
Site Admin
Posts: 4828
Joined: 22 Aug 2009, 11:57
Antispam: Yes
Location: Espoo, Finland
Contact:

Re: Artifacts at sliding boundary using Mortar BC

Post by raback »

Hi Pavel,

You're right, there is a problem. As you state the problem seems to be in the interpolation. One problem could be that the mesh is always faceted to some degree so the radius actually varies and there might be some problem with the default tolerances defined in the code:

Code: Select all

       eps_global = ListGetConstReal( CurrentModel % Simulation,  &
           'Interpolation Global Epsilon', Stat)
       IF(.NOT. Stat) eps_global = 2.0d-10
       
       eps_local = ListGetConstReal( CurrentModel % Simulation,  &
           'Interpolation Local Epsilon', Stat )
       IF(.NOT. Stat) eps_local = 1.0d-10

       eps_tries = ListGetInteger( CurrentModel % Simulation,  &
           'Interpolation Max Iterations', Stat )
       IF(.NOT. Stat) eps_tries = 12

       eps_numeric = ListGetConstReal( CurrentModel % Simulation, &
           'Interpolation Numeric Epsilon', Stat)
       IF(.NOT. Stat) eps_numeric = 1.0e-10
You might try with a little sloppier criteria.

Now another remedy for this problem would be to move from (x,y) coordinates to (phi,r) coordinates since there the mesh is not faceted. This can actually be done with the keyword "Rotational Projector" if periodicity is used. As in this case you have full 2*pi degrees one should add some duplicate copies of the element which sits on the 0/2*pi intersection.

You could also play with the output a little bit to get some more info on the problematic nodes. This happens in line ~690 of InterpolateMeshToMesh.src.

-Peter

-Peter
Post Reply