Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
MCGIDI::Functions::Polynomial1d Class Reference

#include <MCGIDI_functions.hpp>

Inheritance diagram for MCGIDI::Functions::Polynomial1d:

Public Member Functions

LUPI_HOST_DEVICE Polynomial1d ()
LUPI_HOST Polynomial1d (double a_domainMin, double a_domainMax, Vector< double > const &a_coefficients, double a_outerDomainValue=0)
LUPI_HOST Polynomial1d (GIDI::Functions::Polynomial1d const &a_polynomial1d)
LUPI_HOST_DEVICE ~Polynomial1d ()
LUPI_HOST_DEVICE Vector< double > const & coefficients () const
LUPI_HOST_DEVICE double evaluate (double a_x1) const
LUPI_HOST_DEVICE void serialize (LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
Public Member Functions inherited from MCGIDI::Functions::Function1d_d2
LUPI_HOST_DEVICE Function1d_d2 ()
LUPI_HOST_DEVICE Function1d_d2 (double a_domainMin, double a_domainMax, Interpolation a_interpolation, double a_outerDomainValue=0)
LUPI_HOST_DEVICE double evaluate (double a_x1) const
Public Member Functions inherited from MCGIDI::Functions::Function1d_d1
LUPI_HOST_DEVICE Function1d_d1 ()
LUPI_HOST_DEVICE Function1d_d1 (double a_domainMin, double a_domainMax, Interpolation a_interpolation, double a_outerDomainValue=0)
LUPI_HOST_DEVICE double evaluate (double a_x1) const
Public Member Functions inherited from MCGIDI::Functions::Function1d
LUPI_HOST_DEVICE Function1d ()
LUPI_HOST_DEVICE Function1d (double a_domainMin, double a_domainMax, Interpolation a_interpolation, double a_outerDomainValue=0)
LUPI_HOST_DEVICE ~Function1d ()
LUPI_HOST_DEVICE Function1dType type () const
LUPI_HOST_DEVICE String typeString () const
template<typename RNG>
LUPI_HOST_DEVICE MCGIDI_VIRTUAL_FUNCTION int sampleBoundingInteger (double a_x1, RNG &&a_rng) const
LUPI_HOST_DEVICE MCGIDI_VIRTUAL_FUNCTION double evaluate (double a_x1) const MCGIDI_TRUE_VIRTUAL
LUPI_HOST_DEVICE void serialize (LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
template<typename RNG>
LUPI_HOST_DEVICE int sampleBoundingInteger (double a_x1, RNG &&a_rng) const
Public Member Functions inherited from MCGIDI::Functions::FunctionBase
LUPI_HOST_DEVICE FunctionBase ()
LUPI_HOST FunctionBase (GIDI::Functions::FunctionForm const &a_function)
LUPI_HOST_DEVICE FunctionBase (int a_dimension, double a_domainMin, double a_domainMax, Interpolation a_interpolation, double a_outerDomainValue=0)
virtual LUPI_HOST_DEVICE ~FunctionBase ()=0
LUPI_HOST_DEVICE Interpolation interpolation () const
LUPI_HOST_DEVICE double domainMin () const
LUPI_HOST_DEVICE double domainMax () const
LUPI_HOST_DEVICE double outerDomainValue () const
LUPI_HOST_DEVICE void serialize (LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)

Additional Inherited Members

Protected Attributes inherited from MCGIDI::Functions::Function1d
Function1dType m_type

Detailed Description

Definition at line 159 of file MCGIDI_functions.hpp.

Constructor & Destructor Documentation

◆ Polynomial1d() [1/3]

LUPI_HOST_DEVICE MCGIDI::Functions::Polynomial1d::Polynomial1d ( )

Definition at line 538 of file MCGIDI_functions.cc.

538 :
539 m_coefficients( ),
540 m_coefficientsReversed( ) {
541
543}

◆ Polynomial1d() [2/3]

LUPI_HOST MCGIDI::Functions::Polynomial1d::Polynomial1d ( double a_domainMin,
double a_domainMax,
Vector< double > const & a_coefficients,
double a_outerDomainValue = 0 )

Definition at line 547 of file MCGIDI_functions.cc.

547 :
548 Function1d_d2( a_domainMin, a_domainMax, Interpolation::LINLIN, a_outerDomainValue ),
549 m_coefficients( a_coefficients ) {
550
552
553 m_coefficientsReversed.reserve( m_coefficients.size( ) );
554 for( Vector<double>::iterator iter = m_coefficients.begin( ); iter != m_coefficients.end( ); ++iter )
555 m_coefficientsReversed.push_back( *iter );
556}

◆ Polynomial1d() [3/3]

LUPI_HOST MCGIDI::Functions::Polynomial1d::Polynomial1d ( GIDI::Functions::Polynomial1d const & a_polynomial1d)

Definition at line 560 of file MCGIDI_functions.cc.

560 :
561 Function1d_d2( a_polynomial1d.domainMin( ), a_polynomial1d.domainMax( ), Interpolation::LINLIN, a_polynomial1d.outerDomainValue( ) ) {
562
564
565 m_coefficients = a_polynomial1d.coefficients( );
566 m_coefficientsReversed.reserve( m_coefficients.size( ) );
567 for( Vector<double>::iterator iter = m_coefficients.begin( ); iter != m_coefficients.end( ); ++iter )
568 m_coefficientsReversed.push_back( *iter );
569}

◆ ~Polynomial1d()

LUPI_HOST_DEVICE MCGIDI::Functions::Polynomial1d::~Polynomial1d ( )

Definition at line 574 of file MCGIDI_functions.cc.

574 {
575
576}

Member Function Documentation

◆ coefficients()

LUPI_HOST_DEVICE Vector< double > const & MCGIDI::Functions::Polynomial1d::coefficients ( ) const
inline

Definition at line 171 of file MCGIDI_functions.hpp.

171{ return( m_coefficients ); }

◆ evaluate()

LUPI_HOST_DEVICE double MCGIDI::Functions::Polynomial1d::evaluate ( double a_x1) const

Definition at line 580 of file MCGIDI_functions.cc.

580 {
581
582 double d_value = 0;
583
584 for( Vector<double>::const_iterator iter = m_coefficientsReversed.begin( ); iter != m_coefficientsReversed.end( ); ++iter ) {
585 d_value = *iter + d_value * a_x1;
586 }
587
588 return( d_value );
589}

◆ serialize()

LUPI_HOST_DEVICE void MCGIDI::Functions::Polynomial1d::serialize ( LUPI::DataBuffer & a_buffer,
LUPI::DataBuffer::Mode a_mode )

This method serializes this for broadcasting as needed for MPI and GPUs. The method can count the number of required bytes, pack this or unpack this depending on a_mode.

Parameters
a_buffer[in] The buffer to read or write data to depending on a_mode.
a_mode[in] Specifies the action of this method.

Definition at line 599 of file MCGIDI_functions.cc.

599 {
600
601 Function1d::serialize( a_buffer, a_mode );
602 DATA_MEMBER_VECTOR_DOUBLE( m_coefficients, a_buffer, a_mode );
603 DATA_MEMBER_VECTOR_DOUBLE( m_coefficientsReversed, a_buffer, a_mode );
604}
#define DATA_MEMBER_VECTOR_DOUBLE(member, buf, mode)
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)

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