- bx_normTo evaluate |Bx| for the eigenvalue
C++ Type:PostprocessorName
Description:To evaluate |Bx| for the eigenvalue
InversePowerMethod
Inverse power method for eigenvalue problems.
Overview
Eigenvalue executioners such as this one intend on solving the eigenvalue problem described by:
where and are linear or nonlinear operators represented by kernels. To differentiate the kernels from the kernels, we must derive all kernels from EigenKernel
. Currently we are only interested in the absolute minimum eigenvalue and the corresponding eigenvector of the system. We are also not seeking the solutions of a general nonlinear eigenvalue problem, where the operators have nonlinear dependency on the eigenvalue.
The inverse power method algorithm
Initialization
Update x and k
Check the convergence
and
When either of them is not true, return Step 2, otherwise exit.
We notice immediately that remains constant during the iteration, so if we make equal to 1, the algorithm can be simplified a little:
Initialization
Update x and k
Check the convergence
and
When either of them is not true, return Step 2, otherwise exit.
Also in this simplified algorithm, the solution is automatically normalized making . We can do postprocessing to normalize the solution so that , where can be any norm and is a scalar constant.
If the minimum eigenvalue and the second smallest eigenvalue are close, i.e. the dominance ratio is about equal to one, the inverse power iteration converges very slowly. In such a case, we can apply accelerations, such as Chebyshev acceleration, based on the on-the-fly estimation of the dominance ratio.
The inverse power method is appealing because we can apply matrix-free schemes on evaluating . We can use PJFNK for inverting and we do not have to exactly assemble matrix for the preconditioning purpose.
Input Parameters
- Chebyshev_acceleration_onTrueIf Chebyshev acceleration is turned on
Default:True
C++ Type:bool
Description:If Chebyshev acceleration is turned on
- contact_line_search_allowed_lambda_cuts2The number of times lambda is allowed to be cut in half in the contact line search. We recommend this number be roughly bounded by 0 <= allowed_lambda_cuts <= 3
Default:2
C++ Type:unsigned int
Description:The number of times lambda is allowed to be cut in half in the contact line search. We recommend this number be roughly bounded by 0 <= allowed_lambda_cuts <= 3
- contact_line_search_ltolThe linear relative tolerance to be used while the contact state is changing between non-linear iterations. We recommend that this tolerance be looser than the standard linear tolerance
C++ Type:double
Description:The linear relative tolerance to be used while the contact state is changing between non-linear iterations. We recommend that this tolerance be looser than the standard linear tolerance
- custom_abs_tol1e-50The absolute nonlinear residual to shoot for during fixed point iterations. This check is performed based on postprocessor defined by the custom_pp residual.
Default:1e-50
C++ Type:double
Description:The absolute nonlinear residual to shoot for during fixed point iterations. This check is performed based on postprocessor defined by the custom_pp residual.
- custom_rel_tol1e-08The relative nonlinear residual drop to shoot for during fixed point iterations. This check is performed based on the postprocessor defined by custom_pp residual.
Default:1e-08
C++ Type:double
Description:The relative nonlinear residual drop to shoot for during fixed point iterations. This check is performed based on the postprocessor defined by custom_pp residual.
- eig_check_tol1e-06Eigenvalue convergence tolerance
Default:1e-06
C++ Type:double
Description:Eigenvalue convergence tolerance
- fixed_point_algorithmpicardThe fixed point algorithm to converge the sequence of problems.
Default:picard
C++ Type:MooseEnum
Description:The fixed point algorithm to converge the sequence of problems.
- k01Initial guess of the eigenvalue
Default:1
C++ Type:double
Description:Initial guess of the eigenvalue
- line_searchdefaultSpecifies the line search type (Note: none = basic)
Default:default
C++ Type:MooseEnum
Description:Specifies the line search type (Note: none = basic)
- line_search_packagepetscThe solver package to use to conduct the line-search
Default:petsc
C++ Type:MooseEnum
Description:The solver package to use to conduct the line-search
- max_power_iterations300The maximum number of power iterations
Default:300
C++ Type:unsigned int
Description:The maximum number of power iterations
- mffd_typewpSpecifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice).
Default:wp
C++ Type:MooseEnum
Description:Specifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice).
- min_power_iterations1Minimum number of power iterations
Default:1
C++ Type:unsigned int
Description:Minimum number of power iterations
- n_max_nonlinear_pingpong100The maximum number of times the non linear residual can ping pong before requesting halting the current evaluation and requesting timestep cut
Default:100
C++ Type:unsigned int
Description:The maximum number of times the non linear residual can ping pong before requesting halting the current evaluation and requesting timestep cut
- nl_abs_div_tol1e+50Nonlinear Absolute Divergence Tolerance. A negative value disables this check.
Default:1e+50
C++ Type:double
Description:Nonlinear Absolute Divergence Tolerance. A negative value disables this check.
- nl_div_tol1e+10Nonlinear Relative Divergence Tolerance. A negative value disables this check.
Default:1e+10
C++ Type:double
Description:Nonlinear Relative Divergence Tolerance. A negative value disables this check.
- nl_forced_its0The Number of Forced Nonlinear Iterations
Default:0
C++ Type:unsigned int
Description:The Number of Forced Nonlinear Iterations
- petsc_optionsSingleton PETSc options
C++ Type:MultiMooseEnum
Description:Singleton PETSc options
- petsc_options_inameNames of PETSc name/value pairs
C++ Type:MultiMooseEnum
Description:Names of PETSc name/value pairs
- petsc_options_valueValues of PETSc name/value pairs (must correspond with "petsc_options_iname"
C++ Type:std::vector<std::string>
Description:Values of PETSc name/value pairs (must correspond with "petsc_options_iname"
- resid_vs_jac_scaling_param0A parameter that indicates the weighting of the residual vs the Jacobian in determining variable scaling parameters. A value of 1 indicates pure residual-based scaling. A value of 0 indicates pure Jacobian-based scaling
Default:0
C++ Type:double
Description:A parameter that indicates the weighting of the residual vs the Jacobian in determining variable scaling parameters. A value of 1 indicates pure residual-based scaling. A value of 0 indicates pure Jacobian-based scaling
- scaling_group_variablesName of variables that are grouped together for determining scale factors. (Multiple groups can be provided, separated by semicolon)
C++ Type:std::vector<std::vector<std::string>>
Description:Name of variables that are grouped together for determining scale factors. (Multiple groups can be provided, separated by semicolon)
- skip_exception_checkFalseSpecifies whether or not to skip exception check
Default:False
C++ Type:bool
Description:Specifies whether or not to skip exception check
- sol_check_tol1.79769e+308Convergence tolerance on |x-x_previous| when provided
Default:1.79769e+308
C++ Type:double
Description:Convergence tolerance on |x-x_previous| when provided
- solve_typePJFNK: Preconditioned Jacobian-Free Newton Krylov JFNK: Jacobian-Free Newton Krylov NEWTON: Full Newton Solve FD: Use finite differences to compute Jacobian LINEAR: Solving a linear problem
C++ Type:MooseEnum
Description:PJFNK: Preconditioned Jacobian-Free Newton Krylov JFNK: Jacobian-Free Newton Krylov NEWTON: Full Newton Solve FD: Use finite differences to compute Jacobian LINEAR: Solving a linear problem
- splittingTop-level splitting defining a hierarchical decomposition into subsystems to help the solver.
C++ Type:std::vector<std::string>
Description:Top-level splitting defining a hierarchical decomposition into subsystems to help the solver.
- verboseFalseSet to true to print additional information
Default:False
C++ Type:bool
Description:Set to true to print additional information
- xdiffTo evaluate |x-x_previous| for power iterations
C++ Type:PostprocessorName
Description:To evaluate |x-x_previous| for power iterations
Optional Parameters
- accept_on_max_fixed_point_iterationFalseTrue to treat reaching the maximum number of fixed point iterations as converged.
Default:False
C++ Type:bool
Description:True to treat reaching the maximum number of fixed point iterations as converged.
- auto_advanceFalseWhether to automatically advance sub-applications regardless of whether their solve converges, for transient executioners only.
Default:False
C++ Type:bool
Description:Whether to automatically advance sub-applications regardless of whether their solve converges, for transient executioners only.
- custom_ppPostprocessor for custom fixed point convergence check.
C++ Type:PostprocessorName
Description:Postprocessor for custom fixed point convergence check.
- direct_pp_valueFalseTrue to use direct postprocessor value (scaled by value on first iteration). False (default) to use difference in postprocessor value between fixed point iterations.
Default:False
C++ Type:bool
Description:True to use direct postprocessor value (scaled by value on first iteration). False (default) to use difference in postprocessor value between fixed point iterations.
- disable_fixed_point_residual_norm_checkFalseDisable the residual norm evaluation thus the three parameters fixed_point_rel_tol, fixed_point_abs_tol and fixed_point_force_norms.
Default:False
C++ Type:bool
Description:Disable the residual norm evaluation thus the three parameters fixed_point_rel_tol, fixed_point_abs_tol and fixed_point_force_norms.
- fixed_point_abs_tol1e-50The absolute nonlinear residual to shoot for during fixed point iterations. This check is performed based on the main app's nonlinear residual.
Default:1e-50
C++ Type:double
Description:The absolute nonlinear residual to shoot for during fixed point iterations. This check is performed based on the main app's nonlinear residual.
- fixed_point_force_normsFalseForce the evaluation of both the TIMESTEP_BEGIN and TIMESTEP_END norms regardless of the existence of active MultiApps with those execute_on flags, default: false.
Default:False
C++ Type:bool
Description:Force the evaluation of both the TIMESTEP_BEGIN and TIMESTEP_END norms regardless of the existence of active MultiApps with those execute_on flags, default: false.
- fixed_point_max_its1Specifies the maximum number of fixed point iterations.
Default:1
C++ Type:unsigned int
Description:Specifies the maximum number of fixed point iterations.
- fixed_point_min_its1Specifies the minimum number of fixed point iterations.
Default:1
C++ Type:unsigned int
Description:Specifies the minimum number of fixed point iterations.
- fixed_point_rel_tol1e-08The relative nonlinear residual drop to shoot for during fixed point iterations. This check is performed based on the main app's nonlinear residual.
Default:1e-08
C++ Type:double
Description:The relative nonlinear residual drop to shoot for during fixed point iterations. This check is performed based on the main app's nonlinear residual.
- relaxation_factor1Fraction of newly computed value to keep.Set between 0 and 2.
Default:1
C++ Type:double
Description:Fraction of newly computed value to keep.Set between 0 and 2.
- transformed_postprocessorsList of main app postprocessors to transform during fixed point iterations
C++ Type:std::vector<PostprocessorName>
Description:List of main app postprocessors to transform during fixed point iterations
- transformed_variablesList of main app variables to transform during fixed point iterations
C++ Type:std::vector<std::string>
Description:List of main app variables to transform during fixed point iterations
Fixed Point Iterations Parameters
- auto_initializationTrueTrue to ask the solver to set initial
Default:True
C++ Type:bool
Description:True to ask the solver to set initial
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Description:Set the enabled status of the MooseObject.
- outputsVector of output names were you would like to restrict the output of variables(s) associated with this object
C++ Type:std::vector<OutputName>
Description:Vector of output names were you would like to restrict the output of variables(s) associated with this object
- time0System time
Default:0
C++ Type:double
Description:System time
Advanced Parameters
- automatic_scalingFalseWhether to use automatic scaling for the variables.
Default:False
C++ Type:bool
Description:Whether to use automatic scaling for the variables.
- compute_initial_residual_before_preset_bcsFalseUse the residual norm computed *before* preset BCs are imposed in relative convergence check
Default:False
C++ Type:bool
Description:Use the residual norm computed *before* preset BCs are imposed in relative convergence check
- compute_scaling_onceTrueWhether the scaling factors should only be computed once at the beginning of the simulation through an extra Jacobian evaluation. If this is set to false, then the scaling factors will be computed during an extra Jacobian evaluation at the beginning of every time step.
Default:True
C++ Type:bool
Description:Whether the scaling factors should only be computed once at the beginning of the simulation through an extra Jacobian evaluation. If this is set to false, then the scaling factors will be computed during an extra Jacobian evaluation at the beginning of every time step.
- l_abs_tol1e-50Linear Absolute Tolerance
Default:1e-50
C++ Type:double
Description:Linear Absolute Tolerance
- l_max_its10000Max Linear Iterations
Default:10000
C++ Type:unsigned int
Description:Max Linear Iterations
- l_tol0.01Linear Tolerance
Default:0.01
C++ Type:double
Description:Linear Tolerance
- nl_abs_step_tol0Nonlinear Absolute step Tolerance
Default:0
C++ Type:double
Description:Nonlinear Absolute step Tolerance
- nl_abs_tol1e-50Nonlinear Absolute Tolerance
Default:1e-50
C++ Type:double
Description:Nonlinear Absolute Tolerance
- nl_max_funcs10000Max Nonlinear solver function evaluations
Default:10000
C++ Type:unsigned int
Description:Max Nonlinear solver function evaluations
- nl_max_its50Max Nonlinear Iterations
Default:50
C++ Type:unsigned int
Description:Max Nonlinear Iterations
- nl_rel_step_tol0Nonlinear Relative step Tolerance
Default:0
C++ Type:double
Description:Nonlinear Relative step Tolerance
- nl_rel_tol1e-08Nonlinear Relative Tolerance
Default:1e-08
C++ Type:double
Description:Nonlinear Relative Tolerance
- num_grids1The number of grids to use for a grid sequencing algorithm. This includes the final grid, so num_grids = 1 indicates just one solve in a time-step
Default:1
C++ Type:unsigned int
Description:The number of grids to use for a grid sequencing algorithm. This includes the final grid, so num_grids = 1 indicates just one solve in a time-step
- off_diagonals_in_auto_scalingFalseWhether to consider off-diagonals when determining automatic scaling factors.
Default:False
C++ Type:bool
Description:Whether to consider off-diagonals when determining automatic scaling factors.
- snesmf_reuse_baseTrueSpecifies whether or not to reuse the base vector for matrix-free calculation
Default:True
C++ Type:bool
Description:Specifies whether or not to reuse the base vector for matrix-free calculation
Solver Parameters
- max_xfem_update4294967295Maximum number of times to update XFEM crack topology in a step due to evolving cracks
Default:4294967295
C++ Type:unsigned int
Description:Maximum number of times to update XFEM crack topology in a step due to evolving cracks
- update_xfem_at_timestep_beginFalseShould XFEM update the mesh at the beginning of the timestep
Default:False
C++ Type:bool
Description:Should XFEM update the mesh at the beginning of the timestep
Xfem Fixed Point Iterations Parameters
- normal_factorNormalize x to make |x| equal to this factor
C++ Type:double
Description:Normalize x to make |x| equal to this factor
- normalizationTo evaluate |x| for normalization
C++ Type:PostprocessorName
Description:To evaluate |x| for normalization
- output_before_normalizationTrueTrue to output a step before normalization
Default:True
C++ Type:bool
Description:True to output a step before normalization