BroydenSolver

buildconstruction:Undocumented Class

The BroydenSolver has not been documented. The content listed below should be used as a starting point for documenting the class, which includes the typical automatic documentation associated with a MooseObject; however, what is contained is ultimately determined by what is necessary to make the documentation clear for users.

Implicit secant solver time integration.

Overview

Quasi-Newton nonlinear solver that updates an approximate Jacobian using Broyden's method to accelerate fixed-point iterations on the nonlinear reciprocal term.

Example Input File Syntax

[TensorSolver<<<{"href": "../../syntax/TensorSolver/index.html"}>>>]
  type = BroydenSolver
  substeps = 10
  max_iterations = 1000
  damping = 0.5
  relative_tolerance = 1e-6
  absolute_tolerance = 1e-5
  buffer = 'c n1 n2 n3 n4'
  dt_epsilon = 1e-5
  reciprocal_buffer = 'c_bar n1_bar n2_bar n3_bar n4_bar'
  linear_reciprocal = 'MkappaL2bar kappaLbar kappaLbar kappaLbar kappaLbar'
  nonlinear_reciprocal = 'Mbar_mu_c_bar mu_n1_bar mu_n2_bar mu_n3_bar mu_n4_bar'
  # verbose = true
[]
(benchmarks/02_oswald_ripening/2a_broyden.i)

Input Parameters

  • bufferThe buffer this solver is writing to

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

    Controllable:No

    Description:The buffer this solver is writing to

  • linear_reciprocalBuffer with the reciprocal of the linear prefactor (e.g. kappa*k^2). Either one buffer per nonlinear_reciprocal, or no buffer names, or `0` to skip linear reciprocal buffers for a given variable.

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

    Controllable:No

    Description:Buffer with the reciprocal of the linear prefactor (e.g. kappa*k^2). Either one buffer per nonlinear_reciprocal, or no buffer names, or `0` to skip linear reciprocal buffers for a given variable.

  • nonlinear_reciprocalBuffer with the reciprocal of the non-linear contribution

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

    Controllable:No

    Description:Buffer with the reciprocal of the non-linear contribution

  • reciprocal_bufferBuffer with the reciprocal of the integrated buffer

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

    Controllable:No

    Description:Buffer with the reciprocal of the integrated buffer

Required Parameters

  • absolute_tolerance1e-09Convergence tolerance.

    Default:1e-09

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Convergence tolerance.

  • damping1Damping factor for the update step.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Damping factor for the update step.

  • dt_epsilon0.0001Semi-implicit stable timestep to bootstrap secant solve.

    Default:0.0001

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Semi-implicit stable timestep to bootstrap secant solve.

  • forward_bufferThese buffers are updated with the corresponding buffers from forward_buffer_old. No integration is performed. Buffer forwarding is used only to resolve cyclic dependencies.

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

    Controllable:No

    Description:These buffers are updated with the corresponding buffers from forward_buffer_old. No integration is performed. Buffer forwarding is used only to resolve cyclic dependencies.

  • forward_buffer_newNew values to update `forward_buffer` with.

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

    Controllable:No

    Description:New values to update `forward_buffer` with.

  • initial_jacobian_guess1Factor for the initial inverse jacobian guess.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Factor for the initial inverse jacobian guess.

  • max_iterations5Maximum number of secant solver iteration.

    Default:5

    C++ Type:unsigned int

    Controllable:No

    Description:Maximum number of secant solver iteration.

  • relative_tolerance1e-09Convergence tolerance.

    Default:1e-09

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Convergence tolerance.

  • root_computePrimary compute object that updates the buffers. This is usually a ComputeGroup object. A ComputeGroup encompassing all computes will be generated automatically if the user does not provide this parameter.

    C++ Type:std::string

    Controllable:No

    Description:Primary compute object that updates the buffers. This is usually a ComputeGroup object. A ComputeGroup encompassing all computes will be generated automatically if the user does not provide this parameter.

  • substeps1Solver substeps per time step.

    Default:1

    C++ Type:unsigned int

    Controllable:No

    Description:Solver substeps per time step.

  • verboseFalseShow convergence history.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Show convergence history.

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

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

    Controllable:No

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

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Set the enabled status of the MooseObject.

Advanced Parameters

Input Files