//#####################################################################
// Copyright 2002-2008, Robert Bridson, Ronald Fedkiw, Geoffrey Irving, Michael Lentine, Neil Molino, Craig Schroeder, Andrew Selle, Tamar Shinar, Eftychios Sifakis, Joseph Teran.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#####################################################################
// Class DEFORMABLES_EXAMPLE_FORCES_AND_VELOCITIES
//#####################################################################
#ifndef __DEFORMABLES_EXAMPLE_FORCES_AND_VELOCITIES__
#define __DEFORMABLES_EXAMPLE_FORCES_AND_VELOCITIES__

#include <Core/Arrays/ARRAYS_FORWARD.h>
#include <functional>
namespace PhysBAM{

template<class TV>
class DEFORMABLES_EXAMPLE_FORCES_AND_VELOCITIES
{
    typedef typename TV::SCALAR T;
public:
    std::function<void(ARRAY_VIEW<TV> F,T time)> add_external_forces;
    std::function<void(ARRAY_VIEW<TV> X,T time)> set_external_positions;
    std::function<void(ARRAY_VIEW<TV> V,T time)> set_external_velocities;
    std::function<void(ARRAY_VIEW<TV> X,T time)> zero_out_enslaved_position_nodes;
    std::function<void(ARRAY_VIEW<TV> V,T time)> zero_out_enslaved_velocity_nodes;
//#####################################################################
};
}
#endif
