Cet exemple montre :
- les équations permettant de calculer la masse, le rendement et la puissance électrique l’alternateur
- l’optimisation mono-objectif (minimisation de la masse)
- le post-processing du résultat d’optimisation
Modélisation
L’objectif de la modélisation est de mettre en place les équations d’un alternateur à griffes permettant de résoudre le circuit équivalent magnétique et électrique et de calculer le rendement et la puissance du dispositif.
Les paramètres d’entrée
correction_pertes |
delta |
duty_cycle
|
fils_en_parallele
|
gamma
|
h_chanf
|
h_pied
|
h_semelle
|
K_aero
|
k_eddy
|
k_hyst
|
K_meca
|
l_chanf
|
L_tetes_bobines
|
M_sup
|
M_v_cu
|
M_v_fer
|
mu_r_dent
|
N
|
n_couches
|
N_phases
|
Nepp
|
p
|
Ra
|
Rd
|
rho_0_cu
|
rho_fer_griffe
|
rho_fer_stator
|
steinmetz
|
T_cu_rotor
|
T_cu_stator
|
Ub
|
Vbb
|
Vd
|
Vr
|
ep
|
h_bec
|
h_plateau
|
hd
|
Id
|
Iq
|
l_base_griffe
|
l_bout_griffe
|
largeur_dent
|
ln
|
lstator
|
N_cond_par_encoche
|
Nex
|
ouv_encoche
|
psi1
|
psi10
|
psi2
|
psi3
|
psi4
|
psi5
|
psi6
|
psi7
|
psi8
|
psi9
|
R_ext_rotor
|
R_ext_stator
|
R_int_stator
|
Rn
|
S_fil_rotor
|
S_fil_stator
|
Les équations du modèle principal
/***************************************************
Alternateur à griffes
alternateur_griffes1.sml
| Dimensionnement d'un alternateur à griffes |
| (sans aimants permanents ) |
| Modele v2.1 |
| Calcul sur un seul point de fonctionnement |
| Auteur : Laurent ALBERT |
| Date : 27 / 04 / 2004 |
**********************************************
References:
Méthodes, modèles et outils en vue du dimensionnement et de l’optimisation des alternateurs pour applications automobiles ", these de l'Institut Polytechnique de Grenoble, 13 juillet 2004
https://tel.archives-ouvertes.fr/tel-00007091/
"Sizing of automotive claw-pole alternator based on analytical modeling"
L. ALBERT, C. CHILLET, A. JAROSZ, J. ROUSSEAU, F. WURTZ, ELECTROMOTION, vol. 12, 2005, Number 2 – 3, April - September 2005, pp. 118-124
"Analytic modelling of automotive claw-pole alternator for design and constrained optimisation" L. ALBERT, C. CHILLET, A. JAROSZ, F. WURTZ, European conference on Power Electronics and Applications (EPE’2003), Toulouse, France, 2-4 September 2003
*/
import org.gu.vesta:benchmark.website.java.ExternFunction:1.0;
/* Constantes du probleme et fonctions hyperboliques */
mu0=4*pi*pow(10,-7);
/* -----------------------------------------
Calculs des parametres intermediaires
----------------------------------------- */
/* Parametres electriques deduits */
N_encoches=2*p*N_phases*Nepp;
N_spires_par_phase=N_cond_par_encoche*N_encoches/(2*N_phases);
/* Parametres geometriques deduits */
entrefer=R_int_stator-R_ext_rotor;
l_fond_encoche=(2*pi*(R_int_stator+hd)/N_encoches)-largeur_dent;
h_culasse=R_ext_stator-R_int_stator-hd;
pas_dentaire=2*pi*R_int_stator/N_encoches;
pas_polaire=pas_dentaire*N_encoches/(2*p);
beta=atan(2*ln/(l_base_griffe-l_bout_griffe));
dgg=sin(beta)*(2*pi*R_ext_rotor-p*(l_base_griffe+l_bout_griffe))/(2*p);
ecart_longueur=abs(lstator-ln);
h_base_griffe=R_ext_rotor-(Rn+h_plateau);
h_base_bec=h_base_griffe-h_bec;
xi=atan(h_base_bec/ln);
contrainte_trapeze=l_base_griffe-l_bout_griffe;
rdm_griffe=ln/h_base_griffe;
/* Calcul des parametres electriques */
/* Inductance de fuite */
Kf=mu0*pow(N_cond_par_encoche,2)*N_encoches*lstator/N_phases;
l_enc=Kf*((hd-h_pied)/(3*l_fond_encoche)+(h_pied-h_semelle)*log(l_fond_encoche/ouv_encoche)/(l_fond_encoche-ouv_encoche)+h_semelle/ouv_encoche);
l_zz=Kf*pow(pas_dentaire-ouv_encoche,2)/(8*entrefer*pas_dentaire);
l_tb=mu0*3*pow(N_spires_par_phase,2)*2*R_int_stator*0.6/pow(p,2);
Lf=(l_enc+l_zz+l_tb)/pow(3,delta);
/* Coefficient de correction des amperes tours d'induit */
Kri=6*(cos(p*l_bout_griffe/(2*R_ext_rotor))-cos(p*l_base_griffe/(2*R_ext_rotor)))
/(pi*(l_base_griffe/(2*R_ext_rotor)-l_bout_griffe/(2*R_ext_rotor))*(l_base_griffe/(2*R_ext_rotor)+l_bout_griffe/(2*R_ext_rotor))*pow(p,2));
/* Inductance transversale */
S_entrefer=(pas_polaire-dgg*sin(beta))*lstator*(1-ouv_encoche/pas_dentaire);
Lq=mu0*pow(N_cond_par_encoche,2)*N_encoches*S_entrefer/(N_phases*4*entrefer)/pow(3,delta);
/* Resistance de l'enroulement statorique */
function rho(Temp)=rho_0_cu*(1+gamma*Temp);
L_fil_stator_tb=N_spires_par_phase*(2*Nepp*N_phases*(2*pi*(R_int_stator+hd/2)/N_encoches)+4*L_tetes_bobines);
h_cond_reduit = sqrt(4*pow(10,-7)*S_fil_stator*w/(rho(T_cu_stator)));
PSI = 2*h_cond_reduit*(sinh(h_cond_reduit)-sin(h_cond_reduit))/(cosh(h_cond_reduit)+cos(h_cond_reduit));
PHI = h_cond_reduit*(sinh(2*h_cond_reduit)+sin(2*h_cond_reduit))/(cosh(2*h_cond_reduit)-cos(2*h_cond_reduit));
Km = PHI+(pow(n_couches,2)-1)/3*PSI;
Rs = rho(T_cu_stator)*(L_fil_stator_tb+N_spires_par_phase*2*lstator*Km)/(fils_en_parallele*S_fil_stator)/pow(3,delta);
/* Parametres divers pour le calcul des pertes fer */
Kc=pas_dentaire/(pas_dentaire-(pow(ouv_encoche,2)/(ouv_encoche+5*entrefer)));
surface_griffes=2*p*ln*(l_base_griffe+l_bout_griffe)/2;
/* Resistance de l'enroulement rotorique */
L_fil_rotor=Nex*2*pi*(Rn+h_plateau/2);
Rr=rho(T_cu_rotor)*L_fil_rotor/S_fil_rotor;
/* Courant d'excitation maximal */
Iex_max=(Ub-Vbb-Vr)/Rr;
Iex=duty_cycle*Iex_max;
/* ---------------------------
Calculs des reluctances
--------------------------- */
/* Definition de la reluctance d'entrefer */
S_entrefer_2=lstator*(l_base_griffe+l_bout_griffe)/2;
entrefer_moyen=2/(l_base_griffe+l_bout_griffe)*(((l_base_griffe+l_bout_griffe)/2-2*l_chanf)*entrefer+2*l_chanf*(entrefer+h_chanf/2));
R4 = Kc*entrefer_moyen/(mu0*S_entrefer_2);
R6=R4;
/*Definition des longueurs et surfaces utiles pour le calcul des reluctances */
L_noyau=ln+ep;
S_noyau=pi*(pow(Rn,2)-pow(Ra,2))/p;
S_plateau=h_plateau*2*pi*ep/(p*log((Rn+h_plateau)/Rn));
L_coude=sqrt(pow(h_base_griffe,2)+pow(ep,2))/2;
S_coude=l_base_griffe*ep;
L_griffe=sqrt(pow(h_base_griffe,2)+pow(ln,2))/2;
S_griffe=h_base_griffe*l_base_griffe;
S_dents=S_entrefer*largeur_dent/(pas_dentaire-ouv_encoche);
L_culasse=3*(l_fond_encoche+largeur_dent)/2;
S_culasse=h_culasse*lstator;
/* Definition des reluctances variables (non lineaire) */
function R1(flux)=Hr(abs(flux)/S_noyau)*L_noyau/(2*abs(flux))+Hr(abs(flux)/S_plateau)*h_plateau/abs(flux);
function R2(flux)=Hr(abs(flux)/S_coude)*L_coude/abs(flux);
function R3(flux)=Hr(abs(flux)/S_griffe)*L_griffe/abs(flux);
function R5(flux)=2*Hs(abs(flux)/S_dents,f)*hd/abs(flux)+Hs(abs(flux)/(2*S_culasse),f)*L_culasse/abs(flux);
function R9(flux)=R1(flux);
function R8(flux)=R2(flux);
function R7(flux)=R3(flux);
/* Definition des reluctances correspondantes aux flux de fuites */
/* reluctance de fuite entre deux griffes */
/* reluctance utile au calcul de la reluctance de fuites entre griffes par le stator */
alpha_s = l_bout_griffe/(2*R_ext_rotor)-(pas_dentaire-ouv_encoche)/(2*R_int_stator);
beta_s = l_base_griffe/(2*R_ext_rotor)+(pas_dentaire-ouv_encoche)/(2*R_int_stator);
Rgg_stator_entrefer =3*entrefer*(beta_s-alpha_s)*pas_dentaire/(R_int_stator*2*mu0*lstator*(pas_dentaire-ouv_encoche)*(pow(beta_s,2)-pi*beta_s/p+pow(pi/p,2)/4)) ;
Rgg_stator_dent = dgg/(20*mu0*largeur_dent*hd*cos(beta));
alpha_dent = hd/(hd+largeur_dent/2)*2*pi*largeur_dent/sqrt(pow(10,7)*rho_fer_stator*2*pi/(mu_r_dent*w));
coef_effet_peau = alpha_dent*(sinh(2*alpha_dent)+sin(2*alpha_dent))/(cosh(2*alpha_dent)-cos(2*alpha_dent));
Rgg_stator = (Rgg_stator_dent*coef_effet_peau+Rgg_stator_entrefer)/2;
/* reluctance de fuite entre deux griffes principale*/
l_gc = ln/sin(beta)-dgg*cos(beta);
hg1 = h_bec+dgg*cos(beta)*tan(xi);
hg2 = h_base_griffe-hg1;
Rgg_principal = hg2/(4*mu0*l_gc*(hg1+hg2/2)*log(dgg/(sqrt(pow(dgg,2)+pow(hg2/2,2))-hg2/2)));
/* reluctance de fuite entre deux griffes interieure*/
Rgg_int = pi/(mu0*l_gc*log((dgg+(l_bout_griffe+l_base_griffe)/2)*(sqrt(pow(h_base_bec,2)+pow(dgg,2))+l_bout_griffe)/(dgg*sqrt(pow(h_base_bec,2)+pow(dgg,2)))));
/* reluctance de fuite entre griffe*/
Rgg_rotor = Rgg_principal*Rgg_int/(Rgg_principal+Rgg_int);
R18 = Rgg_rotor*Rgg_stator/(Rgg_rotor+Rgg_stator);
/* reluctance de fuite entre un plateau et une griffe */
r_min=0.001;
R10=(xi+pi/2)/(mu0*l_base_griffe*log(h_plateau/r_min));
R11=R10;
/* reluctance de fuite entre un coude et le stator */
R12=3*pi/(4*mu0*3*largeur_dent*log(ep/entrefer));
R13=R12;
/* reluctance de fuite entre griffe et plateau */
R14=pi/(4*mu0*h_bec*log(2*l_bout_griffe/dgg));
R15=R14;
/* reluctance de fuite entre griffe et noyau */
h_moy=(h_base_bec/2)+h_plateau;
e1=(h_moy-dgg)/(2*sin(beta));
e2=l_bout_griffe*tan(beta)/2;
Sgn=(ln-e2)*(l_base_griffe-2*e1)/2;
R16=h_moy/(mu0*Sgn);
R17=R16;
/* Calcul de la pulsation */
w=p*pi*N/30;
/* ----------------------------------------------
Caracteristiques des materiaux magnetiques
---------------------------------------------- */
/* Pour le stator */
function Hs(B,freq)=70*atan(13*B)*(1+freq/2000)+130*pow(B,2)*(1+atan((freq-1030)/350)*2.25/pi)*6.5+pow(B/1.58,10)*900*(1+atan(15*(B-1.6))*2/pi)+pow(B/2.1,18)*18500*(1-atan(6.8*(B-2.33))*2/pi);
/* Pour le rotor */
function Hr(B)=556.2*pow(B,0.584)+pow(exp(B-2.373),2.949)*4105*pow(B,5.208)/(1+pow(exp(B-2.373),2.949));
/* -----------------------------------------------------------------
Definition des parametres intermediaires du modele electrique
----------------------------------------------------------------- */
/* Calcul de la force electromotrice */
fem_d=N_spires_par_phase*abs(psi7)*w/sqrt(2)/pow(sqrt(3),delta);
Er=sqrt(pow(fem_d,2)+pow(Lq*w*Iq,2));
/* Courant efficace de phase */
Is=sqrt((pow(Iactif,2)+pow(Ireactif,2))/2);
/* ------------------------------------------------------------
Definition des equations implicites e annuler.
12 equations pour le circuit magnetique, electrique et le couplage
------------------------------------------------------------ */
c1=(R1(psi1)+R15+R16)*psi1-R15*psi3-R16*psi8-Iex*Nex/2;
c2=(R9(psi2)+R14+R17)*psi2-R14*psi4-R17*psi8-Iex*Nex/2;
c3=-R15*psi1+(R2(psi3+psi9)+R3(psi3+psi5+psi9)+R15+R18)*psi3+R18*psi4+R3(psi3+psi5+psi9)*psi5
-R18*psi7-R18*psi8+(R2(psi3+psi9)+R3(psi3+psi5+psi9))*psi9;
c4=-R14*psi2+(R8(psi4+psi10)+R7(psi4+psi6+psi10)+R14+R18)*psi4+R18*psi3+R7(psi4+psi6+psi10)*psi6
-R18*psi7-R18*psi8+(R8(psi4+psi10)+R7(psi4+psi6+psi10))*psi10;
c5=R3(psi3+psi5+psi9)*psi3+(R3(psi3+psi5+psi9)+R4+R12)*psi5+R4*psi7+R3(psi3+psi5+psi9)*psi9;
c6=R7(psi4+psi6+psi10)*psi4+(R7(psi4+psi6+psi10)+R6+R13)*psi6+R6*psi7+R7(psi4+psi6+psi10)*psi10;
c7=-R18*psi3-R18*psi4+R4*psi5+R6*psi6+(R4+R5(psi7)+R6+R18)*psi7+R18*psi8
+2*Kri*N_cond_par_encoche*sqrt(2)*Id/pow(sqrt(3),delta);
c8=-R16*psi1-R17*psi2-R18*psi3-R18*psi4+R18*psi7+(R16+R17+R18)*psi8;
c9=(R2(psi3+psi9)+R3(psi3+psi5+psi9))*psi3+R3(psi3+psi5+psi9)*psi5
+(R2(psi3+psi9)+R3(psi3+psi5+psi9)+R10)*psi9;
c10=(R8(psi4+psi10)+R7(psi4+psi6+psi10))*psi4+R7(psi4+psi6+psi10)*psi6
+(R8(psi4+psi10)+R7(psi4+psi6+psi10)+R11)*psi10;
c11=Id-Is*cos(atan(abs(Iactif/Ireactif))-atan(Lq*w*Iq/fem_d));
c12=Iq-Is*sin(atan(abs(Iactif/Ireactif))-atan(Lq*w*Iq/fem_d));
/*-------------------------
Modele du redresseur
------------------------- */
f=w/(2*pi);
T=1/f;
phi=atan(Lf*w/(Rs+Rd));
Z=sqrt(pow((Rs+Rd),2)+pow(Lf*w,2));
tau=Lf/(Rs+Rd);
/* equation du mode binaire */
t000=(pi/3-ExternFunction((Ub+2*Vd)/(sqrt(6)*Er)))/w;
AAA1=((Ub+2*Vd)/(2*(Rs+Rd))-(sqrt(6)*Er)*cos(w*t000-pi/3-phi)/(2*Z))*exp(t000/tau);
ta=3*T/11;
ta2=ta-T/6-phi/w;
aa=AAA1/(2*pow(tau,2)*exp(ta/tau))-(sqrt(6)*Er)*pow(w,2)*cos(w*ta2)/(4*Z);
bb=-AAA1*exp(-ta/tau)*(ta/tau+1)/tau+(sqrt(6)*Er)*w*(w*ta*cos(w*ta2)-sin(w*ta2))/(2*Z);
cc=AAA1*(1+ta/tau+pow(ta,2)/(2*pow(tau,2)))/exp(ta/tau)+(sqrt(6)*Er)*(ta*w*sin(w*ta2)+(1-pow(w*ta,2)/2)*cos(w*ta2))/(2*Z)-(Ub+2*Vd)/(2*(Rs+Rd));
t111=(-bb-sqrt(abs(pow(bb,2)-4*aa*cc)))/(2*aa);
t000bis=t000+T/6;
/* equation du mode mixte */
t1=(ExternFunction(-(Ub+2*Vd)/(sqrt(6)*Er)/sqrt(3))-pi/6)/w;
A2=((sqrt(6)*Er)*cos(w*t1+pi/6-phi)/(Z*sqrt(3))+(Ub+2*Vd)/(3*(Rs+Rd)))*exp(t1/tau)*(1+exp(-T/(6*tau)))/(2-exp(-T/(6*tau)));
A3=A2*(1-2*exp(-T/(6*tau)))/(1+exp(-T/(6*tau)));
A1=(A2-A3)/2;
tt2=T/4+atan(Lf*w/((Rs+Rd)+(Ub+2*Vd)*Z/(sqrt(6)*Er)))*T/(2*pi);
AA=(Rs+Rd)*(sqrt(6)*Er)/(sqrt(3)*Z);
BB=-(Ub+2*Vd)/3;
CC=(Rs+Rd)*A3;
DD=-(phi+pi/6)/w;
tt1=tt2+DD;
a=-CC/(2*exp(tt2/tau)*pow(tau,2))-AA/2*cos(w*tt1)*pow(w,2);
b=AA*(cos(w*tt1)*pow(w,2)*tt2-sin(w*tt1)*w)+CC*(tt2+tau)/(exp(tt2/tau)*pow(tau,2));
c=AA*(cos(w*tt1)*(1-pow(w*tt2,2)/2)+sin(w*tt1)*w*tt2)+BB-CC*(pow(tt2,2)/(2*pow(tau,2))+tt2/tau+1)/exp(tt2/tau);
t0bis=(-b-sqrt(abs(pow(b,2)-4*a*c)))/(2*a);
t0=t0bis-T/6;
Imoyen_mixte=6/T*((Ub+2*Vd)/(6*(Rs+Rd))*(t1-t0-2*T/3)+tau*(A1-A2*exp(-T/(6*tau)))*exp(-t0/tau)+tau*(A2-A1)*exp(-t1/tau)
+(sqrt(6)*Er)/(2*sqrt(3)*Z*w)*(cos(w*t0-phi-pi/3)+cos(w*t1-phi-pi/3)));
Iactif_mixte=(Ub+2*Vd)/(2*(Rs+Rd)*pi)*(-cos(w*t0)-cos(w*t1)-sqrt(3)*(sin(w*t1)+sin(w*t0)))+2*(sqrt(6)*Er)*sqrt(3)/(T*Z)*(t0+T/6-t1)*cos(phi)
+sqrt(3)*(sqrt(6)*Er)/(pi*Z*4)*(2*cos(phi)*w*(t1-t0)-sin(2*w*t1+pi/3-phi)+sin(2*w*t0+pi/3-phi))
+2*tau*sqrt(3)/(T*(1+pow(w*tau,2)))*((w*tau*(A2-A3)-sqrt(3)*(A2+A3))*exp(-t0bis/tau)*sin(w*t0)
-(sqrt(3)*w*tau*(A3+A2)+(A2-A3))*exp(-t0bis/tau)*cos(w*t0)+(sqrt(3)*(A2-A1)+w*tau*(A2+2*A3+A1))*exp(-t1/tau)*sin(w*t1)
-(sqrt(3)*w*tau*(A1-A2)+(A2+2*A3+A1))*exp(-t1/tau)*cos(w*t1)+(sqrt(3)-w*tau)*A1*exp(-t0/tau)*sin(w*t0)+(w*tau*sqrt(3)+1)*A1*exp(-t0/tau)*cos(w*t0));
Ireactif_mixte=(Ub+2*Vd)/(2*(Rs+Rd)*pi)*(sin(w*t0)+sin(w*t1)-sqrt(3)*(cos(w*t0)+cos(w*t1)))-2*(sqrt(6)*Er)*sqrt(3)/(T*Z)*(t0+T/6-t1)*sin(phi)
+sqrt(3)*(sqrt(6)*Er)/(pi*Z*4)*(2*sin(phi)*w*(t0-t1)+cos(2*w*t0+pi/3-phi)-cos(2*w*t1+pi/3-phi))
+2*tau*sqrt(3)/(T*(1+pow(w*tau,2)))*((sqrt(3)*w*tau*(A2+A3)+(A2-A3))*exp(-t0bis/tau)*sin(w*t0)
+(w*tau*(A2-A3)-sqrt(3)*(A2+A3))*exp(-t0bis/tau)*cos(w*t0)+(sqrt(3)*(A2-A1)+w*tau*(A2+2*A3+A1))*exp(-t1/tau)*cos(w*t1)
+(sqrt(3)*w*tau*(A1-A2)+(A2+2*A3+A1))*exp(-t1/tau)*sin(w*t1)+(sqrt(3)-w*tau)*A1*exp(-t0/tau)*cos(w*t0)-(w*tau*sqrt(3)+1)*A1*exp(-t0/tau)*sin(w*t0));
/* equation du mode triphasee */
AAA=(Ub+2*Vd)/(3*(Rs+Rd))*(exp(T/(6*tau))-exp(-T/(6*tau)))*sqrt(3)*Z/(sqrt(6)*Er);
BBB=exp(T/(6*tau))+exp(-T/(6*tau))-2;
t00i=T/6+atan(Lf*w/((Rs+Rd)+(Ub+2*Vd)*Z/(sqrt(6)*Er)))*T/(2*pi);
ttt1=t00i+(pi/6-phi)/w;
ttt2=t00i+(2*pi/3-phi)/w;
aaa=-(BBB*cos(w*ttt1)+sin(w*ttt2))*pow(w,2)/2;
bbb=((cos(w*ttt1)*w*t00i-sin(w*ttt1))*BBB+cos(w*ttt2)+sin(w*ttt2)*w*t00i)*w;
ccc=(cos(w*ttt1)*(1-pow(w*t00i,2)/2)+w*sin(w*ttt1)*t00i)*BBB-w*cos(w*ttt2)*t00i-AAA+sin(w*ttt2)*(1-pow(w*t00i,2)/2);
t00=(-bbb-sqrt(abs(pow(bbb,2)-4*aaa*ccc)))/(2*aaa);
t00bis=t00+T/6;
AA3=((sqrt(6)*Er)/(sqrt(3)*Z)*cos(w*t00+pi/6-phi)-(Ub+2*Vd)/(3*(Rs+Rd)))*exp(t00bis/tau);
AA2=(sqrt(6)*Er)/(sqrt(3)*Z)*sin(w*t00+2*pi/3-phi)*exp(t00/tau)/(1-exp(-T/(6*tau)));
Imoyen_tri=6/T*(AA2*tau*exp(-t00/tau)*(1-exp(-T/(6*tau)))+(sqrt(6)*Er)/(sqrt(3)*Z*w)*cos(w*t00-phi-pi/3)-T*(Ub+2*Vd)/(9*(Rs+Rd)));
Ireactif_tri=-4*(Ub+2*Vd)/(w*T*(Rs+Rd))*(sin(w*t00+pi/3)-sin(w*t00))-(sqrt(6)*Er)/(sqrt(3)*Z)*sin(phi)
+2*sqrt(3)*tau/(T*(1+pow(w*tau,2)))*((AA2+2*AA3-sqrt(3)*AA2*w*tau)*(exp(-t00/tau)*sin(t00*w)-exp(-t00bis/tau)*sin(t00bis*w))
+(AA2*w*tau+2*AA3*w*tau+sqrt(3)*AA2)*(exp(-t00/tau)*cos(t00*w)-exp(-t00bis/tau)*cos(t00bis*w)));
Iactif_tri=2*(sqrt(6)*Er)*sqrt(3)*cos(phi)/(Z*T*3*w)*pi+4*(Ub+2*Vd)/(w*T*(Rs+Rd))*(cos(w*t00+pi/3)-cos(w*t00))
+2*tau/(T*(1+pow(w*tau,2)))*((2*sqrt(3)*AA3*w*tau+sqrt(3)*AA2*w*tau+3*AA2)*(exp(-t00/tau)*sin(t00*w)-exp(-t00bis/tau)*sin(t00bis*w))
+(-2*sqrt(3)*AA3-sqrt(3)*AA2+3*AA2*w*tau)*(exp(-t00/tau)*cos(t00*w)-exp(-t00bis/tau)*cos(t00bis*w)));
/* Determination des coefficients de ponderation */
k1=(0.5+atan(10000*f*(t0-t1))/pi)*(0.5-atan(10000*(Ub+2*Vd-(sqrt(6)*Er))/(sqrt(6)*Er))/pi);
k2=(0.5+atan(10000*f*(t1-t0))/pi)*(0.5+atan(10000*f*(t111-t000bis))/pi)*(0.5-atan(10000*(Ub+2*Vd-(sqrt(6)*Er))/(sqrt(6)*Er))/pi);
/* Calcul des grandeurs de sortie du modele du redresseur */
Imoyen=k1*Imoyen_tri+k2*Imoyen_mixte;
Iactif=k1*Iactif_tri+k2*Iactif_mixte;
Ireactif=k1*Ireactif_tri+k2*Ireactif_mixte;
/* -------------------------------------
Calculs utiles au dimensionnement
------------------------------------- */
/* Calcul de la puissance fournie */
P_electrique=Imoyen*Ub;
/* Calcul des inductions */
B_noyau=abs(psi1)/S_noyau;
B_plateau=abs(psi1)/S_plateau;
B_coude=abs(psi3+psi9)/S_coude;
B_griffe=abs(psi3+psi5+psi9)/S_griffe;
B_entrefer=abs(psi5+psi7)/S_entrefer;
B_dents=abs(psi7)/S_dents;
B_culasse=abs(psi7)/(2*S_culasse);
/* Calcul du coefficient de foisonnement de la bobine d'excitation */
foisonnement_bob_rotor=S_fil_rotor*Nex/(ln*h_plateau);
/* Calcul du coefficient de remplissage d'encoche */
l_encoche_pied=2*pi*(R_int_stator+h_pied)/N_encoches-largeur_dent;
l_encoche_semelle=2*pi*(R_int_stator+h_semelle)/N_encoches-(pas_dentaire-ouv_encoche);
S_encoche=(l_encoche_pied+l_fond_encoche)*(hd-h_pied)/2+(l_encoche_pied+l_encoche_semelle)*(h_pied-h_semelle)/2;
remplissage_encoche=N_cond_par_encoche*fils_en_parallele*S_fil_stator/S_encoche;
/* Calcul des densites de courant */
delta_rotor=Iex/S_fil_rotor;
delta_stator=Is/(fils_en_parallele*S_fil_stator);
/* ----------------------
Calculs des masses
---------------------- */
/* masses de cuivre */
M_cu_rotor=M_v_cu*L_fil_rotor*S_fil_rotor;
M_cu_stator=M_v_cu*N_phases*fils_en_parallele*(L_fil_stator_tb+N_spires_par_phase*2*lstator)*S_fil_stator;
/* volumes des zones de fer */
V_noyau=pi*(pow(Rn,2)-pow(Ra,2))*(ln+2*ep);
V_plateau=pi*(pow(Rn+h_plateau,2)-pow(Rn,2))*ep;
V_coude=3*ep*l_base_griffe*h_base_griffe/4;
V_griffe=(l_base_griffe+l_bout_griffe)*ln*(h_bec+h_base_bec/2)/2;
V_dent=lstator*(largeur_dent*(hd-h_pied)+(h_pied-h_semelle)*(pas_dentaire-ouv_encoche+largeur_dent)/2+h_semelle*(pas_dentaire-ouv_encoche));
V_culasse=pi*(pow(R_ext_stator,2)-pow(R_ext_stator-h_culasse,2))*lstator;
/* masses de fer */
M_fer_rotor=M_v_fer*(V_noyau+2*V_plateau+2*p*(V_coude+V_griffe));
M_fer_dents=M_v_fer*N_encoches*V_dent;
M_fer_culasse=M_v_fer*V_culasse;
M_fer_stator=M_fer_dents+M_fer_culasse;
/* masse totale de l'alternateur */
masse=M_fer_stator+M_fer_rotor+M_cu_stator+M_cu_rotor+M_sup;
/* -----------------------------------
Modeles des pertes et rendement
----------------------------------- */
/* Pertes joules au stator */
P_j_s=3*Rs*pow(Is,2);
/* Pertes dans le redresseur */
P_red=6*Is*(sqrt(2)*Vd/pi+Rd*Is/2);
/* Pertes de l'excitation */
P_ex=Ub*Iex;
/* Pertes fer dans le stator */
P_fer_dents=(k_hyst*w/(2*pi)*pow(B_dents,steinmetz)+4*3*Nepp/pow(pi,2)*k_eddy*pow(w/(2*pi),2)*pow(B_dents,2))*M_fer_dents;
P_fer_culasse=(k_hyst*w/(2*pi)*pow(B_culasse,steinmetz)+k_eddy*pow(w/(2*pi),2)*pow(B_culasse,2))*M_fer_culasse;
P_fer_stator=P_fer_dents+P_fer_culasse;
/* Pertes fer dans le rotor */
mu_r_surface_griffe=B_entrefer/(mu0*Hr(B_entrefer));
Ks=sqrt(pow(10,7)/(mu_r_surface_griffe*rho_fer_griffe))/(32*pi);
P_fer_enc_rotor=correction_pertes*surface_griffes*Ks*pow(Kc-1,2)*pow(B_entrefer,2)*pow(pi*N*R_ext_rotor/30,1.5)*pow(ouv_encoche,-0.5)*pas_dentaire;
P_fer_harm_rotor=correction_pertes*surface_griffes*Ks*74/1225*pow(3*mu0*N_cond_par_encoche*Is*sqrt(2)/(pi*entrefer),2)*pow(pi*N*R_ext_rotor/30,1.5)*pow(pas_dentaire,0.5);
/* Pertes mecaniques et aerauliques */
P_meca=K_meca*N/2000;
P_aero=K_aero*pow(N/2000,3);
P_absorbee=P_electrique+P_j_s+P_red+P_ex+P_fer_stator+P_fer_enc_rotor+P_fer_harm_rotor+P_meca+P_aero;
rendement=100*P_electrique/P_absorbee;
package website.java;
import org.gu.vesta.muse.v5.JacobianFacet;
import org.gu.vesta.muse.v5.JacobianFacet.ComputeJacobian;
import org.gu.vesta.muse.v5.MuseModel;
import org.gu.vesta.muse.v5.StaticFacet;
import org.gu.vesta.muse.v5.StaticFacet.Compute;
/*
* ExternFunction.java
* Copyright (c) G2Elab & Vesta-System.
* Use, duplication or distribution is subject to authorization.
* For more informations see:
* www.cades-solutions.com
* www.vesta-system.com
*/
@MuseModel(name="m1")
public class ExternFunction {
/** Creates a new instance of ExternFunction */
public ExternFunction() {
}
@StaticFacet(museModel="m1")
@Compute
public double realAcos(double x) {
if(x<-1.0)
{
return Math.PI;
}
if(x>1.0)
{
return 0;
}
else
{
return Math.acos(x);
}
}
@JacobianFacet(museModel="m1")
@ComputeJacobian
public double[] jacobian_realAcos(double x) {
double result;
if(x<-1.0)
{
result = 0;
}
if(x>1.0)
{
result = 0;
}
else
{
result = -1/Math.sqrt(1-Math.pow(x,2));
}
return new double[] {result};
}
}
L’optimisation
Le scénario d’optimisation est le suivant :
- Trouver la valeur optimale de :
- ep
- h_bec
- h_plateau
- hd
- Id
- Iq
- l_base_griffe
- l_bout_griffe
- largeur_dent
- ln
- lstator
- N_cond_par_encoche
- Nex
- ouv_encoche
- psi1
- psi10
- psi2
- psi3
- psi4
- psi5
- psi6
- psi7
- psi8
- psi9
- R_ext_rotor
- R_ext_stator
- R_int_stator
- Rn
- S_fil_rotor
- S_fil_stator
- Tel que :
- Le rendement soit supérieur à 70% (rendement)
- La puissance électrique soit supérieure à 750W (P_electrique)
- Les inductions dans les pièces ferromagnétiques soient inférieures à 2T pour éviter la saturation (B_coude, B_culasse, B_dents, B_entrefer, B_griffe, B_noyau, B_plateau)
- Les lois de Kirchhoff dans le circuit magnétique et électrique soient respectés (c1 .. c12 = 0 ± 1e-7)
- La masse de l’alternateur soit minimale (masse)
- Pour une valeur imposée de toutes les autres variables d’entrée
Le cahier des charges
/*Les intervalles de libertés d’optimisation*/
ep - Interval = [0.005..0.013] - valeur initiale = 0.0122
h_bec - Interval = [0.001..0.03] - valeur initiale = 0.0025
h_plateau - Interval = [0.001..0.03] - valeur initiale = 0.0117
hd - Interval = [0.005..0.02] - valeur initiale = 0.0105
Id - Interval = [0.0..200.0] - valeur initiale = 26.91
Iq - Interval = [0.0..150.0] - valeur initiale = 32.32
l_base_griffe - Interval = [0.02..0.06] - valeur initiale = 0.0283
l_bout_griffe - Interval = [0.003..0.02] - valeur initiale = 0.0065
largeur_dent - Interval = [0.002..0.01] - valeur initiale = 0.0034
ln - Interval = [0.01..0.034] - valeur initiale = 0.03245
lstator - Interval = [0.01..0.034] - valeur initiale = 0.03305
N_cond_par_encoche - Interval = [5.0..10.0] - valeur initiale = 8.0
Nex - Interval = [300.0..600.0] - valeur initiale = 370.0
ouv_encoche - Interval = [0.0028..0.004] - valeur initiale = 0.0028
psi1 - Interval = [-0.001..0.001] - valeur initiale = 5.470850189E-4
psi10 - Interval = [-0.001..0.001] - valeur initiale = -7.340152E-6
psi2 - Interval = [-0.001..0.001] - valeur initiale = 5.470850189E-4
psi3 - Interval = [-0.001..0.001] - valeur initiale = 5.454755E-4
psi4 - Interval = [-0.001..0.001] - valeur initiale = 5.454755E-4
psi5 - Interval = [-0.001..0.001] - valeur initiale = -7.75419E-6
psi6 - Interval = [-0.001..0.001] - valeur initiale = -7.75419E-6
psi7 - Interval = [1.0E-6..0.001] - valeur initiale = 4.2949665E-4
psi8 - Interval = [-0.001..0.001] - valeur initiale = 5.5845326E-4
psi9 - Interval = [-0.001..0.001] - valeur initiale = -7.340152E-6
R_ext_rotor - Interval = [0.04..0.06] - valeur initiale = 0.05265
R_ext_stator - Interval = [0.06..0.068] - valeur initiale = 0.06775
R_int_stator - Interval = [0.04..0.06] - valeur initiale = 0.053
Rn - Interval = [0.02..0.04] - valeur initiale = 0.02965
S_fil_rotor - Interval = [2.0E-7..1.5E-6] - valeur initiale = 7.4E-7
S_fil_stator - Interval = [1.0E-6..3.0E-6] - valeur initiale = 1.54E-6
/*Les variables imposées*/
duty_cycle - Fixe - valeur = 1.0
fils_en_parallele - Fixe - valeur = 2.0
gamma - Fixe - valeur = 0.004
h_chanf - Fixe - valeur = 5.0E-4
h_pied - Fixe - valeur = 0.0015
h_semelle - Fixe - valeur = 0.001
K_aero - Fixe - valeur = 1.73
k_eddy - Fixe - valeur = 3.7E-4
k_hyst - Fixe - valeur = 0.044
K_meca - Fixe - valeur = 17.919
l_chanf - Fixe - valeur = 0.0015
L_tetes_bobines - Fixe - valeur = 0.008
M_sup - Fixe - valeur = 0.0
M_v_cu - Fixe - valeur = 8960.0
M_v_fer - Fixe - valeur = 7870.0
mu_r_dent - Fixe - valeur = 1000.0
N - Fixe - valeur = 1500.0
n_couches - Fixe - valeur = 5.0
N_phases - Fixe - valeur = 3.0
Nepp - Fixe - valeur = 1.0
p - Fixe - valeur = 6.0
Ra - Fixe - valeur = 0.00865
Rd - Fixe - valeur = 0.0094
rho_0_cu - Fixe - valeur = 1.72E-8
rho_fer_griffe - Fixe - valeur = 9.7E-8
rho_fer_stator - Fixe - valeur = 2.2E-7
steinmetz - Fixe - valeur = 1.62
T_cu_rotor - Fixe - valeur = 130.0
T_cu_stator - Fixe - valeur = 120.0
Ub - Fixe - valeur = 14.0
Vbb - Fixe - valeur = 0.75
Vd - Fixe - valeur = 0.75
Vr - Fixe - valeur = 0.8
/*Les contraintes sur les sortie*/
B_coude - Interval = [0.01..2.0]
B_culasse - Interval = [0.01..2.0]
B_dents - Interval = [0.01..2.0]
B_entrefer - Interval = [0.01..2.0]
B_griffe - Interval = [0.01..2.0]
B_noyau - Interval = [0.01..2.0]
B_plateau - Interval = [0.01..2.0]
c1 - Interval = [-1.0E-7..1.0E-7]
c10 - Interval = [-1.0E-7..1.0E-7]
c11 - Interval = [-1.0E-7..1.0E-7]
c12 - Interval = [-1.0E-7..1.0E-7]
c2 - Interval = [-1.0E-7..1.0E-7]
c3 - Interval = [-1.0E-7..1.0E-7]
c4 - Interval = [-1.0E-7..1.0E-7]
c5 - Interval = [-1.0E-7..1.0E-7]
c6 - Interval = [-1.0E-7..1.0E-7]
c7 - Interval = [-1.0E-7..1.0E-7]
c8 - Interval = [-1.0E-7..1.0E-7]
c9 - Interval = [-1.0E-7..1.0E-7]
contrainte_trapeze - Interval = [0.001..0.1]
delta_rotor - Interval = [1.0..2.0E7]
delta_stator - Interval = [1.0..5.0E7]
dgg - Interval = [0.002..0.03]
ecart_longueur - Interval = [0.0..0.001]
entrefer - Interval = [2.5E-4..0.003]
foisonnement_bob_rotor - Interval = [0.0..0.7]
h_base_bec - Interval = [0.001..0.03]
h_culasse - Interval = [0.001..0.04]
Imoyen - Interval = [54.4..54.5]
l_fond_encoche - Interval = [0.001..0.03]
P_electrique - Interval = [750.0..1500.0]
rdm_griffe - Interval = [0.0..2.9]
remplissage_encoche - Interval = [0.0..0.4]
rendement - Interval = [70.0..100.0]
masse - Minimize - valuer = 5.0 - weight = 1.0
/*L'optimiseur*/
Optimizer = SQP
Optimizer.Precision = 1.0E-5
Optimizer.Max Iteration = 100
Le résultat d’optimisation
/*Les valeurs d'entrée trouvées*/
Nex - valeur initiale = 370.0 - valeur trouvée = 358.7339994276839
N_cond_par_encoche - valeur initiale = 8.0 - valeur trouvée = 9.862251072216864
R_ext_stator - valeur initiale = 0.06775 - valeur trouvée = 0.06699860773574176
R_int_stator - valeur initiale = 0.053 - valeur trouvée = 0.0466097249149832
R_ext_rotor - valeur initiale = 0.05265 - valeur trouvée = 0.0463597249149832
Rn - valeur initiale = 0.02965 - valeur trouvée = 0.026628123788948545
l_base_griffe - valeur initiale = 0.0283 - valeur trouvée = 0.03671378850385128
lstator - valeur initiale = 0.03305 - valeur trouvée = 0.02181424795527241
ln - valeur initiale = 0.03245 - valeur trouvée = 0.020814247955272414
hd - valeur initiale = 0.0105 - valeur trouvée = 0.015419040172520306
ep - valeur initiale = 0.0122 - valeur trouvée = 0.00927198674686363
l_bout_griffe - valeur initiale = 0.0065 - valeur trouvée = 0.003 (limite min)
ouv_encoche - valeur initiale = 0.0028 - valeur trouvée = 0.0028 (limite min)
largeur_dent - valeur initiale = 0.0034 - valeur trouvée = 0.003672697111407895
h_plateau - valeur initiale = 0.0117 - valeur trouvée = 0.010854414083606923
h_bec - valeur initiale = 0.0025 - valeur trouvée = 0.001 (limite min)
S_fil_stator - valeur initiale = 1.54E-6 - valeur trouvée = 1.7153412826908718E-6 (limite max)
psi7 - valeur initiale = 4.2949665E-4 - valeur trouvée = 3.312057012570586E-4
S_fil_rotor - valeur initiale = 7.4E-7 - valeur trouvée = 4.408518554986462E-7 (limite max)
Iq - valeur initiale = 32.32 - valeur trouvée = 27.64281022274342
Id - valeur initiale = 26.91 - valeur trouvée = 31.47828341950079
psi9 - valeur initiale = -7.340152E-6 - valeur trouvée = -2.369073390956402E-6
psi8 - valeur initiale = 5.5845326E-4 - valeur trouvée = 4.902561822028892E-4
psi6 - valeur initiale = -7.75419E-6 - valeur trouvée = -5.404802613228786E-6
psi5 - valeur initiale = -7.75419E-6 - valeur trouvée = -5.404802613228786E-6
psi4 - valeur initiale = 5.454755E-4 - valeur trouvée = 4.824918051340233E-4
psi3 - valeur initiale = 5.454755E-4 - valeur trouvée = 4.824918051340231E-4
psi2 - valeur initiale = 5.470850189E-4 - valeur trouvée = 4.832341841103402E-4
psi10 - valeur initiale = -7.340152E-6 - valeur trouvée = -2.369073390956402E-6
psi1 - valeur initiale = 5.470850189E-4 - valeur trouvée = 4.8323418411033974E-4
/*Les valeurs de sorties trouvées*/
masse - valeur = 3.06021037386753 (Minimisée)
P_electrique - valeur = 761.599610352304
rendement - valeur = 69.99999200421388 (limite min)
Imoyen - valeur = style="color:DodgerBlue">54.39997216802171 (limite min)
delta_stator - valeur = 1.221121023154052E7
delta_rotor - valeur = 6590898.831750753
B_plateau - valeur = 1.567682541018877
B_noyau - valeur = 1.4551547464436858
B_griffe - valeur = 1.4565689981467054
B_entrefer - valeur = 1.0476842658386833
B_dents - valeur = 1.5471046542881568
B_culasse - valeur = 1.5275130329138682
B_coude - valeur = 1.4104258677240165
dgg - valeur = 0.0034325053493829212
l_fond_encoche - valeur = 0.007153364705822553
h_culasse - valeur = 0.004969842648238257
h_base_bec - valeur = 0.007877187042427729
contrainte_trapeze - valeur = 0.033713788503851275
entrefer - valeur = 2.500000000000002E-4 (limite min)
remplissage_encoche - valeur = 0.39999998148404264
rdm_griffe - valeur = 2.3446895796824556
foisonnement_bob_rotor - valeur = 0.7000001016984344 (limite max)
ecart_longueur - valeur = 9.999999999999974E-4 (limite max)
c9 - valeur = 0.0024100208129809175 (limite max)
c8 - valeur = -0.0016992662494885735 (limite min)
c7 - valeur = 0.0011423838803352737 (limite max)
c6 - valeur = 0.00235477534367895 (limite max)
c5 - valeur = 0.0023547753435940177 (limite max)
c4 - valeur = 0.003944981722091984 (limite max)
c3 - valeur = 0.003944981955832594 (limite max)
c2 - valeur = -6.406115659274292E-4 (limite min)
c12 - valeur = 7.016416752492205E-6 (limite max)
c11 - valeur = 2.181903182574274E-5 (limite max)
c10 - valeur = 0.0024100208130946044 (limite max)
c1 - valeur = -6.406117987580728E-4 (limite min)
Le post-processing
Le post-processeur de Cades peut servir pour montrer l’évolution de la fonction objectif à travers d’itérations d’optimisation :