//#####################################################################
// Copyright 2002-2008, Ronald Fedkiw, Geoffrey Irving, Frank Losasso, Andrew Selle.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#####################################################################
#include <Core/Advection/ADVECTION_SEMI_LAGRANGIAN_UNIFORM_DEFINITION.h>
#include <Core/Interpolation/CUBIC_INTERPOLATION.h>
#include <Core/Interpolation/LINEAR_INTERPOLATION.h>
#include <Core/Matrices/MATRIX.h>

namespace PhysBAM{
template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<float,1>,float,AVERAGING_UNIFORM<VECTOR<float,1> >,LINEAR_INTERPOLATION_ALL<VECTOR<float,1>,float> >;
template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<float,2>,float,AVERAGING_UNIFORM<VECTOR<float,2> >,LINEAR_INTERPOLATION_ALL<VECTOR<float,2>,float> >;
template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<float,3>,float,AVERAGING_UNIFORM<VECTOR<float,3> >,LINEAR_INTERPOLATION_ALL<VECTOR<float,3>,float> >;
template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<double,1>,double,AVERAGING_UNIFORM<VECTOR<double,1> >,LINEAR_INTERPOLATION_ALL<VECTOR<double,1>,double> >;
template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<double,2>,double,AVERAGING_UNIFORM<VECTOR<double,2> >,LINEAR_INTERPOLATION_ALL<VECTOR<double,2>,double> >;
template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<double,3>,double,AVERAGING_UNIFORM<VECTOR<double,3> >,LINEAR_INTERPOLATION_ALL<VECTOR<double,3>,double> >;

template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<float,1>,float,AVERAGING_UNIFORM<VECTOR<float,1> >,CUBIC_INTERPOLATION_ALL<VECTOR<float,1>,float> >;
template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<float,2>,float,AVERAGING_UNIFORM<VECTOR<float,2> >,CUBIC_INTERPOLATION_ALL<VECTOR<float,2>,float> >;
template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<float,3>,float,AVERAGING_UNIFORM<VECTOR<float,3> >,CUBIC_INTERPOLATION_ALL<VECTOR<float,3>,float> >;
template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<double,1>,double,AVERAGING_UNIFORM<VECTOR<double,1> >,CUBIC_INTERPOLATION_ALL<VECTOR<double,1>,double> >;
template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<double,2>,double,AVERAGING_UNIFORM<VECTOR<double,2> >,CUBIC_INTERPOLATION_ALL<VECTOR<double,2>,double> >;
template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<double,3>,double,AVERAGING_UNIFORM<VECTOR<double,3> >,CUBIC_INTERPOLATION_ALL<VECTOR<double,3>,double> >;

template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<double,2>,SYMMETRIC_MATRIX<double,2>,AVERAGING_UNIFORM<VECTOR<double,2>,ARRAY<double,FACE_INDEX<2> > >,CUBIC_INTERPOLATION_ALL<VECTOR<double,2>,SYMMETRIC_MATRIX<double,2>,ARRAY<SYMMETRIC_MATRIX<double,2>,FACE_INDEX<2> > > >;
template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<double,3>,SYMMETRIC_MATRIX<double,3>,AVERAGING_UNIFORM<VECTOR<double,3>,ARRAY<double,FACE_INDEX<3> > >,CUBIC_INTERPOLATION_ALL<VECTOR<double,3>,SYMMETRIC_MATRIX<double,3>,ARRAY<SYMMETRIC_MATRIX<double,3>,FACE_INDEX<3> > > >;
template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<float,2>,SYMMETRIC_MATRIX<float,2>,AVERAGING_UNIFORM<VECTOR<float,2>,ARRAY<float,FACE_INDEX<2> > >,CUBIC_INTERPOLATION_ALL<VECTOR<float,2>,SYMMETRIC_MATRIX<float,2>,ARRAY<SYMMETRIC_MATRIX<float,2>,FACE_INDEX<2> > > >;
template class ADVECTION_SEMI_LAGRANGIAN_UNIFORM<VECTOR<float,3>,SYMMETRIC_MATRIX<float,3>,AVERAGING_UNIFORM<VECTOR<float,3>,ARRAY<float,FACE_INDEX<3> > >,CUBIC_INTERPOLATION_ALL<VECTOR<float,3>,SYMMETRIC_MATRIX<float,3>,ARRAY<SYMMETRIC_MATRIX<float,3>,FACE_INDEX<3> > > >;
}
