40 m_domainMin( a_domainMin ),
41 m_domainMax( a_domainMax ),
42 m_u_domainMin( log( a_domainMin ) ),
43 m_u_domainMax( log( a_domainMax ) ),
44 m_inverse_du( static_cast<double>( a_bins ) / ( m_u_domainMax - m_u_domainMin ) ) {
53 m_bins( a_domainHash.
bins( ) ),
73 if( a_domain < m_domainMin )
return( 0 );
74 if( a_domain > m_domainMax )
return( m_bins + 1 );
75 double dIndex = m_inverse_du * ( log( a_domain ) - m_u_domainMin ) + 1;
76 return(
static_cast<std::size_t
>( dIndex ) );
89 std::size_t i1, size( a_domainValues.
size( ) );
91 std::size_t lastIndex = 0, currentIndex, i2 = 1;
93 for( i1 = 0; i1 < size; ++i1 ) {
94 currentIndex =
index( a_domainValues[i1] );
95 if( currentIndex != lastIndex ) {
96 for( ; lastIndex < currentIndex; ++lastIndex, ++i2 ) {
98 if( i1 == 0 ) indices[i2] = 0;
102 for( ; i2 < ( m_bins + 2 ); ++i2 ) indices[i2] = indices[i2-1];
132 std::cout <<
"bins = " << m_bins << std::endl;
133 std::cout <<
" m_domainMin = " << m_domainMin <<
" << m_domainMax = " << m_domainMax << std::endl;
134 std::cout <<
" m_u_domainMin = " << m_u_domainMin <<
" << m_u_domainMax = " << m_u_domainMax << std::endl;
135 std::cout <<
" m_inverse_du = " << m_inverse_du << std::endl;
136 if( a_printValues ) {
137 double domain = m_domainMin, factor = pow( m_domainMax / m_domainMin, 1. /
static_cast<double>( m_bins ) );
139 for( std::size_t i1 = 0; i1 <
bins( ); ++i1, domain *= factor ) {
141 if( ( ( i1 + 1 ) % 10 ) == 0 ) std::cout << std::endl;
164 m_boundaries( a_boundaries ) {
173 m_boundaries( a_boundaries ) {
188 initialize( a_protare, a_temperatureInfo, a_particleID );
213 m_boundaries( a_multiGroupHash.
boundaries( ) ) {
227 if( a_particleID ==
"" ) a_particleID = a_protare.
projectile( ).
ID( );
232 m_boundaries = heatedMultiGroupStyle1->
groupBoundaries( a_particleID );
#define DATA_MEMBER_VECTOR_DOUBLE(member, buf, mode)
#define DATA_MEMBER_SIZE_T(member, buf, mode)
#define DATA_MEMBER_DOUBLE(member, buf, mode)
std::string const & pid() const
std::string const & ID() const
virtual Styles::Suite & styles()=0
ParticleInfo const & projectile() const
std::vector< double > groupBoundaries(std::string const &a_ID) const
std::string const & heatedMultiGroup() const
std::vector< double > const & boundaries() const
MultiGroup multiGroup() const
Particle const * particle(std::string const &a_particleID) const
LUPI_HOST_DEVICE DomainHash()
LUPI_HOST_DEVICE double domainMin() const
LUPI_HOST_DEVICE double u_domainMin() const
LUPI_HOST_DEVICE double inverse_du() const
LUPI_HOST_DEVICE double u_domainMax() const
LUPI_HOST void print(bool a_printValues) const
LUPI_HOST_DEVICE double domainMax() const
LUPI_HOST_DEVICE std::size_t index(double a_domain) const
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE std::size_t bins() const
LUPI_HOST_DEVICE Vector< std::size_t > map(Vector< double > const &a_domainValues) const
LUPI_HOST_DEVICE MultiGroupHash()
LUPI_HOST_DEVICE void serialize(LUPI::DataBuffer &a_buffer, LUPI::DataBuffer::Mode a_mode)
LUPI_HOST_DEVICE Vector< double > const & boundaries() const
LUPI_HOST_DEVICE std::size_t size() const
std::string argumentsToString(char const *a_format,...)
Simple C++ string class, useful as replacement for std::string if this cannot be used,...