NonlinearEigen

Executioner 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 nonlinear Newton method

From the above section, we can see the eigenvalue problem can be viewed as a nonlinear problem

so we can use the Newton method to solve it. However, to make the solving converge, we need to have a fairly close initial guess to the fundamental mode. This can be achieved with several free power iterations before the Newton iteration. We do not have to have as part of the solution vector. Instead we can apply the elimination technique and view the equation as

Again we can use PJFNK (preconditioned Jacobian-free Newton Krylov) method to solve this nonlinear problem. The preconditioning matrix can affect the linear convergence in each Newton iteration. If there is a convergence issue, it is suggested to use and gradually reduce its complexity as the preconditioning matrix.

Input Parameters

  • bx_normTo evaluate |Bx| for the eigenvalue

    C++ Type:PostprocessorName

    Options:

    Description:To evaluate |Bx| for the eigenvalue

Required Parameters

  • auto_advanceFalseWhether to automatically advance sub-applications regardless of whether their solve converges.

    Default:False

    C++ Type:bool

    Options:

    Description:Whether to automatically advance sub-applications regardless of whether their solve converges.

  • 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

    Options:

    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

    Options:

    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 Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual.

    Default:1e-50

    C++ Type:double

    Options:

    Description:The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual.

  • custom_rel_tol1e-08The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual.

    Default:1e-08

    C++ Type:double

    Options:

    Description:The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on postprocessor defined by picard_custom_pp residual.

  • direct_pp_valueFalseTrue to use direct postprocessor value (scaled by value on first iteration). False (default) to use difference in postprocessor value between picard iterations.

    Default:False

    C++ Type:bool

    Options:

    Description:True to use direct postprocessor value (scaled by value on first iteration). False (default) to use difference in postprocessor value between picard iterations.

  • free_l_tol0.01Relative linear tolerance in free power iteration

    Default:0.01

    C++ Type:double

    Options:

    Description:Relative linear tolerance in free power iteration

  • free_power_iterations4The number of free power iterations

    Default:4

    C++ Type:unsigned int

    Options:

    Description:The number of free power iterations

  • k01Initial guess of the eigenvalue

    Default:1

    C++ Type:double

    Options:

    Description:Initial guess of the eigenvalue

  • line_searchdefaultSpecifies the line search type (Note: none = basic)

    Default:default

    C++ Type:MooseEnum

    Options:basic, bt, contact, cp, default, l2, none, project, shell

    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

    Options:petsc, moose

    Description:The solver package to use to conduct the line-search

  • max_xfem_update4294967295Maximum number of times to update XFEM crack topology in a step due to evolving cracks

    Default:4294967295

    C++ Type:unsigned int

    Options:

    Description:Maximum number of times to update XFEM crack topology in a step due to evolving cracks

  • 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

    Options:wp, ds

    Description:Specifies the finite differencing type for Jacobian-free solve types. Note that the default is wp (for Walker and Pernice).

  • n_max_nonlinear_pingpong100The maximum number of times the non linear residual can ping pong before requesting halting the current evalution and requesting timestep cut

    Default:100

    C++ Type:unsigned int

    Options:

    Description:The maximum number of times the non linear residual can ping pong before requesting halting the current evalution and requesting timestep cut

  • nl_abs_div_tol1e+50Nonlinear Absolute Divergence Tolerance. A negative value disables this check.

    Default:1e+50

    C++ Type:double

    Options:

    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

    Options:

    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

    Options:

    Description:The Number of Forced Nonlinear Iterations

  • output_after_power_iterationsTrueTrue to output solution after free power iterations

    Default:True

    C++ Type:bool

    Options:

    Description:True to output solution after free power iterations

  • petsc_optionsSingleton PETSc options

    C++ Type:MultiMooseEnum

    Options:-dm_moose_print_embedding, -dm_view, -ksp_converged_reason, -ksp_gmres_modifiedgramschmidt, -ksp_monitor, -ksp_monitor_snes_lg-snes_ksp_ew, -ksp_snes_ew, -snes_converged_reason, -snes_ksp, -snes_ksp_ew, -snes_linesearch_monitor, -snes_mf, -snes_mf_operator, -snes_monitor, -snes_test_display, -snes_view

    Description:Singleton PETSc options

  • petsc_options_inameNames of PETSc name/value pairs

    C++ Type:MultiMooseEnum

    Options:-ksp_atol, -ksp_gmres_restart, -ksp_max_it, -ksp_pc_side, -ksp_rtol, -ksp_type, -mat_fd_coloring_err, -mat_fd_type, -mat_mffd_type, -pc_asm_overlap, -pc_factor_levels, -pc_factor_mat_ordering_type, -pc_hypre_boomeramg_grid_sweeps_all, -pc_hypre_boomeramg_max_iter, -pc_hypre_boomeramg_strong_threshold, -pc_hypre_type, -pc_type, -snes_atol, -snes_linesearch_type, -snes_ls, -snes_max_it, -snes_rtol, -snes_divergence_tolerance, -snes_type, -sub_ksp_type, -sub_pc_type

    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>

    Options:

    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

    Options:

    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 to for determing scale factors. (Multiple groups can be provided, separated by semicolon)

    C++ Type:std::vector<std::vector<std::string>>

    Options:

    Description:Name of variables that are grouped together to for determing 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

    Options:

    Description:Specifies whether or not to skip exception check

  • 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

    Options:PJFNK, JFNK, NEWTON, FD, LINEAR

    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>

    Options:

    Description:Top-level splitting defining a hierarchical decomposition into subsystems to help the solver.

  • update_xfem_at_timestep_beginFalseShould XFEM update the mesh at the beginning of the timestep

    Default:False

    C++ Type:bool

    Options:

    Description:Should XFEM update the mesh at the beginning of the timestep

  • verboseFalseSet to true to print additional information

    Default:False

    C++ Type:bool

    Options:

    Description:Set to true to print additional information

Optional Parameters

  • accept_on_max_picard_iterationFalseTrue to treat reaching the maximum number of Picard iterations as converged.

    Default:False

    C++ Type:bool

    Options:

    Description:True to treat reaching the maximum number of Picard iterations as converged.

  • disable_picard_residual_norm_checkFalseDisable the Picard residual norm evaluation thus the three parameters picard_rel_tol, picard_abs_tol and picard_force_norms.

    Default:False

    C++ Type:bool

    Options:

    Description:Disable the Picard residual norm evaluation thus the three parameters picard_rel_tol, picard_abs_tol and picard_force_norms.

  • picard_abs_tol1e-50The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual.

    Default:1e-50

    C++ Type:double

    Options:

    Description:The absolute nonlinear residual to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual.

  • picard_custom_ppPostprocessor for custom picard convergence check.

    C++ Type:PostprocessorName

    Options:

    Description:Postprocessor for custom picard convergence check.

  • picard_force_normsFalseForce the evaluation of both the TIMESTEP_BEGIN and TIMESTEP_END norms regardless of the existance of active MultiApps with those execute_on flags, default: false.

    Default:False

    C++ Type:bool

    Options:

    Description:Force the evaluation of both the TIMESTEP_BEGIN and TIMESTEP_END norms regardless of the existance of active MultiApps with those execute_on flags, default: false.

  • picard_max_its1Specifies the maximum number of Picard iterations. Mainly used when wanting to do Picard iterations with MultiApps that are set to execute_on timestep_end or timestep_begin. Setting this parameter to 1 turns off the Picard iterations.

    Default:1

    C++ Type:unsigned int

    Options:

    Description:Specifies the maximum number of Picard iterations. Mainly used when wanting to do Picard iterations with MultiApps that are set to execute_on timestep_end or timestep_begin. Setting this parameter to 1 turns off the Picard iterations.

  • picard_rel_tol1e-08The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual.

    Default:1e-08

    C++ Type:double

    Options:

    Description:The relative nonlinear residual drop to shoot for during Picard iterations. This check is performed based on the Master app's nonlinear residual.

  • relaxation_factor1Fraction of newly computed value to keep.Set between 0 and 2.

    Default:1

    C++ Type:double

    Options:

    Description:Fraction of newly computed value to keep.Set between 0 and 2.

  • relaxed_variablesList of variables to relax during Picard Iteration

    C++ Type:std::vector<std::string>

    Options:

    Description:List of variables to relax during Picard Iteration

Picard Parameters

  • auto_initializationTrueTrue to ask the solver to set initial

    Default:True

    C++ Type:bool

    Options:

    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>

    Options:

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Options:

    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>

    Options:

    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

    Options:

    Description:System time

Advanced Parameters

  • automatic_scalingFalseWhether to use automatic scaling for the variables.

    Default:False

    C++ Type:bool

    Options:

    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

    Options:

    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

    Options:

    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

    Options:

    Description:Linear Absolute Tolerance

  • l_max_its10000Max Linear Iterations

    Default:10000

    C++ Type:unsigned int

    Options:

    Description:Max Linear Iterations

  • l_tol0.01Linear Tolerance

    Default:0.01

    C++ Type:double

    Options:

    Description:Linear Tolerance

  • nl_abs_step_tol0Nonlinear Absolute step Tolerance

    Default:0

    C++ Type:double

    Options:

    Description:Nonlinear Absolute step Tolerance

  • nl_abs_tol1e-06Nonlinear Absolute Tolerance

    Default:1e-06

    C++ Type:double

    Options:

    Description:Nonlinear Absolute Tolerance

  • nl_max_funcs10000Max Nonlinear solver function evaluations

    Default:10000

    C++ Type:unsigned int

    Options:

    Description:Max Nonlinear solver function evaluations

  • nl_max_its50Max Nonlinear Iterations

    Default:50

    C++ Type:unsigned int

    Options:

    Description:Max Nonlinear Iterations

  • nl_rel_step_tol0Nonlinear Relative step Tolerance

    Default:0

    C++ Type:double

    Options:

    Description:Nonlinear Relative step Tolerance

  • nl_rel_tol1e-50Nonlinear Relative Tolerance

    Default:1e-50

    C++ Type:double

    Options:

    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

    Options:

    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

  • snesmf_reuse_baseTrueSpecifies whether or not to reuse the base vector for matrix-free calculation

    Default:True

    C++ Type:bool

    Options:

    Description:Specifies whether or not to reuse the base vector for matrix-free calculation

Solver Parameters

  • normal_factorNormalize x to make |x| equal to this factor

    C++ Type:double

    Options:

    Description:Normalize x to make |x| equal to this factor

  • normalizationTo evaluate |x| for normalization

    C++ Type:PostprocessorName

    Options:

    Description:To evaluate |x| for normalization

  • output_before_normalizationTrueTrue to output a step before normalization

    Default:True

    C++ Type:bool

    Options:

    Description:True to output a step before normalization

Normalization Parameters

    Restart Parameters

    Input Files