Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
  ModelInfo: {
    File: cell1fourth.ncdf
    BoundaryCondition: {
      Magnetic: 1,2,3,4
      Exterior: 6
      Waveguide: 7    //for each number appeared here, it should have at least one Port container later. 
    }
  }

  FiniteElement: {
    Order:           1
    Curved Surfaces: on
  }

  PostProcess: {
    Toggle: on
    ModeFile: test
  }
        
  EigenSolver: {
    NumEigenvalues:     1
    FrequencyShift: 		9.e9
  }

  CheckPoint: {
    Action: save
    Directory: eigens
  }


  Port: {
        ReferenceNumber: 7     //this number should match surface groups in waveguide boundary condition.
        Origin:     0.0, 0.0415, 0.0    //the origin of the 2D port in the 3D coordinate system
        XDirection: 1.0, 0.0,    0.0    //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
        ESolver: {
                Type: Analytic              //analytic expression is used 
                Mode: {
                        WaveguideType: Rectangular     //it is a rectangular waveguide
                        ModeType: TE 1 0                    //load the TE10 mode
                        A: 0.028499                            //dimension of the waveguide in x
                        B: 0.0134053                           //dimension of the waveguide in y
                 }
         }
   }

...

Code Block
   Port: {
        ReferenceNumber: 2
        Origin:     0.0, 0.0, 0.011
        ESolver: {
                Type: Analytic
                Mode: {
                        WaveguideType: Coax
                        ModeType: TEM 
                        A: 0.0011  //smaller radius
                        B: 0.0033  //larger radius
                }
        }
   }

Load TE11 mode in a circular waveguide

Code Block

   Port: {
        ReferenceNumber: 2
        Origin:     0.0, 0.0, 0.1
        XDirection: 1.0,  0.0,    0.0
        YDirection: 0.0,  1.0,    0.0
        ESolver: {
                Type: Analytic
                Mode:  {
                        Waveguide type: Circular
                        Mode type: TE 1 1
                        A: 0.03
                }
        }
   }

Load two TE modes in the same rectangular waveguide

Code Block

  Port: {
      Reference number: 9  // FPC
      Origin: 0.0, 0.198907, -0.4479152585
      XDirection:  -1.0, 0.0, 0.0
      YDirection: 0.0, 0.0, 1.0           
      ESolver:  {
             Type: Analytic
             Mode: {
                     WaveguideType: Rectangular
                     ModeType: TE 1 1
                     A: 0.1348935946  
                     B: 0.024973714999999970 
            }
     }
  }

  Port: { 
      Reference number: 9  // FPC
      Origin: 0.0, 0.198907, -0.4479152585
      XDirection:  -1.0, 0.0, 0.0
      YDirection: 0.0, 0.0, 1.0           
      ESolver: {
             Type: Analytic
             Mode:  {
                     WaveguideType: Rectangular
                     ModeType: TE 2  0
                     A: 0.1348935946  
                     B: 0.024973714999999970  
            }
       }
   }

Make a non-planar surface absorbing boundary

Code Block

  Port: {
    ReferenceNumber: 5              //reference surface ID
    Origin:     0.0, 0.0, 0.0       //not used
    XDirection: 1.0, 0.0,    0.0    //not used
    YDirection: 0.0, 1.0,    0.0    //not used
    ESolver: {
      Type: Analytic
      Mode:{
                       Mode number: 1
                       Waveguide type: ABC
                       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
      }
    
    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 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 third option is to use out-of-core sparse direct solver.
    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. 
      }