Log In | Get Help   
Home My Page Projects Code Snippets Project Openings Mareframe
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files
[mareframe] View of /trunk/gadget/initialinputfile.h
[mareframe] / trunk / gadget / initialinputfile.h Repository:
ViewVC logotype

View of /trunk/gadget/initialinputfile.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (download) (annotate)
Mon Feb 10 17:09:07 2014 UTC (10 years, 3 months ago) by agomez
File size: 5185 byte(s)
Initial version based on Gadget 2.2.00
#ifndef initialinputfile_h
#define initialinputfile_h

#include "charptrvector.h"
#include "parametervector.h"
#include "doublevector.h"
#include "intvector.h"
#include "commentstream.h"

/**
 * \class InitialInputFile
 * \brief This is the class used to get and store initial values for the variables used in the model simulation from an input file
 */
class InitialInputFile {
public:
  /**
   * \brief This is the default InitialInputFile constructor
   * \param filename is the name of the file to read the initial parameter values from
   */
  InitialInputFile(const char* const filename);
  /**
   * \brief This is the default InitialInputFile destructor
   */
  ~InitialInputFile();
  /**
   * \brief This function will return a copy of the data read from the input file
   * \param sw is the ParameterVector that will contain a copy of the names
   * \param val is the DoubleVector that will contain a copy of the values
   * \param low is the DoubleVector that will contain a copy of the lower bounds
   * \param upp is the DoubleVector that will contain a copy of the upper bounds
   * \param opt is the IntVector that will contain a copy of the optimise flags
   */
  void getVectors(ParameterVector& sw, DoubleVector& val,
    DoubleVector& low, DoubleVector& upp, IntVector& opt);
  /**
   * \brief This function will return a copy of the value of the variables
   * \param val is the DoubleVector that will contain a copy of the values
   */
  void getValues(DoubleVector& val);
  /**
   * \brief This function will return a copy of the names of the variables
   * \param sw is the ParameterVector that will contain a copy of the names
   */
  void getSwitches(ParameterVector& sw);
  /**
   * \brief This is the function that will read the next line of the data from the input file
   * \note This function is only used when the data is in the 'repeated values' format
   */
  void readNextLine();
  /**
   * \brief This is the function that will read the data from the input file
   */
  void readFromFile();
  /**
   * \brief This function will check to see if there is more data to read in the input file
   * \return 1 if there is more data to read from the input file, 0 otherwise
   */
  int isDataLeft();
  /**
   * \brief This function will return the number of switches read from the input file
   * \return number of switches
   */
  int numSwitches() const { return switches.Size(); };
  /**
   * \brief This function will return the number of variables read from the input file
   * \return number of variables
   */
  int numVariables() const { return values.Size(); };
  /**
   * \brief This function will return the value of the flag used to denote that the 'repeated values' format is used in the input file
   * \return repeatedValues
   */
  int isRepeatedValues() { return repeatedValues; };
  /**
   * \brief This function will return the optimising flag for a switch in the input file
   * \param i is the index for the switch
   * \return optimise flag for the switch
   */
  int getOptimise(int i) const { return optimise[i]; };
  /**
   * \brief This function will return the value of a switch in the input file
   * \param i is the index for the switch
   * \return value of the switch
   */
  double getValue(int i) const { return values[i]; };
  /**
   * \brief This function will return the lower bound for a switch in the input file
   * \param i is the index for the switch
   * \return lower bound for the switch
   */
  double getLower(int i) const { return lowerbound[i]; };
  /**
   * \brief This function will return the upper bound for a switch in the input file
   * \param i is the index for the switch
   * \return upper bound for the switch
   */
  double getUpper(int i) const { return upperbound[i]; };
  /**
   * \brief This function will return the paramter name for a switch in the input file
   * \param i is the index for the switch
   * \return parameter name for the switch
   */
  Parameter getSwitch(int i) const { return switches[i]; };
private:
  /**
   * \brief This is the function that will read the header information from the input file
   */
  void readHeader();
  /**
   * \brief This is the CommentStream to read the initial values data from
   */
  CommentStream infile;
  /**
   * \brief This is the ifstream to read the initial values data from
   */
  ifstream tmpinfile;
  /**
   * \brief This is the ParameterVector used to store the parameters read from file
   */
  ParameterVector switches;
  /**
   * \brief This is the DoubleVector used to store the values of the parameters read from file
   */
  DoubleVector values;
  /**
   * \brief This is the DoubleVector used to store the lower bounds of the parameters read from file
   */
  DoubleVector lowerbound;
  /**
   * \brief This is the DoubleVector used to store the upper bounds of the parameters read from file
   */
  DoubleVector upperbound;
  /**
   * \brief This is the IntVector used to store the flag to denote whether to optimise the parameters read from file
   */
  IntVector optimise;
  /**
   * \brief This is the flag used to denote whether the data is in the 'repeated values' format or not
   */
  int repeatedValues;
};

#endif

root@forge.cesga.es
ViewVC Help
Powered by ViewVC 1.0.0  

Powered By FusionForge