Page MenuHomec4science

pendules.cpp
No OneTemporary

File Metadata

Created
Mon, Mar 3, 00:56

pendules.cpp

#include "pendules.h"
#include <cmath>
#include <iostream>
#include "ioscillateur.h"
// TODO gérer erreur (dimension differentes etc.)
using namespace std;
PenduleS::PenduleS(const Vector& p, const Vector& p_prime , const double& l,const double& m,const double& g = 9.81,const double& fr = 0)
: Oscillateur(p, p_prime), g(g), fr(fr), l(l), m(m)
{
this->p_d();
}
PenduleS::PenduleS(const std::initializer_list<double>& p, const std::initializer_list<double>& p_prime, const double& l,const double& m,const double& g = 9.81,const double& fr = 0)
: Oscillateur(p, p_prime), g(g), fr(fr), l(l), m(m)
{
this->p_d();
}
PenduleS::PenduleS(const std::vector<double>& p, const std::vector<double>& p_prime, const double& l,const double& m,const double& g = 9.81,const double& fr = 0)
: Oscillateur(p, p_prime), g(g), fr(fr), l(l), m(m)
{
this->p_d();
}
void PenduleS::p_d()
{
p_double[0]= (-(g/l)*sin(p[0])-(fr/(m*l*l))*p_prime[0]);
}
void PenduleS::sym(const double& time, const double& dt)
{
cout << " Debut simulation " << endl;
double timee(time);
if(time>10){
cout << "Temps de simulation trop eleve, change en 10s" << endl;
timee=DEFAULT_SYMULATION_TIME;
}
cout << endl;
double t(0);
do{
cout << " At time " << t << " :" << endl;
cout << (*this) << endl;
p+=(p_prime*dt);
this->p_d();
p_prime+=(p_double*dt);
t+=dt;
}while(t<=timee);
cout << endl;
cout << " Fin simulation " << endl;
}
double PenduleS::getg() const
{
return g;
}
double PenduleS::getl() const
{
return l;
}
double PenduleS::getfr() const
{
return fr;
}
double PenduleS::getm() const
{
return m;
}
void PenduleS::setg(const double& g)
{
this->g=g;
}
void PenduleS::setfr(const double& fr)
{
this->fr=fr;
}
void PenduleS::setl(const double& l)
{
this->l=l;
}
void PenduleS::setm(const double& m)
{
this->m=m;
}

Event Timeline