16#include <Schema_Adams_Bashforth_order_3.h>
17#include <Equation_base.h>
75static double Ln02(
const double time_n_plus_1,
const double time_n,
const double time_n_minus_1,
const double time_n_minus_2)
84 double midpoint = (time_n_plus_1+time_n);
87 double scaling_coeff = (time_n_plus_1-time_n);
90 double denominator = (time_n-time_n_minus_1);
91 denominator *= (time_n-time_n_minus_2);
92 denominator = 1./denominator;
94 double numerator = (time_n-time_n_minus_1)*(time_n-time_n_minus_2);
95 numerator += 4*(midpoint-time_n_minus_1)*(midpoint-time_n_minus_2);
96 numerator += (time_n_plus_1-time_n_minus_1)*(time_n_plus_1-time_n_minus_2);
98 result = scaling_coeff * numerator * denominator;
102static double Ln12(
const double time_n_plus_1,
const double time_n,
const double time_n_minus_1,
const double time_n_minus_2)
111 double midpoint = (time_n_plus_1+time_n);
114 double scaling_coeff = (time_n_plus_1-time_n);
117 double denominator = (time_n_minus_1-time_n);
118 denominator *= (time_n_minus_1-time_n_minus_2);
119 denominator = 1./denominator;
121 double numerator = 0.;
122 numerator += 4*(midpoint-time_n)*(midpoint-time_n_minus_2);
123 numerator += (time_n_plus_1-time_n)*(time_n_plus_1-time_n_minus_2);
125 result = scaling_coeff * numerator * denominator;
134 Cerr <<
"********************* Warning (printed only on the first 100 time steps) **********************"<< finl;
135 Cerr <<
"The Adams Bashforth order 3 scheme is recommended with a facsec lower than 1.0 for example 0.5."<< finl;
136 Cerr <<
"***********************************************************************************************"<< finl;
147 double inv_time_step = 1./time_step;
148 double time_n_minus_2 = times[0];
149 double time_n_minus_1 = times[1];
150 double time_n = times[2];
151 double time_n_plus_1 = times[3];
153 coefficients()[2] = Ln02(time_n_plus_1,time_n,time_n_minus_1,time_n_minus_2) * inv_time_step;
154 coefficients()[1] = Ln12(time_n_plus_1,time_n,time_n_minus_1,time_n_minus_2) * inv_time_step;
Class defining operators and methods for all reading operation in an input flow (file,...
virtual Entree & readOn(Entree &)
Lecture d'un Objet_U sur un flot d'entree Methode a surcharger.
virtual Sortie & printOn(Sortie &) const
Ecriture de l'objet sur un flot de sortie Methode a surcharger.
classe Schema_Adams_Bashforth_base
const DoubleTab & coefficients() const override
classe Schema_Adams_Bashforth_order_3 Cette classe represente un schema en temps d'Adams-Bashforth d'...
int nb_valeurs_passees() const override
Renvoie le nombre de valeurs temporelles du passe.
int nb_pas_dt_seuil() const override
Renvoie le nombre de pas de temps strictement au dela duquel on applique le schema d Adams-Bahshforth...
int nb_valeurs_temporelles() const override
Renvoie le nombre de valeurs temporelles a conserver.
void compute_adams_bashforth_coefficients(double time_step, const DoubleTab ×) override
int limpr() const
Renvoie 1 s'il y a lieu d'effectuer une impression (cf dt_impr) Renvoie 0 sinon.
int nb_pas_dt() const
Renvoie le nombre de pas de temps effectues.
double facteur_securite_pas() const
Renvoie le facteur de securite ou multiplicateur de delta_t.
Classe de base des flux de sortie.
_SIZE_ size_array() const
void resize(_SIZE_ n, RESIZE_OPTIONS opt=RESIZE_OPTIONS::COPY_INIT)