Loading...
Searching...
No Matches
gridfire::partition::CompositePartitionFunction Class Referencefinal

Combines multiple PartitionFunction instances into a single composite strategy. More...

`#include <partition_composite.h>`

Inheritance diagram for gridfire::partition::CompositePartitionFunction:
[legend]
Collaboration diagram for gridfire::partition::CompositePartitionFunction:
[legend]

## Public Member Functions

| CompositePartitionFunction (const std::vector< BasePartitionType > &partitionFunctions)
| CompositePartitionFunction (const CompositePartitionFunction &other)
double | evaluate (int z, int a, double T9) const override
double | evaluateDerivative (int z, int a, double T9) const override
bool | supports (int z, int a) const override
std::string | type () const override
std::unique_ptr< PartitionFunction > | clone () const override
Public Member Functions inherited from gridfire::partition::PartitionFunction
virtual | ~PartitionFunction ()=default
| Virtual destructor.

## Private Member Functions

std::unique_ptr< PartitionFunction > | selectPartitionFunction (BasePartitionType type) const

## Private Attributes

quill::Logger * | m_logger = fourdst::logging::LogManager::getInstance().getLogger("log")
std::vector< std::unique_ptr< PartitionFunction > > | m_partitionFunctions
| Set of partition functions to use in the composite partition function.
std::unordered_map< uint_fast32_t, const PartitionFunction & > | m_supportCache
| Cache mapping isotope keys to supporting partition functions for fast lookup.

## Detailed Description

Combines multiple PartitionFunction instances into a single composite strategy.

Maintains an ordered list of sub-functions and delegates evaluation and derivative calls to the first function that supports the requested isotope.

See partition_composite.cpp for details on sub-function selection and error logging.

Exceptions

  std::runtime_error | If no sub-function supports a given (z,a,T9) in evaluate or evaluateDerivative.

## Constructor & Destructor Documentation

## CompositePartitionFunction() [1/2]

gridfire::partition::CompositePartitionFunction::CompositePartitionFunction | ( | const std::vector< BasePartitionType > & | partitionFunctions | ) |

explicit

           @brief Construct a composite function from specified types.

           Instantiates sub-functions according to the order of types provided.
           @param partitionFunctions List of BasePartitionType identifiers for sub-functions.
           @pre partitionFunctions must not be empty.
           @post m_partitionFunctions contains instances matching each type.

## CompositePartitionFunction() [2/2]

gridfire::partition::CompositePartitionFunction::CompositePartitionFunction | ( | const CompositePartitionFunction & | other | ) |

           @brief Copy constructor.

           Creates deep clones of the sub-functions in another composite.
           @param other Existing composite to copy from.
           @post m_partitionFunctions contains clones of other's sub-functions.

## Member Function Documentation

## clone()

std::unique_ptr< PartitionFunction > gridfire::partition::CompositePartitionFunction::clone | ( |  | ) | const

inlineoverridevirtual

           @brief Clone this composite partition function.

           @return Unique pointer to a deep copy of this object.

Implements gridfire::partition::PartitionFunction.

## evaluate()

double gridfire::partition::CompositePartitionFunction::evaluate | ( | int | z,
|  | int | a,
|  | double | T9
| ) |  | const

overridevirtual

           @brief Evaluate the composite partition function.

           Calls evaluate on the first sub-function supporting the isotope.
           @param z Atomic number (>=1).
           @param a Mass number (>=z).
           @param T9 Temperature in 10^9 K.
           @return Partition function value from supporting sub-function.
           @throws std::runtime_error If no sub-function supports (z,a,T9).

Implements gridfire::partition::PartitionFunction.

## evaluateDerivative()

double gridfire::partition::CompositePartitionFunction::evaluateDerivative | ( | int | z,
|  | int | a,
|  | double | T9
| ) |  | const

overridevirtual

           @brief Evaluate temperature derivative of the composite function.

           Delegates to the first supporting sub-function's derivative.
           @param z Atomic number.
           @param a Mass number.
           @param T9 Temperature in 10^9 K.
           @return d/dT9 of the partition function.
           @throws std::runtime_error If no sub-function supports (z,a,T9).

Implements gridfire::partition::PartitionFunction.

## selectPartitionFunction()

std::unique_ptr< PartitionFunction > gridfire::partition::CompositePartitionFunction::selectPartitionFunction | ( | BasePartitionType | type | ) | const

private

           @brief Instantiate a sub-function by its type.

           @param type Enumeration value selecting the desired function implementation.
           @return Unique pointer to a new PartitionFunction instance of the given type.
           @throws std::runtime_error If the given type is not recognized.

## supports()

bool gridfire::partition::CompositePartitionFunction::supports | ( | int | z,
|  | int | a
| ) |  | const

overridevirtual

           @brief Check support across all sub-functions.

           @param z Atomic number.
           @param a Mass number.
           @return true if any sub-function supports (z,a); false otherwise.

Implements gridfire::partition::PartitionFunction.

## type()

std::string gridfire::partition::CompositePartitionFunction::type | ( |  | ) | const

overridevirtual

           @brief Get composite type identifier.

           Concatenates the type() strings of all sub-functions.
           @return A string like "CompositePartitionFunction(func1, func2, ...)".

Implements gridfire::partition::PartitionFunction.

## Member Data Documentation

## m_logger

quill::Logger* gridfire::partition::CompositePartitionFunction::m_logger = fourdst::logging::LogManager::getInstance().getLogger("log")

private

## m_partitionFunctions

std::vector<std::unique_ptr<PartitionFunction> > gridfire::partition::CompositePartitionFunction::m_partitionFunctions

private

Set of partition functions to use in the composite partition function.

## m_supportCache

std::unordered_map<uint_fast32_t, const PartitionFunction&> gridfire::partition::CompositePartitionFunction::m_supportCache

mutableprivate

Cache mapping isotope keys to supporting partition functions for fast lookup.

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

- src/include/gridfire/partition/composite/partition_composite.h
- src/lib/partition/composite/partition_composite.cpp