MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mg_calcul_fatigue.cpp
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 //####// mg_calcul_fatigue.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:57 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #include "gestionversion.h"
23 #include "mg_calcul_fatigue.h"
24 #include "mg_file.h"
25 #include "mg_volume.h"
26 #include "fem_solution.h"
27 #include "ot_parametres.h"
29 #include "fem_solution.h"
30 #include <cmath>
31 #include "ot_parametres.h"
32 #include <limits>
33 
35 {
36  m_ele3=ele3;
37 }
38 
40 {
41 
42 }
43 
45 {
46  return m_ele3;
47 }
48 
50 {
51  m_ele3=ele3;
52 }
53 
55 {
56  return m_damage;
57 }
58 
59 void DAMAGE_FEM3::change_damage(double damage)
60 {
61  m_damage=damage;
62 }
63 
65 {
66  return m_niveau_maille;
67 }
68 
70 {
71  m_niveau_maille=niveau;
72 }
73 
74 
76 {
77 }
78 
79 MG_CALCUL_FATIGUE::MG_CALCUL_FATIGUE(MG_CALCUL_FATIGUE& mdd):affichageactif(mdd.affichageactif)
80 {
81 }
82 
84 {
85 }
86 
87 void MG_CALCUL_FATIGUE::active_affichage(void (*fonc)(char*))
88 {
89 affiche=fonc;
91 }
92 
94 {
95 OT_PARAMETRES param;
96 param.ajouter("Separateur_decimale",",",OT_PARAMETRES::STRING,"Seprateur décimale pour l'exportation des fichiers excel");
97 char fichier[500];
98 sprintf(fichier,"%s/.magic",getenv("HOME"));
99 param.lire(fichier);
100 param.enregistrer(fichier);
101 char c=(param.get_nom("Separateur_decimale").c_str())[0];
102 return c;
103 }
104 
105 int MG_CALCUL_FATIGUE::cycle_jump(MG_GESTIONNAIRE &gest,MG_GEOMETRIE *geo,int &Njump,char *fichierparam,int numchamps,int N,int niveaumax,char *file,std::vector<FEM_ELEMENT3*> *lst,std::vector<double>& tableau_D,int nombre_classe,double &max_damage_element,FILE *strength,double x,double y,double z,char *fichiercalcul,int pos,double val_pos,int num_noeud)
106 {
107 double alpha,beta,epsilonint,sigma,epsilon,D,E,val_CM,varD,coef1,coef2,coef3,coef4,coef5,rapport,sigmamax,Njump_Gauss,deltaD,coef_model;
108 int nomb,l,coord,col1,s,ll,l1,lo;
109 l=0;
110 ll=0;
111 l1=0;
112 s=0;
113 coord=0;
114 lo=0;
115 OT_PARAMETRES* parametre=new OT_PARAMETRES;
116 parametre->lire(fichiercalcul);
117 sigmamax= parametre->get_valeur((char*)"sigmamax");
118 alpha= parametre->get_valeur((char*)"alpha");
119 beta= parametre->get_valeur((char*)"beta");
120 epsilonint= parametre->get_valeur((char*)"epsilonint");
121 E= parametre->get_valeur((char*)"E");
122 nomb= parametre->get_valeur((char*)"nomb");
123 char ligne[300];
124 char ligne1[300];
125 double coef[10];
126 FILE *coefficient_optim = NULL;
127 coefficient_optim= fopen((char*)"resistance.coe", "r");
128 while (fgets(ligne,100,coefficient_optim) !=NULL)
129 {
130 sscanf (ligne,"%s %lf",ligne1,&coef_model);
131 coef[lo]=coef_model;
132 lo++;
133 }
134 fclose(coefficient_optim);
135 FEM_MAILLAGE* fem;
136 FEM_SOLUTION* sol;
137 for(long i=0;i<geo->get_nb_mg_volume();i++)
138 {
139 recupere_maillage(gest,&fem);
140 OT_PARAMETRES param_aster;
141 param_aster.lire(fichierparam);
142 int k=param_aster.get_valeur("It_resultat");
143 recupere_resultat(gest,fem,&sol,k);
144 LISTE_FEM_ELEMENT3::iterator it;
145 int element=fem->get_nb_fem_element3();
146 int nombre_Gauss_max=15;
147 std::vector<double> tableau_Njump_Gauss;
148 std::vector<double> tableau_varD;
149 std::vector<double> tableau_freq;
150 int taille=element*nombre_Gauss_max;
151 tableau_Njump_Gauss.reserve(taille);
152 tableau_varD.reserve(taille);
153 tableau_freq.reserve(taille);
154 long int id=get_id_element_face(fem,x,y,z,pos,val_pos,num_noeud);
155  for (FEM_ELEMENT3* ele=fem->get_premier_element3(it);ele!=NULL;ele=fem->get_suivant_element3(it))
156  {
157  unsigned long id1=ele->get_id();
158  int nbgauss=sol->get_nb_gauss(l);
159  for (int r=0;r<nbgauss;r++)
160  {
161  if (N==1)
162  {
163  D=0;
164  tableau_D[s]=0;
165  }
166  else {D=tableau_D[s];}
167  double valeur=sol->lire(l,numchamps,coord,r);
168  //************************Modele d'endommagement******************************//
169  rapport=fabs(valeur/sigmamax);
170  //varD=coef[0]*rapport*exp(-coef[1]*(D/sqrt(rapport)))+coef[2]*D*pow(rapport,2)*(1+exp(coef[4]*(rapport-coef[3])));
171  // varD=coef[0]*rapport*exp(-coef[1]*(D/sqrt(rapport)))+coef[2]*D*pow(rapport,2)*(1+exp(coef[3]*rapport));
172  varD=coef[0]*rapport*exp(-coef[1]*(D/sqrt(rapport)))+coef[2]*D*pow(rapport,coef[3]);
173  //varD=rapport*(coef[0]*exp(-coef[1]*(D/sqrt(rapport)))+coef[2]*D*exp(-1/sqrt(rapport)));
174  tableau_varD[s]=varD;
175  //************************Modele d'endommagement******************************//
176  if (D==0)
177  {
178  // deltaD=1E-09;
179  deltaD=1E-10;
180  }
181  if (D>0 && D<=0.2)
182  {
183  //deltaD=0.5*D;
184  deltaD=0.2*D;
185  //deltaD=0.9*D;
186  }
187  if (D>0.2)
188  {
189  // deltaD=0.1;
190  deltaD=0.1*D;
191  // deltaD=0.05*D;
192  }
193  Njump_Gauss=round(deltaD/varD);
194  tableau_Njump_Gauss[s]=Njump_Gauss;
195  s++;
196  }
197  if (id1==id)
198  {
199  double valeur_element=sol->get_moyenne_volumique_elementaire_champs(numchamps,ele,l,coord);
200  //BOITE_3D boite3d = ele->get_boite_3D();
201  //fprintf(strength,"%d %lf centre_boite_3d (%lf %lf %lf)\n",N,valeur_element,boite3d.get_xcentre(),boite3d.get_ycentre(),boite3d.get_zcentre());
202  fprintf(strength,"%d %lf\n",N,valeur_element);
203  }
204  l++;
205  }
206 
207 
208 double max_Njump_Gauss,freq_relative,freq_cumulative,low_freq,classe;
209 int co1,nomb_jump;
210 co1=0;
211 freq_cumulative=0;
212 tableau_freq[0]=0;
213 for(int j=0;j<s;j++)
214 {
215  if(tableau_Njump_Gauss[j]>co1)
216  {
217  max_Njump_Gauss=tableau_Njump_Gauss[j];
218  co1=tableau_Njump_Gauss[j];
219  }
220  else
221  {
222  max_Njump_Gauss=co1;
223  }
224 }
225 
226 
227 classe=max_Njump_Gauss/nombre_classe;
228 
229 
230 for(int m=0;m<nombre_classe;m++)
231 {
232  nomb_jump=0;
233  for(int jj=0;jj<s;jj++)
234  {
235  if (((classe*m)<=tableau_Njump_Gauss[jj]) && (tableau_Njump_Gauss[jj]<(classe*(m+1))))
236  {
237  nomb_jump++;
238  }
239  if ((m==nombre_classe-1) && (tableau_Njump_Gauss[jj]==max_Njump_Gauss)) //inclure les max_Njump_Gauss dans la derniere classe
240  {
241  nomb_jump++;
242  }
243 
244  }
245  freq_relative=(double)nomb_jump/s;
246  freq_cumulative=freq_cumulative+freq_relative;
247  tableau_freq[m+1]=freq_cumulative;
248 }
249 low_freq=0.1*freq_cumulative;
250 for(int m=0;m<nombre_classe;m++)
251 {
252  if ((low_freq>tableau_freq[m]) && (low_freq<tableau_freq[m+1]))
253  {
254  Njump=(int)round(((m+1)*classe)-((tableau_freq[m+1]-low_freq)*((((m+1)*classe)-(m*classe))/(tableau_freq[m+1]-tableau_freq[m])))+1); //interpolation lineaire
255  }
256 }
257 int n;
258 double damage_element,co2,co3,min_damage_element;
259 n=0;
260 co2=0;
261 co3=1;
262 char message1[500];
263 char message2[500];
264 sprintf(message1,"endommagement.sol");
265 sprintf(message2,"Nom");
267 sol1->change_legende(0,"Fatigue_damage");
268 std::vector<DAMAGE_FEM3*> lst_damage_fem3;
269 for (FEM_ELEMENT3* ele=fem->get_premier_element3(it);ele!=NULL;ele=fem->get_suivant_element3(it))
270  {
271  int nbgauss=sol->get_nb_gauss(ll);
272  for (int r=0;r<nbgauss;r++)
273  {
274  tableau_D[n]=tableau_D[n]+(tableau_varD[n]*Njump);
275  sol1->ecrire(tableau_D[n],ll,0);
276  n++;
277  }
278  damage_element=sol1->get_moyenne_volumique_elementaire_champs(numchamps,ele,ll,coord);
279  if(damage_element>co2)
280  {
281  max_damage_element=damage_element;
282  co2=damage_element;
283  }
284  else
285  {
286  max_damage_element=co2;
287  }
288  if(damage_element<co3)
289  {
290  min_damage_element=damage_element;
291  co3=damage_element;
292  }
293  else
294  {
295  min_damage_element=co3;
296  }
297  DAMAGE_FEM3 *damagefem3=new DAMAGE_FEM3(ele);
298  damagefem3->change_damage(damage_element);
299  lst_damage_fem3.push_back(damagefem3);
300  ll++;
301  }
302 delete sol1;
303 std::vector<FEM_ELEMENT3*> *lstniveau=new std::vector<FEM_ELEMENT3*>[niveaumax+1];
304 std::vector<DAMAGE_FEM3*>::iterator it_damage_ele;
305 int l2=0;
306 for(it_damage_ele=lst_damage_fem3.begin();it_damage_ele!=lst_damage_fem3.end();it_damage_ele++)
307 {
308  DAMAGE_FEM3 *damagefem3=lst_damage_fem3[l2];
309  damagefem3->change_niveau_maille((int)((damagefem3->get_damage()-min_damage_element)*niveaumax/(max_damage_element-min_damage_element))+1);
310  if ((damagefem3->get_niveau_maille())>niveaumax) damagefem3->change_niveau_maille(niveaumax);
311  lstniveau[damagefem3->get_niveau_maille()].push_back(damagefem3->get_fem_element3());
312  lst[damagefem3->get_niveau_maille()]=lstniveau[damagefem3->get_niveau_maille()];
313  l2++;
314 }
315 delete [] lstniveau;
316 double Dzone;
317 MG_GEOM_FONCTION *fonction;
318 double coo[2];
319 if (max_damage_element<=0.99999)
320 {
321 for(int l3=1;l3<=niveaumax;l3++)
322 {
323  Dzone=((((l3*(max_damage_element-min_damage_element))/niveaumax)+(((l3-1)*(max_damage_element-min_damage_element))/niveaumax))/2)+min_damage_element;
324  val_CM=geo->get_mg_geom_fonction((int)l3-1)->get_id();
325  fonction = geo->get_mg_geom_fonctionid((int)val_CM);
326  for(int k=0;k<nomb;k++)
327  {
328  epsilon=epsilonint+(k*0.0010);
329  sigma=exp(alpha*log(epsilon)+log(fabs(E*(1-Dzone)))+beta); //enlever la valeur absolu quand Dzone sera correct et inferieur a 1
330  coo[0]=epsilon;
331  coo[1]=sigma;
332  fonction->change_point(k,coo);
333  gest.enregistrer(file);
334  }
335 }
336 
337 }
338 }
339 return 0;
340 }
342 {
343 
344 FEM_MAILLAGE *fem=gest.get_fem_maillage(0);
345 *femmesh=fem;
346 
347 return 0;
348 }
349 
351 {
352 FEM_SOLUTION *sol=gest.get_fem_solution(k);
353 *solmesh=sol;
354 return 0;
355 }
356 
357 long int MG_CALCUL_FATIGUE::get_id_element(FEM_MAILLAGE *fem, double x, double y, double z)
358 {
359  long id=-1;
360  double distance_min=std::numeric_limits<double>::max();
361  LISTE_FEM_ELEMENT3::iterator it_ele;
362  for(FEM_ELEMENT3* ele=fem->get_premier_element3(it_ele);ele!=NULL;ele=fem->get_suivant_element3(it_ele))
363  {
364  BOITE_3D boite = ele->get_boite_3D();
365  double centre[3];
366  boite.get_centre(centre);
367  double distance = sqrt((centre[0]-x)*(centre[0]-x)+(centre[1]-y)*(centre[1]-y)+(centre[2]-z)*(centre[2]-z));
368  if(distance<distance_min)
369  {
370  distance_min=distance;
371  id = ele->get_id();
372  }
373  }
374  return id;
375 }
376 
377 long int MG_CALCUL_FATIGUE::get_id_element_face(FEM_MAILLAGE *fem, double x, double y, double z, int position, double valeur_position, int nomb_noeud)
378 {
379  long id=-1;
380  double distance_min=std::numeric_limits<double>::max();
381  LISTE_FEM_ELEMENT3::iterator it_ele;
382  for(FEM_ELEMENT3* ele=fem->get_premier_element3(it_ele);ele!=NULL;ele=fem->get_suivant_element3(it_ele))
383  {
384  BOITE_3D boite = ele->get_boite_3D();
385  double centre[3];
386  boite.get_centre(centre);
387  double distance = sqrt((centre[0]-x)*(centre[0]-x)+(centre[1]-y)*(centre[1]-y)+(centre[2]-z)*(centre[2]-z));
388  FEM_NOEUD *noeud;
389  double *corr;
390  int cmax=ele->get_nb_fem_noeud();
391  int compteur=0;
392  for(int c=0;c<cmax;c++)
393  {
394  noeud=ele->get_fem_noeud(c);
395  corr=noeud->get_coord();
396  if (corr[position]==valeur_position){compteur++;};
397  }
398  if((distance<distance_min) && (compteur==nomb_noeud))
399  {
400  distance_min=distance;
401  id = ele->get_id();
402  }
403  }
404  return id;
405 }
406 
408 {
409  char ligne2[300];
410  char ligne3[300];
411  char mot1[300];
412  char mot2[300];
413  int nbligne=0;
414  int c,val3;
415  double val1,val2,val4,val5;
416  FILE *strength_exp = NULL;
417  strength_exp = fopen((char*)"resistanceavantmodif.exp", "r");
418  while((c=fgetc(strength_exp)) != EOF)
419  {
420  if (c == '\n') {nbligne++;}
421  }
422  double vec[nbligne];
423  double vec1[nbligne];
424  int f=0;
425  fclose(strength_exp);
426  strength_exp = fopen((char*)"resistanceavantmodif.exp", "r");
427  fgets(ligne2,100,strength_exp);
428  sscanf (ligne2,"%s %s",mot1,mot2);
429  while (fgets(ligne2,100,strength_exp) !=NULL)
430  {
431  sscanf (ligne2,"%lf %lf",&val1,&val2);
432  vec[f]=val1;
433  vec1[f]=val2;
434  f++;
435  }
436  fclose(strength_exp);
437  FILE *strength_exp_modif = NULL;
438  strength_exp_modif = fopen((char*)"resistance.exp", "w");
439  strength = fopen((char*)"resistancenum.txt", "r");
440  fprintf(strength_exp_modif,"%s %s\n",mot1,mot2);
441  while (fgets(ligne3,100,strength) !=NULL)
442  {
443  sscanf (ligne3,"%d %lf",&val3,&val4);
444  double val=(double)val3;
445  for(f=0;f<nbligne;f++)
446  {
447  if ((val3>vec[f]) && (val3<vec[f+1]))
448  {
449  val5=((vec1[f]-vec1[f+1])/(vec[f]-vec[f+1]))*(val3-vec[f+1])+vec1[f+1]; //interpolation lineaire
450  fprintf(strength_exp_modif,"%lf %lf\n",val,val5);
451  }
452  if (val3==vec[f])
453  {
454  val5=vec1[f];
455  fprintf(strength_exp_modif,"%lf %lf\n",val,val5);
456  }
457 
458  }
459  }
460  fclose(strength);
461  fclose(strength_exp_modif);
462 }
463 
464 void MG_CALCUL_FATIGUE::parametres_calcul(OT_PARAMETRES* params,char* fichier_params)
465 {
466  params->ajouter("Nmax","5000000.0",OT_PARAMETRES::DOUBLE,"Nombre de cycles maximal");
467  params->ajouter("nombreclasse","800.0",OT_PARAMETRES::DOUBLE,"Nombre de classe dans le calcul de la frequence cumulative");
468  params->ajouter("valx","63.275",OT_PARAMETRES::DOUBLE,"coordonnee 1 du point localisant un element 3D");
469  params->ajouter("valy","-6.22",OT_PARAMETRES::DOUBLE,"coordonnee 2 du point localisant un element 3D");
470  params->ajouter("valz","0.0",OT_PARAMETRES::DOUBLE,"coordonnee 3 du point localisant un element 3D");
471  params->ajouter("sigmamax","34.35E+06",OT_PARAMETRES::DOUBLE,"Contrainte maximale dans un essai de traction");
472  params->ajouter("alpha","0.6473738171",OT_PARAMETRES::DOUBLE,"parametre 1 du modele qui definie la courbe de traction");
473  params->ajouter("beta","-2.096345371",OT_PARAMETRES::DOUBLE,"parametre 2 du modele qui definie la courbe de comportement");
474  params->ajouter("nomb","13.0",OT_PARAMETRES::DOUBLE,"Nombre de points dans la courbe de comportement");
475  params->ajouter("epsilonint","0.002",OT_PARAMETRES::DOUBLE,"Premiere deformation dans la courbe de comportement");
476  params->ajouter("E","3.38E+09",OT_PARAMETRES::DOUBLE,"Module Young");
477  params->ajouter("nbrniveau","4.0",OT_PARAMETRES::DOUBLE,"Nombre de niveau");
478  params->ajouter("position","2.0",OT_PARAMETRES::DOUBLE,"Coordonnee du noeud selon laxe perpendiculaire au plan qui contient une face de l element se trouvant dans la boite");
479  params->ajouter("valeur_position","0.0",OT_PARAMETRES::DOUBLE,"Position du plan contenant une face de l element se trouvant dans la boite");
480  params->ajouter("nomb_noeud","6.0",OT_PARAMETRES::DOUBLE,"Nombre de noeuds appartenant au plan qui contient une face de l element se trouvant dans la boite");
481 }
MG_GESTIONNAIRE::enregistrer
virtual void enregistrer(std::ostream &o, double version=MAGIC_VERSION_FICHIER_DOUBLE)
Definition: mg_gestionnaire.cpp:1070
MG_GEOMETRIE::get_mg_geom_fonction
MG_GEOM_FONCTION * get_mg_geom_fonction(unsigned int num)
Definition: mg_geometrie.cpp:2169
FEM_SOLUTION
Definition: fem_solution.h:40
MG_CALCUL_FATIGUE::affichageactif
int affichageactif
Definition: mg_calcul_fatigue.h:53
DAMAGE_FEM3::get_niveau_maille
int get_niveau_maille(void)
Definition: mg_calcul_fatigue.cpp:64
FEM_MAILLAGE::get_suivant_element3
FEM_ELEMENT3 * get_suivant_element3(LISTE_FEM_ELEMENT3::iterator &it)
Definition: fem_maillage.cpp:680
DAMAGE_FEM3::get_fem_element3
FEM_ELEMENT3 * get_fem_element3(void)
Definition: mg_calcul_fatigue.cpp:44
gestionversion.h
fct_generateur_calibrage.h
MG_CALCUL_FATIGUE::get_seprateur_decimale
char get_seprateur_decimale(void)
Definition: mg_calcul_fatigue.cpp:93
OT_PARAMETRES::get_valeur
double get_valeur(std::string chaine, int num=0)
Definition: ot_parametres.cpp:191
fem_solution.h
MG_CALCUL_FATIGUE::MG_CALCUL_FATIGUE
MG_CALCUL_FATIGUE()
Definition: mg_calcul_fatigue.cpp:75
FEM_SOLUTION::ecrire
void ecrire(double val, int i, int j, int coord=0, int num_no=0)
Definition: fem_solution.cpp:411
BOITE_3D::get_centre
void get_centre(double *coo)
Definition: ot_boite_3d.cpp:149
robustPredicates::epsilon
static REAL epsilon
Definition: robustpredicates.cc:371
DAMAGE_FEM3::~DAMAGE_FEM3
~DAMAGE_FEM3(void)
Definition: mg_calcul_fatigue.cpp:39
DAMAGE_FEM3::change_damage
void change_damage(double damage)
Definition: mg_calcul_fatigue.cpp:59
DAMAGE_FEM3::get_damage
double get_damage(void)
Definition: mg_calcul_fatigue.cpp:54
OT_PARAMETRES::STRING
@ STRING
Definition: ot_parametres.h:38
OT_PARAMETRES::ajouter
void ajouter(std::string chaine, double valeur, int typep, std::string aide="")
Definition: ot_parametres.cpp:61
mg_file.h
FEM_ELEMENT3
Definition: fem_element3.h:34
MG_CALCUL_FATIGUE::parametres_calcul
void parametres_calcul(OT_PARAMETRES *params, char *fichier_params)
Definition: mg_calcul_fatigue.cpp:464
DAMAGE_FEM3
Definition: mg_calcul_fatigue.h:57
MAGIC::ENTITE_SOLUTION::ENTITE_ELEMENT3_GAUSS
@ ENTITE_ELEMENT3_GAUSS
Definition: mg_definition.h:86
MG_GESTIONNAIRE
Definition: mg_gestionnaire.h:57
DAMAGE_FEM3::DAMAGE_FEM3
DAMAGE_FEM3(FEM_ELEMENT3 *ele3)
Definition: mg_calcul_fatigue.cpp:34
MG_GEOM_FONCTION::change_point
virtual void change_point(int num, double *coo)
Definition: mg_geom_fonction.cpp:109
MG_GESTIONNAIRE::get_fem_solution
FEM_SOLUTION * get_fem_solution(unsigned int num)
Definition: mg_gestionnaire.cpp:930
DAMAGE_FEM3::change_niveau_maille
void change_niveau_maille(int niveau)
Definition: mg_calcul_fatigue.cpp:69
MG_CALCUL_FATIGUE::recupere_resultat
int recupere_resultat(MG_GESTIONNAIRE &gest, FEM_MAILLAGE *fem, class FEM_SOLUTION **solmesh, int k)
Definition: mg_calcul_fatigue.cpp:350
MG_CALCUL_FATIGUE::~MG_CALCUL_FATIGUE
virtual ~MG_CALCUL_FATIGUE()
Definition: mg_calcul_fatigue.cpp:83
FEM_NOEUD::get_coord
virtual double * get_coord(void)
Definition: fem_noeud.cpp:254
f
double f(double x, long nb, double *xfonc, double *fonc, double eng, double eni, double lambda, double nor, double *fonc2)
Definition: fct_generateur_calibrage.cpp:96
MG_CALCUL_FATIGUE::active_affichage
virtual void active_affichage(void(*fonc)(char *))
Definition: mg_calcul_fatigue.cpp:87
OT_PARAMETRES::get_nom
std::string get_nom(std::string chaine)
Definition: ot_parametres.cpp:266
FEM_MAILLAGE
Definition: fem_maillage.h:66
OT_PARAMETRES::DOUBLE
@ DOUBLE
Definition: ot_parametres.h:38
ot_parametres.h
MG_CALCUL_FATIGUE::get_id_element_face
long get_id_element_face(FEM_MAILLAGE *fem, double x, double y, double z, int position, double valeur_position, int nomb_noeud)
Definition: mg_calcul_fatigue.cpp:377
MG_GEOM_FONCTION
Definition: mg_geom_fonction.h:29
MG_GESTIONNAIRE::get_fem_maillage
FEM_MAILLAGE * get_fem_maillage(unsigned int num)
Definition: mg_gestionnaire.cpp:670
MG_GEOMETRIE::get_mg_geom_fonctionid
MG_GEOM_FONCTION * get_mg_geom_fonctionid(unsigned long num)
Definition: mg_geometrie.cpp:2157
FEM_MAILLAGE::get_nb_fem_element3
unsigned int get_nb_fem_element3(void)
Definition: fem_maillage.cpp:605
OT_PARAMETRES
Definition: ot_parametres.h:31
FEM_SOLUTION::lire
double lire(int i, int j, int coord=0, int num_no=0)
Definition: fem_solution.cpp:398
DAMAGE_FEM3::m_ele3
FEM_ELEMENT3 * m_ele3
Definition: mg_calcul_fatigue.h:71
FEM_NOEUD
Definition: fem_noeud.h:35
MG_CALCUL_FATIGUE::recupere_maillage
int recupere_maillage(class MG_GESTIONNAIRE &gest, class FEM_MAILLAGE **femmesh)
Definition: mg_calcul_fatigue.cpp:341
OT_PARAMETRES::enregistrer
void enregistrer(char *nom)
Definition: ot_parametres.cpp:132
MG_GEOMETRIE::get_nb_mg_volume
unsigned int get_nb_mg_volume(void)
Definition: mg_geometrie.cpp:1712
BOITE_3D
Definition: ot_boite_3d.h:27
MG_CALCUL_FATIGUE::modification_courbe_exp_sidolo
virtual void modification_courbe_exp_sidolo(FILE *strength)
Definition: mg_calcul_fatigue.cpp:407
MG_CALCUL_FATIGUE::affiche
void(* affiche)(char *mess)
Definition: mg_calcul_fatigue.h:52
DAMAGE_FEM3::m_niveau_maille
int m_niveau_maille
Definition: mg_calcul_fatigue.h:69
MG_CALCUL_FATIGUE::cycle_jump
virtual int cycle_jump(class MG_GESTIONNAIRE &gest, class MG_GEOMETRIE *geo, int &Njump, char *fichierparam, int numchamps, int N, int niveaumax, char *file, std::vector< FEM_ELEMENT3 * > *lst, std::vector< double > &tableau_D, int nombre_classe, double &max_damage_element, FILE *strength, double x, double y, double z, char *fichiercalcul, int pos, double val_pos, int num_noeud)
Definition: mg_calcul_fatigue.cpp:105
sqrt
double2 sqrt(double2 &val)
Definition: ot_doubleprecision.cpp:345
FEM_SOLUTION::get_nb_gauss
int get_nb_gauss(int i)
Definition: fem_solution.cpp:443
MG_GEOMETRIE
Definition: mg_geometrie.h:84
OT_PARAMETRES::lire
int lire(char *nom)
Definition: ot_parametres.cpp:144
DAMAGE_FEM3::change_fem_element3
void change_fem_element3(FEM_ELEMENT3 *ele3)
Definition: mg_calcul_fatigue.cpp:49
mg_calcul_fatigue.h
MAGIC::TYPE_SOLUTION::SCALAIRE
@ SCALAIRE
Definition: mg_definition.h:93
DAMAGE_FEM3::m_damage
double m_damage
Definition: mg_calcul_fatigue.h:70
MG_CALCUL_FATIGUE
Definition: mg_calcul_fatigue.h:33
FEM_SOLUTION::change_legende
void change_legende(int num, std::string val)
Definition: fem_solution.cpp:457
FEM_SOLUTION::get_moyenne_volumique_elementaire_champs
double get_moyenne_volumique_elementaire_champs(int numchamps, class FEM_ELEMENT3 *ele, int num, int coord=0)
Definition: fem_solution.cpp:709
MG_CALCUL_FATIGUE::get_id_element
long get_id_element(FEM_MAILLAGE *fem, double x, double y, double z)
Definition: mg_calcul_fatigue.cpp:357
FEM_MAILLAGE::get_premier_element3
FEM_ELEMENT3 * get_premier_element3(LISTE_FEM_ELEMENT3::iterator &it)
Definition: fem_maillage.cpp:672
mg_volume.h
m
#define m(i, j)