/***************************************************************************
* FixedStepSRM.h *
* ------------------- *
* copyright : (C) 2013 by Francisco Naveros *
* email : fnaveros@atc.ugr.es *
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 3 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef FIXEDSTEPSRM_H_
#define FIXEDSTEPSRM_H_
/*!
* \file IntegrationMethod.h
*
* \author Francisco Naveros
* \date May 2013
*
* This file declares a class which implement a fixed step integration method for SRM neuron model in CPU.
* This class only store the value of the integration step size.
*/
#include "./IntegrationMethod.h"
class TimeDrivenNeuronModel;
/*!
* \class FixedStepSRM
*
* \brief Fixed step integration methods in CPU for SRM neuron model. This class only store the value of the
* integration step size.
*
* \author Francisco Naveros
* \date May 2013
*/
class FixedStepSRM : public IntegrationMethod {
public:
/*!
* \brief Default constructor.
*
* It generates a new FixedStepSRM object.
*
*/
FixedStepSRM();
/*!
* \brief Class destructor.
*
* It destroys an object of this class.
*/
~FixedStepSRM();
/*!
* \brief It calculate the new neural state variables for a defined elapsed_time.
*
* It calculate the new neural state variables for a defined elapsed_time.
*
* \param index for method with memory (e.g. BDF1ad, BDF2, BDF3, etc.).
* \param NeuronState neuron state variables of one neuron.
* \param elapsed_time integration time step.
*/
void NextDifferentialEcuationValue(int index, float * NeuronState, float elapsed_time) {}
/*!
* \brief It prints the integration method info.
*
* It prints the current integration method characteristics.
*
* \param out The stream where it prints the information.
*
* \return The stream after the printer.
*/
ostream & PrintInfo(ostream & out);
/*!
* \brief It initialize the state of the integration method for method with memory (e.g. BDF1ad, BDF2, BDF3, etc.).
*
* It initialize the state of the integration method for method with memory (e.g. BDF1ad, BDF2, BDF3, etc.).
*
* \param N_neuron number of neurons in the neuron model.
* \param inicialization vector with initial values.
*/
void InitializeStates(int N_neurons, float * inicialization){}
/*!
* \brief It reset the state of the integration method for method with memory (e.g. BDF1ad, BDF2, BDF3, etc.).
*
* It reset the state of the integration method for method with memory (e.g. BDF1ad, BDF2, BDF3, etc.).
*
* \param index indicate witch neuron must be reseted.
*/
void resetState(int index){}
/*!
* \brief It loads the integration method parameters.
*
* It loads the integration method parameters from the file that define the parameter of the neuron model.
*
* \param Pointer to a neuron description file (*.cfg). At the end of this file must be included
* the integration method type and its parameters.
* \param Currentline line inside the neuron description file where start the description of the integration method parameter.
*
* \throw EDLUTFileException If something wrong has happened in the file load.
*/
void loadParameter(FILE *fh, long * Currentline) throw (EDLUTFileException);
};
#endif /* INTEGRATIONMETHOD_H_ */