IgANet
IGAnets - Isogeometric Analysis Networks
Loading...
Searching...
No Matches
solver.hpp File Reference

Solver utility functions. More...

#include <algorithm>
#include <cmath>
#include <concepts>
#include <vector>
#include <iganet/core/core.hpp>

Go to the source code of this file.

Namespaces

namespace  iganet
 
namespace  iganet::utils
 
namespace  iganet::utils::detail
 

Concepts

concept  iganet::utils::IterativeSolverPreconditioner
 Specifies the callable interface required by the preconditioned iterative solvers.
 

Functions

auto iganet::utils::bicgstab (const torch::Tensor &A, const torch::Tensor b, int max_iter=1000, double tol=1e-10)
 Solves the linear system A * x = b using the Bi-Conjugate Gradient Stabilized (BiCGStab) method.
 
auto iganet::utils::cg (const torch::Tensor &A, const torch::Tensor b, int max_iter=1000, double tol=1e-10)
 Solves the linear system A * x = b using the Conjugate Gradient (CG) method.
 
void iganet::utils::detail::check_finite_scalar (const torch::Tensor &value, const char *message)
 Provides the check_finite_scalar operation.
 
void iganet::utils::detail::check_finite_tensor (const torch::Tensor &value, const char *message)
 Provides the check_finite_tensor operation.
 
void iganet::utils::detail::check_nonnegative_finite_scalar (const torch::Tensor &value, const char *message)
 Provides the check_nonnegative_finite_scalar operation.
 
void iganet::utils::detail::check_nonzero_finite_scalar (const torch::Tensor &value, const char *message)
 Provides the check_nonzero_finite_scalar operation.
 
void iganet::utils::detail::check_positive_finite_scalar (const torch::Tensor &value, const char *message)
 Provides the check_positive_finite_scalar operation.
 
auto iganet::utils::fgmres (const torch::Tensor &A, const torch::Tensor b, const torch::Tensor &inverse_preconditioner, int max_iter=1000, double tol=1e-10, int restart=30)
 FGMRES overload taking the inverse preconditioner as a tensor.
 
template<IterativeSolverPreconditioner Preconditioner>
auto iganet::utils::fgmres (const torch::Tensor &A, const torch::Tensor b, Preconditioner &&preconditioner, int max_iter=1000, double tol=1e-10, int restart=30)
 Solves A * x = b using restarted, right-preconditioned GMRES.
 
auto iganet::utils::gmres (const torch::Tensor &A, const torch::Tensor b, int max_iter=1000, double tol=1e-10, int restart=30)
 Solves A * x = b using restarted GMRES.
 
auto iganet::utils::minres (const torch::Tensor &A, const torch::Tensor b, int max_iter=1000, double tol=1e-10)
 Solves A * x = b using MINRES.
 
auto iganet::utils::pbicgstab (const torch::Tensor &A, const torch::Tensor b, const torch::Tensor &inverse_preconditioner, int max_iter=1000, double tol=1e-10)
 PBiCGStab overload taking the inverse preconditioner as a tensor.
 
template<IterativeSolverPreconditioner Preconditioner>
auto iganet::utils::pbicgstab (const torch::Tensor &A, const torch::Tensor b, Preconditioner &&preconditioner, int max_iter=1000, double tol=1e-10)
 Solves the linear system A * x = b using the preconditioned Bi-Conjugate Gradient Stabilized (PBiCGStab) method.
 
auto iganet::utils::pcg (const torch::Tensor &A, const torch::Tensor b, const torch::Tensor &inverse_preconditioner, int max_iter=1000, double tol=1e-10)
 PCG overload taking the inverse preconditioner as a tensor.
 
template<IterativeSolverPreconditioner Preconditioner>
auto iganet::utils::pcg (const torch::Tensor &A, const torch::Tensor b, Preconditioner &&preconditioner, int max_iter=1000, double tol=1e-10)
 Solves the linear system A * x = b using the preconditioned Conjugate Gradient (PCG) method.
 
auto iganet::utils::pminres (const torch::Tensor &A, const torch::Tensor b, const torch::Tensor &inverse_preconditioner, int max_iter=1000, double tol=1e-10)
 PMINRES overload taking the inverse preconditioner as a tensor.
 
template<IterativeSolverPreconditioner Preconditioner>
auto iganet::utils::pminres (const torch::Tensor &A, const torch::Tensor b, Preconditioner &&preconditioner, int max_iter=1000, double tol=1e-10)
 Solves A * x = b using preconditioned MINRES.
 
bool iganet::utils::detail::tensor_values_are_finite (const torch::Tensor &tensor)
 Provides the tensor_values_are_finite operation.
 
void iganet::utils::detail::validate_gmres_parameters (int restart)
 Provides the validate_gmres_parameters operation.
 
void iganet::utils::detail::validate_inverse_preconditioner (const torch::Tensor &inverse_preconditioner, const torch::Tensor &A)
 Provides the validate_inverse_preconditioner operation.
 
void iganet::utils::detail::validate_iterative_solver_inputs (const torch::Tensor &A, const torch::Tensor &b, int max_iter, double tol)
 Provides the validate_iterative_solver_inputs operation.
 
void iganet::utils::detail::validate_preconditioner_output (const torch::Tensor &value, const torch::Tensor &residual)
 Provides the validate_preconditioner_output operation.
 

Detailed Description

Solver utility functions.

Author
Matthias Moller.

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.