ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/solveur/src/sl_critere.cpp
Revision: 1158
Committed: Thu Jun 13 22:18:49 2024 UTC (11 months, 1 week ago) by francois
File size: 2910 byte(s)
Log Message:
compatibilité Ubuntu 22.04
Suppression des refeences à Windows
Ajout d'une banière

File Contents

# User Rev Content
1 francois 1158 //####//------------------------------------------------------------
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     //####// sl_critere.cpp
15     //####//
16     //####//------------------------------------------------------------
17     //####//------------------------------------------------------------
18     //####// COPYRIGHT 2000-2024
19     //####// jeu 13 jun 2024 11:58:57 EDT
20     //####//------------------------------------------------------------
21     //####//------------------------------------------------------------
22 5 #include "gestionversion.h"
23    
24     #pragma hdrstop
25    
26     #include "sl_critere.h"
27     #include "sl_update.h"
28     #include "sl_op_plastique.h"
29     #include <math.h>
30    
31     #pragma package(smart_init)
32    
33    
34    
35     SL_CRITERE::SL_CRITERE(double sig_y,double eps_z,double n)
36     {
37     _SIG_Y=sig_y;
38     _EPS_ZERO=eps_z;
39     _N=n;
40     }
41    
42    
43    
44     SL_CRITERE::~SL_CRITERE()
45     {
46    
47     }
48    
49     double SL_CRITERE::get_ctr_equiv(double* sig)
50     {
51     double SIG_VM;
52     SIG_VM=sqrt(0.5*((sig[0]-sig[1])*(sig[0]-sig[1])+(sig[0]-sig[2])*(sig[0]-sig[2])+(sig[1]-sig[2])*(sig[1]-sig[2]))+3*((sig[3]*sig[3])+(sig[4]*sig[4])+(sig[5]*sig[5])));
53     return SIG_VM;
54    
55     }
56    
57    
58     double SL_CRITERE::get_crit(double* sig_a,double alpha)
59     {
60     double sig_s=this->get_ecroui(alpha);
61     double sig_equi=this->get_ctr_equiv(sig_a);
62     double f=sig_equi-sig_s;
63     return f;
64     }
65    
66     double SL_CRITERE::get_ecroui(double alpha)
67     {
68     double sig_s=_SIG_Y*pow((_EPS_ZERO+alpha),_N);
69     return sig_s;
70     }
71    
72    
73    
74     void SL_CRITERE::get_derive_sigma(double* sig,double* df_sigma)
75     {
76    
77     double S[6];
78     double sig_equiv=this->get_ctr_equiv(sig);
79     double trace=sig[0]+sig[1]+sig[2];
80    
81     for(int i=0;i<6;i++)
82     {
83     S[i]=sig[i];
84     if(i<3)
85     S[i]-=1./3*trace;
86     }
87    
88     if(sig_equiv!=0.0)
89     {
90     double coef=3./(2*sig_equiv);
91     df_sigma[0]=coef*S[0];
92     df_sigma[1]=coef*S[1];
93     df_sigma[2]=coef*S[2];
94     df_sigma[3]=coef*2*S[3];
95     df_sigma[4]=coef*2*S[4];
96     df_sigma[5]=coef*2*S[5];
97     }
98    
99     }
100    
101    
102     double SL_CRITERE::get_mab(double* Sab,const double* dfa,const double* dfb)
103     {
104     double mab;
105     double df[6];
106     SL_UPDATE update;
107     update.remettre_a_zeros(df,6);
108     mab=0.0;
109    
110     for(int i=0;i<6;i++)
111     {
112     for(int j=0;j<6;j++)
113     {
114     df[i]+=Sab[i*6+j]*dfb[j];
115     }
116     mab+=dfa[i]*df[i];
117     }
118    
119    
120     return mab;
121    
122     }
123    
124    
125