* fichier :  sic1.dgibi
************************************************************************
* Section : Mecanique Endommagement
************************************************************************
************************************************************************
************************************************************************
***                                                                  ***
***  ####### #######  #####  #######        #####    ###    #####    ***
***     #    #       #     #    #          #     #    #    #     #   ***
***     #    #       #          #          #          #    #         ***
***     #    #####    #####     #           #####     #    #         ***
***     #    #             #    #                #    #    #         ***
***     #    #       #     #    #          #     #    #    #     #   ***
***     #    #######  #####     #           #####    ###    #####    ***
***                                                                  ***
************************************************************************
************************************************************************





* VALIDATION DU MODELE SIC/SIC AU CHARGHEMENT EN TRACTION *


*** graph = 'O' ou 'N' pour voir le maillage et la courbe des contraintes. 
graph='N';  
*** echoc = 'O' ou 'N' pour voir le jeu de donnees 
echoc='N';

si (ega echoc 'N');
 OPTION echo 0;
finsi;


* limite du chargement en traction (Pascal)
char1= 200.e6;
* pas (Pascal)
paschar= 10.e6;

*base et nb d'elements
b=1;
nb=2;
*hauteur et nb d'elements
h=0.2;
nh=2;
*longeur e nb d'elements
lng=10;
nlng=3;




opti dime 3 elem qua4;


****************************************************
****************************************************
*****               MAILLAGE                   *****
****************************************************
****************************************************


p1 = (0. 0. 0.);
p2 = (0. b 0.);
p3 = (0. b h);
p4 = (0. 0. h.);


l1 = p1 d nb p2;
l2 = p2 d nh p3;
l3 = p3 d nb p4;
l4 = p4 d nh p1;

s1= dall plan l1 l2 l3 l4;

opti elem cub8;
v1= s1 volu trans nlng (lng 0. 0.);

sx= l1 trans nlng (lng 0. 0.);
sy= l2 trans nlng (lng 0. 0.);
lc= p1 d nlng (lng 0. 0.);
elim (sx et sy et v1 et lc) 0.0001;



mess 'total elements:' (nbel v1); 
*opti donn 5;



****************************************************
*****                 MODELE                   *****
****************************************************

mov1    =  modeli v1    mecanique elastique orthotrope endommagement
                     sic_sic ;


*opti donn 5;
*****      MATERIAU        *****     

* Premiere direction axe X
* Deuxieme direction axe Y
* Troisieme direction (epaisseur) axe Z

mav1   = mate mov1  dire (1. 0. 0.) (0. 1. 0.) INCLI 45 
         YG1 226.E9 YG2 226.E9 yg3 226.e9
         NU12  0.152 nu13 0.26 nu23 0.26
         g12 85.E9 g13 85.E9 g23 85.E9
         ALP1 4.E-6 ALP2 4.E-6 alp3 4.e-6
         G1DC 0.6 G1Y0 130.0 G1YC 400.0 G1P 1.0
         G2DC 0.6 G2Y0 130.0 G2YC 400.0 G2P 1.0
         G3DC 0.6 G3Y0 130.0 G3YC 400.0 G3P 1.0
         H23 0.7 H13 0.7 H12 0.7 ;
      


*mav1  =  mate mov1 YOUN 200.E9 NU 0.18 PAR 100;



****************************************************
*****         CONDITIONS AUX LIMITES           *****
****************************************************

*** blocage de la surface inferieure suivant ux
clblq1= bloq ux s1;
clblq=clblq1;


*blocage de la surface laterale suivant uz
clblq2= bloq uz sx;
clblq= clblq et clblq2;

*blocage de la surface laterale suivant uy
clblq3= bloq uy sy;
clblq= clblq et clblq3;



***************************************************
*****                CHARGEMENT               *****
***************************************************



sp= s1 plus (lng 0. 0.);
elim (v1 et sp) 0.0001;


effp = pression massif mov1 (-1 * char1) sp;
tchar1= prog 0. pas (1/(char1/paschar)) 1;
fchar1= prog 0. pas (1/(char1/paschar)) 1.;
echar1= evol manu 'pseudotemps' tchar1 'force' fchar1;

cmec1= char meca effp echar1;


vchar1 = vect effp 0.00001 fx fy fz roug;
res1= maxi (resu effp); 
titr 'Chargement en traction: ' res1 ' Newton';
si (neg graph 'N');
 tracer cach v1 vchar1;
finsi;


*opti donn 5;


****************************************************
*****          CALCUL CONTRAINTES              *****
****************************************************

tmp1= prog 0. pas (1/(char1/paschar)) 1;




tab1=table;

tab1.'BLOCAGES_MECANIQUES'=clblq;
tab1.'MODELE'=mov1;
tab1.'CHARGEMENT'=cmec1;
tab1.AUTOMATIQUE=VRAI;
tab1.'TEMPS_CALCULES'=tmp1;
tab1.'CARACTERISTIQUES'=mav1;
tab1.'PROCESSEURS' = 'MOT' 'AUTOMATIQUE';
tab1.'HYPOTHESE_DEFORMATIONS' = 'LINEAIRE' ;
pasapas tab1;









***** On commence du pas zero
mchdep= epsi mov1 tab1.deplacements.0 'LINE' ;

corth= rtens tab1.contraintes.0 mov1 mav1;
dorth= rtens mchdep mov1 mav1;

cntxxo= prog ( maxi ( (exco 'SMXX' corth)/1.e6) ) ;
cntyyo= prog ( maxi ( (exco 'SMYY' corth)/1.e6) ) ;
cntzzo= prog ( maxi ( (exco 'SMZZ' corth)/1.e6) ) ;
cntxyo= prog ( maxi ( (exco 'SMXY' corth)/1.e6) ) ;
cntxzo= prog ( maxi ( (exco 'SMXZ' corth)/1.e6) ) ;
cntyzo= prog ( maxi ( (exco 'SMYZ' corth)/1.e6) ) ;

depxxo= prog ( maxi ( (exco 'EPXX' dorth)) ) ;
depyyo= prog ( maxi ( (exco 'EPYY' dorth)) ) ;
depzzo= prog ( maxi ( (exco 'EPZZ' dorth)) ) ;
depxyo= prog ( maxi ( (exco 'GAXY' dorth)) ) ;
depxzo= prog ( maxi ( (exco 'GAXZ' dorth)) ) ;
depyzo= prog ( maxi ( (exco 'GAYZ' dorth)) ) ;







cntxx= prog (maxi ( (exco 'SMXX' tab1.contraintes.0)/1.e6)) ;
cntzz= prog (maxi ( (exco 'SMYY' tab1.contraintes.0)/1.e6)) ;
cntyy= prog (maxi ( (exco 'SMZZ' tab1.contraintes.0)/1.e6)) ;
cntxy= prog (maxi ( (exco 'SMXY' tab1.contraintes.0)/1.e6)) ;
cntxz= prog (maxi ( (exco 'SMXZ' tab1.contraintes.0)/1.e6)) ;
cntyz= prog (maxi ( (exco 'SMYZ' tab1.contraintes.0)/1.e6)) ;

depxx= prog (maxi ( (exco 'EPXX' mchdep)) ) ;
depyy= prog (maxi ( (exco 'EPYY' mchdep)) ) ;
depzz= prog (maxi ( (exco 'EPZZ' mchdep)) ) ;
depxy= prog (maxi ( (exco 'GAXY' mchdep)) ) ;
depxz= prog (maxi ( (exco 'GAXZ' mchdep)) ) ;
depyz= prog (maxi ( (exco 'GAYZ' mchdep)) ) ;



d1= prog (maxi ( (exco 'DOM1' tab1.variables_internes.0))) ;
d2= prog (maxi ( (exco 'DOM2' tab1.variables_internes.0))) ;
d3= prog (maxi ( (exco 'DOM3' tab1.variables_internes.0))) ;




npas = enti (char1/paschar);

repe ijk (npas);

mchdep= epsi mov1 tab1.deplacements.&ijk 'LINE' ;




cntxx= cntxx  et  
        (prog (maxi ( (exco 'SMXX' tab1.contraintes.&ijk)/1.e6)));
cntzz= cntzz  et  
        (prog (maxi ( (exco 'SMYY' tab1.contraintes.&ijk)/1.e6)));
cntyy= cntyy  et  
        (prog (maxi ( (exco 'SMZZ' tab1.contraintes.&ijk)/1.e6)));
cntxy= cntxy  et  
        (prog (maxi ( (exco 'SMXY' tab1.contraintes.&ijk)/1.e6)));
cntxz= cntxz  et  
        (prog (maxi ( (exco 'SMXZ' tab1.contraintes.&ijk)/1.e6)));
cntyz= cntyz  et  
        (prog (maxi ( (exco 'SMYZ' tab1.contraintes.&ijk)/1.e6)));

depxx= depxx  et  (prog (maxi ( (exco 'EPXX' mchdep))));
depyy= depyy  et  (prog (maxi ( (exco 'EPYY' mchdep))));
depzz= depzz  et  (prog (maxi ( (exco 'EPZZ' mchdep))));
depxy= depxy  et  (prog (maxi ( (exco 'GAXY' mchdep))));
depxz= depxz  et  (prog (maxi ( (exco 'GAXZ' mchdep))));
depyz= depyz  et  (prog (maxi ( (exco 'GAYZ' mchdep))));








corth= rtens tab1.contraintes.&ijk mov1 mav1;
dorth= rtens mchdep mov1 mav1;

cntxxo= cntxxo   et  (prog (maxi ( (exco 'SMXX' corth)/1.e6)));
cntyyo= cntyyo   et  (prog (maxi ( (exco 'SMYY' corth)/1.e6)));
cntzzo= cntzzo   et  (prog (maxi ( (exco 'SMZZ' corth)/1.e6)));
cntxyo= cntxyo   et  (prog (maxi ( (exco 'SMXY' corth)/1.e6)));
cntxzo= cntxzo   et  (prog (maxi ( (exco 'SMXZ' corth)/1.e6)));
cntyzo= cntyzo   et  (prog (maxi ( (exco 'SMYZ' corth)/1.e6)));

depxxo= depxxo   et  (prog (maxi ( (exco 'EPXX' dorth))));
depyyo= depyyo   et  (prog (maxi ( (exco 'EPYY' dorth))));
depzzo= depzzo   et  (prog (maxi ( (exco 'EPZZ' dorth))));
depxyo= depxyo   et  (prog (maxi ( (exco 'GAXY' dorth))));
depxzo= depxzo   et  (prog (maxi ( (exco 'GAXZ' dorth))));
depyzo= depyzo   et  (prog (maxi ( (exco 'GAYZ' dorth))));





d1= d1 et (prog (maxi ( (exco 'DOM1' tab1.variables_internes.&ijk))));
d2= d2 et (prog (maxi ( (exco 'DOM2' tab1.variables_internes.&ijk))));
d3= d3 et (prog (maxi ( (exco 'DOM3' tab1.variables_internes.&ijk))));


fin ijk;


courxx= evol manu 'deformation' depxx 'contrainte' cntxx;
couryy= evol manu 'deformation' depyy 'contrainte' cntyy;
courzz= evol manu 'deformation' depzz 'contrainte' cntzz;
courxy= evol manu 'deformation' depxy 'contrainte' cntxy;
courxz= evol manu 'deformation' depxz 'contrainte' cntxz;
couryz= evol manu 'deformation' depyz 'contrainte' cntyz;


courxxo= evol manu 'deformation' depxxo 'contrainte' cntxxo;
couryyo= evol manu 'deformation' depyyo 'contrainte' cntyyo;
courzzo= evol manu 'deformation' depzzo 'contrainte' cntzzo;
courxyo= evol manu 'deformation' depxyo 'contrainte' cntxyo;
courxzo= evol manu 'deformation' depxzo 'contrainte' cntxzo;
couryzo= evol manu 'deformation' depyzo 'contrainte' cntyzo;


courd1= evol manu 'Contrainte' cntxx 'd1' d1;
courd2= evol manu 'Contrainte' cntyy 'd2' d2;
courd3= evol manu 'Contrainte' cntzz 'd3' d3;



si (ega graph 'O');
 dess courxx;
finsi;



**********
mchdep= epsi mov1 tab1.deplacements.npas 'LINE' ;
dorth= rtens mchdep mov1 mav1;

epxxc= maxi ( (exco 'EPXX' dorth));
epyyc= maxi ( (exco 'EPYY' dorth));
epzzc= maxi ( (exco 'EPZZ' dorth));
gaxyc= maxi ( (exco 'GAXY' dorth));
gaxzc= maxi ( (exco 'GAXZ' dorth));
gayzc= maxi ( (exco 'GAYZ' dorth));

epxxt= 8.19e-04;
epyyt= 8.19e-04;
epzzt= -2.30e-4;
gaxyt= 2.82e-3;
gaxzt= 0.0;
gayzt= 0.0;




dcal1=maxi ( (exco 'DOM1' tab1.variables_internes.npas));
dcal2=maxi ( (exco 'DOM2' tab1.variables_internes.npas));
dcal3=maxi ( (exco 'DOM3' tab1.variables_internes.npas));

dter1=4.17e-1;
dter2=4.17e-1;
dter3=0.;


saut 2 lignes;

opti echo 0;
mess '**************************************************';
mess '              DEFORMATION FINALES';
mess '     Val. calc.                  Val. Theor.';
mess '    ' epxxc '            ' epxxt;
mess '    ' epyyc '            ' epyyt;
mess '    ' epzzc '            ' epzzt;
mess '    ' gaxyc '            ' gaxyt;
mess '    ' gaxzc '            ' gaxzt;
mess '    ' gayzc '            ' gayzt;
mess '**************************************************';
mess '           VARIABLES D''ENDOMMAGEMENT';
mess '     Val. calc.                  Val. Theor.';
mess '    ' dcal1 '            ' dter1;
mess '    ' dcal2 '            ' dter2;
mess '    ' dcal3 '            ' dter3;

opti echo 1;

err1 = 100*((abs(dcal1)-(abs(dter1)))/(abs(dcal1)));
err2 = 100*((abs(dcal2)-(abs(dter2)))/(abs(dcal2)));
err3 = 100*((abs(epxxc)-(abs(epxxt)))/(abs(epxxc)));
err4 = 100*((abs(epyyc)-(abs(epyyt)))/(abs(epyyc)));
err5 = 100*((abs(epzzc)-(abs(epzzt)))/(abs(epzzc)));
err6 = 100*((abs(gaxyc)-(abs(gaxyt)))/(abs(gaxyc)));


listerr= prog err1 err2 err3 err4 err5 err6;

err= maxi listerr; 


si (err < 1);
erre 0;
sinon;
erre 5;
finsi;





fin;


 

 

 

 

 

 

 

