MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
ot_tenseur.h
Aller à la documentation de ce fichier.
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 //####// ot_tenseur.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2025
19 //####// Derniere modification par francois
20 //####// mer 14 mai 2025 17:54:47 EDT
21 //####//------------------------------------------------------------
22 //####//------------------------------------------------------------
23 
24 #ifndef ot_tenseurH
25 #define ot_tenseurH
26 
27 
28 
29 
30 
31 #include "ot_doubleprecision.h"
32 #include <vector>
33 #include <iostream>
34 #include "ot_mathematique.h"
35 
36 
37 
38 class OT_VECTEUR_4DD;
39 
40 
42 {
43 
44 public:
45  OT_TENSEUR();
46  OT_TENSEUR(int n);
47  OT_TENSEUR(int n,int m);
48  OT_TENSEUR(std::vector<OT_VECTEUR_4DD>&,std::vector<OT_VECTEUR_4DD>&);
49  OT_TENSEUR(std::vector<OT_VECTEUR_4DD>&);
50 
51  OT_TENSEUR(const OT_TENSEUR& ot);
52  virtual ~OT_TENSEUR();
53 
54  OT_TENSEUR& operator = (const OT_TENSEUR& ot);
55  std::vector<OT_VECTEUR_4DD> operator[](int i);
56  double2& operator()(int i,int j);
57  double2& operator()(int i,int j)const;
58 
59  void reinit(int n,int m);
60  void identite(void);
61  int Get_NbRows()const;
62  int Get_NbCols()const;
63  virtual OT_TENSEUR transpose();
64  virtual OT_TENSEUR inverse_homogene(void);
65  virtual OT_TENSEUR inverse(void);
66  virtual int est_til_equivalent( OT_TENSEUR& tns);
67  virtual void get_orthogonalisation(OT_TENSEUR& a,OT_VECTEUR_4DD& d,OT_TENSEUR& v,int n,int&nrot);
68  template<class T>int existe(const std::vector<T>& vct,T val,int& idx);
70  friend OT_TENSEUR operator*( OT_TENSEUR& ot1, OT_TENSEUR& ot2);
71  friend double2 operator%( OT_TENSEUR& ot1, OT_TENSEUR& ot2);
73  friend OT_TENSEUR operator*( double2& coef,OT_TENSEUR& ot );
74  friend OT_TENSEUR operator*( OT_TENSEUR& ot1, double2& coef);
75  friend OT_TENSEUR operator*( double& coef,OT_TENSEUR& ot );
76  friend OT_TENSEUR operator*( OT_TENSEUR& ot1, double& coef);
77  friend std::vector<double2> operator*( OT_TENSEUR& ot1, std::vector<double2>& v);
78  friend OT_TENSEUR operator+( OT_TENSEUR& ot1, OT_TENSEUR& ot2);
79  friend int operator == ( OT_TENSEUR& t1, OT_TENSEUR& t2);
80  friend std::ostream& operator<<(std::ostream& os, OT_TENSEUR& tns);
81  int listes_equivalentes(std::vector<double2>& list1,std::vector<double2>& list2,std::vector<unsigned int>& indx) ;
82 private:
84  int Dim1;
85  int Dim2;
86 } ;
87 
88 
89 int operator==( OT_TENSEUR& t1, OT_TENSEUR&t2);
90 std::ostream& operator<<(std::ostream& os, OT_TENSEUR& tns);
92 template<class T>int existe(const std::vector<T>& vct,double val,int& idx);
93 template<class T>int existe(const std::vector<T>& vct,double2 val,int& idx);
94 template<class T>int existe(const std::vector<int>& vct,int val,int& idx);
97 OT_TENSEUR operator*( OT_TENSEUR& ot1, double& coef);
98 OT_TENSEUR operator*( double& coef,OT_TENSEUR& ot );
100 std::vector<double2> operator*( OT_TENSEUR& ot1, std::vector<double2>& v);
101 #endif
102 
103 
104 
105 
106 
107 
108 
109 
110 
111 
112 
113 
114 
115 
116 
117 
118 
119 
120 
121 
122 
123 
124 
125 
126 
127 
128 
129 
130 
131 
132 
133 
134 
135 
136 
137 
138 
139 
140 
141 
142 
#define idx(i, j)
friend OT_TENSEUR operator+(OT_TENSEUR &ot1, OT_TENSEUR &ot2)
Definition: ot_tenseur.cpp:340
friend int operator==(OT_TENSEUR &t1, OT_TENSEUR &t2)
Definition: ot_tenseur.cpp:188
void identite(void)
Definition: ot_tenseur.cpp:207
virtual OT_TENSEUR transpose()
Definition: ot_tenseur.cpp:525
double2 * data
Definition: ot_tenseur.h:83
friend double2 operator%(OT_TENSEUR &ot1, OT_TENSEUR &ot2)
Definition: ot_tenseur.cpp:556
friend OT_VECTEUR_4DD operator*(OT_TENSEUR &ot1, OT_VECTEUR_4DD &ot2)
Definition: ot_tenseur.cpp:572
void reinit(int n, int m)
Definition: ot_tenseur.cpp:141
int existe(const std::vector< T > &vct, T val, int &idx)
Definition: ot_tenseur.cpp:322
int listes_equivalentes(std::vector< double2 > &list1, std::vector< double2 > &list2, std::vector< unsigned int > &indx)
Definition: ot_tenseur.cpp:720
std::vector< OT_VECTEUR_4DD > operator[](int i)
virtual OT_TENSEUR inverse_homogene(void)
Definition: ot_tenseur.cpp:403
virtual ~OT_TENSEUR()
Definition: ot_tenseur.cpp:133
int Get_NbRows() const
Definition: ot_tenseur.cpp:244
OT_TENSEUR & operator=(const OT_TENSEUR &ot)
Definition: ot_tenseur.cpp:167
virtual void get_orthogonalisation(OT_TENSEUR &a, OT_VECTEUR_4DD &d, OT_TENSEUR &v, int n, int &nrot)
Definition: ot_tenseur.cpp:612
virtual OT_TENSEUR inverse(void)
Definition: ot_tenseur.cpp:433
friend std::ostream & operator<<(std::ostream &os, OT_TENSEUR &tns)
Definition: ot_tenseur.cpp:596
int Get_NbCols() const
Definition: ot_tenseur.cpp:251
virtual int est_til_equivalent(OT_TENSEUR &tns)
Definition: ot_tenseur.cpp:258
double2 & operator()(int i, int j)
Definition: ot_tenseur.cpp:216
#define m(i, j)
#define a(i, j)
OT_TENSEUR operator+(OT_TENSEUR &ot1, OT_TENSEUR &ot2)
Definition: ot_tenseur.cpp:340
int operator==(OT_TENSEUR &t1, OT_TENSEUR &t2)
Definition: ot_tenseur.cpp:188
int existe(const std::vector< T > &vct, double val, int &idx)
OT_TENSEUR operator*(OT_TENSEUR &ot1, double2 &coef)
Definition: ot_tenseur.cpp:386
std::ostream & operator<<(std::ostream &os, OT_TENSEUR &tns)
Definition: ot_tenseur.cpp:596