Back to index

salome-med  6.5.0
LinearTimeInterpolator.cxx
Go to the documentation of this file.
00001 // Copyright (C) 2007-2012  CEA/DEN, EDF R&D
00002 //
00003 // This library is free software; you can redistribute it and/or
00004 // modify it under the terms of the GNU Lesser General Public
00005 // License as published by the Free Software Foundation; either
00006 // version 2.1 of the License.
00007 //
00008 // This library is distributed in the hope that it will be useful,
00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00011 // Lesser General Public License for more details.
00012 //
00013 // You should have received a copy of the GNU Lesser General Public
00014 // License along with this library; if not, write to the Free Software
00015 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00016 //
00017 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00018 //
00019 
00020 #include "LinearTimeInterpolator.hxx"
00021 
00022 using namespace std;
00023 
00024 namespace ParaMEDMEM
00025 {    
00026 
00027   LinearTimeInterpolator::LinearTimeInterpolator( double InterpPrecision, int nStepBefore,
00028                                                   int nStepAfter ):
00029     TimeInterpolator( InterpPrecision, nStepBefore, nStepAfter )
00030   {
00031   }
00032   
00033   LinearTimeInterpolator::~LinearTimeInterpolator()
00034   {
00035   } 
00036   
00037   void LinearTimeInterpolator::doInterp( double time0, double time1, double time,
00038                                          int recvcount , int nbuff0, int nbuff1,
00039                                          int **recvbuff0, int **recvbuff1, int *result )
00040   {
00041     for(int i = 0 ; i < recvcount ; i++ )
00042         result[i] = (int) ((recvbuff0[0][i]*(time1 - time) + recvbuff1[0][i]*(time - time0))/(time1 - time0) + _interp_precision);
00043   }
00044 
00045   void LinearTimeInterpolator::doInterp( double time0, double time1, double time,
00046                                          int recvcount , int nbuff0, int nbuff1,
00047                                          double **recvbuff0, double **recvbuff1,
00048                                          double *result )
00049   {
00050     for(int i = 0 ; i < recvcount ; i++ )
00051       result[i] = (recvbuff0[0][i]*(time1 - time) + recvbuff1[0][i]*(time - time0))/(time1 - time0);
00052   }
00053   
00054 }