Vous êtes sur la page 1sur 52

Mcanique de la rupture linaire par EFF

1/52


PARTIE III BOUNDARY ELEMENT FORMULATION
AND COMPUTER IMPLEMENTATION








Chapitre 8
Application en tude de fissuration dune plaque en 2D
(Augustin Gakwaya et Xavier Elie-dit-Cosaque, dition 2009)





























Mcanique de la rupture linaire par EFF
2/52

SOMMAIRE

9.1 Introduction __________________________________________________________ 3
9.2 Contexte et objectif ____________________________________________________ 3
9.3 Thorie du problme ______________________________________________________ 4
9.3.1 quation du problme ______________________________________________ 4
9.3.2 Formulation intgrale ______________________________________________ 5
9.3.4 Discrtisation _____________________________________________________ 5
9.3.5 Intgration numrique ______________________________________________ 9
9.3.6 Assemblage de matrices ___________________________________________ 11
9.3.6.1 Calcul des contraintes dans un point interne __________________________ 11
9.3.6.2 Facteur dintensit de contraintes mode 1 ____________________________ 11
9.4 Programme Maple ____________________________________________________ 12
9.4.1 Mthode des sous rgions __________________________________________ 12
9.4.2 Modules du programme Maple ______________________________________ 14
9.4.2.1 Modules ajouts pour le problme de fissuration ______________________ 14
9.4.2.2 Modules ajouts pour le problme de sous rgions _____________________ 14
9.4.2.3 Modules modifis pour le problme de fissuration _____________________ 14
9.5 Conclusion __________________________________________________________ 15
9.6 Annexes ____________________________________________________________ 16
9.7 Rfrences __________________________________________________________ 52






Mcanique de la rupture linaire par EFF
3/52

9.1 Introduction
Lutilisation des lments finis de frontire dans le cas de simulation de plaque en
deux dimensions (2D) fissure est puissante quant la dtermination des facteurs
dintensit de contraintes en font de fissure. Cela permet alors de dterminer les
niveaux de contraintes sur le front de fissure ainsi que lorientation que prendra cette
dernire.
Lintrt de cette mthode par rapport la mthode par lments finis est multiple ;
elle est simple mettre en uvre (pas de calculs lourds) et elle ne ncessite pas de
remaillage pour simuler la propagation de fissure.

9.2 Contexte et objectif
Ce projet sinscrit dans le cadre du cours lments finis de frontires.
Lobjectif consiste faire un programme simple permettant de calculer le
comportement dune plaque fissure en 2D.
Un programme calculant le comportement dune plaque 2D non fissure ayant t
fourni, il a fallu ladapter pour quil prenne en compte les particularits des lments
de fissure.

Le problme tudi ici est une plaque contenant une fissure de bord, horizontale.
Le chargement ainsi que la gomtrie sont symtriques par rapport au plan de
fissuration lexception dun nud dencastrement.
Remarques :
- seul le mode douverture (mode 1) sera tudi ici.
- un nud est encastr pour supprimer les mouvements de corps rigides.


















Figure 1 : Type de fissure tudi

y
x
T
T
Encastrement
dun noeud
Mcanique de la rupture linaire par EFF
4/52
9.3 Thorie du problme
Lobjectif de cette partie est de prsenter la thorie utilise pour modliser les
lments finis de frontire de type fissure.
La thorie suit le mme schma que les lments classiquement utiliss pour les
problmes dlasticit linaire. Par contre certaines fonctions de formes sont
diffrentes ce qui ncessite de diffrencier deux types dlments dans le modle.

9.3.1 quation du problme
Champs de contraintes (cas statique)

0
,
= +
i j ij
b o

Force surfacique sur le plan n
j

j ij i
n T . o =

lasticit : tenseur de dformation en terme de dplacement
( )
i j j i ij
u u
, ,
2
1
+ = c

Pour un matriau isentropique

( )
ji ij j i k k ij
u u u + + = . . .
, ,
o o
Avec coefficients de Lam
( )( ) v v
v

. 2 1 . 1
.
+
=
E
et
( ) v

+
=
1 . 2
E


- Conditions limites

T sur I
q
traction impose sur le contour.
U sur I
u
dplacement impos sur le contour.

Mcanique de la rupture linaire par EFF
5/52
9.3.2 Formulation intgrale

La formulation intgrale est la suivante :
( )
I I + =
} } }
I I
d u t d v t dS v b u
i i i i
i S
i p
. . . .
* *
*
.

Aprs passage la limite on obtient

( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )
y i
V
ki y i
S
ki y i
S
ki i ki
dV y b y x U dS y t y x U dS y u y x T x u x c . . , . . . , . . . , . .
} } }
+ = +


avec Uki et Tki, les solutions fondamentales telles que

( )
( )
, ,
1 1
3 4 . .ln .
8. . . 1
ki ij i j
U r r
G r
v o
t v
( | |
= +
| (

\ .


( )
( ) ( ) ( )
, , , , ,
1
1 2 . 2. . 1 2. . .
4. . 1
ki ij i j i j j i
r
T r r r n r n
n
v o v
t v
c
( = +
`

c
)



9.3.4 Discrtisation
Les lments standards et les lments de fissures nont pas les mmes fonctions
de formes, ce qui impactera directement la discrtisation.
Le maillage quadratique du modle est le suivant :












Remarque : ce maillage permettra le calcul des tractions dans le plan de fissure,
ainsi que celui des cfficients de concentration de contraintes.

Mcanique de la rupture linaire par EFF
6/52
- Cas lments standards
















Position :
{ } ( ){ }
3
1
.
e e
i j j
j
x N x
=
=


Dplacement :
{ } ( ){ }
3
1
.
e e
i j j
j
u N u
=
=


Traction :
{ } ( ){ }
3
1
.
e e
i j j
j
t N t
=
=


Les fonctions de formes sont les mmes pour les positions, les dplacements et les
tractions.

( )
1
1
1
2
N =
( ) ( )
2
1 . 1 N = +
( )
3
1
1
2
N = +

- Cas lments fissurs















y
x
y
x
Numrotation
Numrotation
Mcanique de la rupture linaire par EFF
7/52
Position :
{ } ( ){ }
3
1
.
e e
i j j
j
x N x
=
=


Dplacement :
{ } ( ){ }
3
1
.
e e
i j j
j
u Nd u
=
=


Traction :
{ } ( ){ }
3
1
.
e e
i j j
j
t Nt t
=
=


Les fonctions de formes pour les positions sont les mmes que pour les lments
standards.

( ) ( )
1
1
1
2
N =
( ) ( ) ( )
2
1 . 1 N = +
( ) ( )
3
1
1
2
N = +

Par contre, elles sont diffrentes pour les dplacements et les tractions, dune part et
varient en fonction de la position du nud de front de fissure sur llment, dautre
part.

o Le nud 1 est sur le front de fissure














Les fonctions de formes pour les dplacements sont les suivantes pour les lments
de fissure
( ) ( )
1
2 2
1 1 . 1 . 1
2 2
Nd
| |
= + + + +
|
|
\ .


( )
( ) ( ) 2
2 2 . 1 1 2 . 1 Nd = + + + +

( ) ( )
3
2
1 . 1 1
2
Nd
| |
(
= + + +
|
|
\ .

y
x
Numrotation
Numrotation
Mcanique de la rupture linaire par EFF
8/52
Les fonctions de formes pour les tractions sont les suivantes pour les lments de
fissure
( ) ( )
1 1
1
.
1
Nt Nd

=
+

( ) ( )
2 2
1
.
1
Nt Nd

=
+

( ) ( )
3 3
1
.
1
Nt Nd

=
+


o Le nud 2 est sur le front de fissure















Les fonctions de formes pour les dplacements sont les suivantes pour les lments
de fissure

( ) ( )
1
2
1 . 1 1
2
Nd
| |
(
= +
|
|
\ .


( )
( ) ( ) 2
2 2 . 1 1 2 . 1 Nd = + +

( ) ( )
3
2 2
1 1 . 1 1
2 2
Nd
| |
= +
|
|
\ .

Les fonctions de formes pour les tractions sont les suivantes pour les lments de
fissure
( ) ( )
1 1
1
2. .
1
Nt Nd


( ) ( )
2 2
1
.
1
Nt Nd


( ) ( )
3 3
1
.
1
Nt Nd



x
y
Numrotation
Numrotation
Mcanique de la rupture linaire par EFF
9/52
9.3.5 Intgration numrique
La mthode dintgration numrique est la mme pour les deux types dlments
mais les fonctions de forme changent.
Par ailleurs, les assemblages respectifs des matrices G et H ainsi que lchange des
coefficients se font de la mme faon pour les deux types dlments.

- Le point de collocation nappartient pas llment
Dans le cas des lments standards et des lments de fissure, on utilise la mthode
de la quadrature de Gauss pour lintgration numrique.

( ) ( ) ( )
1
1
1
. .
NG
i
F d F wi

=
=

}

La mthode dintgration numrique est la mme pour les deux types dlments
mais les fonctions de forme changent

- Le point de collocation appartient llment (la distance r peut sannuler)

o Pour les singularits de type 1/r
Dans le cas des lments standards et des lments de fissure on introduction un
mouvement de corps rigide

o Pour les singularits de type ln(r), lments standards
Dans les cas des lments standards, on utilise la quadrature logarithmique
( ) ( ) ( )
1
*
0
1
1
ln . . .
NG
i
F d F wi
r

=
| |
=
|
\ .

}

Plusieurs cas de figure se prsentent :

-La singularit est au nud 1
( ) ( )
1
1
2 1 .
2
N q q
| |
=
|
\ .

( ) ( )
2
4 . 1 N q q =
( )
3
1
2 .
2
N q q
| |
=
|
\ .


-La singularit est au nud 2. gauche
( ) ( )
1
1
2
N
q
q = +
( ) ( ) ( )
2
1 . 1 N q q = +
( ) ( )
3
2 . 1 N q q =

-La singularit est au nud 2. droite
( ) ( )
1
1
2
N
q
q =
( ) ( ) ( )
2
1 . 1 N q q = +
( ) ( )
3
2 . 1 N q q = +
Mcanique de la rupture linaire par EFF
10/52
-La singularit est au nud
( ) ( )
1
. 2. 1 N q q =
( ) ( )
2
4. 1 N q q =
( ) | | ( )
3
1 2 . 1 N q q =

o Pour les singularits de type ln(r), lments fissurs
Dans le cas des lments de fissure, on utilise la quadrature logarithmique
( ) ( ) ( )
1
*
0
1
1
ln . . .
NG
i
F d F wi
r

=
| |
=
|
\ .

}

Plusieurs cas de figure se prsentent :

-La singularit est au nud 1
Nud 1 en bout de fissure
( )
4 1
1 1
16
q = +

Nud 3 en bout de fissure
( )
1
1
2
q = +


-La singularit est au nud 2
Nud 1 en bout de fissure
( )
2
1
sin . . 1
4
t q
| |
=
|
\ .

Nud 3 en bout de fissure
( )
4 1
1
16
q = +


-La singularit est au nud 3
Nud 1 en bout de fissure
( )
4 1
1 1
16
q = +

Nud 3 en bout de fissure
( )
4 1
1 1
16
q =

Les fonctions de formes sont les mmes que celles prsentes dans la partie
discrtisation.



Mcanique de la rupture linaire par EFF
11/52
9.3.6 Assemblage de matrices

Pour la matrice H on additionne les rsultats de lintgration aux nuds communs
des deux lments adjacents. On calcul ensuite les lments de la diagonal et on les
remplace dans H.

Pour la matrice G on juxtapose les rsultats de l'intgration.
Par la suite, on change les coefficients de G et de H pour regrouper les valeurs
connues dans B et les inconnues dans X pour obtenir le systme rsoudre de la
forme A.X=B.

La mthode des sous rgions a t utilise dans ce projet et lassemblage des
matrices sera dtaill par la suite.
9.3.6.1 Calcul des contraintes dans un point interne
Ces valeurs nont pas t intgres dans le programme, car ce nest pas le type de
post traitement que lon recherche dans le calcul de fissuration.

Dplacement
( ) { } ( ) ( ) { } ( ) ( ) { }
, . , .
y y
S S
u x G x y t y ds H x y u y ds = ( (
} }


Contraintes
( ) { } ( ) { } ( ) { }
. .
i j kij k y kij k y
S S
x D t y ds S u y ds o =
} }

Avec
( )
( )( ) { }
2
1
1 2. . . 2
4 . 1 .
kij i jk j ik k ij i j k
D r r r r r r
r
v o o o
t v
= + +



( )
( ) ( ) ( ) ( )
( ) ( )
, , , , , , , , , ,
2
, ,
2. 1 2 . . . 4 . . 2. . . 1 2. .
2. . 1
2 . . 1 2. .
ij k ki j ki i k i j i k j j i k
kij
k i j j ki i kj k ij
r
r r r r r r n r r n r r
G
n
S
r
n r r n n n
v o v o o v v
t v
o o v o
c
( + + + + +


c
=
`


+ +
)

9.3.6.2 Facteur dintensit de contraintes mode 1

Cas gnral (mode 1)


Formule de dplacement un point

Formule de traction

Avec
- Pour les dformations planes

- Pour les contraintes planes

Remarque
Ces formules ne sont valables que si le front de fissure est maill, ncessitant alors
lutilisation de la technique de sous rgions dtaille ci-aprs.
( )
( ) ( )
1 1 1 1
2 2
1 2.
1
B D C E
G
K u u u u
k l
t
+
(
=

+
( )
1 1
2.
1
1
B D
G
K u u
k l
t
=
+
1
1 .
A
K t l t =
( ) 3 2. k v =
( )
( )
3
1
k
v
v

=
+
Mcanique de la rupture linaire par EFF
12/52
9.4 Programme Maple
Ce programme est issu de ladaptation du programme dlasticit linaire initialement
fourni.
Cette adaptation a principalement consiste :
-Implmenter les fonctions de formes particulires (prsentes prcdemment) pour
le calcul des matrices G et H des lments de fissure.
-Calculer les facteurs dintensit de contraintes.
-Implmenter la mthode des sous rgions.

9.4.1 Mthode des sous rgions

Pour permettre le calcul des contraintes dans les lments de fissure, il est
ncessaire de mailler la ligne de front de fissure. Cette ligne de front de fissure
spare alors le modle en deux sous rgions.

Les matrices G et H ont t calcules pour chacune de ces deux sous rgions
squentiellement, puis assembles selon le schma ci dessous avant le calcul des
contraintes et des dplacements.

























Rgion 1
Numrotation
Noeud 1
Rgion 2
Numrotation
Noeud 1
Interface
Mcanique de la rupture linaire par EFF
13/52

Les matrices ont alors la structure suivante :

-Rgion 1

| |
11 12
H H
et
| |
11 12
G G


-Rgion 2

| |
22 21
H H
et
| |
22 21
G G


Note : les indices 11 dsignent les termes ne concernant que la rgion 1, les indices
22 dsignent les termes ne concernant que la rgion 2 et les indices 12 et 21
dsignent les termes concernant les rgions 1 et 2.

Une fois ces caractres dtermins il faut les assembler dans des matrices globales
(regroupant les rgions 1 et 2) pour ensuite rsoudre le systme linaire ci-dessous :


(

=
(
(
(
(


2
1
22
11
2
12
12
1
22 21 21
12 12 11
.
0
0
.
0
0
t
t
G
G
u
t
u
u
H G H
G H H

avec
u1 : dplacements des nuds de la rgion 1
u12 : dplacements des nuds de linterface entre les rgions 1 et 2.
t12 : tractions des nuds de linterface entre les rgions 1 et 2.
u2 : dplacements des nuds de la rgion 2


Remarque :
La matrice H est une matrice nud par nud alors que la matrice G est une matrice
lment par lment. Lors de la formation de la matrice H globale, il faut donc veiller
convertir les matrices lments par lments G12 et G21 en matrices nuds par
nuds.


Mcanique de la rupture linaire par EFF
14/52
9.4.2 Modules du programme Maple

9.4.2.1 Modules ajouts pour le problme de fissuration

-LOCINEF : permet de calculer les matrices GW des lments de fissure quand le
point de collocation se trouve sur un nud de ce dernier. Ce sous programme
identifie la position du nud sur llment (nud 1 ou nud 3 de llment) puis
calcule les matrices GW avec les fonctions de formes adaptes.

-EXTINEF : permet de calculer les matrices HW et GW des lments de fissure
quand le point de collocation ne se trouve pas sur un nud de ce dernier. Ce sous
programme identifie la position du nud sur llment (nud 1 ou nud 3 de
llment) puis calcule les matrices HW et GW avec les fonctions de formes
adaptes.

-FIC : permet de calculer les facteurs dintensit de contraintes pour le mode I (mode
douverture). Trois formules de calcul sont proposes : la formule de dplacement
gnrale, la formule de dplacement dun point et la formule de traction.

9.4.2.2 Modules ajouts pour le problme de sous rgions

-REGION : permet de constituer les matrices G11, G12, G21, G22, H11, H12, H21,
H22 partir des matrices G et H de chacune des deux rgions. Ce sous programme
est ncessaire avant la phase de construction des matrices globales regroupant les
deux rgions.

-CONSTRUCTION : permet de construire les matrices globales H et G regroupant
les deux rgions, avant le calcul des rsultats.

9.4.2.3 Modules modifis pour le problme de fissuration
-INPUTEQ : permet de lire les deux fichiers de donnes (un par rgions)

-GHMATEQ: permet de construire les matrices G et H par rgions et fait la distinction
entre les lments standards et fissurs.

-OUTPTEQ: permet de sortir les dplacements et les tractions pour les noeuds de
tout le modle de faon ordonne, ainsi que les facteurs dintensit de contrainte.




Mcanique de la rupture linaire par EFF
15/52
9.5 Conclusion

Cet exemple dapplication permet de toucher diffrents aspects des lments finis
de frontires ( dont la mthode des sous rgions notamment) appliqus un aspect
particulier de la mcanique, la fissuration.

Plusieurs axes dtudes peuvent tre envisags :
-Dvelopper des fissures asymtriques.
-tude sur des cas dynamiques de type fatigue.

Mcanique de la rupture linaire par EFF
16/52
9.6 Annexes

































GHMATEQ EXTINEQ
EXTINEF
Mcanique de la rupture linaire par EFF
17/52











































LOCINEQ
LOCINEF
INTEREQ
SIGMAEQ
SIGMAEF
OUTPUTEQ
Mcanique de la rupture linaire par EFF
18/52
PROGRAMME

> restart: with(LinearAlgebra):
%***************************
% Programme MEFF
% La translation en Maple et les modification de code original Par , H.Sharifi etA. Gakwaya Fev. 2005
% (adaptation par Xavier Elie-Dit-Cosaque, H2008)

%***************************

%*************************************************************************
% CE PROGRAMME PERMET DE RESOUDRE LES PROBLEMES ELASTIQUE
% BIDIMENTIONNELS EN UTILISANT L'ELEMENT DE FRONTIERE QUADRATIQUE.
%*************************************************************************

%**********************************************************************
% NOTATION
% A...........SYSTEME MATRICIELLE A RESOUDRE
% B...........AU DEBUT ELLE CONTIENT LES COEFFICIENTS INDEPENDANTS,
% ET APRES RESOLUTION, ELLE CONTIENT LES SOLUTION DU PROBLEME
% BI..........VECTOR FORCE DE VOLUME
% CGX,CGY.....CONSTANTES DU CHAMP GRAVITATIONNEL
% C,S.........VECTEURS DES COSINUS DIRECTEURS DES ROTATIONS PLANES
% DMT.........GRADIENT DE TEMPERATURE
% ETA1,ETA2...LES COMPOSANTES DE LA NORMALE UNITAIRE L'LEMENT
% EPS.........PRECISION DU RESIDU
% FF..........VECTEUR SECOND MEMBRE(VECTEUR SOLUTION)
% GE..........MODULE DE CISAILLEMENT TRANVERSAL
% HH..........MATRICE DE HESSENBERG
% ITM.........1=>CHANGEMENT THERMIQUE PERMANENT, SINON 0
% IPR.........FICHER DE DONNES SORTIE
% IM..........DIMENSION MAXIMALE DU SOUS ESPACE DE KRYLOV
% INP.........FICHER DE DONNES ENTRE
% L...........NOMBRE DES POINTS INTERIEURS
% NE..........NOMBRE DES ELEMENTS FINIS DE FRONTIERE
% N...........NOMBRE D'ELEMENTS DE LA FRONTIERE(NOMBRE D'INCONNUES)
% NX..........=2*NOMBRE MAXIMUM DES NOEUDS=4*NOMBRE MAXIMUM DES ELEMENTS
% NX,NX1......DIMENSIONS DES VECTORS ET MATRICES DE VARIABLES APPEL INTRINSEQUE
% NX..........DIMENSION DE A
% NX1.........=3*NOMBRE MAXIMUM DES NOEUDS=6*NOMBRE MAXIMUM DES ELEMENTS
% NMAX........DIMENSION MAX DE LA MATRICE A
% PRM.........VECTEUR PREMIER MEMBRE DE L'EQUATION DES MOINDRES CARRES{PRM}=[HH]*{YY}
% RD1,RD2,RDN..DERIVEES DU RAYON
% RA..........RAYON
% TM..........TEMPERTURE AUX NOEUDS
% VV..........TABLE DE TRAVAIL
% VV(I,1).....VECTEURS DE BASE DU S/ESPACE DE KRYLOV
% W1..........VITESSE DE ROTATION SELON X
% W2..........VITESSE DE ROTATION SELON Y
% W3..........VITESSE DE ROTATION SELON Z
% XJ A.........J ACOBIENNE
% X,Y.........COORDONEES DU MAILLAGE
% XCO,YCO.....POINT D'INTEGRATION LE LONG DE L'ELEMENT
% XNU.........COEFFICIENT DE POISSON
%***********************************************************************
LECTURE DES NOMS DES FICHIERS D'ENTREE
> #INFILE:="./DONNES_AP.txt":
#INFILE:="./DONNES_PC.txt":
INFILE:="./DONNES_AN_xav_1.txt":
#INFILE:="./DONNES_AH.txt":
OUTFILE:="./DONNES_OUT.txt":
INP:=fopen(INFILE,READ):
IPR:=fopen(OUTFILE,WRITE):
LECTURE DES DONNEES
> INPUTEQ:=proc()
!**********************************************************************
! LECTURE DES DONNEES

! NE =NOMBRE DES ELEMENTS FINIS DE FRONTIERE
! L =NOMBRE DES POINTS INTERIEURS
! GE =MODULE DE CISAILLEMENT TRANVERSAL
! XNU=COEFFICIENT DE POISSON

!**********************************************************************
Mcanique de la rupture linaire par EFF
19/52
> global TITLE_P,N,NE,NN,L,GE,YM,XNU,XRO,X,Y,XX,YY,KODE,DFI,DFI1,DFI2,CX,CY,ELEM,ELEMELEM,
Type_P,ndl,Omega,ISE,REG;
local J,i,j,k;

> Omega:=1.0;
if (REG=1) then
fprintf(IPR,"************\n"):
fprintf(IPR,"**REGION 1**\n"):
fprintf(IPR,"************\n"):
end if:

if (REG=2) then
fprintf(IPR,"\n"):
fprintf(IPR,"\n"):
fprintf(IPR,"************\n"):
fprintf(IPR,"**REGION 2**\n"):
fprintf(IPR,"************\n"):
end if:


! LECTURE DU FICHIER DE DONNEES

> #TITLE_P:=fscanf(INP,"%s")[1]:
TITLE_P:=readline(INFILE):
fprintf(IPR, TITLE_P):

Lecture le type de probleme "P"-->potential "E"-->Elasticite

> Type_P:=fscanf(INP,"%s")[1]:
if(Type_P="P" or Type_P="C") then
ndl:=1:
else
ndl:=2:
end if:

# Reading wave number in HelmHoltz problem or frquency in ElstoDynamic problem
if(Type_P="C" or Type_P="D") then
Omega:=fscanf(INP,"%d")[1]: print(Omega):
end if:

! LECTURE DU NOMBRE DES ELEMENTS ET DES POINTS INTERIEURS


> NE:=fscanf(INP,"%d")[1]:
N:=fscanf(INP,"%d")[1]:
L:=fscanf(INP,"%d")[1]:
fprintf(IPR,"\nDATA \n NUMBER OF BOUNDARY ELEMENT= %d \n NUMBER OF BOUNDARY NODES= %d \n
NUMBER OF INTERNAL POINTS= %d \n",NE,N,L):

LECTURE DES PROPRIETES MATERIELLES
> if(Type_P = "E" or Type_P = "D") then
GE:=fscanf(INP,"%e")[1]:
XNU:=fscanf(INP,"%e")[1]:
XRO:=fscanf(INP,"%e")[1]:
fprintf(IPR,"\n SHEAR MODULUS= %e \n POISSON RATIO= %e \n",GE,XNU):
fprintf(IPR," Density= %e \n",XRO):
else
GE:=1:
XNU:=1;
XRO:=1;
end if:

# Young Modulus

YM:=2*(1+XNU)*GE:

! LECTURE DES COORDONNEES DES NOEUDS DE LA FRONTIERE

> NN:=2*N:
X:=Vector(N+1,0.0):
Y:=Vector(N+1,0.0):
ELEM:=Matrix(NE,3,0):

if (REG=1) then
XX:=Vector(35,0.0):
YY:=Vector(35,0.0):
ELEMELEM:=Matrix(18,3,0):
Mcanique de la rupture linaire par EFF
20/52
end if:

ISE:=Matrix(NE,2,0):

fprintf(IPR,"\n\nBOUNDARY NODES COORDINATES \n NODE X Y"):
for i from 1 to N do
X[i]:=fscanf(INP,"%f")[1]:
Y[i]:=fscanf(INP,"%f")[1]:

if (REG=1) then
XX[i]:=X[i]:
YY[i]:=Y[i]:
end if:


fprintf(IPR,"\n %d\t%f\t%f",i,X[i],Y[i]):
end do:

if (REG=2) then

XX[21]:=X[6]:
XX[22]:=X[7]:
XX[23]:=X[8]:
XX[24]:=X[9]:
XX[25]:=X[10]:
XX[26]:=X[11]:
XX[27]:=X[12]:
XX[28]:=X[13]:
XX[29]:=X[14]:
XX[30]:=X[15]:
XX[31]:=X[16]:
XX[32]:=X[17]:
XX[33]:=X[18]:
XX[34]:=X[19]:
XX[35]:=X[20]:

YY[21]:=Y[6]:
YY[22]:=Y[7]:
YY[23]:=Y[8]:
YY[24]:=Y[9]:
YY[25]:=Y[10]:
YY[26]:=Y[11]:
YY[27]:=Y[12]:
YY[28]:=Y[13]:
YY[29]:=Y[14]:
YY[30]:=Y[15]:
YY[31]:=Y[16]:
YY[32]:=Y[17]:
YY[33]:=Y[18]:
YY[34]:=Y[19]:
YY[35]:=Y[20]:


end if:




fprintf(IPR,"\n\nBOUNDARY ELEMENTS NODES \nELEMENT NODES ISE"):
for i from 1 to NE do
ELEM[i,1]:=fscanf(INP,"%d")[1]:
ELEM[i,2]:=fscanf(INP,"%d")[1]:
ELEM[i,3]:=fscanf(INP,"%d")[1]:
ISE[i,1]:=fscanf(INP,"%d")[1]:

if (REG=1) then
ELEMELEM[i,1]:=ELEM[i,1]:
ELEMELEM[i,2]:=ELEM[i,2]:
ELEMELEM[i,3]:=ELEM[i,3]:
end if:


fprintf(IPR,"\n%d\t%d\t%d\t%d\t%d",i,ELEM[i,1],ELEM[i,2],ELEM[i,3],ISE[i,1]):
end do:

if (REG=2) then

Mcanique de la rupture linaire par EFF
21/52
ELEMELEM[11,1]:=ELEM[3,1]:
ELEMELEM[11,2]:=ELEM[3,2]+15:
ELEMELEM[11,3]:=ELEM[3,3]+15:
ELEMELEM[12,1]:=ELEM[4,1]+15:
ELEMELEM[12,2]:=ELEM[4,2]+15:
ELEMELEM[12,3]:=ELEM[4,3]+15:
ELEMELEM[13,1]:=ELEM[5,1]+15:
ELEMELEM[13,2]:=ELEM[5,2]+15:
ELEMELEM[13,3]:=ELEM[5,3]+15:
ELEMELEM[14,1]:=ELEM[6,1]+15:
ELEMELEM[14,2]:=ELEM[6,2]+15:
ELEMELEM[14,3]:=ELEM[6,3]+15:
ELEMELEM[15,1]:=ELEM[7,1]+15:
ELEMELEM[15,2]:=ELEM[7,2]+15:
ELEMELEM[15,3]:=ELEM[7,3]+15:
ELEMELEM[16,1]:=ELEM[8,1]+15:
ELEMELEM[16,2]:=ELEM[8,2]+15:
ELEMELEM[16,3]:=ELEM[8,3]+15:
ELEMELEM[17,1]:=ELEM[9,1]+15:
ELEMELEM[17,2]:=ELEM[9,2]+15:
ELEMELEM[17,3]:=ELEM[9,3]+15:
ELEMELEM[18,1]:=ELEM[10,1]+15:
ELEMELEM[18,2]:=ELEM[10,2]+15:
ELEMELEM[18,3]:=ELEM[10,3]:

end if:



! LECTURE DES CONDITIONS AUX LIMITES DANS LE VECTEUR DFI(I),
! KODE(I)=0 SI LE DEPLACEMENT EST CONNU
! KODE(I)=1 SI LA TRACTION EST CONNUE
! SIX CONDITIONS AUX LIMITES SONT LUES PAR ELEMENT.
! LES NOEUDS COMMUNS ENTRE DEUX ELEMENTS ADJ ACENTS DOIVENT AVOIR DEUX
! VALEURS DIFFERENTES POUR LA TRACTION MAIS UNE SEULE POUR LE DEPLACEMENT

> KODE:=Vector(3*ndl*NE,0.0):


if(ndl=2) then
fprintf(IPR,"\n\nBOUDARY CONDITIONS\nPRESCRIBED VALUES -----\n FIRST NODE
SECOND NODE THIRD NODE\nELE\tcode X-DIR.\tcode Y-DIR.\tcode X-DIR.\tcode
Y-DIR.\tcode X-DIR.\tcode Y-DIR." ):
else
fprintf(IPR,"\n\nBOUDARY CONDITIONS\nPRESCRIBED VALUES -----\n FIRST NODE
SECOND NODE THIRD NODE\nELE\tcode value\tcode value\tcode value" ):
end if:

if (REG=1) then
DFI1:=Vector(3*ndl*NE,0.0):
end if:

if (REG=2) then
DFI2:=Vector(3*ndl*NE,0.0):
end if:


for i from 1 to NE do
fprintf(IPR,"\n%d",i):
for J from 1 to 3*ndl do
KODE[(i-1)*3*ndl+J]:=fscanf(INP,"%d")[1]:

if (REG=1) then

DFI1[(i-1)*3*ndl+J]:=fscanf(INP,"%f")[1]:

fprintf(IPR,"\t%d %f",KODE[(i-1)*3*ndl+J],DFI1[(i-1)*3*ndl+J]):
end if:

if (REG=2) then

DFI2[(i-1)*3*ndl+J]:=fscanf(INP,"%f")[1]:
fprintf(IPR,"\t%d %f",KODE[(i-1)*3*ndl+J],DFI2[(i-1)*3*ndl+J]):
end if:

end do:
fprintf(IPR,"\n")
Mcanique de la rupture linaire par EFF
22/52
end do:


if (REG=1) then
DFI:=Vector(60,0.0):

DFI[1]:=DFI1[15]:
DFI[2]:=DFI1[16]:
DFI[3]:=DFI1[17]:
DFI[4]:=DFI1[18]:
DFI[5]:=DFI1[21]:
DFI[6]:=DFI1[22]:
DFI[7]:=DFI1[23]:
DFI[8]:=DFI1[24]:
DFI[9]:=DFI1[27]:
DFI[10]:=DFI1[28]:
DFI[11]:=DFI1[29]:
DFI[12]:=DFI1[30]:
DFI[13]:=DFI1[33]:
DFI[14]:=DFI1[34]:
DFI[15]:=DFI1[35]:
DFI[16]:=DFI1[36]:
DFI[17]:=DFI1[39]:
DFI[18]:=DFI1[40]:
DFI[19]:=DFI1[41]:
DFI[20]:=DFI1[42]:
DFI[21]:=DFI1[45]:
DFI[22]:=DFI1[46]:
DFI[23]:=DFI1[47]:
DFI[24]:=DFI1[48]:
DFI[25]:=DFI1[51]:
DFI[26]:=DFI1[52]:
DFI[27]:=DFI1[53]:
DFI[28]:=DFI1[54]:
DFI[29]:=DFI1[57]:
DFI[30]:=DFI1[58]:

end if:


if (REG=2) then

DFI[31]:=DFI2[15]:
DFI[32]:=DFI2[16]:
DFI[33]:=DFI2[17]:
DFI[34]:=DFI2[18]:
DFI[35]:=DFI2[21]:
DFI[36]:=DFI2[22]:
DFI[37]:=DFI2[23]:
DFI[38]:=DFI2[24]:
DFI[39]:=DFI2[27]:
DFI[40]:=DFI2[28]:
DFI[41]:=DFI2[29]:
DFI[42]:=DFI2[30]:
DFI[43]:=DFI2[33]:
DFI[44]:=DFI2[34]:
DFI[45]:=DFI2[35]:
DFI[46]:=DFI2[36]:
DFI[47]:=DFI2[39]:
DFI[48]:=DFI2[40]:
DFI[49]:=DFI2[41]:
DFI[50]:=DFI2[42]:
DFI[51]:=DFI2[45]:
DFI[52]:=DFI2[46]:
DFI[53]:=DFI2[47]:
DFI[54]:=DFI2[48]:
DFI[55]:=DFI2[51]:
DFI[56]:=DFI2[52]:
DFI[57]:=DFI2[53]:
DFI[58]:=DFI2[54]:
DFI[59]:=DFI2[57]:
DFI[60]:=DFI2[58]:

end if:



Mcanique de la rupture linaire par EFF
23/52
! LECTURE DE COORDONNEES DES POINTS INTERIEURS
!
> CX:=Vector(L,0.0):
CY:=Vector(L,0.0):

fprintf(IPR,"\n\nCOORDONNEES DES POINTS INTERIEURS" ):
if(L <> 0) then
for i from 1 to L do
CX[i]:=fscanf(INP,"%f")[1]:
CY[i]:=fscanf(INP,"%f")[1]:
fprintf(IPR,"\n%d\t%f\t%f",i,CX[i],CY[i]):
end do:
end if:
> end proc:
INTRODUCTION DES DONNEES DE LA REGION 1 DU PROBLEME A L'AIDE DE LA SUBROUTINE INPUTEQ
> REG:=1:
INPUTEQ():
Variables Globales
% TITLE_P,N,NE,L,GE,XNU;
> eps:=0.1e-5:
NX:=ndl*N:
NX1:=3*ndl*NE:
> # initialisation of global variables
G:=Matrix(NX,NX1,0.0):
GI:=Matrix(NX,NX,0.0):
H:=Matrix(NX,NX,0.0):
GG:=Matrix(80,96,0.0):
HH:=Matrix(80,80,0.0):

> FI:=Vector(80,0.0):
> SSOL:=Vector(3*L,0.0):
> DSOL:=Vector(ndl*L,0.0):
Definition des variables globales
CALCULER LES MATRICES G ET H ET EVALUATION DU SYSTEME A*X=F
CALCULER LES MATRICES HW ET GW POUR UN ELEMENT DE FRONTIERE AU POINT DE COLLOCATION XP,YP
Solution fondamentale de deplacement
> Solution_U:=proc(XP,YP,XCO,YCO,SU)
!********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LA SOLUTION FONDAMENTALE "U" POUR UN
! ELEMENT DE FRONTIERE,AU POINT DE COLLOCATION XP,YP
!********************************************************************
! XCO,YCO =POINT D'INTEGRATION LE LONG DE L'ELEMENT
!
> local DE,RA,RD1,RD2:

DE:=4*3.1415926536*(1-XNU):

# CALCUL DES DISTANCES.

RA:=sqrt((XP-XCO)^2+(YP-YCO)^2):
RD1:=(XCO-XP)/RA:
RD2:=(YCO-YP)/RA:

# CALCUL LA MATRICE SU

SU[1,1]:=((3-4*XNU)*log(1./RA)+RD1^2)/(2*DE*GE):
SU[1,2]:=RD1*RD2/(2*GE*DE):
SU[2,1]:=SU[1,2]:
SU[2,2]:=((3-4*XNU)*log(1.0/RA)+RD2^2)/(2*DE*GE):

> end proc:
> Solution_U_SR:=proc(RA,RD1,RD2,SU)
!********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LA SOLUTION FONDAMENTALE "U" POUR UN
! ELEMENT DE FRONTIERE,AU POINT DE DISTANCE RA
!********************************************************************
! XCO,YCO =POINT D'INTEGRATION LE LONG DE L'ELEMENT
!
> local DE:

DE:=4*3.1415926536*(1-XNU):

# CALCUL LA MATRICE SU
Mcanique de la rupture linaire par EFF
24/52

SU[1,1]:=((3-4*XNU)*log(1.0/RA)+RD1^2)/(2*DE*GE):
SU[1,2]:=RD1*RD2/(2*GE*DE):
SU[2,1]:=SU[1,2]:
SU[2,2]:=((3-4*XNU)*log(1.0/RA)+RD2^2)/(2*DE*GE):

> end proc:
Solution fondamentale de traction
> Solution_T:=proc(XP,YP,XCO,YCO,DXCO,DYCO,ST)
!********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LA SOLUTION FONDAMENTALE "T" POUR UN
! ELEMENT DE FRONTIERE,AU POINT DE COLLOCATION XP,YP
!********************************************************************

! XJ A =LE J ACOBIEN
! XCO,YCO =POINT D'INTEGRATION LE LONG DE L'ELEMENT
! ETA1,ETA2 =LES COMPOSANTES DE LA NORMALE UNITAIRE A L'ELEMENT
! RD1,RD2,RDN =DERIVEES DES RA
> local DE,XJA,ETA1,ETA2,RA,RD1,RD2,RDN:

DE:=4*3.1415926536*(1-XNU):

# CALCUL DES PROPRIETES GEOMETRIQUES AUX POINTS DE GAUSS.

XJA:=sqrt((DXCO)^2+(DYCO)^2):
ETA1:=(DYCO)/XJA:
ETA2:=-(DXCO)/XJA:
RA:=sqrt((XP-XCO)^2+(YP-YCO)^2):
RD1:=(XCO-XP)/RA:
RD2:=(YCO-YP)/RA:
RDN:=RD1*ETA1+RD2*ETA2:

# CALCUL LA MATRICE ST

ST[1,1]:=-RDN*((1-2*XNU)+2*RD1^2)/(RA*DE):
ST[1,2]:=-(RDN*2*RD1*RD2+(1-2*XNU)*(ETA1*RD2-ETA2*RD1))/(RA*DE):
ST[2,1]:=-(RDN*2*RD1*RD2+(1-2*XNU)*(ETA2*RD1-ETA1*RD2))/(RA*DE):
ST[2,2]:=-RDN*((1-2*XNU)+2*RD2^2)/(RA*DE):


> end proc:
Solution fondamentale U du probleme Potential
> Solution_UP:=proc(XP,YP,XCO,YCO,SU)
!********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LA SOLUTION FONDAMENTALE "U" POUR UN
! ELEMENT DE FRONTIERE,AU POINT DE COLLOCATION XP,YP
!********************************************************************
! XCO,YCO =POINT D'INTEGRATION LE LONG DE L'ELEMENT
!
> local DE,RA:

DE:=2*3.1415926536:

# CALCUL DES DISTANCES.

RA:=sqrt((XP-XCO)^2+(YP-YCO)^2):

# CALCUL LA MATRICE SU

SU[1,1]:=log(1./RA)/DE:

> end proc:
> Solution_U_SRP:=proc(RA,RD1,RD2,SU)
!********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LA SOLUTION FONDAMENTALE "U" POUR UN
! ELEMENT DE FRONTIERE,AU POINT DE DISTANCE RA
!********************************************************************
! XCO,YCO =POINT D'INTEGRATION LE LONG DE L'ELEMENT
!
> local DE:

DE:=2*3.1415926536:

# CALCUL LA MATRICE SU

SU[1,1]:=log(1./RA)/DE:
Mcanique de la rupture linaire par EFF
25/52

> end proc:
Solution fondamentale T du probleme Potential
> Solution_TP:=proc(XP,YP,XCO,YCO,DXCO,DYCO,ST)
!********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LA SOLUTION FONDAMENTALE "T" POUR UN
! ELEMENT DE FRONTIERE,AU POINT DE COLLOCATION XP,YP
!********************************************************************

! XJ A =LE J ACOBIEN
! XCO,YCO =POINT D'INTEGRATION LE LONG DE L'ELEMENT
! ETA1,ETA2 =LES COMPOSANTES DE LA NORMALE UNITAIRE A L'ELEMENT
! RD1,RD2,RDN =DERIVEES DES RA
> local DE,XJA,ETA1,ETA2,RA,RD1,RD2,RDN:

DE:=2*3.1415926536:

# CALCUL DES PROPRIETES GEOMETRIQUES AUX POINTS DE GAUSS.

XJA:=sqrt((DXCO)^2+(DYCO)^2):
ETA1:=(DYCO)/XJA:
ETA2:=-(DXCO)/XJA:
RA:=sqrt((XP-XCO)^2+(YP-YCO)^2):
RD1:=(XCO-XP)/RA:
RD2:=(YCO-YP)/RA:
RDN:=RD1*ETA1+RD2*ETA2:

# CALCUL LA MATRICE ST

ST[1,1]:=-RDN/(RA*DE):


> end proc:
Solution fondamentale U du probleme Helmholtz
> Solution_UC:=proc(XP,YP,XCO,YCO,SU)
!********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LA SOLUTION FONDAMENTALE "U" POUR UN
! ELEMENT DE FRONTIERE,AU POINT DE COLLOCATION XP,YP
!********************************************************************
! XCO,YCO =POINT D'INTEGRATION LE LONG DE L'ELEMENT
!
> local DE,RA,temp,Argu:

DE:=4:

# CALCUL DES DISTANCES.

RA:=sqrt((XP-XCO)^2+(YP-YCO)^2):
temp:=Complex(0,1):
Argu:=Omega*RA:

# CALCUL LA MATRICE SU

SU[1,1]:=temp*HankelH1(0,Argu)/DE:

> end proc:
> Solution_U_SRC:=proc(RA,RD1,RD2,SU)
!********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LA SOLUTION FONDAMENTALE "U" POUR UN
! ELEMENT DE FRONTIERE,AU POINT DE DISTANCE RA
!********************************************************************
! XCO,YCO =POINT D'INTEGRATION LE LONG DE L'ELEMENT
!
> local DE,temp,Argu:

DE:=4:
temp:=Complex(0,1):
Argu:=Omega*RA:

# CALCUL LA MATRICE SU

SU[1,1]:=temp*HankelH1(0,Argu)/DE:

> end proc:
Solution fondamentale T du probleme Helmholtz
> Solution_TC:=proc(XP,YP,XCO,YCO,DXCO,DYCO,ST)
Mcanique de la rupture linaire par EFF
26/52
!********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LA SOLUTION FONDAMENTALE "T" POUR UN
! ELEMENT DE FRONTIERE,AU POINT DE COLLOCATION XP,YP
!********************************************************************

! XJ A =LE J ACOBIEN
! XCO,YCO =POINT D'INTEGRATION LE LONG DE L'ELEMENT
! ETA1,ETA2 =LES COMPOSANTES DE LA NORMALE UNITAIRE A L'ELEMENT
! RD1,RD2,RDN =DERIVEES DES RA
> local DE,RA,temp,Argu:

DE:=4:

# CALCUL DES DISTANCES.

RA:=sqrt((XP-XCO)^2+(YP-YCO)^2):
temp:=Complex(0,1):
Argu:=Omega*RA:

# CALCUL LA MATRICE ST

ST[1,1]:=-temp*Argu*HankelH1(1,Argu)/DE:

> end proc:
Solution fondamentale U du probleme ElastoDynamic
> Solution_UH:=proc(XP,YP,XCO,YCO,SU)
!********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LA SOLUTION FONDAMENTALE "U" POUR UN
! ELEMENT DE FRONTIERE,AU POINT DE COLLOCATION XP,YP
!********************************************************************
! XCO,YCO =POINT D'INTEGRATION LE LONG DE L'ELEMENT
!
> local DE,RA,RD1,RD2,XPI,Sai,Zeta,Cp,Cs,Argu,Lambda,NU_:

# Material parameters

XPI:=3.1415926536:
DE:=2*XPI*XRO: #print("DE=",DE):

Lambda:=XNU*YM/((1+XNU)*(1-2*XNU)):
NU_:=GE: #print("Lambda=",Lambda):print("NU_=",NU_):

# CALCUL DES DISTANCES.

RA:=sqrt((XP-XCO)^2+(YP-YCO)^2):
RD1:=(XCO-XP)/RA:
RD2:=(YCO-YP)/RA:

# CALCUL DES parameters.

Cs:=sqrt(NU_/XRO):
Cp:=sqrt((Lambda+2*NU_)/XRO):
Argu:=Complex(0.0,Omega):
Sai:=r->BesselK(0,r*Argu/Cs)+(Cs/(r*Argu))*(BesselK(1,r*Argu/Cs)-
(Cs/Cp)*BesselK(1,r*Argu/Cp)):
Zeta:=r->BesselK(2,r*Argu/Cs)-(Cs*Cs/(Cp*Cp))*BesselK(2,r*Argu/Cp):

# CALCUL LA MATRICE SU

SU[1,1]:=(Sai(RA)-Zeta(RA)*RD1^2)/(DE*Cs*Cs):
SU[1,2]:=(-Zeta(RA)*RD1*RD2)/(DE*Cs*Cs):
SU[2,1]:=SU[1,2]:
SU[2,2]:=(Sai(RA)-Zeta(RA)*RD2^2)/(DE*Cs*Cs):

> end proc:
> Solution_U_SRH:=proc(RA,RD1,RD2,SU)
!********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LA SOLUTION FONDAMENTALE "U" POUR UN
! ELEMENT DE FRONTIERE,AU POINT DE DISTANCE RA
!********************************************************************
! XCO,YCO =POINT D'INTEGRATION LE LONG DE L'ELEMENT
!
> local DE,XPI,Zeta,Sai,Cp,Cs,Argu,Lambda,NU_:

# Material parameters

Mcanique de la rupture linaire par EFF
27/52
XPI:=3.1415926536:
DE:=2*XPI*XRO:

Lambda:=XNU*YM/((1+XNU)*(1-2*XNU)):
NU_:=GE:

# CALCUL DES parameters.

Cs:=sqrt(NU_/XRO):
Cp:=sqrt((Lambda+2*NU_)/XRO):
Argu:=Complex(0.0,Omega):
Sai:=r->BesselK(0,r*Argu/Cs)+(Cs/(r*Argu))*(BesselK(1,r*Argu/Cs)-
(Cs/Cp)*BesselK(1,r*Argu/Cp)):
Zeta:=r->BesselK(2,r*Argu/Cs)-(Cs*Cs/(Cp*Cp))*BesselK(2,r*Argu/Cp):

# CALCUL LA MATRICE SU

SU[1,1]:=(Sai(RA)-Zeta(RA)*RD1^2)/(DE*Cs*Cs):
SU[1,2]:=(-Zeta(RA)*RD1*RD2)/(DE*Cs*Cs):
SU[2,1]:=SU[1,2]:
SU[2,2]:=(Sai(RA)-Zeta(RA)*RD2^2)/(DE*Cs*Cs):

> end proc:
Solution fondamentale T du probleme ElastoDynamiv
> Solution_TH:=proc(XP,YP,XCO,YCO,DXCO,DYCO,ST)
!********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LA SOLUTION FONDAMENTALE "T" POUR UN
! ELEMENT DE FRONTIERE,AU POINT DE COLLOCATION XP,YP
!********************************************************************

! XJ A =LE J ACOBIEN
! XCO,YCO =POINT D'INTEGRATION LE LONG DE L'ELEMENT
! ETA1,ETA2 =LES COMPOSANTES DE LA NORMALE UNITAIRE A L'ELEMENT
! RD1,RD2,RDN =DERIVEES DES RA
> local
DE,XJA,ETA1,ETA2,RA,RD1,RD2,RDN,XPI,Sai,Zeta,d_Sai,d_Zeta,dSai,dZeta,Cp,Cs,Arg,Lambda,NU_:

# CALCUL DES PROPRIETES GEOMETRIQUES AUX POINTS DE GAUSS.

XJA:=sqrt((DXCO)^2+(DYCO)^2):
ETA1:=(DYCO)/XJA:
ETA2:=-(DXCO)/XJA:
RA:=sqrt((XP-XCO)^2+(YP-YCO)^2):
RD1:=(XCO-XP)/RA:
RD2:=(YCO-YP)/RA:
RDN:=RD1*ETA1+RD2*ETA2:

# Material parameters
XPI:=3.1415926536:
DE:=1/(2*XPI):
Lambda:=XNU*YM/((1+XNU)*(1-2*XNU)):
NU_:=GE:

# CALCUL DES parameters.

Cs:=sqrt(NU_/XRO):
Cp:=sqrt((Lambda+2*NU_)/XRO):
Arg:=RA*Complex(0.0,Omega):
Sai:=x->BesselK(0,x/Cs)+(Cs/x)*(BesselK(1,x/Cs)-(Cs/Cp)*BesselK(1,x/Cp)):
Zeta:=x->BesselK(2,x/Cs)-(Cs*Cs/(Cp*Cp))*BesselK(2,x/Cp):
d_Sai:=x->diff(Sai(x),x)*Arg/RA:
d_Zeta:=x->diff(Zeta(x),x)*Arg/RA:
dSai:=evalf(subs(x=Arg,d_Sai(x)));
dZeta:=evalf(subs(x=Arg,d_Zeta(x)));


# CALCUL LA MATRICE ST

ST[1,1]:=DE*((dSai-Zeta(Arg)/RA )*(RDN+RD1*ETA1)-2*Zeta(Arg )/RA *(ETA1*RD1-
2*RD1*RD1*RDN)-2*dZeta*RD1*RD1*RDN+(Cp*Cp/(Cs*Cs)-2)*(dSai-dZeta-Zeta(Arg )/(RA))*RD1*ETA1):

ST[1,2]:=DE*((dSai-Zeta(Arg )/RA)*(RD1*ETA2)-2*Zeta(Arg )/RA*(ETA1*RD2-2*RD1*RD2*RDN)-
2*dZeta*RD1*RD2*RDN+(Cp*Cp/(Cs*Cs)-2)*(dSai-dZeta-Zeta(Arg )/(RA))*RD2*ETA1):
ST[2,1]:=DE*((dSai-Zeta(Arg )/RA)*(RD2*ETA1)-2*Zeta(Arg )/RA*(ETA2*RD1-2*RD1*RD2*RDN)-
2*dZeta*RD1*RD2*RDN+(Cp*Cp/(Cs*Cs)-2)*(dSai-dZeta-Zeta(Arg )/(RA))*RD1*ETA2):
ST[2,2]:=DE*((dSai-Zeta(Arg )/RA)*(RDN+RD2*ETA2)-2*Zeta(Arg )/RA*(ETA2*RD2-
2*RD2*RD2*RDN)-2*dZeta*RD2*RD2*RDN+(Cp*Cp/(Cs*Cs)-2)*(dSai-dZeta-Zeta(Arg )/(RA))*RD2*ETA2):
Mcanique de la rupture linaire par EFF
28/52
> end proc:
> EXTINEQ:=proc(XP,YP,X1,Y1,X2,Y2,X3,Y3,HW,GW)
!********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LES MATRICES HW ET GW POUR UN *
! ELEMENT DE FRONTIERE,AU POINT DE COLLOCATION XP,YP,EN UTILISANT *
! L'INTEGRATION QUADRATIQUE DE GAUSS. *
!********************************************************************

! XJ A =LE J ACOBIEN
! XCO,YCO =POINT D'INTEGRATION LE LONG DE L'ELEMENT
! ETA1,ETA2 =LES COMPOSANTES DE LA NORMALE UNITAIRE A L'ELEMENT
! RD1,RD2,RDN =DERIVEES DES
! RA =
> local
i,J,A,B,C,D,DE,F1,F2,F3,XCO,YCO,DXCO,DYCO,XJA,ETA1,ETA2,RA,RD1,RD2,RDN,GI,OME,SU,ST,NG,K,KK:

GI:=Vector(10,[0.9739065285,-0.9739065285,0.8650633666,-0.8650633666,0.6794095683,-
0.6794095682,0.4333953941,-0.4333953941,0.1488743389,-0.1488743389]):

OME:=Vector(10,[0.0666713443,0.0666713443,0.1494513491,0.1494513491,0.2190863625,0.2190863625,
0.2692667193,0.2692667193,0.2955242247,0.2955242247]):

#SU:=Matrice(ndl,ndl,0.0):
#ST:=Matrice(ndl,ndl,0.0):

for i from 1 to ndl do
for J from 1 to ndl*3 do
HW[i,J]:=0.0:
GW[i,J]:=0.0:
end do:
end do:
A:=X3-2*X2+X1:
B:=(X3-X1)/2:
C:=Y3-2*Y2+Y1:
D:=(Y3-Y1)/2:
#DE:=4*3.1415926536*(1-XNU):

NG:=10: # No. des points de Gauss

for i from 1 to NG do

# CALCUL DES FONCTIONS DE FORME AUX POINTS D'INTEGRATION.

F1:=GI[i]*(GI[i]-1)*0.5:
F2:=1.0-GI[i]*GI[i]:
F3:=GI[i]*(GI[i]+1)*0.5:

# CALCUL DES PROPRIETES GEOMETRIQUES AUX POINTS D'INTEGRATION.

XCO:=X1*F1+X2*F2+X3*F3:
YCO:=Y1*F1+Y2*F2+Y3*F3:
DXCO:=GI[i]*A+B:
DYCO:=GI[i]*C+D:
XJA:=sqrt((DXCO)^2+(DYCO)^2):

# CALCUL DES MATRICES GW ET HW

# Trouver la solution fonamentale U
if(ndl=1) then
if(Type_P="P") then
Solution_UP(XP,YP,XCO,YCO,SU): #print("SU",SU):
else
Solution_UC(XP,YP,XCO,YCO,SU):
end if:
else
if(Type_P="D") then
Solution_UH(XP,YP,XCO,YCO,SU):
else
Solution_U(XP,YP,XCO,YCO,SU):
end if:
end if:

# Trouver la solution fonamentale T
if(ndl=1) then
if(Type_P="P") then
Solution_TP(XP,YP,XCO,YCO,DXCO,DYCO,ST): #print("ST",ST):
else
Mcanique de la rupture linaire par EFF
29/52
Solution_TC(XP,YP,XCO,YCO,DXCO,DYCO,ST):
end if:
else
if(Type_P="D") then
Solution_TH(XP,YP,XCO,YCO,DXCO,DYCO,ST):
else
Solution_T(XP,YP,XCO,YCO,DXCO,DYCO,ST):
end if:
end if:

for K from 1 to ndl do
for KK from 1 to ndl do
GW[K,KK]:=GW[K,KK]+SU[K,KK]*OME[i]*XJA*F1:
HW[K,KK]:=HW[K,KK]+ST[K,KK]*OME[i]*XJA*F1:

GW[K,KK+ndl]:=GW[K,KK+ndl]+SU[K,KK]*OME[i]*XJA*F2:
HW[K,KK+ndl]:=HW[K,KK+ndl]+ST[K,KK]*OME[i]*XJA*F2:

GW[K,KK+2*ndl]:=GW[K,KK+2*ndl]+SU[K,KK]*OME[i]*XJA*F3:
HW[K,KK+2*ndl]:=HW[K,KK+2*ndl]+ST[K,KK]*OME[i]*XJA*F3:
end do;
end do;

end do:
> end proc:


> EXTINEF:=proc(XP,YP,X1,Y1,X2,Y2,X3,Y3,HW,GW,ISEL)
!*************************************************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LES MATRICES HW ET GW QUI RELIE UN NOEUD AVEC UN ELEMENT *
! DE FISSURE FRONTIERE L'INTEGRATION QUADRATIQUE DE GAUSS. *
!*************************************************************************************************

! XJ A =LE J ACOBIEN
! XCO,YCO =POINT D'INTEGRATION LE LONG DE L'ELEMENT
! ETA1,ETA2 =LES COMPOSANTES DE LA NORMALE UNITAIRE A L'ELEMENT
! RD1,RD2,RDN =DERIVEES DES RAYON
! RA =RAYON
> local
i,J,DE,FD1,FD2,FD3,FT1,FT2,FT3,XCOD,YCOD,XCOT,YCOT,XJA,XJA2,XJA22,ETA1,ETA2,RAD,RAT,RD1,RD2,RT
1,RT2,RDN,GI,OME,SU,ST,NG,K,KK,XAV,XD,YD,dXD,dYD,XT,YT,dXT,dYT,XJA2D,XJA2T,XCO,YCO,DXCO,DYCO,F
1,F2,F3,A,B,C,D:

GI:=Vector(10,[0.9739065285,-0.9739065285,0.8650633666,-0.8650633666,0.6794095683,-
0.6794095682,0.4333953941,-0.4333953941,0.1488743389,-0.1488743389]):

OME:=Vector(10,[0.0666713443,0.0666713443,0.1494513491,0.1494513491,0.2190863625,0.2190863625,
0.2692667193,0.2692667193,0.2955242247,0.2955242247]):

#SU:=Matrice(ndl,ndl,0.0):
#ST:=Matrice(ndl,ndl,0.0):

for i from 1 to ndl do
for J from 1 to ndl*3 do
HW[i,J]:=0.0:
GW[i,J]:=0.0:
end do:
end do:

A:=X3-2*X2+X1:
B:=(X3-X1)/2.:
C:=Y3-2.*Y2+Y1:
D:=(Y3-Y1)/2.:
DE:=4*3.1415926536*(1.-XNU):

NG:=10: # No. des points de Gauss

for i from 1 to NG do

# CALCUL DES FONCTIONS DE FORME AUX POINTS D'INTEGRATION.

## SI LE NOEUD 1 EST EN BOUT DE FISSURE
### POUR LES DEPLACEMENTS

if(ISEL=1) then


Mcanique de la rupture linaire par EFF
30/52
FD1:=1.-(1.+sqrt(2.)/2.)*sqrt(1.+XAV)+(sqrt(2.)/2.)*(1.+XAV):
FD2:=(2.+sqrt(2.))*(sqrt(1.+XAV)-(1.+sqrt(2.))*(1.+XAV)):
FD3:=-(1.+sqrt(2.)/2.)*(sqrt(1.+XAV)-(1.+XAV)):

## POUR LES TRACTIONS

FT1:=FD1/sqrt(1.+XAV):
FT2:=FD2/sqrt(1.+XAV):
FT3:=sqrt(2.)*FD3/sqrt(1.+XAV):


# DEPLACEMENT
XD:=FD1*X1+FD2*X2+FD3*X3:
YD:=FD1*Y1+FD2*Y2+FD3*Y3:
dXD:=diff(XD,XAV):
dYD:=diff(YD,XAV):

# TRACTION
XT:=FT1*X1+FT2*X2+FT3*X3:
YT:=FT1*Y1+FT2*Y2+FT3*Y3:
dXT:=diff(XT,XAV):
dYT:=diff(YT,XAV):

FD1:=subs(XAV=GI[i],FD1):
FD2:=subs(XAV=GI[i],FD2):
FD3:=subs(XAV=GI[i],FD3):
FT1:=subs(XAV=GI[i],FT1):
FT2:=subs(XAV=GI[i],FT2):
FT3:=subs(XAV=GI[i],FT3):
XD:=subs(XAV=GI[i],XD):
YD:=subs(XAV=GI[i],YD):
dXD:=subs(XAV=GI[i],dXD):
dYD:=subs(XAV=GI[i],dYD):
XT:=subs(XAV=GI[i],XT):
YT:=subs(XAV=GI[i],YT):
dXT:=subs(XAV=GI[i],dXT):
dYT:=subs(XAV=GI[i],dYT):


# JACOBIENS
XJA2D:=sqrt(dXD**2.+dYD**2.):
XJA2T:=sqrt(dXT**2.+dYT**2.):

end if:

## SI LE NOEUD 3 EST EN BOUT DE FISSURE
### POUR LES DEPLACEMENTS

if(ISEL=2) then


FD1:=-(1.+sqrt(2.)/2.)*(sqrt(1.+XAV)-(1.-XAV)):
FD2:=(2.+sqrt(2.))*sqrt(1.-XAV)-(1.+sqrt(2.))*(1.-XAV):
FD3:=1.-(1.+sqrt(2.)/2.)*sqrt(1.-XAV)+(sqrt(2.)/2.)*(1.-XAV):

## POUR LES TRACTIONS

FT1:=sqrt(2.)*FD1/sqrt(1.-XAV):
FT2:=FD2/sqrt(1.-XAV):
FT3:=FD3/sqrt(1.-XAV):


# DEPLACEMENT
XD:=FD1*X1+FD2*X2+FD3*X3:
YD:=FD1*Y1+FD2*Y2+FD3*Y3:
dXD:=diff(XD,XAV):
dYD:=diff(YD,XAV):

# TRACTION
XT:=FT1*X1+FT2*X2+FT3*X3:
YT:=FT1*Y1+FT2*Y2+FT3*Y3:
dXT:=diff(XT,XAV):
dYT:=diff(YT,XAV):

FD1:=subs(XAV=GI[i],FD1):
FD2:=subs(XAV=GI[i],FD2):
FD3:=subs(XAV=GI[i],FD3):
Mcanique de la rupture linaire par EFF
31/52
FT1:=subs(XAV=GI[i],FT1):
FT2:=subs(XAV=GI[i],FT2):
FT3:=subs(XAV=GI[i],FT3):
XD:=subs(XAV=GI[i],XD):
YD:=subs(XAV=GI[i],YD):
dXD:=subs(XAV=GI[i],dXD):
dYD:=subs(XAV=GI[i],dYD):
XT:=subs(XAV=GI[i],XT):
YT:=subs(XAV=GI[i],YT):
dXT:=subs(XAV=GI[i],dXT):
dYT:=subs(XAV=GI[i],dYT):

# JACOBIENS
XJA2D:=sqrt(dXD**2.+dYD**2.):
XJA2T:=sqrt(dXT**2.+dYT**2.):

end if:

# CALCUL DES FONCTIONS DE FORME AUX POINTS D'INTEGRATION.

F1:=GI[i]*(GI[i]-1)*0.5:
F2:=1.0-GI[i]*GI[i]:
F3:=GI[i]*(GI[i]+1)*0.5:

# CALCUL DES PROPRIETES GEOMETRIQUES AUX POINTS D'INTEGRATION.

XCO:=X1*F1+X2*F2+X3*F3:
YCO:=Y1*F1+Y2*F2+Y3*F3:
DXCO:=GI[i]*A+B:
DYCO:=GI[i]*C+D:


# CALCUL DES MATRICES GW ET HW

# Trouver la solution fonamentale U
if(ndl=1) then
if(Type_P="P") then
Solution_UP(XP,YP,XCO,YCO,SU): #print("SU",SU):
else
Solution_UC(XP,YP,XCO,YCO,SU):
end if:
else
if(Type_P="D") then
Solution_UH(XP,YP,XCO,YCO,SU):
else
Solution_U(XP,YP,XCO,YCO,SU):
end if:
end if:


# Trouver la solution fonamentale T
if(ndl=1) then
if(Type_P="P") then
Solution_TP(XP,YP,XCO,YCO,DXCO,DYCO,ST): #print("ST",ST):
else
Solution_TC(XP,YP,XCO,YCO,DXCO,DYCO,ST):
end if:
else
if(Type_P="D") then
Solution_TH(XP,YP,XCO,YCO,DXCO,DYCO,ST):
else
Solution_T(XP,YP,XCO,YCO,DXCO,DYCO,ST):
end if:
end if:


for K from 1 to ndl do
for KK from 1 to ndl do
GW[K,KK]:=GW[K,KK]+SU[K,KK]*OME[i]*XJA2D*FD1:
HW[K,KK]:=HW[K,KK]+ST[K,KK]*OME[i]*XJA2T*FT1:

GW[K,KK+ndl]:=GW[K,KK+ndl]+SU[K,KK]*OME[i]*XJA2D*FD2:
HW[K,KK+ndl]:=HW[K,KK+ndl]+ST[K,KK]*OME[i]*XJA2T*FT2:

GW[K,KK+2*ndl]:=GW[K,KK+2*ndl]+SU[K,KK]*OME[i]*XJA2D*FD3:
HW[K,KK+2*ndl]:=HW[K,KK+2*ndl]+ST[K,KK]*OME[i]*XJA2T*FT3:
end do:
Mcanique de la rupture linaire par EFF
32/52
end do:

end do:

> end proc:

CALCULER LA MATRICE GW LORSQUE LE POINT DE COLLOCATION EST UN DES NOEUDS DE L'ELEMENT A
INTEGRER.
> LOCINEQ:=proc(XG1,YG1,XG2,YG2,XG3,YG3,GW,NODO)
!**********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LA MATRICE GW LORSQUE LE POINT *
! DE COLLOCATION EST UN DES NOEUDS DE L'ELEMENT A INTEGRER. *
! IL EST A RAPPELER QUE LES TERMES NOM SINGULIERS SONT CALCULES PAR *
! INTEGRATION DE GAUSS QUADRATIQUE STANDARD ET LA PARTIE LOGARITHMIQUE*
! EST CALCULEE PAR LA METHODE QUADRATIQUE SPECIALE. *
!**********************************************************************
> local B1, XJA1, XJA2, XLO, S3, S2, S1, XJA11, X3, Y3, X2, Y2, A1, A2, B2, X1, Y1, A, B, C,
CONT1, F1, F2, F3, FL1, FL2, FL3, FLN1, FLN2, FLN3, GI, OME, GIL, OMEL, i,
J,NG,SU1,DX,DY,RA,RD1,RD2,K,KK,Cs:


! DONNEES RELATIVES A L'INTEGRATION DE GAUSS STANDARD

> GI:=Vector(10,[0.9739065285,-0.9739065285,0.8650633666,-0.8650633666,0.6794095683,-
0.6794095682,0.4333953941,-0.4333953941,0.1488743389,-0.1488743389]):

OME:=Vector(10,[0.0666713443,0.0666713443,0.1494513491,0.1494513491,0.2190863625,0.2190863625,
0.2692667193,0.2692667193,0.2955242247,0.2955242247]):

! DONNEES RELATIVES A L'INTEGRATION QUADRATIQUE SPECIAL

>
GIL:=Vector(10,[0.0090426309,0.0539712662,0.1353118246,0.2470524162,0.3802125396,0.5237923179,
0.6657752055,0.7941904160,0.8981610912,0.9688479887]):
OMEL:=Vector(10,[0.1209551319,0.1863635425,0.1956608732,0.1735771421,0.1356956729,0.0936467585
,0.0557877273,0.0271598109,0.0095151826,0.0016381576]):

! COORDONNEES DU SYSTEME LOCAL

> if (NODO = 1 ) then
X3:=XG3-XG1:
Y3:=YG3-YG1:
X2:=XG2-XG1:
Y2:=YG2-YG1:
A1:=(X3-2*X2)*0.5:
B1:=X2:
A2:=(Y3-2*Y2)*0.5:
B2:=Y2:
end if:
if(NODO=2) then
X3:=XG3-XG2:
Y3:=YG3-YG2:
X1:=XG1-XG2:
Y1:=YG1-YG2:
A1:=X1+X3:
B1:=X3-X1:
A2:=Y1+Y3:
B2:=Y3-Y1:
end if:
if(NODO=3) then
X2:=XG2-XG3:
Y2:=YG2-YG3:
X1:=XG1-XG3:
Y1:=YG1-YG3:
A1:=(X1-2*X2)*0.5:
B1:=-X2:
A2:=(Y1-2*Y2)*0.5:
B2:=-Y2:
end if:

! INITIALISATION DE LA MATRICE GW
> for i from 1 to ndl do
for J from 1 to 3*ndl do
GW[i,J]:=0.0:
end do:
Mcanique de la rupture linaire par EFF
33/52
end do:

A:=A1^2+A2^2.:
B:=2.*(A1*B1+A2*B2):
C:=B1^2.+B2^2.:
>
#BesselK(0,0);BesselK(1,0);BesselK(2,0);series(BesselK(0,x),(x));series(BesselK(1,x),x);series
(BesselK(2,x),x);
> #simplify(series(BesselK(0,x),x)-convert(subs(ln(x)=0,series(BesselK(0,x),x)),polynom));
>
#HankelHl(0,0);HankelHl(1,0);series(HankelHl(0,x),x);series(HankelHl(1,x),x);series(BesselJ(0,
x),x);series(BesselY(0,x),x);
> #convert(%,polynom);
> if(ndl=2) then
if(Type_P="D") then
Cs:=sqrt(GE/XRO):
CONT1:=1./(2*3.1415926536*XRO*Cs*Cs):
else
CONT1:=(3.-4.*XNU)/(8.0*3.1415926536*GE*(1-XNU)):
end if:
else
if(Type_P="P") then
CONT1:=1.0/(2.0*3.1415926536):
else
CONT1:=-Complex(0,1)/(2*3.1415926536):
end if:
end if:

NG:=10: # No. des points de Gauss

for i from 1 to NG do
SU1:=Matrix(ndl,ndl,0.0):

# CALCUL DES FONCTIONS DE FORME POUR L'INTEGRATION NUMERIQUE

F3:=0.5*GI[i]*(GI[i]+1.0):
F2:=1.0-GI[i]^2:
F1:=0.5*GI[i]*(GI[i]-1.0):

FL3:=GIL[i]*(2.*GIL[i]-1.0):
FL2:=4.*GIL[i]*(1.0-GIL[i]):
FL1:=(GIL[i]-1.0)*(2.*GIL[i]-1.0):

FLN3:=0.5*GIL[i]*(GIL[i]+1.0):
FLN2:=1.0-GIL[i]^2:
FLN1:=0.5*GIL[i]*(GIL[i]-1.0):

# CALCUL DES COMPOSANTES DE LA MATRICE GW

if(NODO=1) then
XJA1:=sqrt((4.*A1*GIL[i]-2.*A1+0.5*X3)^2.+(4.*A2*GIL[i]-2.*A2+0.5*Y3)^2.)*2.:
XJA2:=sqrt((A1*GI[i]*2.+0.5*X3)^2.+(A2*GI[i]*2.+0.5*Y3)^2.):
#XLO:=-log(2.*sqrt((GI[i]*A1+B1)^2.+(GI[i]*A2+B2)^2.)):

DX:=GI[i]*A1+B1:
DY:=GI[i]*A2+B2:
RA:=2.*sqrt((DX)^2.+(DY)^2.):
RD1:=2.*DX/RA:
RD2:=2.*DY/RA:

if (ndl=2) then
if(Type_P="D") then
Solution_U_SRH(RA,RD1,RD2,SU1):
else
Solution_U_SR(RA,RD1,RD2,SU1):
end if:
else
if(Type_P="P") then
Solution_U_SRP(RA,RD1,RD2,SU1):
else
Solution_U_SRC(RA,RD1,RD2,SU1):
end if:
end if:

S3:=CONT1*(FL3*XJA1*OMEL[i]):
S2:=CONT1*(FL2*XJA1*OMEL[i]):
S1:=CONT1*(FL1*XJA1*OMEL[i]):
Mcanique de la rupture linaire par EFF
34/52
end if:

if(NODO=2) then
XJA1:=sqrt((0.5*B1-A1*GIL[i])^2.+(0.5*B2-A2*GIL[i])^2.):
XJA11:=sqrt((0.5*B1+A1*GIL[i])^2.+(0.5*B2+A2*GIL[i])^2.):
XJA2:=sqrt((0.5*B1+A1*GI[i])^2.+(0.5*B2+A2*GI[i])^2.):
#XLO:=-0.5*log((GI[i]*A1*0.5+B1*0.5)^2.+(GI[i]*A2*0.5+B2*0.5)^2.):

DX:=(GI[i]*A1+B1)/2.:
DY:=(GI[i]*A2+B2)/2.:
RA:=sqrt((DX)^2.+(DY)^2.):
RD1:=DX/RA:
RD2:=DY/RA:

if (ndl=2) then
if(Type_P="D") then
Solution_U_SRH(RA,RD1,RD2,SU1):
else
Solution_U_SR(RA,RD1,RD2,SU1):
end if:
else
if(Type_P="P") then
Solution_U_SRP(RA,RD1,RD2,SU1):
else
Solution_U_SRC(RA,RD1,RD2,SU1):
end if:
end if:

S3:=CONT1*((FLN1*XJA1+FLN3*XJA11)*OMEL[i]):
S2:=CONT1*(FLN2*(XJA1+XJA11)*OMEL[i]):
S1:=CONT1*((FLN3*XJA1+FLN1*XJA11)*OMEL[i]):
end if:

if (NODO=3) then
XJA1:=sqrt((2.*A1-4.*A1*GIL[i]-0.5*X1)^2.+(2.*A2-4.*A2*GIL[i]-0.5*Y1)^2.)*2.:
XJA2:=sqrt((2.*A1*GI[i]-0.5*X1)^2.+(2.*A2*GI[i]-0.5*Y1)^2.):
#XLO:=-log(2.*sqrt((A1*GI[i]+B1)^2.+(A2*GI[i]+B2)^2.)):

DX:=GI[i]*A1+B1:
DY:=GI[i]*A2+B2:
RA:=2.*sqrt((DX)^2.+(DY)^2.):
RD1:=2.*DX/RA:
RD2:=2.*DY/RA:

if (ndl=2) then
if(Type_P="D") then
Solution_U_SRH(RA,RD1,RD2,SU1):
else
Solution_U_SR(RA,RD1,RD2,SU1):
end if:
else
if(Type_P="P") then
Solution_U_SRP(RA,RD1,RD2,SU1):
else
Solution_U_SRC(RA,RD1,RD2,SU1):
end if:
end if:

S3:=CONT1*(FL1*XJA1*OMEL[i]):
S2:=CONT1*(FL2*XJA1*OMEL[i]):
S1:=CONT1*(FL3*XJA1*OMEL[i]):
end if:

for K from 1 to ndl do
for KK from 1 to ndl do
GW[K,KK]:=GW[K,KK]+SU1[K,KK]*OME[i]*XJA2*F1:

GW[K,KK+ndl]:=GW[K,KK+ndl]+SU1[K,KK]*OME[i]*XJA2*F2:

GW[K,KK+2*ndl]:=GW[K,KK+2*ndl]+SU1[K,KK]*OME[i]*XJA2*F3:
end do;
GW[K,K]:=GW[K,K]+S1:
GW[K,K+ndl]:=GW[K,K+ndl]+S2:
GW[K,K+2*ndl]:=GW[K,K+2*ndl]+S3:
end do;

end do:
Mcanique de la rupture linaire par EFF
35/52
end proc:



> LOCINEF:=proc(XG1,YG1,XG2,YG2,XG3,YG3,ISE,GW,NODO,ISEL)
!**********************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LA MATRICE GW LORSQUE LE POINT *
! DE COLLOCATION EST UN DES NOEUDS DE L'ELEMENT A INTEGRER. *
! IL EST A RAPPELER QUE LES TERMES NOM SINGULIERS SONT CALCULES PAR *
! INTEGRATION DE GAUSS QUADRATIQUE STANDARD ET LA PARTIE LOGARITHMIQUE*
! EST CALCULEE PAR LA METHODE QUADRATIQUE SPECIALE. *
!**********************************************************************
> local B1, XJA1,XJA2, XJA2D,XJA2T, XLO, S3, S2, S1, XJA11, X3, Y3, X2, Y2, A1, A2, B2, X1,
Y1, A, B, C, CONT1, F1, F2, F3, FL1, FL2, FL3, FLN1, FLN2, FLN3, GI, OME, GIL, OMEL, i,
J,NG,SU1,DX,DY,RA,RD1,RD2,K,KK,Cs,XD,dXD,XT,dXT,YD,dYD,YT,dYT,PSI,PSIL,RAD1,RAD2,DRAT11,DRAT12
,DRAT21,DRAT22,CONT2,TONT1,TONT2,TONT3,T1,T2,T3,FD1,FD2,FD3,FT1,FT2,FT3,RAT1,RAT2:


! DONNEES RELATIVES A L'INTEGRATION DE GAUSS STANDARD

> GI:=Vector(10,[0.9739065285,-0.9739065285,0.8650633666,-0.8650633666,0.6794095683,-
0.6794095682,0.4333953941,-0.4333953941,0.1488743389,-0.1488743389]):

OME:=Vector(10,[0.0666713443,0.0666713443,0.1494513491,0.1494513491,0.2190863625,0.2190863625,
0.2692667193,0.2692667193,0.2955242247,0.2955242247]):

! DONNEES RELATIVES A L'INTEGRATION QUADRATIQUE SPECIAL

>
GIL:=Vector(10,[0.0090426309,0.0539712662,0.1353118246,0.2470524162,0.3802125396,0.5237923179,
0.6657752055,0.7941904160,0.8981610912,0.9688479887]):
OMEL:=Vector(10,[0.1209551319,0.1863635425,0.1956608732,0.1735771421,0.1356956729,0.0936467585
,0.0557877273,0.0271598109,0.0095151826,0.0016381576]):

! COORDONNEES DU SYSTEME LOCAL

> if (NODO = 1 ) then
X3:=XG3-XG1:
Y3:=YG3-YG1:
X2:=XG2-XG1:
Y2:=YG2-YG1:

X1:=XG1-XG1:
Y1:=YG1-YG1:

A1:=(X3-2*X2)*0.5:
B1:=X2:
A2:=(Y3-2*Y2)*0.5:
B2:=Y2:
end if:
if(NODO=2) then
X3:=XG3-XG2:
Y3:=YG3-YG2:
X1:=XG1-XG2:
Y1:=YG1-YG2:

X2:=XG2-XG2:
Y2:=YG2-YG2:

A1:=X1+X3:
B1:=X3-X1:
A2:=Y1+Y3:
B2:=Y3-Y1:
end if:
if(NODO=3) then
X2:=XG2-XG3:
Y2:=YG2-YG3:
X1:=XG1-XG3:
Y1:=YG1-YG3:

X3:=XG3-XG3:
Y3:=YG3-YG3:

A1:=(X1-2*X2)*0.5:
B1:=-X2:
A2:=(Y1-2*Y2)*0.5:
B2:=-Y2:
Mcanique de la rupture linaire par EFF
36/52
end if:

! INITIALISATION DE LA MATRICE GW
> for i from 1 to ndl do
for J from 1 to 3*ndl do
GW[i,J]:=0.0:
end do:
end do:


> if(ndl=2) then
if(Type_P="D") then
Cs:=sqrt(GE/XRO):
CONT1:=1/(2*3.1415926536*XRO*Cs*Cs):
else
A1:=X1/2.+X2*(1.+sqrt(2.)/2.)+X3*(sqrt(2.)/4.-1./2.):
B1:=X1*sqrt(2.)/2.-X2*(1.+sqrt(2.))+X3*(1.-sqrt(2.)/2.):
A2:=Y1/2.+Y2*(1.+sqrt(2.)/2.)+Y3*(sqrt(2.)/4.-1./2.):
B2:=Y1*sqrt(2.)/2.-Y2*(1.+sqrt(2.))+Y3*(1.-sqrt(2.)/2.):
CONT1:=(3.-4.*XNU)/(8.0*3.1415926536*GE*(1.-XNU)):
CONT2:=CONT1/(3.-4.*XNU):
TONT1:=-(1.-2.*XNU)/(4.0*3.1415926536*(1.-XNU)):
TONT2:=2.*TONT1/(1.-2.*XNU):
TONT3:=-TONT1:
T1:=(A1*GI[i]+B1)**2./((A2*GI[i]+B2)**2.+(A1*GI[i]+B1)**2.):
T2:=(A2*GI[i]+B2)**2./((A2*GI[i]+B2)**2.+(A1*GI[i]+B1)**2.):
T3:=(A1*GI[i]+B1)*(A2*GI[i]+B2)/((A1*GI[i]+B1)**2.+(A2*GI[i]+B2)**2.):
end if:
else
if(Type_P="P") then
CONT1:=1.0/(2.0*3.1415926536):
else
CONT1:=-Complex(0,1)/(2*3.1415926536):
end if:
end if:

NG:=10: # No. des points de Gauss

for i from 1 to NG do
SU1:=Matrix(ndl,ndl,0.0):

# CALCUL DES FONCTIONS DE FORME POUR L'INTEGRATION NUMERIQUE

F3:=0.5*GI[i]*(GI[i]+1.0):
F2:=1.0-GI[i]^2:
F1:=0.5*GI[i]*(GI[i]-1.0):

if(ISEL=1) then

# CALCUL DES COMPOSANTES DE LA MATRICE GW

if(NODO=1) then


# FONCTIONS DE FORME, AU NOEUD 1, NOEUD 1 FONT DE FISSURE
FD1:=1.-(1.+sqrt(2.)/2.)*sqrt(1.+PSI)+sqrt(2.)/2.*(1.+PSI):
FD2:=(2.+sqrt(2.))*sqrt(1.+PSI)-(1.+sqrt(2.))*(1.+PSI):
FD3:=-(1.+sqrt(2.)/2.)*(sqrt(1.+PSI)-(1.+PSI)):
FT1:=FD1/sqrt(1.+PSI):
FT2:=FD2/sqrt(1.+PSI):
FT3:=FD3*sqrt(2.)/sqrt(1.+PSI):

# DEPLACEMENT
XD:=FD1*X1+FD2*X2+FD3*X3:
YD:=FD1*Y1+FD2*Y2+FD3*Y3:
dXD:=diff(XD,PSI):
dYD:=diff(YD,PSI):

# TRACTION
XT:=FT1*X1+FT2*X2+FT3*X3:
YT:=FT1*Y1+FT2*Y2+FT3*Y3:
dXT:=diff(XT,PSI):
dYT:=diff(YT,PSI):

FD1:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,FD1):
FD2:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,FD2):
FD3:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,FD3):
Mcanique de la rupture linaire par EFF
37/52
FT1:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,FT1):
FT2:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,FT2):
FT3:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,FT3):
XD:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,XD):
YD:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,YD):
dXD:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,dXD):
dYD:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,dYD):
XT:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,XT):
YT:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,YT):
dXT:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,dXT):
dYT:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,dYT):

# PSI:=(1./16.*(1.+GI[i])**4.)-1.:
# PSIL:=(1./16.*(1.+GIL[i])**4.)-1.:

# RAYONS
RAD1:=sqrt((X1-XD)**2.+(Y1-YD)**2.):
RAT1:=sqrt((X1-XT)**2.+(Y1-YT)**2.):
DRAT11:=(X1-Y1)/RAT1:
DRAT12:=-(X1-Y1)/RAT1:

# JACOBIENS
XJA1:=0.25*(1+GIL[i])**3.:
XJA2D:=sqrt(dXD**2.+dYD**2.):
XJA2T:=sqrt(dXT**2.+dYT**2.):

DX:=GIL[i]*A1+B1:
DY:=GIL[i]*A2+B2:
RA:=RAD1:
RD1:=DX/RAD1:
RD2:=DY/RAD1:

if (ndl=2) then
if(Type_P="D") then
Solution_U_SRH(RA,RD1,RD2,SU1):
else
Solution_U_SR(RA,RD1,RD2,SU1):
end if:
else
if(Type_P="P") then
Solution_U_SRP(RA,RD1,RD2,SU1):
else
Solution_U_SRC(RA,RD1,RD2,SU1):
end if:
end if:

S3:=CONT1*(FD3*XJA1*OMEL[i]):
S2:=CONT1*(FD2*XJA1*OMEL[i]):
S1:=CONT1*(FD1*XJA1*OMEL[i]):

end if:

if(NODO=2) then


# FONCTIONS DE FORME, AU NOEUD 2, NOEUD 1 FONT DE FISSURE
FD1:=1.-(1.+sqrt(2.)/2.)*sqrt(1.+PSI)+sqrt(2.)/2.*(1.+PSI):
FD2:=(2.+sqrt(2.))*sqrt(1.+PSI)-(1.+sqrt(2.))*(1.+PSI):
FD3:=-(1.+sqrt(2.)/2.)*(sqrt(1.+PSI)-(1.+PSI)):
FT1:=FD1/sqrt(1.+PSI):
FT2:=FD2/sqrt(1.+PSI):
FT3:=FD3*sqrt(2.)/sqrt(1.+PSI):

# DEPLACEMENT
XD:=FD1*X1+FD2*X2+FD3*X3:
YD:=FD1*Y1+FD2*Y2+FD3*Y3:
dXD:=diff(XD,PSI):
dYD:=diff(YD,PSI):

# TRACTION
XT:=FT1*X1+FT2*X2+FT3*X3:
YT:=FT1*Y1+FT2*Y2+FT3*Y3:
dXT:=diff(XT,PSI):
dYT:=diff(YT,PSI):

FD1:=subs(PSI=-sin(3.1416/4.*(1.-GIL[i]))**2.,FD1):
FD2:=subs(PSI=-sin(3.1416/4.*(1.-GIL[i]))**2.,FD2):
Mcanique de la rupture linaire par EFF
38/52
FD3:=subs(PSI=-sin(3.1416/4.*(1.-GIL[i]))**2.,FD3):
FT1:=subs(PSI=-sin(3.1416/4.*(1.-GIL[i]))**2.,FT1):
FT2:=subs(PSI=-sin(3.1416/4.*(1.-GIL[i]))**2.,FT2):
FT3:=subs(PSI=-sin(3.1416/4.*(1.-GIL[i]))**2.,FT3):
XD:=subs(PSI=-sin(3.1416/4.*(1.-GIL[i]))**2.,XD):
YD:=subs(PSI=-sin(3.1416/4.*(1.-GIL[i]))**2.,YD):
dXD:=subs(PSI=-sin(3.1416/4.*(1.-GIL[i]))**2.,dXD):
dYD:=subs(PSI=-sin(3.1416/4.*(1.-GIL[i]))**2.,dYD):
XT:=subs(PSI=-sin(3.1416/4.*(1.-GIL[i]))**2.,XT):
YT:=subs(PSI=-sin(3.1416/4.*(1.-GIL[i]))**2.,YT):
dXT:=subs(PSI=-sin(3.1416/4.*(1.-GIL[i]))**2.,dXT):
dYT:=subs(PSI=-sin(3.1416/4.*(1.-GIL[i]))**2.,dYT):

# PSI:=-sin(3.1416/4.*(1.-GI[i]))**2.:
PSIL:=-sin(3.1416/4.*(1.-GIL[i]))**2.:

# RAYONS
RAD1:=sqrt((X2-XD)**2.+(Y2-YD)**2.):
RAT1:=sqrt((X2-XT)**2.+(Y2-YT)**2.):
DRAT11:=(X2-Y2)/RAT1:
DRAT12:=-(X2-Y2)/RAT1:

# JACOBIENS
XJA1:=(3.1416/2.)*PSIL*cos(3.1416/4.*(1.-GIL[i])):
XJA2D:=sqrt(dXD**2.+dYD**2.):
XJA2T:=sqrt(dXT**2.+dYT**2.):

DX:=GIL[i]*A1+B1:
DY:=GIL[i]*A2+B2:
RA:=RAD1:
RD1:=DX/RAD1:
RD2:=DY/RAD1:

if (ndl=2) then
if(Type_P="D") then
Solution_U_SRH(RA,RD1,RD2,SU1):
else
Solution_U_SR(RA,RD1,RD2,SU1):
end if:
else
if(Type_P="P") then
Solution_U_SRP(RA,RD1,RD2,SU1):
else
Solution_U_SRC(RA,RD1,RD2,SU1):
end if:
end if:

S3:=CONT1*(FD3*XJA1*OMEL[i]):
S2:=CONT1*(FD2*XJA1*OMEL[i]):
S1:=CONT1*(FD1*XJA1*OMEL[i]):

end if:

if (NODO=3) then


# FONCTIONS DE FORME, AU NOEUD 3, NOEUD 1 FONT DE FISSURE
FD1:=1.-(1.+sqrt(2.)/2.)*sqrt(1.+PSI)+sqrt(2.)/2.*(1.+PSI):
FD2:=(2.+sqrt(2.))*sqrt(1.+PSI)-(1.+sqrt(2.))*(1.+PSI):
FD3:=-(1.+sqrt(2.)/2.)*(sqrt(1.+PSI)-(1.+PSI)):
FT1:=FD1/sqrt(1.+PSI):
FT2:=FD2/sqrt(1.+PSI):
FT3:=FD3*sqrt(2.)/sqrt(1.+PSI):

# DEPLACEMENT
XD:=FD1*X1+FD2*X2+FD3*X3:
YD:=FD1*Y1+FD2*Y2+FD3*Y3:
dXD:=diff(XD,PSI):
dYD:=diff(YD,PSI):

# TRACTION
XT:=FT1*X1+FT2*X2+FT3*X3:
YT:=FT1*Y1+FT2*Y2+FT3*Y3:
dXT:=diff(XT,PSI):
dYT:=diff(YT,PSI):

FD1:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,FD1):
Mcanique de la rupture linaire par EFF
39/52
FD2:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,FD2):
FD3:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,FD3):
FT1:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,FT1):
FT2:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,FT2):
FT3:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,FT3):
XD:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,XD):
YD:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,YD):
dXD:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,dXD):
dYD:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,dYD):
XT:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,XT):
YT:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,YT):
dXT:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,dXT):
dYT:=subs(PSI=(1./16.*(1.+GIL[i])**4.)-1.,dYT):

# PSI:=(1./16.*(1.+GI[i])**4.)-1.:
# PSIL:=(1./16.*(1.+GIL[i])**4.)-1.:

# RAYONS
RAD1:=sqrt((X3-XD)**2.+(Y3-YD)**2.):
RAT1:=sqrt((X3-XT)**2.+(Y3-YT)**2.):
DRAT11:=(X3-Y3)/RAT1:
DRAT12:=-(X3-Y3)/RAT1:

# JACOBIENS
XJA1:=0.25*(1.+GIL[i])**3.:
XJA2D:=sqrt(dXD**2.+dYD**2.):
XJA2T:=sqrt(dXT**2.+dYT**2.):

DX:=GIL[i]*A1+B1:
DY:=GIL[i]*A2+B2:
RA:=RAD1:
RD1:=DX/RAD1:
RD2:=DY/RAD1:

if (ndl=2) then
if(Type_P="D") then
Solution_U_SRH(RA,RD1,RD2,SU1):
else
Solution_U_SR(RA,RD1,RD2,SU1):
end if:
else
if(Type_P="P") then
Solution_U_SRP(RA,RD1,RD2,SU1):
else
Solution_U_SRC(RA,RD1,RD2,SU1):
end if:
end if:

S3:=CONT1*(FD3*XJA1*OMEL[i]):
S2:=CONT1*(FD2*XJA1*OMEL[i]):
S1:=CONT1*(FD1*XJA1*OMEL[i]):


end if:

end if:

if (ISEL=2) then

# CALCUL DES COMPOSANTES DE LA MATRICE GW

if(NODO=1) then


# FONCTIONS DE FORME, AU NOEUD 1, NOEUD 3 FONT DE FISSURE
FD1:=-(1.+sqrt(2.)/2.)*(sqrt(1.-PSI)-(1.-PSI)):
FD2:=(2.+sqrt(2.))*sqrt(1.-PSI)-(1.+sqrt(2.))*(1.-PSI):
FD3:=1.-(1.+sqrt(2.)/2.)*(sqrt(1.-PSI)+(sqrt(2.)/2.)*(1.-PSI)):
FT1:=sqrt(2.)*FD1/sqrt(1.-PSI):
FT2:=FD2/sqrt(1.-PSI):
FT3:=FD3/sqrt(1.-PSI):

# DEPLACEMENT
XD:=FD1*X1+FD2*X2+FD3*X3:
YD:=FD1*Y1+FD2*Y2+FD3*Y3:
dXD:=diff(XD,PSI):
dYD:=diff(YD,PSI):
Mcanique de la rupture linaire par EFF
40/52

# TRACTION
XT:=FT1*X1+FT2*X2+FT3*X3:
YT:=FT1*Y1+FT2*Y2+FT3*Y3:
dXT:=diff(XT,PSI):
dYT:=diff(YT,PSI):

FD1:=subs(PSI=0.5*(1.+GIL[i]),FD1):
FD2:=subs(PSI=0.5*(1.+GIL[i]),FD2):
FD3:=subs(PSI=0.5*(1.+GIL[i]),FD3):
FT1:=subs(PSI=0.5*(1.+GIL[i]),FT1):
FT2:=subs(PSI=0.5*(1.+GIL[i]),FT2):
FT3:=subs(PSI=0.5*(1.+GIL[i]),FT3):
XD:=subs(PSI=0.5*(1.+GIL[i]),XD):
YD:=subs(PSI=0.5*(1.+GIL[i]),YD):
dXD:=subs(PSI=0.5*(1.+GIL[i]),dXD):
dYD:=subs(PSI=0.5*(1.+GIL[i]),dYD):
XT:=subs(PSI=0.5*(1.+GIL[i]),XT):
YT:=subs(PSI=0.5*(1.+GIL[i]),YT):
dXT:=subs(PSI=0.5*(1.+GIL[i]),dXT):
dYT:=subs(PSI=0.5*(1.+GIL[i]),dYT):

# PSI:=0.5*(1.+GI[i]):
# PSIL:=0.5*(1.+GIL[i]):

# RAYONS
RAD2:=sqrt((X1-XD)**2.+(Y1-YD)**2.):
RAT2:=sqrt((X1-XT)**2.+(Y1-YT)**2.):
DRAT21:=(X1-Y1)/RAT2:
DRAT22:=-(X1-Y1)/RAT2:

# JACOBIENS
XJA2:=0.5:
XJA2D:=sqrt(dXD**2.+dYD**2.):
XJA2T:=sqrt(dXT**2.+dYT**2.):

DX:=GIL[i]*A1+B1:
DY:=GIL[i]*A2+B2:
RA:=RAD2:
RD1:=DX/RAD2:
RD2:=DY/RAD2:

if (ndl=2) then
if(Type_P="D") then
Solution_U_SRH(RA,RD1,RD2,SU1):
else
Solution_U_SR(RA,RD1,RD2,SU1):
end if:
else
if(Type_P="P") then
Solution_U_SRP(RA,RD1,RD2,SU1):
else
Solution_U_SRC(RA,RD1,RD2,SU1):
end if:
end if:

S3:=CONT1*(FD3*XJA2*OMEL[i]):
S2:=CONT1*(FD2*XJA2*OMEL[i]):
S1:=CONT1*(FD1*XJA2*OMEL[i]):

end if:

if(NODO=2) then


# FONCTIONS DE FORME, AU NOEUD 2, NOEUD 3 FONT DE FISSURE
FD1:=-(1.+sqrt(2.)/2.)*(sqrt(1.-PSI)-(1.-PSI)):
FD2:=(2.+sqrt(2.))*sqrt(1.-PSI)-(1.+sqrt(2.))*(1.-PSI):
FD3:=1.-(1.+sqrt(2.)/2.)*(sqrt(1.-PSI)+(sqrt(2.)/2.)*(1.-PSI)):
FT1:=sqrt(2.)*FD1/sqrt(1.-PSI):
FT2:=FD2/sqrt(1.-PSI):
FT3:=FD3/sqrt(1.-PSI):

# DEPLACEMENT
XD:=FD1*X1+FD2*X2+FD3*X3:
YD:=FD1*Y1+FD2*Y2+FD3*Y3:
dXD:=diff(XD,PSI):
Mcanique de la rupture linaire par EFF
41/52
dYD:=diff(YD,PSI):

# TRACTION
XT:=FT1*X1+FT2*X2+FT3*X3:
YT:=FT1*Y1+FT2*Y2+FT3*Y3:
dXT:=diff(XT,PSI):
dYT:=diff(YT,PSI):

FD1:=subs(PSI=(1./16.*(1.+GIL[i])**4.),FD1):
FD2:=subs(PSI=(1./16.*(1.+GIL[i])**4.),FD2):
FD3:=subs(PSI=(1./16.*(1.+GIL[i])**4.),FD3):
FT1:=subs(PSI=(1./16.*(1.+GIL[i])**4.),FT1):
FT2:=subs(PSI=(1./16.*(1.+GIL[i])**4.),FT2):
FT3:=subs(PSI=(1./16.*(1.+GIL[i])**4.),FT3):
XD:=subs(PSI=(1./16.*(1.+GIL[i])**4.),XD):
YD:=subs(PSI=(1./16.*(1.+GIL[i])**4.),YD):
dXD:=subs(PSI=(1./16.*(1.+GIL[i])**4.),dXD):
dYD:=subs(PSI=(1./16.*(1.+GIL[i])**4.),dYD):
XT:=subs(PSI=(1./16.*(1.+GIL[i])**4.),XT):
YT:=subs(PSI=(1./16.*(1.+GIL[i])**4.),YT):
dXT:=subs(PSI=(1./16.*(1.+GIL[i])**4.),dXT):
dYT:=subs(PSI=(1./16.*(1.+GIL[i])**4.),dYT):

# PSI:=(1./16.*(1.+GI[i])**4.):
# PSIL:=(1./16.*(1.+GIL[i])**4.):

# RAYONS
RAD2:=sqrt((X2-XD)**2.+(Y2-YD)**2.):
RAT2:=sqrt((X2-XT)**2.+(Y2-YT)**2.):
DRAT21:=(X2-Y2)/RAT2:
DRAT22:=-(X2-Y2)/RAT2:

# JACOBIENS
XJA2:=0.25*(1.+GIL[i])**3.:
XJA2D:=sqrt(dXD**2.+dYD**2.):
XJA2T:=sqrt(dXT**2.+dYT**2.):

DX:=GIL[i]*A1+B1:
DY:=GIL[i]*A2+B2:
RA:=RAD2:
RD1:=DX/RAD2:
RD2:=DY/RAD2:

if (ndl=2) then
if(Type_P="D") then
Solution_U_SRH(RA,RD1,RD2,SU1):
else
Solution_U_SR(RA,RD1,RD2,SU1):
end if:
else
if(Type_P="P") then
Solution_U_SRP(RA,RD1,RD2,SU1):
else
Solution_U_SRC(RA,RD1,RD2,SU1):
end if:
end if:

S3:=CONT1*(FD3*XJA2*OMEL[i]):
S2:=CONT1*(FD2*XJA2*OMEL[i]):
S1:=CONT1*(FD1*XJA2*OMEL[i]):

end if:

if (NODO=3) then


# FONCTIONS DE FORME, AU NOEUD 3, NOEUD 3 FONT DE FISSURE
FD1:=-(1.+sqrt(2.)/2.)*(sqrt(1.-PSI)-(1.-PSI)):
FD2:=(2.+sqrt(2.))*sqrt(1.-PSI)-(1.+sqrt(2.))*(1.-PSI):
FD3:=1.-(1.+sqrt(2.)/2.)*(sqrt(1.-PSI)+(sqrt(2.)/2.)*(1.-PSI)):
FT1:=sqrt(2.)*FD1/sqrt(1.-PSI):
FT2:=FD2/sqrt(1.-PSI):
FT3:=FD3/sqrt(1.-PSI):

# DEPLACEMENT
XD:=FD1*X1+FD2*X2+FD3*X3:
YD:=FD1*Y1+FD2*Y2+FD3*Y3:
Mcanique de la rupture linaire par EFF
42/52
dXD:=diff(XD,PSI):
dYD:=diff(YD,PSI):

# TRACTION
XT:=FT1*X1+FT2*X2+FT3*X3:
YT:=FT1*Y1+FT2*Y2+FT3*Y3:
dXT:=diff(XT,PSI):
dYT:=diff(YT,PSI):

FD1:=subs(PSI=1.-(1./16.*(1.-GIL[i])**4.),FD1):
FD2:=subs(PSI=1.-(1./16.*(1.-GIL[i])**4.),FD2):
FD3:=subs(PSI=1.-(1./16.*(1.-GIL[i])**4.),FD3):
FT1:=subs(PSI=1.-(1./16.*(1.-GIL[i])**4.),FT1):
FT2:=subs(PSI=1.-(1./16.*(1.-GIL[i])**4.),FT2):
FT3:=subs(PSI=1.-(1./16.*(1.-GIL[i])**4.),FT3):
XD:=subs(PSI=1.-(1./16.*(1.-GIL[i])**4.),XD):
YD:=subs(PSI=1.-(1./16.*(1.-GIL[i])**4.),YD):
dXD:=subs(PSI=1.-(1./16.*(1.-GIL[i])**4.),dXD):
dYD:=subs(PSI=1.-(1./16.*(1.-GIL[i])**4.),dYD):
XT:=subs(PSI=1.-(1./16.*(1.-GIL[i])**4.),XT):
YT:=subs(PSI=1.-(1./16.*(1.-GIL[i])**4.),YT):
dXT:=subs(PSI=1.-(1./16.*(1.-GIL[i])**4.),dXT):
dYT:=subs(PSI=1.-(1./16.*(1.-GIL[i])**4.),dYT):

# PSI:=1.-(1./16.*(1.-GI[i])**4.):
# PSIL:=1.-(1./16.*(1.-GIL[i])**4.):

# RAYONS
RAD2:=sqrt((X3-XD)**2.+(Y3-YD)**2.):
RAT2:=sqrt((X3-XT)**2.+(Y3-YT)**2.):
DRAT21:=(X3-Y3)/RAT2:
DRAT22:=-(X3-Y3)/RAT2:

# JACOBIENS
XJA2:=0.25*(1.-GIL[i])**3.:
XJA2D:=sqrt(dXD**2.+dYD**2.):
XJA2T:=sqrt(dXT**2.+dYT**2.):

DX:=GIL[i]*A1+B1:
DY:=GIL[i]*A2+B2:
RA:=RAD2:
RD1:=DX/RAD2:
RD2:=DY/RAD2:

if (ndl=2) then
if(Type_P="D") then
Solution_U_SRH(RA,RD1,RD2,SU1):
else
Solution_U_SR(RA,RD1,RD2,SU1):
end if:
else
if(Type_P="P") then
Solution_U_SRP(RA,RD1,RD2,SU1):
else
Solution_U_SRC(RA,RD1,RD2,SU1):
end if:
end if:

S3:=CONT1*(FD3*XJA2*OMEL[i]):
S2:=CONT1*(FD2*XJA2*OMEL[i]):
S1:=CONT1*(FD1*XJA2*OMEL[i]):

end if:

end if:

for K from 1 to ndl do
for KK from 1 to ndl do
GW[K,KK]:=GW[K,KK]+SU1[K,KK]*OME[i]*XJA2D*F1:

GW[K,KK+ndl]:=GW[K,KK+ndl]+SU1[K,KK]*OME[i]*XJA2D*F2:

GW[K,KK+2*ndl]:=GW[K,KK+2*ndl]+SU1[K,KK]*OME[i]*XJA2D*F3:
end do;
GW[K,K]:=GW[K,K]+S1:
GW[K,K+ndl]:=GW[K,K+ndl]+S2:
GW[K,K+2*ndl]:=GW[K,K+2*ndl]+S3:
Mcanique de la rupture linaire par EFF
43/52
end do;

end do:
end proc:


>
> GHMATEQ:=proc(X,Y,G,GI,H,KODE,NX,NX1)
!*****************************************************************************
! CETTE SUBROUTINE PERMET DE CALCULER LES MATRICES G ET H ET DE CONSTRUIRE *
! LE SYSTEME D'EQUATIONS A*X=F. *
! *
! H EST UNE MATRICE CARREE DE 4*NE PAR 4*NE ,ET G UNE MATRICE RECTANGULAIRE *
! DE 4*NE PAR 6*NE *
! 4*NE PAR 6*NE *
! *
!*****************************************************************************
> local LL,i,J,K,KK,NODO,temp,HW,GW,ind_exchange,LIN,CLH,CLG,ISEL;
> #CH:=Matrix(NN,N,0.0):
HW:=Matrix(ndl,3*ndl,0.0):
GW:=Matrix(ndl,3*ndl,0.0):
> X[N+1]:=X[1]:
Y[N+1]:=Y[1]:
! CALCUL DES MATRICES GW ET HW POUR CHAQUE POINT DE COLLOCATION ET POUR
! CHAQUE ELEMENT DE FRONTIERE.
> for LL from 1 to N do #N
#for i from 1 by 2 to N-1 do
for i from 1 to NE do
#print("LL&i",LL,i):
#if(((LL-i)*(LL-i-1)*(LL-i-2)*(LL-i+N-2))=0) then
if(((LL-ELEM[i,1])*(LL-ELEM[i,2])*(LL-ELEM[i,3]))=0) then

if(LL=ELEM[i,1]) then NODO:=1: end if:
if(LL=ELEM[i,2]) then NODO:=2: end if:
if(LL=ELEM[i,3]) then NODO:=3: end if:

if (ISE[i,1]=0) then
EXTINEQ(X[LL],Y[LL],X[ELEM[i,1]],Y[ELEM[i,1]],X[ELEM[i,2]],Y[ELEM[i,2]],
X[ELEM[i,3]],Y[ELEM[i,3]],HW,GW):
LOCINEQ(X[ELEM[i,1]],Y[ELEM[i,1]],X[ELEM[i,2]],Y[ELEM[i,2]],
X[ELEM[i,3]],Y[ELEM[i,3]],GW,NODO):
#print("\n",LL,i,"\nH_2\n",HW,"\nG_2\n",GW):
else
ISEL:=ISE[i,1]:

EXTINEF(X[LL],Y[LL],X[ELEM[i,1]],Y[ELEM[i,1]],X[ELEM[i,2]],Y[ELEM[i,2]],
X[ELEM[i,3]],Y[ELEM[i,3]],HW,GW,ISEL):
LOCINEF(X[ELEM[i,1]],Y[ELEM[i,1]],X[ELEM[i,2]],Y[ELEM[i,2]],
X[ELEM[i,3]],Y[ELEM[i,3]],ISE,GW,NODO,ISEL):
#print("\n",LL,i,"\nH_2\n",HW,"\nG_2\n",GW):

end if:


else

if (ISE[i,1]=0) then

EXTINEQ(X[LL],Y[LL],X[ELEM[i,1]],Y[ELEM[i,1]],X[ELEM[i,2]],Y[ELEM[i,2]],
X[ELEM[i,3]],Y[ELEM[i,3]],HW,GW):
#print("\n",LL,i,"\nH_2\n",HW,"\nG_2\n",GW):
else

ISEL:=ISE[i,1]:

EXTINEF(X[LL],Y[LL],X[ELEM[i,1]],Y[ELEM[i,1]],X[ELEM[i,2]],Y[ELEM[i,2]],
X[ELEM[i,3]],Y[ELEM[i,3]],HW,GW,ISEL):
#print("\n",LL,i,"\nH_2\n",HW,"\nG_2\n",GW):

end if:

end if:

# PLACEMENT DES MATRICES GW ET HW DANS LES MATRICES GLOBALES G ET H.

for K from 1 to ndl do
#for J from 1 to 6 do
Mcanique de la rupture linaire par EFF
44/52
for J from 1 to 3 do
for KK from 1 to ndl do
LIN:=ndl*(LL-1)+K;
CLG:=ndl*3*(i-1)+(J-1)*ndl+KK;
CLH:=ndl*(ELEM[i,J]-1)+KK;
G[LIN,CLG]:=G[LIN,CLG]+GW[K,(J-1)*ndl+KK]:
#G[2*LL-2+K,6*i-6+J*2]:=G[ndl*(LL-1)+K,6*i-6+J*2]+GW[K,J*2]:

H[LIN,CLH]:=H[LIN,CLH]+HW[K,(J-1)*ndl+KK]:
GI[LIN,CLH]:=GI[LIN,CLH]+GW[K,(J-1)*ndl+KK]:
#H[2*LL-2+K,2*ELEM[i,J]]:=H[2*LL-2+K,2*ELEM[i,J]]+HW[K,J*2]:
end do;
end do;
end do;
#print("HW=",LL,i,HW):
#print("H(1,1)=",LL,i,H[1,1]):
end do;
end do:
#print("Here H1"):
#for h1 from 1 to 1 do print(H[h1,h1]): end do:
! CALCUL DES ELEMENTS DE LA DIAGONALE DE LA MATRICE H.
> for i from 1 to N do
for K from 1 to ndl do
for KK from 1 to ndl do
H[ndl*(i-1)+K,ndl*(i-1)+KK]:=0.0;
end do;
end do;
for J from 1 to N do
if(i<>J) then
for K from 1 to ndl do
for KK from 1 to ndl do
H[ndl*(i-1)+K,ndl*(i-1)+KK]:=H[ndl*(i-1)+K,ndl*(i-1)+KK]-H[ndl*(i-1)+K,ndl*(J-
1)+KK];
end do;
end do;
end if;
end do;
# AUGMENTATION D'UNE UNITE DES ELEMENTS DE LA DIAGONALE DE LA MATRICE H
# DANS LE CAS DES PROBLEMES D'EXTREMUM.

#print("Here H2"): print("H at",H[ndl*(i-1)+1,ndl*(i-1)+1]):
#if(H[ndl*(i-1)+1,ndl*(i-1)+1]<0) then
#for K from 1 to ndl do
# H[ndl*(i-1)+K,ndl*(i-1)+K]:=1.0+H[ndl*(i-1)+K,ndl*(i-1)+K]:
#H[2*i,2*i]:=1.0+H[2*i,2*i]:
#end do;
#end if;
end do:

> end proc:
> GHMATEQ (X,Y,G,GI,H,KODE,NX,NX1):
>

> REGION:=proc(REG,G,GI,H,H11,H12,H21,H22,G11,G12,G21,G22)
!*****************************************************************************
! CETTE SUBROUTINE PERMET DE SEPARER LES MATRICE G ET H PAR REGION *
!
! H11 EST UNE MATRICE RECTANGULAIRE DE 40 PAR 30 *
! H12 EST UNE MATRICE RECTANGULAIRE DE 40 PAR 10 *
! H21 EST UNE MATRICE RECTANGULAIRE DE 40 PAR 10 *
! H22 EST UNE MATRICE RECTANGULAIRE DE 40 PAR 30 *
! G11 EST UNE MATRICE RECTANGULAIRE DE 40 PAR 30 *
! G12 EST UNE MATRICE RECTANGULAIRE DE 40 PAR 10 *
! G21 EST UNE MATRICE RECTANGULAIRE DE 40 PAR 10 *
! G22 EST UNE MATRICE RECTANGULAIRE DE 40 PAR 30 *
!*****************************************************************************
> local i,j,k,l:


if (REG=1) then
#print(verif1);
H11:=Matrix(40,30,0.0):
H12:=Matrix(40,10,0.0):
G11:=Matrix(40,48,0.0):
G12:=Matrix(40,10,0.0):


Mcanique de la rupture linaire par EFF
45/52
for i from 1 to 40 do
for j from 1 to 10 do
H12[i,j]:=H12[i,j]+H[i,j]:

end do:
end do:

for i from 1 to 40 do
for j from 1 to 10 do
G12[i,j]:=G12[i,j]+GI[i,j]:

end do:
end do:


for i from 1 to 40 do
for j from 1 to 30 do
H11[i,j]:=H11[i,j]+H[i,j+10]:

end do:
end do:

for i from 1 to 40 do
for j from 1 to 48 do

G11[i,j]:=G11[i,j]+G[i,j+12]:

end do:
end do:

end if:


if (REG=2) then
#print(verif2);
H21:=Matrix(40,10,0.0):
H22:=Matrix(40,30,0.0):
G21:=Matrix(40,10,0.0):
G22:=Matrix(40,48,0.0):

for i from 1 to 40 do
for j from 1 to 10 do
H21[i,j]:=H21[i,j]+H[i,j]:

end do:
end do:

for i from 1 to 40 do
for j from 1 to 10 do
G21[i,j]:=G21[i,j]+GI[i,j]:

end do:
end do:

for i from 1 to 40 do
for j from 1 to 30 do
H22[i,j]:=H22[i,j]+H[i,j+10]:

end do:
end do:

for i from 1 to 40 do
for j from 1 to 48 do

G22[i,j]:=G22[i,j]+G[i,j+12]:

end do:
end do:

end if:
end proc:

>


> REGION(REG,G,GI,H,H11,H12,H21,H22,G11,G12,G21,G22):

Mcanique de la rupture linaire par EFF
46/52

>
> fclose(INP):
LECTURE DES NOMS DES FICHIERS D'ENTREE
>
>
INFILE:="./DONNES_AN_xav_2.txt":

INTRODUCTION DES DONNEES DE LA REGION 2 DU PROBLEME A L'AIDE DE LA SUBROUTINE INPUTEQ
> REG:=2:
INPUTEQ():

for i from 1 to 40 do
for j from 1 to 40 do
H[i,j]:=0.0:
GI[i,j]:=0.0:

end do:
end do:

for i from 1 to 40 do
for j from 1 to 48 do

G[i,j]:=0.0:

end do:
end do:


> GHMATEQ (X,Y,G,GI,H,KODE,NX,NX1):
>
> REGION(REG,G,GI,H,H11,H12,H21,H22,G11,G12,G21,G22):

CONSTITUTION DE H ET G
> CONSTITUTION:=proc(FI,DFI,DFI1,DFI2,H11,H12,H21,H22,G11,G12,G21,G22,HH,GG)
!*****************************************************************************
! CETTE SUBROUTINE PERMET DE RECONSTITUER LES MATRICE G ET H *
!
!*****************************************************************************
> local i,j,k:

for i from 1 to 40 do
for j from 1 to 30 do

HH[i,j]:=H11[i,j]:
HH[i+40,j+50]:=H22[i,j]:
HH[i,j+50]:=0.0:
HH[i+40,j]:=0.0:

end do:
end do:


for i from 1 to 40 do
for j from 1 to 48 do

GG[i,j]:=G11[i,j]:
GG[i+40,j+48]:=G22[i,j]:
GG[i,j+48]:=0.0:
GG[i+40,j]:=0.0:

end do:
end do:

for i from 1 to 40 do
for j from 1 to 10 do
HH[i,j+30]:=H12[i,j]:
HH[i,j+40]:=-G12[i,j]:
HH[i+40,j+30]:=H21[i,j]:
HH[i+40,j+40]:=G21[i,j]:

end do:
end do:


Mcanique de la rupture linaire par EFF
47/52
## ARRANGEMENT DES MATRICES POUR FORMER LE VECTEUR PARTIE DROITE F DANS FIC


for i from 1 to 40 do
for j from 13 to 60 do
FI[i]:=FI[i]+GG[i,j-12]*DFI1[j]:
end do:
end do:


for i from 41 to 80 do
for j from 13 to 60 do
FI[i]:=FI[i]+GG[i,48+j-12]*DFI2[j]:
end do:
end do:


end proc:

> #for i from 1 to 80 do
#print (FI[i]);

#end do:




> CONSTITUTION (FI,DFI,DFI1,DFI2,H11,H12,H21,H22,G11,G12,G21,G22,HH,GG):


for i from 1 to 80 do

## AFFECTE UN DEPLACEMENT NUL AU NOEUD 6 POUR SUPPRIMER LES MOUVEMENTS DE CORPS RIGIDES
HH[1,i]:=0.:
HH[2,i]:=0.:

end do:
HH[1,1]:=1.:
HH[2,2]:=1.:
FI[1]:=0.:
FI[2]:=0.:

>
RESOLUTION DU SYSTEME D'EQUATIONS
> SLNPD:=proc(A,B)
!**********************************************************************
! RESOLUTION DES SYSTEMES LINEAIRES PAR LA METHODE D'ELIMINATION
! DE GAUSS

! A : SYSTEME MATRICIELLE A RESOUDRE
! B : AU DEBUT ELLE CONTIENT LES COEFFICIENTS INDEPENDANTS,
! ET APRES RESOLUTION, ELLE CONTIENT LES SOLUTION DU
! PROBLEME
!**********************************************************************
> local C:
C:=Vector(80):
C:=LinearSolve(A, B):
B[1..80]:=C[1..80]:
end proc:
> SLNPD(HH,FI): #print(FI):

#rint(FI):
#for i from 1 to 80 do
#print (i,FI[i]);
#end do:

CALCUL LES FACTEURS D INTENSITE DE CONTRAINTES SUR LES ELEMENTS DE FISSURE
> FIC:=proc(X1,Y1,X2,Y2,X3,Y3,U1,V1,U2,V2,U3,V3,U4,V4,U5,V5,TU,TV,K1,K2,KK1,KK2,KKK1,KKK2)
C**********************************************************************
C CETTE SUBROUTINE CALCULE LES VALEURS DES FIC
C POUR LES ELEMENTS EN FONT DE FISSURE DE TROIS METHODES .
C
C GE =MODULE DE CISAILLEMENT
C l =LONGUEUR DE L ELEMENT
Mcanique de la rupture linaire par EFF
48/52
C
C
C
C**********************************************************************
> local l,k:

# Hypothese des contraintes planes
k:=(3-XNU)/(1+XNU):

l:=sqrt((X3-X1)**2+(Y3-Y1)**2):


C
C FORMULE DE DEPLACMENT GENERAUX
C
> K1:=(GE*(2.+sqrt(2.)))/(k+1.)*sqrt(3.1415926536/l)*(2.*(V2-V4)-(V3-V5)):
K2:=(GE*(2.+sqrt(2.)))/(k+1.)*sqrt(3.1415926536/l)*(2.*(U2-U4)-(U3-U5)):
C
C FORMULE DE DEPLACEMENT D UN POINT
C

> KK1:=(2.*GE)/(k+1.)*sqrt(3.1415926536/l)*(V2-V4):
KK2:=(2.*GE)/(k+1.)*sqrt(3.1415926536/l)*(U2-U4):

C FORMULE DE TRACTION
C

> KKK1:=TV*sqrt(3.1415926536*l):
> KKK2:=TU*sqrt(3.1415926536*l):
end proc:
>
>
FIC(X[ELEMELEM[10,3]],Y[ELEMELEM[10,3]],X[ELEMELEM[10,2]],Y[ELEMELEM[10,2]],X[ELEMELEM[10,1]],
Y[ELEMELEM[10,1]],FI[31],FI[32],FI[29],FI[30],FI[27],FI[28],FI[79],FI[80],FI[77],FI[78],FI[41]
,FI[42],K1,K2,KK1,KK2,KKK1,KKK2):


IMPRESSION DES RESULTATS RELATIFS AUX NOEUDS INTERNES ET DE FRONTIERES
> OUTPTEQ:=proc(X,Y,FI,DFI,CX,CY,SSOL,DSOL)
C**********************************************************************
C CETTE SUBROUTINE IMPRIME LES VALEURS DES DEPLACEMENTS ET DES
C TRACTIONS AUX NOEUDS DES ELEMENTS DE SURFACES ET AUX POINTS
C INTERIEURS.
C**********************************************************************
> local i,J,K,k:
k:=0:
fprintf(IPR,"\n\n\n\n ************************************************"):
fprintf(IPR,"\n ***** Results ******"):
fprintf(IPR,"\n ************************************************\n"):
fprintf(IPR,"\n BOUNDARY NODES\n\n\n X Y"):
if(ndl=2) then
fprintf(IPR," DISPLACEMENT X DISPLACEMENT Y\n"):
else
fprintf(IPR," Potential\n"):
end if:
> for i from 1 to 5 do
k:=k+1:
fprintf(IPR,"\t%e\t%e\t%e\t%e \n",XX[i],YY[i],FI[i+k+29],FI[i+k+1+29]):

end do:

k:=0:
for i from 6 to 20 do
k:=k+1:
fprintf(IPR,"\t%e\t%e\t%e\t%e \n",XX[i],YY[i],FI[i+k-6],FI[i+k+1-6]):

end do:
k:=0:
for i from 21 to 35 do
k:=k+1:
fprintf(IPR,"\t%e\t%e\t%e\t%e \n",XX[i],YY[i],FI[i+k+29],FI[i+k+1+29]):

end do:


Mcanique de la rupture linaire par EFF
49/52
> if(ndl=2) then
fprintf(IPR,"\n\nTRACTION VALUES -----\n FIRST NODE SECOND
NODE THIRD NODE\nELE\tTRACTION X \tTRACTION Y \tTRACTION X \tTRACTION Y
\tTRACTION X \tTRACTION Y" ):
else
fprintf(IPR,"\n\nPotential Derivative -----\nELE\t FIRST NODE SECOND NODE THIRD
NODE" ):
end if:


for i from 1 to 1 do
fprintf(IPR,"\n%d",i):
for J from 41 to 46 do

fprintf(IPR,"\t %e",FI[J]):

end do:
fprintf(IPR,"\n")
end do:


for i from 2 to 2 do
fprintf(IPR,"\n%d",i):
for J from 45 to 50 do

fprintf(IPR,"\t %e",FI[J]):

end do:
fprintf(IPR,"\n")
end do:


for i from 3 to 10 do
fprintf(IPR,"\n%d",i):
for J from 1 to 3*ndl do

fprintf(IPR,"\t %e",DFI1[3*ndl*(i-1)+J]):

end do:
fprintf(IPR,"\n")
end do:

for i from 10 to 18 do
fprintf(IPR,"\n%d",i):
for J from 1 to 3*ndl do

fprintf(IPR,"\t %e",DFI2[3*ndl*(i-8-1)+J]):

end do:
fprintf(IPR,"\n")
end do:


>
fprintf(IPR,"\n STRESS INTENSITY FACTOR\n"):
fprintf(IPR,"\n GENERAL DISPLACEMENT FORMULA\n"):
fprintf(IPR,"\n K1 K2\n"):
fprintf(IPR,"\t%e\t%e\n",K1,K2):
fprintf(IPR,"\n ONE POINT DISPLACEMENT FORMULA\n"):
fprintf(IPR,"\n K1 K2\n"):
fprintf(IPR,"\t%e\t%e\n",KK1,KK2):
fprintf(IPR,"\n TRACTION FORMULA\n"):
fprintf(IPR,"\n K1 K2\n"):
fprintf(IPR,"\t%e\t%e\n",KKK1,KKK2):

fprintf(IPR,"\n ************************************************"):
end proc:
> OUTPTEQ(X,Y,FI,DFI,CX,CY,SSOL,DSOL):
FERMETURE DES FICHIERS
> fclose(INP):
fclose(IPR):
>
>

FICHIERS DENTREE

Mcanique de la rupture linaire par EFF
50/52
Rgion 1

CIRCULAR CAVITY UNDER INTERNAL PRESSURE (12 QUADRATIC ELEMENTS)
E
10 20 1 94500. .1 0.0
2. 2.
2.5 2.
3. 2.
3.5 2.
4. 2.
4. 2.5
4. 3.
4. 3.5
4. 4.
3. 4.
2. 4.
1. 4.
0. 4.
0. 3.5
0. 3.
0. 2.5
0. 2.25
0.5 2.1875
1. 2.125
1.5 2.0625
1 2 3 1
3 4 5 0
5 6 7 0
7 8 9 0
9 10 11 0
11 12 13 0
13 14 15 0
15 16 17 0
17 18 19 0
19 20 1 2
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1 0. 1 20. 1 0. 1 20. 1 0. 1 20.
1 0. 1 20. 1 0. 1 20. 1 0. 1 20.
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1. 1.

Rgion 2

CIRCULAR CAVITY UNDER INTERNAL PRESSURE (12 QUADRATIC ELEMENTS)
E
10 20 1 94500. .1 0.0
2. 2.
2.5 2.
3. 2.
3.5 2.
4. 2.
4. 1.5
4. 1.
4. 0.5
4. 0.
3. 0.
2. 0.
1. 0.
0. 0.
0. 0.5
0. 1.
0. 1.5
0. 1.75
0.5 1.8125
1. 1.875
1.5 1.9375
1 2 3 1
3 4 5 0
5 6 7 0
7 8 9 0
Mcanique de la rupture linaire par EFF
51/52
9 10 11 0
11 12 13 0
13 14 15 0
15 16 17 0
17 18 19 0
19 20 1 2
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1 0. 1 -20. 1 0. 1 -20. 1 0. 1 -20.
1 0. 1 -20. 1 0. 1 -20. 1 0. 1 -20.
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1 0. 1 0. 1 0. 1 0. 1 0. 1 0.
1. 1.

RESULTATS

STRESS INTENSITY FACTOR

GENERAL DISPLACEMENT FORMULA

K1 K2
-5.279767e+00 -6.639079e-01

ONE POINT DISPLACEMENT FORMULA

K1 K2
-1.216848e+00 -2.367757e-01

TRACTION FORMULA

K1 K2
3.144557e+01 -3.930697e+00

Mcanique de la rupture linaire par EFF
52/52
9.7 Rfrences

[1] : Progress in boundary element methods, edited by C.A.Brebbia, volume 2, 1983

[2] : Thse, Boundary element analysis in contact fracture mechanics, SHUBIN Liu,
1994

[3] : Projet, Analyse par lments finis de frontires dune plaque fissure, Yves
Gagnon, 1994

[4] : Cours lments finis de frontires et complments de cours
(notes_eff_doc_h08AG.pdf), GAKWAYA Augustin, SHARIFI Hamid

[5] : Programme Maple fourni ( BEM_EP_v2)