ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/addin/outil/src/tpl_fonction.h
Revision: 1156
Committed: Thu Jun 13 22:02:48 2024 UTC (15 months ago) by francois
Content type: text/plain
File size: 2541 byte(s)
Log Message:
compatibilité Ubuntu 22.04
Suppression des refeences à Windows
Ajout d'une banière

File Contents

# Content
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// tpl_fonction.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:53:59 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifndef _TPLFONCTION_
23 #define _TPLFONCTION_
24
25 #include <math.h>
26
27 template <class A,class B,class C>
28 class TPL_FONCTION1
29 {
30 public:
31 TPL_FONCTION1(B& bb,A (*fonc)(B&,C)):f(fonc),b(bb)
32 {
33 };
34
35 virtual ~TPL_FONCTION1()
36 {
37 };
38
39
40
41 A integrer_gauss_2(C t1,C t2,int nb_pas=32)
42 {
43 double integrale=0.;
44 for (int i=0;i<nb_pas;i++)
45 {
46 C ti=t1+(t2-t1)*i/nb_pas;
47 C tii=t1+(t2-t1)*(i+1)/nb_pas;
48 double t=0.7886751345*tii+0.2113248654*ti;
49 integrale=integrale+0.5*(tii-ti)*f(b,t);
50 t=0.7886751345*ti+0.2113248654*tii;
51 integrale=integrale+0.5*(tii-ti)*f(b,t);
52 }
53 return integrale;
54 };
55
56
57 void integrer_jusqua_gauss_2 (C x1, C dx, C valeur_integrale_cible, C * x2)
58 {
59 C xi, xii;
60 A integrale,integrale_pas_precedent;
61
62 integrale=0;
63 xii = x1;
64
65 do
66 {
67 xi = xii;
68 xii = xi+dx;
69 integrale_pas_precedent=integrale;
70 double x=0.7886751345*xii+0.2113248654*xi;
71 integrale=integrale+0.5*dx*f(b,x);
72 x=0.7886751345*xi+0.2113248654*xii;
73 integrale=integrale+0.5*dx*f(b,x);
74 }
75 while ( fabs (integrale) < fabs (valeur_integrale_cible) );
76 *x2=xi+(xii-xi)*(valeur_integrale_cible-integrale_pas_precedent)/(integrale-integrale_pas_precedent);
77
78 if ( fabs((*x2-x1)/dx) < 32)
79 integrer_jusqua_gauss_2 (x1, (*x2-x1)/40, valeur_integrale_cible, x2);
80
81 }
82
83
84
85 private:
86 A (*f)(B&,C);
87 B& b;
88 };
89
90
91
92
93 #endif
94
95