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 
OT_TENSEUR::operator*
friend OT_VECTEUR_4DD operator*(OT_TENSEUR &ot1, OT_VECTEUR_4DD &ot2)
Definition: ot_tenseur.cpp:572
OT_TENSEUR::Dim2
int Dim2
Definition: ot_tenseur.h:85
OT_TENSEUR::Dim1
int Dim1
Definition: ot_tenseur.h:84
operator<<
std::ostream & operator<<(std::ostream &os, OT_TENSEUR &tns)
Definition: ot_tenseur.cpp:596
OT_TENSEUR::get_orthogonalisation
virtual void get_orthogonalisation(OT_TENSEUR &a, OT_VECTEUR_4DD &d, OT_TENSEUR &v, int n, int &nrot)
Definition: ot_tenseur.cpp:612
OT_TENSEUR::operator+
friend OT_TENSEUR operator+(OT_TENSEUR &ot1, OT_TENSEUR &ot2)
Definition: ot_tenseur.cpp:340
OT_TENSEUR::inverse
virtual OT_TENSEUR inverse(void)
Definition: ot_tenseur.cpp:433
OT_TENSEUR::transpose
virtual OT_TENSEUR transpose()
Definition: ot_tenseur.cpp:525
a
#define a(i, j)
OT_TENSEUR::identite
void identite(void)
Definition: ot_tenseur.cpp:207
OT_TENSEUR::operator%
friend double2 operator%(OT_TENSEUR &ot1, OT_TENSEUR &ot2)
Definition: ot_tenseur.cpp:556
OT_TENSEUR::operator<<
friend std::ostream & operator<<(std::ostream &os, OT_TENSEUR &tns)
Definition: ot_tenseur.cpp:596
double2
Definition: ot_doubleprecision.h:29
ot_doubleprecision.h
OT_TENSEUR::data
double2 * data
Definition: ot_tenseur.h:83
OT_TENSEUR
Definition: ot_tenseur.h:41
OT_VECTEUR_3DD
Definition: ot_mathematique.h:350
OT_TENSEUR::existe
int existe(const std::vector< T > &vct, T val, int &idx)
Definition: ot_tenseur.cpp:322
OT_TENSEUR::Get_NbCols
int Get_NbCols() const
Definition: ot_tenseur.cpp:251
OT_TENSEUR::operator==
friend int operator==(OT_TENSEUR &t1, OT_TENSEUR &t2)
Definition: ot_tenseur.cpp:188
OT_TENSEUR::reinit
void reinit(int n, int m)
Definition: ot_tenseur.cpp:141
OT_TENSEUR::est_til_equivalent
virtual int est_til_equivalent(OT_TENSEUR &tns)
Definition: ot_tenseur.cpp:258
OT_TENSEUR::operator()
double2 & operator()(int i, int j)
Definition: ot_tenseur.cpp:216
operator*
OT_TENSEUR operator*(OT_TENSEUR &ot1, double2 &coef)
Definition: ot_tenseur.cpp:386
ot_mathematique.h
operator+
OT_TENSEUR operator+(OT_TENSEUR &ot1, OT_TENSEUR &ot2)
Definition: ot_tenseur.cpp:340
OT_TENSEUR::listes_equivalentes
int listes_equivalentes(std::vector< double2 > &list1, std::vector< double2 > &list2, std::vector< unsigned int > &indx)
Definition: ot_tenseur.cpp:720
OT_TENSEUR::inverse_homogene
virtual OT_TENSEUR inverse_homogene(void)
Definition: ot_tenseur.cpp:403
OT_TENSEUR::operator[]
std::vector< OT_VECTEUR_4DD > operator[](int i)
OT_TENSEUR::~OT_TENSEUR
virtual ~OT_TENSEUR()
Definition: ot_tenseur.cpp:133
OT_TENSEUR::Get_NbRows
int Get_NbRows() const
Definition: ot_tenseur.cpp:244
idx
#define idx(i, j)
OT_TENSEUR::OT_TENSEUR
OT_TENSEUR()
Definition: ot_tenseur.cpp:39
existe
int existe(const std::vector< T > &vct, double val, int &idx)
OT_VECTEUR_4DD
Definition: ot_mathematique.h:284
operator==
int operator==(OT_TENSEUR &t1, OT_TENSEUR &t2)
Definition: ot_tenseur.cpp:188
OT_TENSEUR::operator=
OT_TENSEUR & operator=(const OT_TENSEUR &ot)
Definition: ot_tenseur.cpp:167
m
#define m(i, j)