5.6      Absorbing Box

The  command from the drop-dowm menu under  button in the Model tab and Model->Absorbing Boundary Conditions->MUR Box... command from main menu invoke ABC Box dialogue for adding abc box with default settings for MUR.

The  command from the drop-dowm menu under  button in the Model tab and Model->Absorbing Boundary Conditions ->PML Box... command from main menu invoke ABC Box dialogue for adding abc box with default settings for PML.

 

When choosing MUR Box option the Create MUR Box dialogue appears.



The box name in the Name field can be set and the type of an absorbing box can be chosen in the Type drop-down list.

The View Options frame allows deciding if the MUR Box should be signed in the project window (Show text), choosing the Text size and Text place (at which box’s corner it should be placed).

In the Geometry tab the user needs to define the dimensions of the absorbing box. It can be done in two ways. First one is using Bounding Box Offset option, where the absorbing box is drawn at the defined offset from the bounding box of the project structure. The offset is defined in project units for each direction and applies to each side from the structure. In case of Absorbing Boxes the bounding box is always determined by the most outer object in the project (including Plane Wave and NTF Boxes).

Second solution is using Position option, where the user can choose Coordinates or Dimensions. While using Coordinates option the MinMax coordinates of the absorbing box in each direction should be defined. For the Dimensions option, length, width, and height of the absorbing box should be given together with the Min coordinates at which the box geometry starts.



In the Parameters tab the parameters for the absorbing box. Absorbing box of MUR type needs the effective permittivity of the medium in which the wave propagates. It is used by the software to calculate the correct phase velocity of the wave. Incorrect assumption of the effective permittivity increases the level of spurious reflections from the ABC. By default it is assumed that the medium is air and the effective permittivity value is set to 1.


Absorbing box of PML type needs to specify the PML thickness (in the number of cells) and to select the conductivity profile from the following:

·         Parabolic (used in most usual applications) = its conductivity varies as: A*x^2, where x=(distance from PML edge)/(PML thickness) and A set in the dialogue,

·         Exponential - its conductivity varies as: A*exp(B*x) with x defined as above, and A, B set in the dialogue.

      

 

It is advised to refer to Absorbing Boundary Conditions for more information regarding both types of absorbing boundary conditions.



Python code

The python code, which can be useful when creating project scripts, generated by Create MUR Box and Create PML Box dialogue for default parameters:


MUR Box


from FreeCAD import Base

QW_Modeller.addQWObject("QW_Modeller::AbsorbingBox","MURBox")

App.ActiveDocument.MURBox.OffsetX = 10.00000

App.ActiveDocument.MURBox.OffsetY = 10.00000

App.ActiveDocument.MURBox.OffsetZ = 10.00000

App.ActiveDocument.MURBox.Length = 20.00000

App.ActiveDocument.MURBox.Width = 20.00000

App.ActiveDocument.MURBox.Height = 20.00000

App.ActiveDocument.MURBox.Placement = Base.Placement(Base.Vector(0.00000,0.00000,0.00000),Base.Rotation(0.00000,0.00000,0.00000,1.00000))

Gui.ActiveDocument.MURBox.ShowText = True

Gui.ActiveDocument.MURBox.TextSize = 14

App.ActiveDocument.MURBox.Type = "MUR"

App.ActiveDocument.MURBox.EffectivePermittivity = 1.00000

App.ActiveDocument.recompute()

Gui.SendMsgToActiveView("ViewFit")


PML Box (Parabolic)


from FreeCAD import Base

QW_Modeller.addQWObject("QW_Modeller::AbsorbingBox","PMLBox")

App.ActiveDocument.PMLBox.OffsetX = 10.00000

App.ActiveDocument.PMLBox.OffsetY = 10.00000

App.ActiveDocument.PMLBox.OffsetZ = 10.00000

App.ActiveDocument.PMLBox.Length = 20.00000

App.ActiveDocument.PMLBox.Width = 20.00000

App.ActiveDocument.PMLBox.Height = 20.00000

App.ActiveDocument.PMLBox.Placement = Base.Placement(Base.Vector(0.00000,0.00000,0.00000),Base.Rotation(0.00000,0.00000,0.00000,1.00000))

Gui.ActiveDocument.PMLBox.ShowText = True

Gui.ActiveDocument.PMLBox.TextSize = 14

App.ActiveDocument.PMLBox.Type = "PML"

App.ActiveDocument.PMLBox.PMLProfile = "Parabolic"

App.ActiveDocument.PMLBox.Thickness = 8

App.ActiveDocument.PMLBox.ParabolicA = 1.00000

App.ActiveDocument.recompute()

Gui.SendMsgToActiveView("ViewFit")


PML Box (Expotential)


from FreeCAD import Base

QW_Modeller.addQWObject("QW_Modeller::AbsorbingBox","PMLBox")

App.ActiveDocument.PMLBox.OffsetX = 10.00000

App.ActiveDocument.PMLBox.OffsetY = 10.00000

App.ActiveDocument.PMLBox.OffsetZ = 10.00000

App.ActiveDocument.PMLBox.Length = 20.00000

App.ActiveDocument.PMLBox.Width = 20.00000

App.ActiveDocument.PMLBox.Height = 20.00000

App.ActiveDocument.PMLBox.Placement = Base.Placement(Base.Vector(0.00000,0.00000,0.00000),Base.Rotation(0.00000,0.00000,0.00000,1.00000))

Gui.ActiveDocument.PMLBox.ShowText = True

Gui.ActiveDocument.PMLBox.TextSize = 14

App.ActiveDocument.PMLBox.Type = "PML"

App.ActiveDocument.PMLBox.PMLProfile = "Expotential"

App.ActiveDocument.PMLBox.Thickness = 8

App.ActiveDocument.PMLBox.ExpotentialA = 0.02000

App.ActiveDocument.PMLBox.ExpotentialB = 4.00000

App.ActiveDocument.recompute()

Gui.SendMsgToActiveView("ViewFit")