CP

The CP solver is the collision-probability method. It expands the volumetric and surface fluxes in Legendre polynomials of arbitrary order, assembles the collision, leakage and transmission probability matrices, and solves the resulting linear system directly ("global" mode) or by an interface-current sweep ("sweeping" mode). It is currently available in one-dimensional Cartesian geometry for the Boltzmann transport equation, with vacuum, reflective and surface-source boundaries.

Structure

Radiant.CPType
CP

Structure used to define the collision-probability method (CP) for the transport of a particle. The volumetric and surface fluxes are expanded in spherical harmonics of arbitrary order; in one-dimensional Cartesian geometry the azimuthal symmetry reduces the expansion to Legendre polynomials of degree up to legendre_order (see the TR-02 technical report). The method assembles the collision, leakage and transmission probability matrices and solves the resulting linear system directly, as an alternative to the SN and GN solvers.

Mandatory field(s)

  • particle::Particle : particle for which the discretization method is defined.
  • solver_type::String : type of solver for the transport calculations ("BTE").

Optional field(s) - with default values

  • legendre_order::Int64 = 0 : Legendre order of the volumetric flux expansion.
  • surface_order::Int64 = 0 : order of the surface (half-range) flux expansion.
  • convergence_criterion::Float64 = 1e-7 : convergence criterion of the group iterations.
  • maximum_iteration::Int64 = 300 : maximum number of group iterations.
source

Setters

Radiant.set_particleMethod
set_particle(this::CP,particle::Particle)

To set the particle for which the transport discretization method is for.

Input Argument(s)

  • this::CP : collision-probability method.
  • particle::Particle : particle.

Output Argument(s)

N/A

Examples

julia> m = CP()
julia> m.set_particle(electron)
source
Radiant.set_solver_typeMethod
set_solver_type(this::CP,solver_type::String)

To set the solver for the particle transport.

Input Argument(s)

  • this::CP : collision-probability method.
  • solver_type::String : solver type, which can take the following value:
    • solver_type = "BTE" : Boltzmann transport equation.

Output Argument(s)

N/A

Examples

julia> m = CP()
julia> m.set_solver_type("BTE")
source
Radiant.set_legendre_orderMethod
set_legendre_order(this::CP,legendre_order::Int64)
set_legendre_order(this::CP,volume_order::Int64,surface_order::Int64)

To set the Legendre order of the volumetric and surface flux expansions. The single-argument form sets both the volumetric and the surface order to the same value; the two-argument form sets them independently.

Input Argument(s)

  • this::CP : collision-probability method.
  • legendre_order::Int64 : Legendre order of both the volumetric and surface flux expansions.
  • volume_order::Int64 : Legendre order of the volumetric flux expansion.
  • surface_order::Int64 : Legendre order of the surface (half-range) flux expansion.

Output Argument(s)

N/A

Examples

julia> m = CP()
julia> m.set_legendre_order(2)      # volume = surface = 2
julia> m.set_legendre_order(2,4)    # volume = 2, surface = 4
source
Radiant.set_surface_orderMethod
set_surface_order(this::CP,surface_order::Int64)

To set the order of the surface (half-range) flux expansion used by the boundary-coupling probabilities.

Input Argument(s)

  • this::CP : collision-probability method.
  • surface_order::Int64 : order of the surface flux expansion.

Output Argument(s)

N/A

source
Radiant.set_modeMethod
set_mode(this::CP,mode::String)

To set the solution mode of the collision-probability method.

Input Argument(s)

  • this::CP : collision-probability method.
  • mode::String : solution mode, which can take the following values:
    • mode = "global" : finite-domain method. The collision-probability matrices couple all regions and surfaces directly and the resulting linear system is solved by a direct factorization. This is the default.
    • mode = "sweeping" : sweeping method. The unit cell is a single voxel and the surface (interface) fluxes are propagated cell by cell, in direct analogy with the discrete- ordinates sweep; the within-group scattering is resolved by source iteration.

Output Argument(s)

N/A

Examples

julia> m = CP()
julia> m.set_mode("sweeping")
source
Radiant.set_accelerationMethod
set_acceleration(this::CP,acceleration::String,parameter::Int64=0)

To set the acceleration method for the in-group source iteration of the sweeping mode (unused by the direct "global" solve).

Input Argument(s)

  • this::CP : collision-probability method.
  • acceleration::String : acceleration method, which takes the following values:
    • acceleration = "none" : plain source iteration.
    • acceleration = "livolant" : Livolant two-point extrapolation.
    • acceleration = "anderson" : depth-m Anderson acceleration.
    • acceleration = "gmres" : matrix-free restarted GMRES.
    • acceleration = "bicgstab" : matrix-free BiCGStab.
  • parameter::Int64 : optional tuning parameter (GMRES restart or Anderson depth; 0 keeps the current default).

Output Argument(s)

N/A

source
Radiant.set_convergence_criterionMethod
set_convergence_criterion(this::CP,convergence_criterion::Float64)

To set the convergence criterion for the group iterations.

Input Argument(s)

  • this::CP : collision-probability method.
  • convergence_criterion::Float64 : convergence criterion.

Output Argument(s)

N/A

source
Radiant.set_maximum_iterationMethod
set_maximum_iteration(this::CP,maximum_iteration::Int64)

To set the maximum number of group iterations.

Input Argument(s)

  • this::CP : collision-probability method.
  • maximum_iteration::Int64 : maximum number of group iterations.

Output Argument(s)

N/A

source

Getters

Radiant.get_particleMethod
get_particle(this::CP)

Get the particle associated with the discretization method.

Input Argument(s)

  • this::CP : collision-probability method.

Output Argument(s)

  • particle::Particle : particle.
source
Radiant.get_solver_typeMethod
get_solver_type(this::CP)

Get the type of solver for transport calculations.

Input Argument(s)

  • this::CP : collision-probability method.

Output Argument(s)

  • solver::Int64 : type of solver for transport calculations.
  • isCSD::Bool : indicate if the continuous slowing-down term is used or not.
source
Radiant.get_legendre_orderMethod
get_legendre_order(this::CP)

Get the Legendre order of the volumetric flux expansion.

Input Argument(s)

  • this::CP : collision-probability method.

Output Argument(s)

  • legendre_order::Int64 : Legendre order.
source
Radiant.get_surface_orderMethod
get_surface_order(this::CP)

Get the order of the surface (half-range) flux expansion.

Input Argument(s)

  • this::CP : collision-probability method.

Output Argument(s)

  • surface_order::Int64 : surface order.
source
Radiant.get_modeMethod
get_mode(this::CP)

Get the solution mode of the collision-probability method.

Input Argument(s)

  • this::CP : collision-probability method.

Output Argument(s)

  • mode::String : solution mode ("global" or "sweeping").
source
Radiant.get_schemesMethod
get_schemes(this::CP,geometry::Geometry,isFC::Bool)

Get the space and/or energy schemes informations. The CP assumes a flat (region-averaged) flux, so a single spatial/energy moment is carried per region.

Input Argument(s)

  • this::CP : collision-probability method.
  • geometry::Geometry : geometry.
  • isFC::Bool : boolean indicating if the high-order moments are fully coupled.

Output Argument(s)

  • schemes::Vector{String} : scheme types.
  • 𝒪::Vector{Int64} : order of the schemes.
  • Nm::Vector{Int64} : numbers of moments.
source
Radiant.get_is_full_couplingMethod
get_is_full_coupling(this::CP)

Get whether the high-order moments are fully coupled or not.

Input Argument(s)

  • this::CP : collision-probability method.

Output Argument(s)

  • isFC::Bool : boolean indicating if the high-order moments are fully coupled or not.
source
Radiant.get_accelerationMethod
get_acceleration(this::CP)

Get the acceleration method (used only by the sweeping mode's in-group source iteration).

Input Argument(s)

  • this::CP : collision-probability method.

Output Argument(s)

  • acceleration::String : acceleration method.
source
Radiant.get_convergence_criterionMethod
get_convergence_criterion(this::CP)

Get the convergence criterion for the group iterations.

Input Argument(s)

  • this::CP : collision-probability method.

Output Argument(s)

  • convergence_criterion::Float64 : convergence criterion.
source
Radiant.get_maximum_iterationMethod
get_maximum_iteration(this::CP)

Get the maximum number of group iterations.

Input Argument(s)

  • this::CP : collision-probability method.

Output Argument(s)

  • maximum_iteration::Int64 : maximum number of group iterations.
source