src/cdi_ipcress/IpcressDataTable.cc
IpcressDataTable::IpcressDataTable(std::string in_opacityEnergyDescriptor,
                                   rtt_cdi::Model in_opacityModel,
                                   rtt_cdi::Reaction in_opacityReaction,
                                   std::vector<std::string> const &in_fieldNames, size_t in_matID,
                                   std::shared_ptr<const IpcressFile> const &spIpcressFile)
    : ipcressDataTypeKey(""), dataDescriptor(""),
      opacityEnergyDescriptor(std::move(in_opacityEnergyDescriptor)), opacityModel(in_opacityModel),
      opacityReaction(in_opacityReaction), fieldNames(in_fieldNames), matID(in_matID),
      logTemperatures(), temperatures(), logDensities(), densities(), groupBoundaries(),
      logOpacities() {
  // Obtain the Ipcress keyword for the opacity data type specified by the
  // EnergyPolicy, opacityModel and the opacityReaction.  Valid keywords are:
  // {ramg, rsmg, rtmg, pmg, rgray, ragray, rsgray, pgray} This function also
  // ensures that the requested data type is available in the IPCRESS file.
  setIpcressDataTypeKey();

  // Retrieve the data set and resize the vector containers.
  temperatures = spIpcressFile->getData(matID, "tgrid");
  densities = spIpcressFile->getData(matID, "rgrid");
  groupBoundaries = spIpcressFile->getData(matID, "hnugrid");

  // Retrieve table data (temperatures, densities, group boundaries and
  // opacities.  These are stored as logorithmic values.
  loadDataTable(spIpcressFile);

}
//------------------------------------------------------------------------------------------------//
/*!
 * \brief IpcressData Table constructor.
 *
 * The constructor requires that the data state be completely defined.  With
 * this information the DataTypeKey is set, then the data table sizes are loaded
 * and finally the table data is loaded.
 *
 * \param[in] in_opacityEnergyDescriptor This string variable specifies the
 *     energy model { "gray" or "mg" } for the opacity data contained in this
 *     IpcressDataTable object.
 * \param in_opacityModel This enumerated value specifies the physics model
 *     {Rosseland or Planck} for the opacity data contained in this object.
 *     The enumeration is defined in IpcressOpacity.hh
 * \param in_opacityReaction This enumerated value specifies the interaction
 *     model { total, scattering, absorption " for the opacity data contained
 *     in this object.  The enumeration is defined in IpcressOpacity.hh
 * \param in_fieldNames This vector of strings is a list of data keys that the
 *     IPCRESS file knows about.  This list is read from the IPCRESS file when
 *     a IpcressOpacity object is instantiated but before the associated
 *     IpcressDataTable object is created.
 * \param in_matID The material identifier that specifies a particular material
 *     in the IPCRESS file to associate with the IpcressDataTable container.
 * \param spIpcressFile A ds++ SmartPointer to a IpcressFile object.  One
 *     GanolfFile object should exist for each IPCRESS file.  Many
 *     IpcressOpacity (and thus IpcressDataTable) objects may point to the
 *     same IpcressFile object.
 */
\brief IpcressData Table constructor.
The constructor requires that the data state be completely defined.  With
this information the DataTypeKey is set, then the data table sizes are loaded
and finally the table data is loaded.

\param[in] in_opacityEnergyDescriptor This string variable specifies the
energy model { "gray" or "mg" } for the opacity data contained in this
IpcressDataTable object.
\param in_opacityModel This enumerated value specifies the physics model
{Rosseland or Planck} for the opacity data contained in this object.
The enumeration is defined in IpcressOpacity.hh
\param in_opacityReaction This enumerated value specifies the interaction
model { total, scattering, absorption " for the opacity data contained
in this object.  The enumeration is defined in IpcressOpacity.hh
\param in_fieldNames This vector of strings is a list of data keys that the
IPCRESS file knows about.  This list is read from the IPCRESS file when
a IpcressOpacity object is instantiated but before the associated
IpcressDataTable object is created.
\param in_matID The material identifier that specifies a particular material
in the IPCRESS file to associate with the IpcressDataTable container.
\ brief IpcressData Table constructor . The constructor requires that the data state be completely defined . With this information the DataTypeKey is set then the data table sizes are loaded and finally the table data is loaded . \ param [ in ] in_opacityEnergyDescriptor This string variable specifies the energy model { " gray " or " mg " } for the opacity data contained in this IpcressDataTable object . \ param in_opacityModel This enumerated value specifies the physics model { Rosseland or Planck } for the opacity data contained in this object . The enumeration is defined in IpcressOpacity . hh \ param in_opacityReaction This enumerated value specifies the interaction model { total scattering absorption " for the opacity data contained in this object . The enumeration is defined in IpcressOpacity . hh \ param in_fieldNames This vector of strings is a list of data keys that the IPCRESS file knows about . This list is read from the IPCRESS file when a IpcressOpacity object is instantiated but before the associated IpcressDataTable object is created . \ param in_matID The material identifier that specifies a particular material in the IPCRESS file to associate with the IpcressDataTable container .
IpcressDataTable::IpcressDataTable(std::string in_opacityEnergyDescriptor,
                                   rtt_cdi::Model in_opacityModel,
                                   rtt_cdi::Reaction in_opacityReaction,
                                   std::vector<std::string> const &in_fieldNames, size_t in_matID,
                                   std::shared_ptr<const IpcressFile> const &spIpcressFile)
    : ipcressDataTypeKey(""), dataDescriptor(""),
      opacityEnergyDescriptor(std::move(in_opacityEnergyDescriptor)), opacityModel(in_opacityModel),
      opacityReaction(in_opacityReaction), fieldNames(in_fieldNames), matID(in_matID),
      logTemperatures(), temperatures(), logDensities(), densities(), groupBoundaries(),
      logOpacities() {
  setIpcressDataTypeKey();
  temperatures = spIpcressFile->getData(matID, "tgrid");
  densities = spIpcressFile->getData(matID, "rgrid");
  groupBoundaries = spIpcressFile->getData(matID, "hnugrid");
  loadDataTable(spIpcressFile);
}
IpcressDataTable :: IpcressDataTable ( std :: string in_opacityEnergyDescriptor , rtt_cdi :: Model in_opacityModel , rtt_cdi :: Reaction in_opacityReaction , std :: vector < std :: string > const & in_fieldNames , size_t in_matID , std :: shared_ptr < const IpcressFile > const & spIpcressFile ) : ipcressDataTypeKey ( " " ) , dataDescriptor ( " " ) , opacityEnergyDescriptor ( std :: move ( in_opacityEnergyDescriptor ) ) , opacityModel ( in_opacityModel ) , opacityReaction ( in_opacityReaction ) , fieldNames ( in_fieldNames ) , matID ( in_matID ) , logTemperatures ( ) , temperatures ( ) , logDensities ( ) , densities ( ) , groupBoundaries ( ) , logOpacities ( ) { setIpcressDataTypeKey ( ) ; temperatures = spIpcressFile -> getData ( matID , " " ) ; densities = spIpcressFile -> getData ( matID , " " ) ; groupBoundaries = spIpcressFile -> getData ( matID , " " ) ; loadDataTable ( spIpcressFile ) ; }
\brief IpcressData Table constructor.
\ brief IpcressData Table constructor .
// Obtain the Ipcress keyword for the opacity data type specified by the // EnergyPolicy, opacityModel and the opacityReaction.  Valid keywords are: // {ramg, rsmg, rtmg, pmg, rgray, ragray, rsgray, pgray} This function also // ensures that the requested data type is available in the IPCRESS file. // Retrieve the data set and resize the vector containers. // Retrieve table data (temperatures, densities, group boundaries and // opacities.  These are stored as logorithmic values.