Panel |
---|
|
Table of Contents |
---|
minLevel | 2 |
---|
outline | true |
---|
indent | 30px |
---|
type | flat |
---|
separator | newline |
---|
|
|
Input Examples
A complete example for a lossless cavity
Code Block |
---|
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 Block |
---|
acdtool postprocess eigentomode eigens
|
Code Block |
---|
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
}
|
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: 6
ReferenceNumber 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 x axis of the 2D port in the 3D coordinate system
YDirection: 0.0, 0.0, -1.0 //the y axis of the 2D port in the 3D coordinate system
ESolverPostProcess: {
Toggle: on
ModeFile: test
}
EigenSolver: {
NumEigenvalues: 1
FrequencyShift: 9.e9
}
CheckPoint: {
Action: save
Directory: eigens
}
Port: {
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: TE 1 0 ESolver: {
//load the TE10 mode
Type: Analytic //analytic expression is used
A: 0.028499 Mode: {
//dimension of the waveguideWaveguideType: inRectangular x
//it is a rectangular waveguide
B: 0.0134053 ModeType: TE 1 0 //dimension ofload the waveguideTE10 inmode
y
}
A: 0.028499 }
}
|
Load TEM mode in a coax waveguide
Code Block |
---|
Port: {
ReferenceNumber: 2
Origin: //dimension of the 0.0, 0.0, 0.011waveguide in x
ESolver: {
TypeB: Analytic
0.0134053 Mode: {
//dimension of the waveguide in y
WaveguideType: Coax
}
}
}
|
Load TEM mode in a coax waveguide
Code Block |
---|
ModeTypePort: TEM{
ReferenceNumber: 2
Origin: A: 0.0011 //smaller radius
0, 0.0, 0.011
ESolver: {
BType: 0.0033Analytic
//larger radius
Mode: {
}
}
}
|
Load TE11 mode in a circular waveguide
Code Block |
---|
Port: {
ReferenceNumberWaveguideType: 2Coax
Origin: 0.0, 0.0, 0.1
XDirectionModeType: 1.0,TEM
0.0, 0.0
YDirection: 0.0, 1.0, 0.0
A: 0.0011 ESolver: {//smaller radius
Type: Analytic
B: 0.0033 //larger radius
Mode: {
}
}
}
|
Load TE11 mode in a circular waveguide
Code Block |
---|
Waveguide typePort: Circular{
ReferenceNumber: 2
Origin: 0.0, Mode type: TE 1 10.0, 0.1
XDirection: 1.0, 0.0, 0.0
AYDirection: 0.03
0, 1.0, 0.0
ESolver: {
}
}
}
|
Load two TE modes in the same rectangular waveguide
Code Block |
---|
PortType: {Analytic
Reference number: 9 // FPC
Mode: Origin: 0.0, 0.198907, -0.4479152585
{
XDirection: -1.0, 0.0, 0.0
YDirection: 0.0, 0.0, 1.0 Waveguide type: Circular
ESolver: {
Mode type: TE Type:1 Analytic1
Mode: {
A: 0.03
WaveguideType: Rectangular
}
}
}
|
Load two TE modes in the same rectangular waveguide
Code Block |
---|
Port: { ModeType: TE 1 1
Reference number: 9 // FPC
AOrigin: 0.1348935946 0, 0.198907, -0.4479152585
XDirection: -1.0, 0.0, 0.0
B:YDirection: 0.0, 0.0249737149999999700, 1.0
ESolver: {
}
}
}
PortType: { Analytic
Reference number: 9 // FPC
Mode: {
Origin: 0.0, 0.198907, -0.4479152585
XDirection: -1.0, 0.0, 0.0
YDirectionWaveguideType: 0.0, 0.0, 1.0 Rectangular
ESolver: {
ModeType: TE 1 1
Type: Analytic
ModeA: {0.1348935946
WaveguideTypeB: Rectangular0.024973714999999970
}
}
}
ModeTypePort: TE 2 0{
Reference number: 9 // FPC
AOrigin: 0.1348935946 0, 0.198907, -0.4479152585
XDirection: -1.0, 0.0, 0.0
BYDirection: 0.024973714999999970 0, 0.0, 1.0
ESolver: {
}
Type: Analytic
}
}
|
Make a non-planar surface absorbing boundary
Code Block |
---|
PortMode: {
ReferenceNumber: 5 //reference surfaceWaveguideType: IDRectangular
Origin: 0.0, 0.0, 0.0 //not used
ModeType: TE XDirection:2 1.0, 0.0,
0.0 //not used
YDirection: 0.0, 1.0, A: 0.01348935946
//not used
ESolver: {
Type: Analytic
Mode:{B: 0.024973714999999970
}
}
}
|
Make a non-planar surface absorbing boundary
Code Block |
---|
Port: { Mode number: 1
ReferenceNumber: 5 //reference surface ID
Waveguide typeOrigin: ABC
0.0, 0.0, 0.0 //not used
XDirection: 1.0, 0.0, Mode type: ABC
0.0 //not }used
}
}
|
LinearSolver options in EigenSolver container
...
YDirection: 0.0, 1.0, 0.0 //not used
|
...
ESolver: {
Type: Analytic
|
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
LinearSolver options in EigenSolver container
- The first option is that user does not provide anything. The EigenSolver container in the input file looks like: 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 third option is to use out-of-core sparse direct solver. Code Block |
---|
EigenSolver: {
NumEigenvalues: 1
FrequencyShift: 10.e9
MemoryTolerance: 1000 //if the memory usage of the matrix factor in any process is larger than 1000MBytes,
1.e-8
}
|
In this case, Omega3P will use the default option for linear solver for solving shifted linear systems
- 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.
//switch to use out-of-core solver.
}
}
|
- 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: 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 that, make sure you toggle the PostProcess on. Code Block |
---|
PostProcess: {
Toggle: on // this should be on for computing wallloss Q
ModeFile: ./dds
}
|
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 |
---|
Mode : {
TotalEnergy : 4.4270939088102e-12
QualityFactor : 6478.5096350252
File : ./dds.l0.1.144469E+10.m0
PowerLoss : 4.9139118623939e-05
Frequency : 11444685657.626
}
|
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. - 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: Code Block |
---|
ModelInfo: {
File: dds3.ncdf
BoundaryCondition: {
HFormulation: 1
Magnetic: 1, 2, 3, 4
Impedance: 6
}
SurfaceMaterial: {
ReferenceNumber: 6
Sigma: 5.8e7
}
}
|
After you run omega3p with the input, in the output file, you will see Code 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 }
}
|
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 as Code Block |
---|
COMMIT MODE: 0 FREQ = (11446188331.64141,869883.6974622669) k = (239.8943683519209,0.01823141417003215) Q = 6579.148663800495
|
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).
Both methods should give you converged Q results if mesh is dense enough.