NiHu  2.0
NiHu::guiggiani< TrialField, Kernel, RadialOrder, TangentialOrder, typename std::enable_if< element_traits::is_surface_element< typename TrialField::elem_t >::value >::type > Class Template Reference

#include <guiggiani_1992.hpp>

Public Types

enum  { radial_order = RadialOrder, tangential_order = TangentialOrder }
 quadrature orders stored as internal constants More...
 
enum  { laurent_order = singular_kernel_traits<kernel_t>::singularity_type_t::value - 1 }
 
typedef TrialField trial_field_t
 the trial field type
 
typedef trial_field_t::elem_t elem_t
 the element type
 
typedef elem_t::domain_t domain_t
 the original reference domain type
 
typedef domain_t::xi_t xi_t
 the reference coordinate vector type
 
typedef elem_t::scalar_t scalar_t
 the geometrical scalar type
 
typedef Eigen::Matrix< scalar_t, domain_t::dimension, domain_t::dimension > trans_t
 the Rong's transformation matrix type
 
typedef elem_t::x_t x_t
 the physical coordinate vector type
 
typedef trial_field_t::nset_t trial_nset_t
 shape function set type
 
typedef trial_nset_t::shape_t trial_n_shape_t
 the shape function vector type
 
typedef Kernel kernel_t
 the kernel type
 
typedef kernel_traits< kernel_t >::test_input_t test_input_t
 the kernel's test input type
 
typedef kernel_traits< kernel_t >::trial_input_t trial_input_t
 the kernel's trial input type
 
typedef weighted_input< trial_input_t, elem_t >::type w_trial_input_t
 the kernel's weighted trial input type
 
typedef singular_kernel_traits< kernel_t >::singular_core_t singular_core_t
 the singular core type
 
typedef polar_laurent_coeffs< singular_core_tlaurent_t
 the Laurent coefficients computing class
 
typedef semi_block_product_result_type< typename singular_core_t::result_t, trial_n_shape_t >::type laurent_coeff_t
 value type of the Laurent coefficients
 
typedef semi_block_product_result_type< typename kernel_t::result_t, trial_n_shape_t >::type total_result_t
 value type of the integral result
 

Public Member Functions

 guiggiani (elem_t const &elem, kernel_base< kernel_t > const &kernel)
 constructor More...
 
template<class result_t >
void integrate (result_t &&I, xi_t const &xi0, x_t const &normal)
 the entry point of integration More...
 
template<class T , T order>
const x_tget_rvec_series (std::integral_constant< T, order >) const
 return Taylor coefficient of the distance measured from the collocation point
 
template<class T , T order>
const x_tget_Jvec_series (std::integral_constant< T, order >) const
 return Taylor coefficient of the Jacobian vector around the collocation point
 
template<class T , T order>
const trial_n_shape_tget_shape_series (std::integral_constant< T, order >) const
 return Taylor coefficient of the shape set around the collocation point
 
template<class T , T order>
laurent_coeff_tget_laurent_coeff (std::integral_constant< T, order >)
 return a Laurent coefficient
 
template<class T , T order>
void set_laurent_coeff (std::integral_constant< T, order >, laurent_coeff_t const &v)
 set a Laurent coefficient
 
const x_tget_n0 (void) const
 return the unit normal at the collocation point
 
const kernel_tget_kernel (void) const
 

Detailed Description

template<class TrialField, class Kernel, unsigned RadialOrder, unsigned TangentialOrder>
class NiHu::guiggiani< TrialField, Kernel, RadialOrder, TangentialOrder, typename std::enable_if< element_traits::is_surface_element< typename TrialField::elem_t >::value >::type >

brief specialisation of Guiggiani's method for surface elements

Definition at line 89 of file guiggiani_1992.hpp.

Member Enumeration Documentation

◆ anonymous enum

template<class TrialField , class Kernel , unsigned RadialOrder, unsigned TangentialOrder>
anonymous enum

quadrature orders stored as internal constants

Enumerator
radial_order 

quadrature order in radial direction

tangential_order 

quadrature order in tangential direction

Definition at line 95 of file guiggiani_1992.hpp.

◆ anonymous enum

template<class TrialField , class Kernel , unsigned RadialOrder, unsigned TangentialOrder>
anonymous enum
Todo:
these calculations are only valid for the 3D case
Enumerator
laurent_order 

the required Laurent expansion order

Definition at line 149 of file guiggiani_1992.hpp.

Constructor & Destructor Documentation

◆ guiggiani()

template<class TrialField , class Kernel , unsigned RadialOrder, unsigned TangentialOrder>
NiHu::guiggiani< TrialField, Kernel, RadialOrder, TangentialOrder, typename std::enable_if< element_traits::is_surface_element< typename TrialField::elem_t >::value >::type >::guiggiani ( elem_t const &  elem,
kernel_base< kernel_t > const &  kernel 
)
inline

constructor

Parameters
[in]elemthe element
[in]kernelthe kernel

Definition at line 158 of file guiggiani_1992.hpp.

Member Function Documentation

◆ integrate()

template<class TrialField , class Kernel , unsigned RadialOrder, unsigned TangentialOrder>
template<class result_t >
void NiHu::guiggiani< TrialField, Kernel, RadialOrder, TangentialOrder, typename std::enable_if< element_traits::is_surface_element< typename TrialField::elem_t >::value >::type >::integrate ( result_t &&  I,
xi_t const &  xi0,
x_t const &  normal 
)
inline

the entry point of integration

Template Parameters
result_tthe result type where the integral is assembled
Parameters
[in]xi0the singular point in intrinsic coordinates
[in]normalthe normal vector in the singular point
[out]Ithe result matrix where the data is assembled

todo this is for highly distorted elements

Definition at line 262 of file guiggiani_1992.hpp.


The documentation for this class was generated from the following file: