//=====================================================
// File   :  init_function.hh
// Author :  L. Plagne <laurent.plagne@edf.fr)>        
// Copyright (C) EDF R&D,  lun sep 30 14:23:18 CEST 2002
//=====================================================
// 
// 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 2
// of the License, or (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
// 
#ifndef INIT_FUNCTION_HH
#define INIT_FUNCTION_HH

double simple_function(int index)
{
  return index;
}

double simple_function(int index_i, int index_j)
{
  return index_i+index_j;
}

double pseudo_random(int index)
{
  //  INFOS("random="<<(std::rand()/double(RAND_MAX)));
  return std::rand()/double(RAND_MAX);
}

double pseudo_random(int index_i, int index_j)
{
  return std::rand()/double(RAND_MAX);
}


double null_function(int index)
{
  return 0.0;
}

double null_function(int index_i, int index_j)
{
  return 0.0;
}

#endif
