CALCULUS METHODS PROGRAMMING IN VPCOMPO99 & VPCOMPO2000

This is the methods programming in VPCOMPO99 :

A.T.A method
D.E.M method
C.P.A method
Devaney method
Voigt method
Reuss method

and methods programming in VPCOMPO2000 :

Matrix methods


ATA
K and G are given by the formulas of following ATA method:


that we programmed by:

procedure ATA(v : real; Z1 : polymere ; Z2 : ceramique ; VAR Z3 : composite);
var _f : real;
begin_f := Z1.g/6*(9*Z1.k+8*Z1.g)/(Z1.k+2*Z1.g);
Z3.k := 1/((1-v)/(Z1.k+4/3*Z1.g)+v/(Z2.k+4/3*Z1.g))-4/3*Z1.g;
Z3.g := 1/((1-v)/(Z1.g+_f)+v/(Z2.g+_f))-_f;
Z3.r := v*Z2.r+(1-v)*Z1.r;
Z3.cs := Calcul_CS(Z3.g,Z3.r);
Z3.cl := Calcul_CL(Z3.k,Z3.g,Z3.r);
end;


_F is used for the calculation as intermediate variable.

DEM
K and G are given by the formulas of following DEM method:

with those initial conditions

K(y = 0) = K
G(y = 0) = G

what we programmed by:

procedure DEM(v : real; Z1 : polymere ; Z2 : ceramique ; VAR Z3 : composite);
const
nb_iteration = 10;
precision = 100;
vark_0 : real;
g_0 : real;
f_0 : real;
k_1 : real;
g_1 : real;
j : integer;
u : real;
du : real;
begin
k_0 := Z1.k;
g_0 := Z1.g;
for j:=0 to trunc(v*precision-1) do
begin
u := j/precision;
du := 1/precision;
f_0 := g_0/6*(9*k_0+8*g_0)/(k_0+2*g_0);
k_1 := ((Z2.k-k_0)/(Z2.k+4/3*g_0))*(k_0+4/3*g_0)*du/(1-u)+k_0;
g_1 := ((Z2.g-g_0)/(Z2.g+f_0))*(g_0+f_0)*du/(1-u)+g_0;
k_0 := k_1;
g_0 := g_1;
end;
Z3.k:=k_0;
Z3.g:=g_0;
Z3.r := v*Z2.r+(1-v)*Z1.r;
Z3.cs := Calcul_CS(Z3.g,Z3.r);
Z3.cl := Calcul_CL(Z3.k,Z3.g,Z3.r);
end;


This method is delicate to implement because there is a circular reference in its formulation (discretization of a differential equation). We chose to do 10 iterations ( nb_iteration = 10 ). This is a good compromise between calculations made by the machine and expected numerical precision. Notice the presence of the precision parameter. This parameter allows to specify dy (named du in this source...). It must be well chosen because it influences directly the precision of the results. We must have: Dy = y2 - y1, i.e. the distance between two value of K or G must be equal to a certain rate. Without that, the results are "deformed ": Dy (du) " precedes " (or don't "follows") the successively computed values.

CPA
K and G are given by the formulas of following CPA method:

that we programmed by:

procedure CPA(v : real; Z1 : polymere; Z2 : ceramique ; VAR Z3 : composite);
const
nb_iteration = 10;
var
k_0 : real;
g_0 : real;
f_0 : real;
k_1 : real;
g_1 : real;
j : integer;
begin
k_0 := Z1.k;
g_0 := Z1.g;
for j:=1 to nb_iteration do
begin
f_0 := g_0/6*(9*k_0 + 8*g_0)/(k_0 + 2*g_0);
k_1 := 1/((1-v)/(Z1.k+4/3*g_0)+v/(Z2.k+4/3*g_0))-4/3*g_0;
g_1 := 1/((1-v)/(Z1.g+f_0)+v/(Z2.g+f_0))-f_0;
k_0 := k_1;
g_0 := g_1;
end;
Z3.k:=k_0;
Z3.g:=g_0;
Z3.r := v*Z2.r+(1-v)*Z1.r;
Z3.cs := Calcul_CS(Z3.g,Z3.r);
Z3.cl := Calcul_CL(Z3.k,Z3.g,Z3.r);
end;


Here, the given formulas have a circular reference. Indeed, G can be expressed according to F , and K according to G and of F , therefore of G only. But F is expressed according to G itself! It's then impossible to deduce from such formulas, the simple and literal expressions of K and G . For these reasons we solved the problem by programming an iterative loop which give a completely suitable numerical solution. The number of iteration is 10. This value is selected because it allows to converge accurately to the sought result. Of course, bigger the number of iteration is longer the needed time for the calculation is.

DEVANNEY
K and G are given by the formulas of following DEVANEY method:

that we programmed by:

procedure DEVANEY(v : real; Z1 : polymere ; Z2 : ceramique ; VAR Z3 : composite);
const
nb_iteration = 10;
var
k_0 : real;
g_0 : real;
k_1 : real;
g_1 : real;
j : integer;
begin
k_0 := Z1.k;
g_0 := Z1.g;
for j:=1 to nb_iteration do
begin
k_1 := Z1.k+v*((3*k_0+4*g_0)*(Z2.k-Z1.k))/(3*k_0+4*g_0+3*(Z2.k-Z1.k));
g_1 := Z1.g+v*((5*(3*k_0+4*g_0)*g_0*(Z2.g-Z1.g))/((15*k_0+20*g_0)*g_0+6*(k_0+2*g_0)*(Z2.g-Z1.g)));
k_0 := k_1;
g_0 := g_1;
end;
Z3.k:=k_0;
Z3.g:=g_0;
Z3.r := v*Z2.r+(1-v)*Z1.r;
Z3.cs := Calcul_CS(Z3.g,Z3.r);
Z3.cl := Calcul_CL(Z3.k,Z3.g,Z3.r);
end;


Method DEVANEY is the vaguest method of modeling for volumic fractions when charge rate (ceramic piezo) is higher than 50%. The model " diverges ". Literal expressions of K and G are defined in circular reference too. So we proceed for it like for CPA method, using an iteration calculus.

VOIGT
K and G are given by the formulas of following VOIGT method:

that we programmed by:

procedure VOIGT(v : real; Z1 : polymere ; Z2 : ceramique ; VAR Z3 : composite);
begin
Z3.k := (1-v)*Z1.k+v*Z2.k;
Z3.g := (1-v)*Z1.g+v*Z2.g;
Z3.r := v*Z2.r+(1-v)*Z1.r;
Z3.cs := Calcul_CS(Z3.g,Z3.r);
Z3.cl := Calcul_CL(Z3.k,Z3.g,Z3.r);
end;

This method is simple to program. Starting from the preceding formulas we obtain easily the simple literal expressions of K and G.

REUSS
K and G are given by the formulas of following REUSS method:

that we programmed by:

procedure REUSS(v : real; Z1 : polymere ; Z2 : ceramique ; VAR Z3 : composite);
begin
Z3.k := 1/((1-v)/Z1.k+v/Z2.k);
Z3.g := 1/((1-v)/Z1.g+v/Z2.g);
Z3.r := v*Z2.r+(1-v)*Z1.r;
Z3.cs := Calcul_CS(Z3.g,Z3.r);
Z3.cl := Calcul_CL(Z3.k,Z3.g,Z3.r);
end;


The programming of this method is similar to the programming of method VOIGT.

MATRIX METHODS 0-3
MATRIX METHODS 3-3


The matrix model is proposed in order to determine the electrical-elastic modules of piezoelectric composites (of connectivity 0-3 and 3-3) starting from parameters like the velocity of propagation of a longitudinal mechanical wave. The matrix method is a general method. It takes in account the anisotropy of the ceramic phase and its effects on the properties of the composite. This method allows to optimize the accuracy and quality of the results and to choose the two components (composite = charge + matrix) among several polymers and ceramics available on the market. The composite, a polymer charged with ceramic particles, is represented by a cell unit. The procedures for matrix calculation (encoded with PASCAL) are not published here. VPCOMPO 99 witch is downloadable on this site don't allow matrix calculation. This is only possible with VPCOMPO 2000, ask it to the authors. VPCOMPO 99 is only a preview of VPCOMPO 2000 allowing calculation with "classical" methods. But you can have look to the results obtained with matrix methods on this site.