IgANet
IgANets - Isogeometric Analysis Networks
Loading...
Searching...
No Matches
bspline.hpp File Reference

Multivariate B-splines. More...

#include <algorithm>
#include <exception>
#include <filesystem>
#include <functional>
#include <regex>
#include <core.hpp>
#include <options.hpp>
#include <patch.hpp>
#include <utils/blocktensor.hpp>
#include <utils/container.hpp>
#include <utils/fqn.hpp>
#include <utils/index_sequence.hpp>
#include <utils/integer_pow.hpp>
#include <utils/linalg.hpp>
#include <utils/serialize.hpp>
#include <utils/tensorarray.hpp>
#include <utils/vslice.hpp>

Go to the source code of this file.

Classes

class  iganet::BSplineCommon< BSplineCore >
 B-spline (common high-level functionality) More...
 
class  iganet::detail::SplineType
 Spline type. More...
 
class  iganet::NonUniformBSplineCore< real_t, GeoDim, Degrees >
 Tensor-product non-uniform B-spline (core functionality) More...
 
class  iganet::UniformBSplineCore< real_t, GeoDim, Degrees >
 Tensor-product uniform B-spline (core functionality) More...
 

Namespaces

namespace  iganet
 
namespace  iganet::detail
 

Macros

#define GENERATE_EXPR_SEQ   (curl)(div)(grad)(hess)(jac)(lapl)
 Sequence of expression (parametric coordinates)
 
#define GENERATE_IEXPR_SEQ   (icurl)(idiv)(igrad)(ihess)(ijac)(ilapl)
 Sequence of expression (physical coordinates)
 

Typedefs

template<typename... T>
using iganet::is_SplineType = std::conjunction< std::is_base_of< detail::SplineType, T >... >
 Type trait to check if T is a valid Spline type.
 
template<typename real_t , short_t GeoDim, short_t... Degrees>
using iganet::NonUniformBSpline = BSplineCommon< NonUniformBSplineCore< real_t, GeoDim, Degrees... > >
 Tensor-product non-uniform B-spline.
 
template<typename real_t , short_t GeoDim, short_t... Degrees>
using iganet::UniformBSpline = BSplineCommon< UniformBSplineCore< real_t, GeoDim, Degrees... > >
 Tensor-product uniform B-spline.
 

Enumerations

enum class  iganet::deriv : short_t {
  iganet::func = 0 , iganet::dx = 1 , iganet::dy = 10 , iganet::dz = 100 ,
  iganet::dt = 1000
}
 Enumerator for specifying the derivative of B-spline evaluation. More...
 
enum class  iganet::init : short_t {
  iganet::none = 0 , iganet::zeros = 1 , iganet::ones = 2 , iganet::linear ,
  iganet::random = 4 , iganet::greville = 5 , iganet::linspace = 6
}
 Enumerator for specifying the initialization of B-spline coefficients. More...
 

Functions

constexpr auto iganet::operator+ (deriv lhs, deriv rhs)
 Adds two enumerators for specifying the derivative of B-spline evaluation.
 
template<typename real_t , short_t GeoDim, short_t... Degrees>
std::ostream & iganet::operator<< (std::ostream &os, const NonUniformBSpline< real_t, GeoDim, Degrees... > &obj)
 Print (as string) a UniformBSpline object.
 
template<typename real_t , short_t GeoDim, short_t... Degrees>
std::ostream & iganet::operator<< (std::ostream &os, const UniformBSpline< real_t, GeoDim, Degrees... > &obj)
 Print (as string) a UniformBSpline object.
 
template<typename real_t , short_t GeoDim, short_t... Degrees>
torch::serialize::OutputArchive & iganet::operator<< (torch::serialize::OutputArchive &archive, const UniformBSplineCore< real_t, GeoDim, Degrees... > &obj)
 Serializes a B-spline object.
 
template<typename real_t , short_t GeoDim, short_t... Degrees>
torch::serialize::InputArchive & iganet::operator>> (torch::serialize::InputArchive &archive, UniformBSplineCore< real_t, GeoDim, Degrees... > &obj)
 De-serializes a B-spline object.
 
constexpr auto iganet::operator^ (deriv lhs, short_t rhs)
 Raises an enumerator for specifying the derivative of B-spline evaluation to a higher exponent.
 

Variables

template<typename... T>
constexpr bool iganet::is_SplineType_v = is_SplineType<T...>::value
 Alias to the value of is_SplineType.
 

Detailed Description

Multivariate B-splines.

Abstract patch function base class.

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/.

Macro Definition Documentation

◆ GENERATE_EXPR_SEQ

#define GENERATE_EXPR_SEQ   (curl)(div)(grad)(hess)(jac)(lapl)

Sequence of expression (parametric coordinates)

For each item in this sequence corresponding expressions will be generated for function spaces, boundary spaces, etc.

◆ GENERATE_IEXPR_SEQ

#define GENERATE_IEXPR_SEQ   (icurl)(idiv)(igrad)(ihess)(ijac)(ilapl)

Sequence of expression (physical coordinates)

For each item in this sequence corresponding expressions will be generated for function spaces, boundary spaces, etc.