//#####################################################################
// Copyright 2003-2007, Ron Fedkiw, Geoffrey Irving, Igor Neverov, 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 NEO_HOOKEAN_GENERAL
//#####################################################################
#ifndef __NEO_HOOKEAN_GENERAL__
#define __NEO_HOOKEAN_GENERAL__

#include <Deformables/Constitutive_Models/GENERAL_CONSTITUTIVE_MODEL.h>
namespace PhysBAM{

using ::std::log;

template<class T,int d>
class NEO_HOOKEAN_GENERAL:public GENERAL_CONSTITUTIVE_MODEL<T,d>
{
    typedef VECTOR<T,d> TV;
public:
    typedef GENERAL_CONSTITUTIVE_MODEL<T,d> BASE;

    T mu,la;

    NEO_HOOKEAN_GENERAL(const T youngs_modulus_input=3e6,const T poissons_ratio_input=.475);
    virtual ~NEO_HOOKEAN_GENERAL();

    virtual MATRIX<T,d> Stress(const MATRIX<T,d>& F) const override;
    virtual T Energy_Density(const MATRIX<T,d>& F) const override;
    virtual void Stress_Derivative(const MATRIX<T,d>& F,GENERAL_STRESS_DERIVATIVE<TV>& dP_dF) const override;
//#####################################################################
};
}
#endif
