<commit_before>/*! \file LumpedNuclide.h
  \brief Declares the LumpedNuclide class used by the Generic Repository 
  \author <NAME>
 */
#if !defined(_LUMPEDNUCLIDE_H)
#define _LUMPEDNUCLIDE_H

#include <iostream>
#include "Logger.h"
#include <vector>
#include <map>
#include <string>

#include "NuclideModel.h"

enum FormulationType{
  DM, 
  EM, 
  PFM, 
  LAST_FORMULATION_TYPE};

/// A shared pointer for the LumpedNuclide object
class LumpedNuclide;
typedef boost::shared_ptr<LumpedNuclide> LumpedNuclidePtr;

/** 
   @brief LumpedNuclide is a nuclide transport model that treats the volume 
   as a lumped parameter type nuclide transport model. This method is experimental, 
   and was not proposed in my prelim. This model may be influence by a paper by 
   Zuber and Maloszewski, as well as the inverse problem of that discussed in :

   <NAME>., <NAME>., 2001. Lumped-parameter models. Environmental Isotopes 
   in the Hydrological Cycle. Vol. 6: Modelling, UNESCO, Paris, Tech. Doc. in Hydrology 
   39, 5–35. 

   and :

   "Lumped Parameter models as a tool for determining the hydrological parameters of some 
   groundwater systems based on isotope data." Tracers and Modelling in Hydrogeology. 
   (Proceedings of the TraM 2000 Conference in Liege Belgium, May 2000). IAH Publ. no 262, 
   2000.
   
   This disposal system nuclide model will receive material blindly  at both borders.
   Received material will be incorporated and transferred to the opposite boundary according
   to lumped conductivity parameters.

   The parameters may be dependent on current contaiminant concentration.
   
   The LumpedNuclide model can be used to represent nuclide models of the 
   disposal system such as the Waste Form, Waste Package, Buffer, Near Field,
   Far Field, and Envrionment.
 */
class LumpedNuclide : public NuclideModel {
private: 
  
  /**
     Default constructor for the lumped parameter nuclide model class.
     Creates an empty lumped parameter volume with contaminant concentration 
     zero unless an initial contaminant concentration is specified.
   */
  LumpedNuclide(); 

  /**
     primary constructor reads input from QueryEngine
     
     @param qe is the QueryEngine object containing intialization info
   */
  LumpedNuclide(QueryEngine* qe);

public:
  /**
     A constructor for the Lumped Nuclide Model that returns a shared pointer.
    */
  static LumpedNuclidePtr create (){ return LumpedNuclidePtr(new LumpedNuclide()); };

  /**
     A constructor for the Lumped Nuclide Model that returns a shared pointer.

     @param qe is the QueryEngine object containing intialization info
    */
  static LumpedNuclidePtr create (QueryEngine* qe){ return LumpedNuclidePtr(new LumpedNuclide(qe)); };

  /**
     Virtual destructor deletes datamembers that are object pointers.
    */
  virtual ~LumpedNuclide();

  /**
     initializes the model parameters from an QueryEngine object
     
     @param qe is the QueryEngine object containing intialization info<commit_msg>makes DM the default create method formulation, so that LumpedNuclide passes default model test...<commit_after>/*! \file LumpedNuclide.h
  \brief Declares the LumpedNuclide class used by the Generic Repository 
  \author <NAME>
 */
#if !defined(_LUMPEDNUCLIDE_H)
#define _LUMPEDNUCLIDE_H

#include <iostream>
#include "Logger.h"
#include <vector>
#include <map>
#include <string>

#include "NuclideModel.h"

enum FormulationType{
  DM, 
  EM, 
  PFM, 
  LAST_FORMULATION_TYPE};

/// A shared pointer for the LumpedNuclide object
class LumpedNuclide;
typedef boost::shared_ptr<LumpedNuclide> LumpedNuclidePtr;

/** 
   @brief LumpedNuclide is a nuclide transport model that treats the volume 
   as a lumped parameter type nuclide transport model. This method is experimental, 
   and was not proposed in my prelim. This model may be influence by a paper by 
   Zuber and Maloszewski, as well as the inverse problem of that discussed in :

   <NAME>., <NAME>., 2001. Lumped-parameter models. Environmental Isotopes 
   in the Hydrological Cycle. Vol. 6: Modelling, UNESCO, Paris, Tech. Doc. in Hydrology 
   39, 5–35. 

   and :

   "Lumped Parameter models as a tool for determining the hydrological parameters of some 
   groundwater systems based on isotope data." Tracers and Modelling in Hydrogeology. 
   (Proceedings of the TraM 2000 Conference in Liege Belgium, May 2000). IAH Publ. no 262, 
   2000.
   
   This disposal system nuclide model will receive material blindly  at both borders.
   Received material will be incorporated and transferred to the opposite boundary according
   to lumped conductivity parameters.

   The parameters may be dependent on current contaiminant concentration.
   
   The LumpedNuclide model can be used to represent nuclide models of the 
   disposal system such as the Waste Form, Waste Package, Buffer, Near Field,
   Far Field, and Envrionment.
 */
class LumpedNuclide : public NuclideModel {
private: 
  
  /**
     Default constructor for the lumped parameter nuclide model class.
     Creates an empty lumped parameter volume with contaminant concentration 
     zero unless an initial contaminant concentration is specified.
   */
  LumpedNuclide(); 

  /**
     primary constructor reads input from QueryEngine
     
     @param qe is the QueryEngine object containing intialization info
   */
  LumpedNuclide(QueryEngine* qe);

public:
  /**
     A constructor for the Lumped Nuclide Model that returns a shared pointer.
    */
  static LumpedNuclidePtr create (){ LumpedNuclidePtr to_ret = LumpedNuclidePtr(new LumpedNuclide()); to_ret->set_formulation(DM); return to_ret;};

  /**
     A constructor for the Lumped Nuclide Model that returns a shared pointer.

     @param qe is the QueryEngine object containing intialization info
    */
  static LumpedNuclidePtr create (QueryEngine* qe){ return LumpedNuclidePtr(new LumpedNuclide(qe)); };

  /**
     Virtual destructor deletes datamembers that are object pointers.
    */
  virtual ~LumpedNuclide();

  /**
     initializes the model parameters from an QueryEngine object
     
     @param qe is the QueryEngine object containing intialization info
{'fraction_non_alphanumeric': 0.06013940671097422, 'fraction_numerical': 0.008105041335710812, 'mean_word_length': 3.688449848024316, 'pattern_counts': {'":': 0, '<': 19, '<?xml version=': 0, '>': 20, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2715264', 'n_tokens_mistral': 1903, 'n_tokens_neox': 1674, 'n_words': 722}