Panel | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||
|
Input Examples
A complete example for a lossless cavity
Code Block |
---|
Wiki Markup |
{list-pages:direction=siblings} h3. A complete example for a lossless cavity {code} ModelInfo: { File: dds3.ncdf //mesh file. It is the file converted using acdtool BoundaryCondition: { //specify boundary conditions. The numbers here are sideset in cubit Magnetic: 1, 2 //reference surfaces 1 and 2 are symmetric planes Electric: 3 4 //set reference surfaces 3 and 4 to be electric boundary condition Exterior: 6 //surface group 6 (maybe many surfaces) is metal } SurfaceMaterial: { //for each metal (exterior) surface group, list the sigma values ReferenceNumber: 6 Sigma: 5.8e7 } } FiniteElement: { Order: 2 //set the finite element basis function order to be used. CurvedSurfaces: on } EigenSolver: { NumEigenvalues: 1 //want to compute 1 mode FrequencyShift: 10.e9 //the eigenfrequency of the mode should be above 10GHz } CheckPoint: { Action: save Directory: eigens //eigenvectors are saved out into this directory } PostProcess: { Toggle: off //postprocess switch ModeFile: dds //The prefix of the mode filename. } Log: thisrun.log //If you want more printout logged into the file {code} |
Once
...
Omega3P
...
run
...
is
...
successfully
...
completed,
...
eignvectors
...
are
...
stored
...
in
...
subdirectory
...
<tt>eigens</tt>.
...
User
...
can
...
convert
...
them
...
to
...
mode
...
files
...
to
...
be
...
visualized
...
using
...
paraview.
...
The
...
following
...
is
...
the
...
command
...
to
...
do
...
that:
Code Block |
---|
} acdtool postprocess eigentomode eigens {code} h3. A complete example about a cavity |
A complete example about a cavity with lossy materials
Code Block |
---|
with lossy materials {code} ModelInfo: { File: ./pillbox.ncdf BoundaryCondition: { Electric: 1,2,3,4 Exterior: 6 } Material : { Attribute: 1 Epsilon: 1.0 Mu: 1.0 } Material : { Attribute: 2 Epsilon: 1.0 Mu: 1.0 EpsilonImag: -0.2 //lossy material } } FiniteElement: { Order: 1 Curved Surfaces: off } PostProcess: { Toggle: off ModeFile: mode SymmetryFactor: 2 } EigenSolver: { NumEigenvalues: 2 FrequencyShift: 5e9 } {code} h3. A complete example with waveguide loaded cavity {code} |
A complete example with periodic boundary conditions
Code Block |
---|
ModelInfo: { File: cell1fourthc026ds-pbc.ncdf BoundaryCondition: { Magnetic: 1, 2,3,4 Periodic_M: 3 Exterior: 6 //master surface WaveguidePeriodic_S: 7 4 //forslave eachsurface, numberthe appearedmesh here,should itbe shouldexactly havesame atas leastthose oneon Portthe containermaster later.surface } } FiniteElementExterior: {6 OrderTheta: -150 1//phase Curved Surfaces: on } } PostProcessFiniteElement: { Order: 2 ToggleCurvedSurfaces: on ModeFileScalarPotential: test 1 //use A-V formulation } PostProcess: { Toggle: on ModeFile: mode SymmetryFactor: 8. } EigenSolver: { NumEigenvalues: 1 FrequencyShift: 10e9 } |
A complete example with waveguide loaded cavity
Code Block |
---|
9.e9 } CheckPointModelInfo: { ActionFile: savecell1fourth.ncdf DirectoryBoundaryCondition: eigens{ } PortMagnetic: {1,2,3,4 Exterior: ReferenceNumber6 Waveguide: 7 //thisfor each number appeared here, it should matchhave surfaceat groupsleast inone waveguidePort boundarycontainer conditionlater. Absorbing and Waveguide have the same effects. Origin:Omega3P internally will figure 0.0, 0.0415, 0.0out which BC to use. } //the origin of the 2D port in the 3D coordinate system } FiniteElement: { Order: XDirection: 1.0, 0.0, Curved 0.0 Surfaces: on } //the xPostProcess: axis{ of the 2DToggle: porton in the 3D coordinateModeFile: systemtest } EigenSolver: { YDirectionNumEigenvalues: 0.0, 0.0, -1.0 //the y axis of the 2D port in the 3D coordinate systemFrequencyShift: 9.e9 } CheckPoint: { Action: save Directory: eigens } ESolverPort: { ReferenceNumber: 7 //this number Type:should Analyticmatch surface groups in waveguide boundary condition. //analyticOrigin: expression is used 0.0, 0.0415, 0.0 //the origin of the 2D port in the Mode: {3D coordinate system XDirection: 1.0, 0.0, 0.0 //the x axis of the 2D WaveguideType:port Rectangularin the 3D coordinate system //it is a rectangular waveguide YDirection: 0.0, 0.0, -1.0 //the y axis of the 2D port in the 3D coordinate system ModeType ESolver: TE{ 1 0 Type: Analytic //load the TE10 mode //analytic expression is used AMode: 0.028499{ WaveguideType: Rectangular //dimensionit is ofa therectangular waveguide in x BModeType: 0.0134053TE 1 0 //load the TE10 mode //dimension of the waveguide in y } A: 0.028499 } } {code} h3. Load TEM mode in a coax waveguide {code} Port: { //dimension of the waveguide ReferenceNumber:in 2x Origin: 0.0, 0.0, 0.011 ESolverB: { 0.0134053 Type: Analytic //dimension of the waveguide in Mode: {y WaveguideType: Coax} } } |
Load TEM mode in a coax waveguide
Code Block |
---|
Port: { ModeTypeReferenceNumber: TEM2 Origin: 0.0, 0.0, 0.011 AESolver: 0.0011{ //smaller radius Type: Analytic B: 0.0033 //larger radius Mode: { } } } {code} h3. Load TE11 mode in a circular waveguide {code} Port: { WaveguideType: Coax ReferenceNumber: 2 ModeType: TEM Origin: 0.0, 0.0, 0.1 XDirection: 1.0, 0.0, A: 0.0 0011 //smaller radius YDirection: 0.0, 1.0, 0.0 ESolver: { B: 0.0033 //larger radius Type: Analytic } } } |
Load TE11 mode in a circular waveguide
Code Block |
---|
Mode: { Port: { ReferenceNumber: 2 Origin: Waveguide type: Circular 0.0, 0.0, 0.1 XDirection: 1.0, 0.0, 0.0 Mode typeYDirection: 0.0, TE 1 1.0, 0.0 ESolver: { AType: 0.03Analytic } Mode: { } } {code} h3. Load two TE modes in the same rectangular waveguide {code} Port: { Waveguide Reference numbertype: 9 // FPCCircular Origin: 0.0, 0.198907, -0.4479152585 XDirection: -1.0, 0.0, 0.0 Mode YDirectiontype: 0.0, 0.0,TE 1 1.0 ESolver: { A: 0.03 Type: Analytic Mode: {} } } |
Load two TE modes in the same rectangular waveguide
Code Block |
---|
Port: { Reference WaveguideTypenumber: Rectangular 9 // FPC Origin: 0.0, 0.198907, -0.4479152585 ModeTypeXDirection: TE -1 1.0, 0.0, 0.0 YDirection: 0.0, 0.0, 1.0 ESolver: { A: 0.1348935946 Type: Analytic BMode: 0.024973714999999970 { } } } PortWaveguideType: { Rectangular Reference number: 9 // FPC Origin: 0.0, 0.198907, -0.4479152585 ModeType: TE 1 XDirection: -1.0, 0.0, 0.0 1 YDirection: 0.0, 0.0, 1.0 A: 0.1348935946 ESolver: { TypeB: Analytic0.024973714999999970 } Mode: { } } Port: { Reference number: 9 WaveguideType: Rectangular// FPC Origin: 0.0, 0.198907, -0.4479152585 ModeTypeXDirection: TE 2 -1.0, 0.0, 0.0 YDirection: 0.0, 0.0, 1.0 ESolver: { A: 0.1348935946 Type: Analytic BMode: 0.024973714999999970 { } } WaveguideType: } {code} h3. Make a non-planar surface absorbing boundary {code} Port: { Rectangular ReferenceNumber: 5 ModeType: TE 2 0 //reference surface ID Origin: 0.0, 0.0, 0.0 A: //not used 0.1348935946 XDirection: 1.0, 0.0, 0.0 //not used YDirectionB: 0.0, 1.0,024973714999999970 0.0 //not used ESolver: {} Type: Analytic} } |
Make a non-planar surface absorbing boundary
Code Block |
---|
Port: Mode:{ ReferenceNumber: 5 //reference Mode number: 1surface ID Origin: 0.0, 0.0, 0.0 //not used Waveguide typeXDirection: ABC 1.0, 0.0, 0.0 //not used YDirection: 0.0, 1.0, 0.0 Mode type//not used ESolver: ABC{ Type: }Analytic } } {code} h3. LinearSolver options in EigenSolver container * The first option is that user does not provide anything. The EigenSolver container in the input file looks like: {code} EigenSolver: { NumEigenvalues:Mode:{ Mode number: 1 1 FrequencyShift: Waveguide type: ABC 10.e9 } {code} In this case, Omega3P will use the default option for linear solver for solving shifted linear systems * The second option is to use Krylov subspace method with different preconditioner. {code}Mode type: ABC } } } |
LinearSolver options in EigenSolver container
- The first option is that user does not provide anything. The EigenSolver container in the input file looks like:
Code Block EigenSolver: { NumEigenvalues: 1 FrequencyShift: 10.e9
...
Tolerance:
...
In this case, Omega3P will use the default option for linear solver for solving shifted linear systems1.e-8 }
- The second option is to use float version of the sparse direct solver.
Code Block EigenSolver: { NumEigenvalues: 1 FrequencyShift: 10.e9 Preconditioner: MUMPSFLOAT //use the float version. memory usage reduced into half. }
- The third option is to use Krylov subspace method with different preconditioner.
Code Block EigenSolver: { NumEigenvalues: 1 FrequencyShift: 10.e9
...
Preconditioner:
...
MP
...
...
...
...
...
//this
...
use
...
p-version
...
of
...
multilevel
...
preconditioner.
...
The code will choose either CG (real matrices) or GMRES (complex matrices) and the p-version}
of multilevel precondtioner as the solver for shifted linear systems.
- The fourth option is to use out-of-core sparse direct solver (an experimental feature).
Code Block EigenSolver: { NumEigenvalues: 1 FrequencyShift: 10.e9 Memory: 1000 //
...
if the
...
memory
...
usage
...
of the matrix factor in any process is larger than 1000MBytes, //switch to use out-of-core solver. }
FAQ
How to calculate Wallloss Quality Factor?
There are two ways to do so. Each way has its advantage and disadvantage.
- Inside ModelInfo.BoundaryCondition define a set of boundary surfaces as Exterior.
For each of the boundary surfaces, have a corresponding SurfaceMaterial container inside ModelInfo.
For example:
After that, make sure you toggle the PostProcess on.Code Block ModelInfo: { File: .dds3.ncdf BoundaryCondition: { Magnetic: 1, 2, 3, 4 Exterior: 6 // sideset 6 is defined as Exterior BC. } SurfaceMaterial: { // have a separate for each number in Exterior BC ReferenceNumber: 6 //the corresponding sideset in Exterior BC Sigma: 5.8e7 //electrical conductivity of the material } }
After you run omega3p with the input file, you will get a file called "output" under the same directory. Inside the file, it has a summary of results such as:Code Block PostProcess: { Toggle: on // this should be on for computing wallloss Q ModeFile: ./dds }
The number after QualityFactor is the one you are looking for. This method uses perturbation theory and has advantage that it is very simple. The computation associated with it is minimal.Code Block Mode : { TotalEnergy : 4.4270939088102e-12 QualityFactor : 6478.5096350252 File : ./dds.l0.1.144469E+10.m0 PowerLoss : 4.9139118623939e-05 Frequency : 11444685657.626 }
- Inside ModelInfo.BoundaryCondition, define the set of surfaces as Impedance (instead of Exterior in method 1).
Set the HFormulation to be 1 (this is very important). Also, have a set of corresponding SurfaceMaterials inside ModelInfo as those in method 1. For example:
After you run omega3p with the input, in the output file, you will seeCode Block ModelInfo: { File: dds3.ncdf BoundaryCondition: { HFormulation: 1 Magnetic: 1, 2, 3, 4 Impedance: 6 } SurfaceMaterial: { ReferenceNumber: 6 Sigma: 5.8e7 } }
The number after ExternalQ is the wall loss Q you are looking for. During the omega3p run, it should also print out the Q information such asCode Block Mode = { TotalEnergy = { 6.2827077634198e-07, 0 }, ExternalQ = 6579.1486638005, QualityFactor = inf, File = './dds.l0.R1.144619E+10I8.698837E+05.m0', PowerLoss = 0, Frequency = { 11446188331.641, 869883.69746227 } }
Note that this method set an impedance boundary condition on those surfaces and make the eigenvalue problem complex and nonlinear. It takes more time and memory to solve the problem. But the field will be in the right phase (even close to the boundary surfaces).Code Block COMMIT MODE: 0 FREQ = (11446188331.64141,869883.6974622669) k = (239.8943683519209,0.01823141417003215) Q = 6579.148663800495
Both methods should give you converged Q results if mesh is dense enough.