FDSolver Object
This is the object that controls the time-harmonic high frequency solver and its methods, as well as the integral equation solver (see also IESolver Object). Every setting concerning a frequency domain or integral equation solver simulation run may be defined with this object. Mesh and solver method can be chosen by calling Method. Use the Start command to run the solver.
Frequency Domain Solver Settings
Frequency Domain Solver General
Reset
Resets all previously made settings concerning the solver to the default values.
Start int
Starts the solver with the current settings and returns 1 if the calculation is successfully finished and 0 if it failed.
AcceleratedRestart ( bool flag )
If activated, the frequency domain solver with hexahedral or tetrahedral mesh stores a subset of the results from frequency samples calculated so far in order to reuse this information for an accelerated recalculation of additional frequency samples in subsequent solver runs. Since a direct equation system solver does not profit from a good initial guess to the solution, this mainly applies to the iterative solver. However, you may try to calculate some frequency samples using the direct solver, and continue with the iterative solver, thereby taking into account solutions from the direct solver to speed up the simulation.
AccuracyTet ( double value )
Specifies the desired accuracy for the tetrahedral frequency domain solver in terms of the relative residual norm of the linear equation system solver. The accuracy value may be chosen from the range 1e-3 down to 1e-12, where 1e-12 correspond to the highest accuracy level.
AccuracySrf ( double value )
Specifies the desired accuracy for the tetrahedral frequency domain solver in terms of the relative residual norm of the linear equation system solver. The accuracy value may be chosen from the range 1e-3 down to 1e-12, where 1e-12 correspond to the highest accuracy level.
AccuracyHex ( double value )
Specifies the desired accuracy for the hexahedral frequency domain solver in terms of the relative residual norm of the linear equation system solver. The accuracy value may be chosen from the range 1e-3 down to 1e-12, where 1e-12 correspond to the highest accuracy level.
StoreAllResults ( bool flag )
If this method is activated (flag = True), field results are stored at each frequency sample. This comprises electric and magnetic fields, as well as electric and magnetic flux densities.
StoreSolutionCoefficients ( bool flag )
If this method is activated (flag = True), solution coefficients are stored on disk at each frequency sample and at each excitation.
SetOpenBCTypeHex ( enum{"Default", "PML", "FreespaceSIBC"} type )
Chooses how the open boundary is realized in the frequency domain solver with hexahedral mesh. The default is PML. For electrically relatively small models with the open boundaries defined next to vacuum, the first order freespace open boundary condition (type = "FreespaceSIBC") might be an alternative to save memory and to speed up the iterative solver's convergence.
SetOpenBCTypeTet ( enum{"Default", "PML", "SIBC"} type )
Chooses how the open boundary is realized in the frequency domain solver with tetrahedral mesh, unless the problem has unit cell boundary conditions, for which the open boundary is realized by a Floquet mode "port."
The default is the standard impedance boundary condition (SIBC), which shows low artificial reflection for plane waves that impinge on the open boundary perpendicularly (the field solution of course is not necessarily a plane wave, but might be considered as the superposition of various plane waves at different angles.) For "plane wave" angles closer to grazing incidence, the PML provides lower artificial reflection, but at the cost of higher memory usage and more demanding linear equation systems, which require more time to solve.
AddMonitorSamples ( bool flag )
If this method is activated (flag = True), a solver run is performed for all monitor frequencies defined, independently of the number of other (non-monitor) frequency samples, which are specified using the FrequencySamples and AddSampleInterval methods. Please note that the total number of samples will be increased automatically in order to take into account the monitor definitions, if necessary. Otherwise (flag = False), monitors will not be calculated.
FrequencySamples ( int nFSamples )
Specifies the (maximum) number of frequency samples that should be calculated in a S-parameter frequency sweep. The samples are placed adaptively in the current global frequency interval. The method AddSampleInterval allows to specify the sampling strategy more precisely.
MeshAdaptionHex ( bool flag )
Activate the broadband, expert-system based adaptive mesh refinement for the hexahedral frequency domain solver.
MeshAdaptionTet ( bool flag )
Activate the adaptive mesh refinement for the tetrahedral frequency domain solver. The adaptation frequency samples are defined by using the AddSampleInterval method with adaptation set to True.
ResetSampleIntervals ( enum{"all","adaptation","single","inactive"} key )
Removes sampling interval definitions according to the key . If used together with AddSampleInterval, a set of sampling intervals can be re-defined, for instance all adaptation frequencies.
UseHelmholtzEquation ( bool flag )
If activated the Helmholtz equation is used when running the frequency domain solver with hexahedral mesh. This might lead to a faster convergence of the solver, especially for low frequency problems.
AddSampleInterval ( double min, double max, int samples, enum {"Automatic", "Single", "Equidistant", "Logarithmic"} key, bool adaptation )
Specifies a customized frequency interval (min to max) as well as the corresponding number of frequency samples for which calculations will be performed.
Depending on the key value, the samples will either be placed adaptively, or equidistantly, or with logarithmic spacing into the interval. A "Single" frequency point is defined by setting lower and upper frequency limit to the same value, or by omitting either the lower or the upper frequency. The number of samples is One for single samples, of course.
The parameters min and max may be values as well as strings. You may pass an empty string "" as an argument. For equidistant, automatic and logarithmic sampling, if min = "" or max = "" this will be replaced by the corresponding global limit of the frequency range.
When the number of Samples is not defined (empty string "") for an "Automatic" sampling interval, the solver stops calculating additional samples as soon as the S-parameter sweep convergence criterion is satisfied.
The adaptation indicates whether or not the frequency samples should be used for the sequential adaptive tetrahedral mesh refinement.
If the lower limit of the frequency interval evaluates to Zero, the samples at frequency zero will be ignored for "Equidistant" sampling intervals, and the lower limit will be replaced with some suitable value for "Automatic" and "Logarithmic" sampling interval definitions.
AddInactiveSampleInterval ( double min, double max, int samples, enum {"Automatic", "Equidistant"} key, bool adaptation )
Specifies an inactive customized frequency interval. The parameter are the same as for AddSampleInterval.
MaxIterations ( int nIter )
Specifies the maximum number of linear equation system solver iterations the solver will use for calculating the electromagnetic field at a single frequency sample. This applies only if LimitIterations has been activated and if the iterative solver is used.
LimitIterations ( bool flag )
If flag = True the solver stops if the maximum number of iterations given by the MaxIterations method is reached.
SParameterSweep ( bool flag )
Activates (flag = True) or deactivates (flag = False) the broadband frequency sweep for the solver.
ModesOnly ( bool flag )
Calculate only the port modes when using the frequency domain solver.
SetShieldAllPorts ( bool flag )
The boundary of all waveguide ports is treated as a perfectly shielding (PEC) wire frame when calling this method with flag = True.
SetPortMeshMatches3DMeshTet ( bool flag )
The option SetPortMeshMatches3DMeshTet only applies to the tetrahedral mesh and is disabled by default. The waveguide port mode solver operates on the planar mesh of the waveguide port and applies an adaptive port mesh refinement for this mesh. By default, the port mesh is separated from the volumetric mesh, and an overlap calculation is used to map the port mode solution onto the boundary of the volumetric mesh. However, if you call SetPortMeshMatches3DMeshTet with flag = True, the port mode solver's mesh adaptation directly refines the surface mesh of the volumetric mesh, so that no overlap calculation is required. It is recommended to let the port mesh match the 3D mesh whenever the overlap calculation fails due to geometric tolerance problems.
FreqDistAdaptMode ( enum{"Local", "As_A_Whole", "Distributed"} key )
This option is considered by the frequency domain solver with tetrahedral mesh only. It allows selecting which strategy will be followed when the option "Distribute excitation calculation up to" is enabled in the "Distributed computing (DC) frame". Selecting "Local" adaptation frequencies will be calculated locally, selecting "As_A_Whole" all adaptation frequencies will be transferred to a single remote computer and selecting "Distributed" adaptation frequencies will be distributed separately over the remote computers. In the first iteration over the broadband mesh adaptation, the adaptation frequencies are transferred as a whole even if "Distributed" has been selected.
SetPreferLeanOutput ( bool flag )
This option is considered by the frequency domain solver with tetrahedral mesh only. It allows to save some disc space and simulation time, especially in case of simulation runs with many excitations. Call with flag = True to disable the output of the linear equation system solver's relative residual curves and the S-parameter versus passes tables of the adaptive mesh refinement.
SetUseImpLineImpedanceAsReference ( bool flag )
Call this method with flag = True to define impedances calculated by impedance lines as the postprocessing reference impedance for all port modes to which they are applied. Must be called before the solver run. The impedance lines' impedances will replace the usual line impedance for TEM and QTEM modes, and replace the wave impedances of other modes. The port mode information which is displayed when viewing a port mode is not affected.
SetUseOrientPortWithMask ( bool flag )
Call this method with flag = True to switch to an alternative algorithm for the mode orientation in waveguide ports. Caution: this algorithm is not compatible with the standard one and the corresponding algorithm for hex-based solvers.
ConsiderPortLossesTet ( bool flag )
Allows to define whether the port mode solver for the frequency domain solver with tetrahedral mesh considers lossy dielectrics and lossy metal or not. If flag = False, the imaginary part of both the complex permeability and the complex permittivity will be set to zero, and lossy metal will be treated as PEC in the port mode solver.
SweepErrorThreshold ( bool flag, double threshold )
Activates (switch = "True") or deactivates (switch = "False") the broadband S-parameter frequency sweep convergence check, and sets the corresponding error threshold thres for the interpolation of the S-parameters when using the broadband frequency sweep feature (SParameterSweep). The number of frequency samples needed for a S-parameter simulation by the solver usually decreases if the check is activated, since the solver stops calculating additional frequency samples as soon as the convergence criterion is reached, which, in addition, can be influenced by the SweepErrorChecks and SweepMinimumSamples methods.
Type ( enum{"Auto", "Iterative", "Direct"} key )
Chooses the linear equation system solver type to be used. For the integral equation solver "IterativeMoM" is available.
StoreResultsInCache ( bool flag )
Stores results of the solver in the result cache. For each parameter combination in a parameter sweep, for instance, a full backup of the results is stored in a sub folder like {Projectname}/Result/Cache/run000001.
Method ( enum{"Hexahedral Mesh", "Tetrahedral Mesh", "Tetrahedral Mesh (MOR)", "Hexahedral Mesh (MOR)", "Hexahedral Mesh (MOR Fields)", "Surface Mesh"} key )
Allows to change the method used in the frequency domain solver to calculated S-parameters and fields. The type of mesh will be changed to "Hexahedral Mesh", "Tetrahedral Mesh" or "Surface Mesh". "Tetrahedral Mesh (MOR)" activates the fast resonant solver method with tetrahedral mesh, which provides broadband S-parameter results and fields in loss-free structures. The "Hexahedral Mesh (MOR)" method can be used for broadband loss-free (weakly dielectric losses) S-parameter calculations. The "Hexahedral Mesh (MOR Fields)" method can be used for broadband loss-free S-parameter calculations and monitor definitions. Use "Surface Mesh" to activate the integral equation solver. Confer the frequency domain and integral equation solver overview in the online manual for details.
SetUseFastResonantForSweepTet ( bool flag )
This option is only available for the Frequency Domain solver with tetrahedral mesh. Call SetUseFastResonantForSweepTet with flag = True to let the general purpose solver stop after the adaptive mesh refinement without performing the interpolative sweep. Afterwards, the fast resonant solver method will be executed to calculate the broadband results. This is an alternative and efficient way of using the fast resonant solver method, especially if the faster single point adaptive mesh refinement of the general purpose method is preferred. If a required feature prevents the fast resonant solver from being applied, the default interpolative sweep is used. The solver log file provides a hint about the missing features, which possibly can then be removed (for instance, some field monitors which are unsupported by the fast resonant solver.)
AutoNormImpedance ( bool flag )
S-Parameters are always normalized to a reference impedance. You may either select to norm them to the calculated impedance of the stimulation port or you may specify a number of your choice. If flag is False the reference impedance will be the calculated impedance of the input port.
NormingImpedance ( double value )
Specifies the impedance to be used as reference impedance for the scattering parameters. This setting will only be considered if AutoNormImpedance is set to True.
Stimulation ( enum / int port, enum / int mode )
Selects the source type to be used for excitation, such as port and mode for waveguide ports.
The parameter port and mode may have one of the following values:
"All" |
All ports and modes will be excited, one at a time. This eventually excludes Floquet ports for unit cell calculations. |
"All+Floquet" |
All ports and modes will be excited, one at a time. This includes Floquet ports for unit cell calculations. |
"Plane Wave" |
A plane wave will be excited. mode needs to be set to "1". |
"List" |
A list of excitations is specified. port and mode then need to be set to "List". |
int port/mode |
The port and mode number to be used for excitation. |
SweepErrorChecks ( int nChecks )
Determines how many consecutive times the S-parameter error has to meet the given threshold (see SweepErrorThreshold) during a broadband S-parameter frequency sweep before the result is accepted to be converged.
SweepMinimumSamples ( int nSamples )
Determines the minimum number of frequency samples to be calculated during a broadband S-parameter frequency sweep before the convergence of the latter is checked.
SweepConsiderAll ( bool flag )
Defines wheter all S-parameters (flag = True) or selected S-parameters (flag = False, see SweepConsiderSPar) should be considered to calculate the error during the broadband frequency sweep. The option flag = False may be useful if the S-parameters of higher order modes are not of interest.
SweepConsiderReset
Empties the list of selected S-parameters (see SweepConsiderSPar) to be considered to calculate the error during the broadband frequency sweep.
SweepConsiderSPar ( int port_out, int mode_out, int port_in, int mode_in )
Adds an S-parameter to the list of S-parameters to be considered to calculate the error during the broadband frequency sweep. This option may be useful if the S-parameters of higher order modes are not of interest. The list of samples is deleted by SweepConsiderReset. All definitions are ignored if SweepConsiderAll has been set to True.
InterpolationSamples ( int nSamples )
Specifies the resolution of the interpolated S-parameters during a broadband S-parameter frequency sweep. Increase the number of samples if a higher resolution is required, for instance due to poles which are very close.
HexMORSettings ( double / string fEval, int nSamples )
Defines the evaluation frequency and the number of interpolated samples for the MOR method on hexahedral mesh. When passing an empty string "" as the fEval argument, the evaluation frequency will be set to the center frequency of the current global frequency range. It is necessary to specify an evaluation frequency for the MOR method if some ports are strongly inhomogeneous. Consider splitting the frequency range into subintervals if the S-parameters change significantly when varying the evaluation frequency.
ExtrudeOpenBC ( bool flag )
Affects the frequency domain solver with tetrahedral mesh. If activated (flag = True), additional layers of mesh cells are added outside the open boundary walls, and the boundary condition is applied further away from the structure.
TDCompatibleMaterials ( bool flag )
Defines whether constant tangent delta materials should be treated as in the time domain solver, that is by using a dispersive Debye model fit (flag = True), or by a constant imaginary part of the permittivity (flag = False).
The setting affects also the treatment of broadband surface impedance materials, i.e. ohmic sheet, tabulated surface impedance and corrugated wall. With the option flag = True the simulated surface impedance will be computed accordingly to the same fitting scheme used for the time domain solver. Otherwise a linear interpolation scheme of the data will be applied.
The option flag = True should be used when comparing time domain and frequency domain solver results.
CalcStatBField( bool flag )
Set the flag to true if you want the frequency domain solver with tetrahedral mesh to use an inhomogeneous static biasing B-field for ferrites. The static field is then calculated automatically by the magnetostatic solver before the frequency domain solver run.
CalcPowerLoss( bool flag )
Set the flag to true if you want the frequency domain solver with tetrahedral mesh to calculate power losses over materials. Results will be added into the tree.
CalcPowerLossPerComponent( bool flag )
Set the flag to true if you want the frequency domain solver with tetrahedral mesh to include into the tree the material losses associated to components.
ResetExcitationList
Resets the current excitation list.
AddToExcitationList ( enum port, string mode)
Adds ports and modes to the exciation list.
The parameter port may have one of the following values:
int port |
The number of the port to be excited. |
"zmin" / "zmax" |
The boundary position of a Floquet port. |
The parameter mode defines one or more modes of the chosen port, separated by semicolon.
"1" |
Setting for a discrete port. |
"1" or "1;3;4" |
Mode numbers of a waveguide port. |
"TE(0,0);TM(0,0)" or "LCP;RCP" |
Mode type of a Floquet port. |
LimitCPUs ( bool flag )
Enabling this method offers the possibility to define a maximum number of CPUs using the MaxCPUs method.
MaxCPUs ( int nCPUs )
Sets the number of CPUs to be used.
SweepWeightEvanescent ( double dWeight )
Defines a special weight factor for the S-parameter sweep calculation, which is applied to frequency ranges belonging to evanescent modes.
LowFrequencyStabilization ( bool flag )
Applies a stabilization procedure for frequencies close to zero, which might improve the convergence behavior.
Please note, that this effects only the general purpose tetrahedral frequency domain solver.
OrderTet ( enum sOrder )
Select here the order of the general purpose tetrahedral frequency domain solver, with the choice between low memory or highly accurate results for a given number of mesh cells. Higher order also allows to achieve accurate results with less mesh cells and eventually less memory consumption than lower order, if the structure contains electrically large voids rather than many geometric details.
If the method MixedOrderTet is called with flag = True, then OrderTet determines the maximum solver order to be used.
The parameter sOrder may have one of the following values:
"First" |
Calculation is done with first order accuracy providing solutions with low memory effort. Especially well suited for structures with many electrically small details. |
"Second" |
Calculation is done with second order accuracy providing highly accurate results. Well suited for most applications, and therefore the default. |
"Third" |
Calculation is done with third order accuracy providing highest accuracy. Allows to reduce the number of mesh steps per wavelength for structures with large voids, or to even further improve the accuracy for a given mesh resolution. |
MixedOrderTet ( bool flag )
If this method is activated (flag = True), the frequency domain solver with tetrahedral mesh will automatically use variable order up to the maximum solver order, which is specified by calling OrderTet. This allows the solver to decide in which regions lowest order should be used to save memory and computational time, as well as to use higher order where required.
OrderSrf ( enum sOrder )
Select here the order of the integral equation solver. If the method MixedOrderSrf is activated (flag = True), OrderSrf determines the maximum used solver order.
The parameter sOrder allows to choose between low memory and highly accurate results, and may have one of the following values:
"First" |
Calculation is done with first order accuracy providing solutions with low memory effort. |
"Second" |
Calculation is done with second order accuracy providing highly accurate results. |
"Third" |
Calculation is done with third order accuracy providing highest accuracy. |
MixedOrderSrf ( bool flag )
If this method is activated (flag = True), mixed solver order will be used in the integral equation solver. Use OrderSrf to determine the maximum used solver order.
UseDistributedComputing ( bool flag )
This method allows to switch between local and remote solver runs. When enabled, a Frequency domain solver run is submitted to the network. The setting does not influence parameter sweeps and optimizer runs with distributed computing.
NetworkComputingStrategy ( enum{"RunRemote","Samples"} key )
A single remote calculation ("RunRemote") and a distribution of frequency samples ("Samples") are currently supported.
NetworkComputingJobCount ( int value )
Specifies the number of jobs which may be submitted at once to the network computing job queue in case of an automatic frequency sampling. Increase this number to use more computers in parallel. It does not affect equidistant frequency samples, monitor frequencies and other fix points, which are submitted to the job queue at once.
UseSensitivityAnalysis ( bool flag )
If activated the sensitivity analysis is calculated when running the frequency domain solver with tetrahedral mesh.
UseDoublePrecision ( bool flag )
Supported by integral equation solver. If activated the solver uses double-precision (64-bit) for representing floating-point values. Otherwise the solver uses single-precision (32-bit). The single-precision representation saves memory whereas the double-precision representation speeds up the convergence of the iterative equation system solver. Double-precision is necessary to obtain highly accurate results.
PreconditionerAccuracyIntEq ( double value )
Supported by integral equation solver. Sets the tolerance for the preconditioner.
MinMLFMMBoxSize ( double value )
Supported by integral equation solver. This command allows you to specify the minimum box size the MLFMM uses.
MLFMMAccuracy ( string value )
Supported by integral equation solver. This accuracy determines the accuracy of the coupling between the MLFMM boxes. The value must be one of the following: "VeryLowMem", "LowMem", "Default" or "HighAcc".
UseCFIEForCPECIntEq ( bool flag )
Supported by integral equation solver. If for closed PEC bodies the Combined Field Integral Equation shall be used enable this option. The faster convergence of the linear equation system solver is an advantage of this option. For electrically small or complex PEC solids it is recommended to disable this option. The accuracy for rather coarse mesh will be improved.
If you enable this option and set the CFIE alpha to 1 (using the VBA command SetCFIEAlpha) the Electric Field Integral Equation will be used. This is an option if you are sure there will be no spurious resonances inside the PEC solids e.g. for electrically small PEC solids.
UseFastRCSSweepIntEq ( bool flag )
Supported by integral equation solver. A fast calculation of monostatic RCS for different angles is available if a plane wave is used as excitation. To enable and disable the fast RCS calculation check and uncheck this option respectively. Please use the Command SetRCSSweepProperties to define the RCS sweep properties.
SetMRCSSweepProperties (double Phi_Start, double Phi_End, int #Phi_Steps, double Theta_Start, double Theta_End, int #Theta_Steps, double E_inc_Theta, double E_inc_Phi)
Supported by integral equation solver. For a fast monostatic RCS calculation the angles for the incoming direction (Phi, Theta) of the plane wave can be defined as equidistant samples. For only varying Phi please set the Theta_Start equal to Theta_End and accordingly if you only want to vary Phi.
GetRCSSweepProperties (double_ref Phi_Start, double_ref Phi_End, int_ref #Phi_Steps, double_ref Theta_Start, double_ref Theta_End, int_ref #Theta_Steps, double_ref E_inc_Theta, double_ref E_inc_Phi, bool_ref Activation)
Supported by integral equation solver. Returns the settings set by SetRCSSweepProperties and UseFastRCSSweepIntEq.
SetCalculateExcitationsInParallel ( bool enable, bool useblock, int maxparallel )
This method toggles whether or not and how excitations will be solved in parallel if the iterative solver is used. Only applies to the Frequency Domain solver with tetrahedral mesh. A new version is available by setting useblock to true. It usually provides better performance for simulations with a large number of tetrahedrons or many excitations. Leave maxparallel blank (pass "") to let the solver decide how many excitations to calculate in parallel. Note that hardware and license restrictions may apply and overwrite some of those settings.
AcceleratedRestart (True)
AccuracyTet (1e-4)
AccuracyHex (1e-6)
AccuracySrf (1e-3)
AddMonitorSamples (True)
FrequencySamples (20)
UseHelmholtzEquation (True)
UserFrequency (False)
MaxIterations (0)
LimitIterations (False)
SParameterSweep (True)
ModesOnly (False)
SetShieldAllPorts (False)
SetPortMeshMatches3DMeshTet (False)
SetPreferLeanOutput (False)
SetUseImpLineImpedanceAsReference (False)
ConsiderPortLossesTet (True)
FreqDistAdaptMode("Distributed")
SweepErrorThreshold (True, 1e-3)
Type ("Auto")
StoreResultsInCache (False)
Method ("Tetrahedral Mesh")
SetUseFastResonantForSweepTet (False)
AutoNormImpedance (False)
NormingImpedance (50.0)
Stimulation ("All", "All")
SweepErrorChecks (2)
SweepMinimumSamples (3)
SweepConsiderAll (True)
InterpolationSamples (1001)
HexMORSettings ("", 1001)
ExtrudeOpenBC (False)
TDCompatibleMaterials (True)
CalcStatBField (False)
CalcPowerLoss (True)
CalcPowerLossPerComponent (False)
StoreSolutionCoefficients (True)
MeshAdaptionHex (False)
MeshAdaptionTet (True)
SetOpenBCTypeHex ("Default")
SetOpenBCTypeTet ("Default")
ResetExcitationList (True)
AddToExcitationList ("All", "All")
LimitCPUs (False)
MaxCPUs (2)
SweepWeightEvanescent (1.0)
LowFrequencyStabilization (False)
OrderTet ("Second")
OrderSrf ("Second")
UseDistributedComputing (False)
NetworkComputingStrategy ("RunRemote")
NetworkComputingJobCount (3)
UseDoublePrecision(True)
MixedOrderSrf(False)
MixedOrderTet(False)
UsePreconditionerIntEq "False"
PreconditionerAccuracyIntEq "0.15"
MLFMMAccuracy "Default"
MinMLFMMBoxSize "0.2"
UseCFIEForCPECIntEq(True)
UseFastRCSSweepIntEq(True)
SetCalculateExcitationsInParallel(True, False, "")