* fichier : tokaflu.dgibi graph = faux; **** @ACBLM DEBPROC @ACBLM VXL*CHPOINT VYL*CHPOINT VZL*CHPOINT TAB1*TABLE ; * ******************************************************************** * Procedure de changement de base. On passe de la base cartesienne * * locale de l'objet modelise a la base cartesienne du maillage. L' * * axe Y de la base locale est dirige du point de tangence vers le * * centre du plasma. Alain MOAL (juillet-aout 1995) * ******************************************************************** * *--------------- VARIABLES D'ENTREE : CP = TAB1.'CENTRE_PLASMA' ; PTG = TAB1.'PT_TGPLASMA' ; SI (EXISTE TAB1 <PLAN) ; IPLAN = TAB1.<PLAN ; SINON ; FINSI ; FINSI ; *------------------------------------ * VECT0 = CP MOINS PTG ; * *---- calcul de l'angle de rotation dans le plan XY SI ((VX EGA 0.) ET (VY EGA 0.)) ; ANG1 = 0. ; SINON ; ANG1 = -1.* (ATG VX VY) ; FINSI ; * SI (EGA IPLAN 'PHICONS'); * ---- Coupe 2D a Phi constant VXL1 = VZL ; VYL1 = VYL ; VZL1 = VXL * (-1.); * ---- rotation VXM = VXL1 * (COS ANG1) + (VYL1 * (-1.) * (SIN ANG1)); VYM = VXL1 * (SIN ANG1) + (VYL1 * (COS ANG1)) ; VZM = VZL1 ; FINSI ; SI (EGA IPLAN 'THETACONS'); * ---- Coupe 2D a Theta constant * ---- rotation VXM = VXL * (COS ANG1) + (VYL * (-1.) * (SIN ANG1)) ; VYM = VXL * (SIN ANG1) + (VYL * (COS ANG1)) ; VZM = VZL ; FINSI; SINON ; * * ---- calcul de l'angle de rotation dans le plan Y1Z1 VX1 = VX * (COS ANG1) + (VY * (SIN ANG1)) ; VY1 = VX * (-1.) * (SIN ANG1) + (VY * (COS ANG1)) ; VZ1 = VZ ; * SI ((VY1 EGA 0.) ET (VZ1 EGA 0.)) ; ANG2 = 0. ; SINON ; ANG2 = ATG VZ1 VY1 ; FINSI ; * * ---- rotations VXL1 = VXL ; VYL1 = VYL * (COS ANG2) + (VZL * (-1.) * (SIN ANG2)); VZL1 = VYL * (SIN ANG2) + (VZL * (COS ANG2)) ; * VXM = VXL1 * (COS ANG1) + (VYL1 * (-1.) * (SIN ANG1)) ; VYM = VXL1 * (SIN ANG1) + (VYL1 * (COS ANG1)) ; VZM = VZL1 ; FINSI ; FINPROC VXM VYM VZM ; **** @ACBML DEBPROC @ACBML VXM*CHPOINT VYM*CHPOINT VZM*CHPOINT TAB1*TABLE ; * ********************************************************************** * Procedure de changement de base. On passe de la base cartesienne * * du maillage a la base cartesienne locale de l'objet modelise. L' * * axe Y est dirige du point de tangence vers le centre du plasma. * * Alain MOAL (juillet-aout 1995) * ********************************************************************** * *--------------- VARIABLES D'ENTREE : CP = TAB1.'CENTRE_PLASMA' ; PTG = TAB1.'PT_TGPLASMA' ; SI (EXISTE TAB1 <PLAN) ; IPLAN = TAB1.<PLAN ; SINON ; FINSI ; FINSI ; *------------------------------------ * VECT0 = CP MOINS PTG ; * *---- calcul de l'angle de rotation dans le plan XY SI ((VX EGA 0.) ET (VY EGA 0.)) ; ANG1 = 0. ; SINON ; ANG1 = -1.* (ATG VX VY) ; FINSI ; * * ---- rotation pour aligner l'axe Y avec VECT0 SI (EGA IPLAN 'PHICONS'); * ---- Coupe 2D a Phi constant VXL1 = VXM * (COS ANG1) + (VYM * (SIN ANG1)); VYL1 = VXM * (-1.) * (SIN ANG1) + (VYM * (COS ANG1)); VZL1 = VZM ; * ---- Coupe 2D a Phi constant VXL = VZL1 ; VYL = VYL1 ; VZL = VXL1 * (-1.); FINSI ; SI (EGA IPLAN 'THETACONS'); * ---- Coupe 2D a Theta constant * ---- rotation VXL = VXM * (COS ANG1) + (VYM * (SIN ANG1)); VYL = VXM * (-1.) * (SIN ANG1) + (VYM * (COS ANG1)); VZL = VZM ; FINSI ; * SINON ; * ---- rotation pour aligner l'axe Y avec VECT0 VXM1 = VXM * (COS ANG1) + (VYM * (SIN ANG1)); VYM1 = VXM * (-1.) * (SIN ANG1) + (VYM * (COS ANG1)); VZM1 = VZM ; * VX1 = VX * (COS ANG1) + (VY * (SIN ANG1)) ; VY1 = VX * (-1.) * (SIN ANG1) + (VY * (COS ANG1)) ; VZ1 = VZ ; * * ---- calcul de l'angle de rotation dans le plan Y1Z1 SI ((VY1 EGA 0.) ET (VZ1 EGA 0.)) ; ANG2 = 0. ; SINON ; ANG2 = ATG VZ1 VY1 ; FINSI ; * VXL = VXM1 ; VYL = VYM1 * (COS ANG2) + (VZM1 * (SIN ANG2)); VZL = VYM1 * (-1.) * (SIN ANG2) + (VZM1 * (COS ANG2)); * FINSI ; *MESS '>>>> @CBMLV' ; LIST VXL ; LIST VYL ; LIST VZL ; FINPROC VXL VYL VZL ; **** @ACRLM DEBPROC @ACRLM XL*CHPOINT YL*CHPOINT ZL*CHPOINT TAB1*TABLE ; * ******************************************************************* * Procedure de changement de repere. On passe du repere cartesien * * local de l'objet modelise au repere cartesien du maillage. Le * * point de tangence au plasma est l'origine du repere local et * * l'axe Y est dirige vers le centre du plasma. * * Alain MOAL (juillet-aout 1995) * ******************************************************************* * *--------------- VARIABLES D'ENTREE : CP = TAB1.'CENTRE_PLASMA' ; PTG = TAB1.'PT_TGPLASMA' ; SI (EXISTE TAB1 <PLAN) ; IPLAN = TAB1.<PLAN ; SINON ; FINSI ; FINSI ; *------------------------------------ * VECT0 = CP MOINS PTG ; * *---- calcul de l'angle de rotation dans le plan XY SI ((VX EGA 0.) ET (VY EGA 0.)) ; ANG1 = 0. ; SINON ; ANG1 = -1.* (ATG VX VY) ; FINSI ; * * SI (EGA IPLAN 'PHICONS'); * ---- Coupe 2D a Phi constant XL = ZL ; ZL = ZL * 0.; * ---- rotation XL1 = XL * (COS ANG1) + (YL * (-1.) * (SIN ANG1)); YL1 = XL * (SIN ANG1) + (YL * (COS ANG1)); FINSI; SI (EGA IPLAN 'THETACONS'); * ---- Coupe 2D a Theta constant * ---- rotation XL1 = XL * (COS ANG1) + (YL * (-1.) * (SIN ANG1)); YL1 = XL * (SIN ANG1) + (YL * (COS ANG1)); FINSI; * ---- changement d'origine du repere XM = XL1 + XPTG ; YM = YL1 + YPTG ; ZM = YL1 * 0. ; SINON ; * * ---- calcul de l'angle de rotation dans le plan Y1Z1 VX1 = VX * (COS ANG1) + (VY * (SIN ANG1)) ; VY1 = VX * (-1.) * (SIN ANG1) + (VY * (COS ANG1)) ; VZ1 = VZ ; * SI ((VY1 EGA 0.) ET (VZ1 EGA 0.)) ; ANG2 = 0. ; SINON ; ANG2 = ATG VZ1 VY1 ; FINSI ; * * ---- rotations XL1 = XL ; YL1 = YL * (COS ANG2) + (ZL * (-1.) * (SIN ANG2)) ; ZL1 = YL * (SIN ANG2) + (ZL * (COS ANG2)) ; * XL2 = XL1 * (COS ANG1) + (YL1 * (-1.) * (SIN ANG1)) ; YL2 = XL1 * (SIN ANG1) + (YL1 * (COS ANG1)) ; ZL2 = ZL1 ; * * ---- changement d'origine du repere XM = XL2 + XPTG ; YM = YL2 + YPTG ; ZM = ZL2 + ZPTG ; FINSI ; FINPROC XM YM ZM ; **** @ACRML DEBPROC @ACRML XM*CHPOINT YM*CHPOINT ZM*CHPOINT TAB1*TABLE ; * ******************************************************************* * Procedure de changement de repere. On passe du repere cartesien * * du maillage au repere cartesien local de l'objet modelise. Le * * point de tangence au plasma est l'origine de ce repere et l'axe * * l'axe Y final est dirige vers le centre du plasma. * * en 3D l'axe x initial doit etre l'axe toroidal * * en 2D cas PHICONS l'axe Z initial est l'axe toroidal * * en 2D cas THETACONS l'axe x initial est l'axe toroidal * * Alain MOAL (juillet-aout 1995) * ******************************************************************* * *--------------- VARIABLES D'ENTREE : CP = TAB1.'CENTRE_PLASMA' ; PTG = TAB1.'PT_TGPLASMA' ; SI (EXISTE TAB1 <PLAN) ; IPLAN = TAB1.<PLAN ; SINON ; FINSI ; FINSI ; *------------------------------------ * VECT0 = CP MOINS PTG ; * *---- calcul de l'angle de rotation dans le plan XY SI ((VX EGA 0.) ET (VY EGA 0.)) ; ANG1 = 0. ; SINON ; ANG1 = -1.* (ATG VX VY) ; FINSI ; * * * ---- changement d'origine du repere XM1 = XM - XPTG ; YM1 = YM - YPTG ; * ---- rotation pour aligner l'axe Y avec VECT0 SI (EGA IPLAN 'PHICONS'); * ---- Coupe 2D a Phi constant XL = XM1 * (COS ANG1) + (YM1 * (SIN ANG1)); YL = XM1 * (-1.) * (SIN ANG1) + (YM1 * (COS ANG1)); ZL = XM * 0. ; * ZL = XL ; XL = XL * 0.; FINSI; SI (EGA IPLAN 'THETACONS'); * ---- Coupe 2D a Theta constant XL = XM1 * (COS ANG1) + (YM1 * (SIN ANG1)); YL = XM1 * (-1.) * (SIN ANG1) + (YM1 * (COS ANG1)); ZL = XM * 0. ; FINSI ; * SINON ; * ---- changement d'origine du repere XM1 = XM - XPTG ; YM1 = YM - YPTG ; ZM1 = ZM - ZPTG ; * ---- rotation pour aligner l'axe Y avec VECT0 XM2 = XM1 * (COS ANG1) + (YM1 * (SIN ANG1)) ; YM2 = XM1 * (-1.) * (SIN ANG1) + (YM1 * (COS ANG1)) ; ZM2 = ZM1 ; * VX1 = VX * (COS ANG1) + (VY * (SIN ANG1)) ; VY1 = VX * (-1.) * (SIN ANG1) + (VY * (COS ANG1)) ; VZ1 = VZ ; * * ---- calcul de l'angle de rotation dans le plan Y1Z1 SI ((VY1 EGA 0.) ET (VZ1 EGA 0.)) ; ANG2 = 0. ; SINON ; ANG2 = ATG VZ1 VY1 ; FINSI ; * XL = XM2 ; YL = YM2 * (COS ANG2) + (ZM2 * (SIN ANG2)) ; ZL = YM2 * (-1.) * (SIN ANG2) + (ZM2 * (COS ANG2)) ; * FINSI ; *MESS '>>>> @CRMLC : XL' ; LIST XL ; LIST YL ; LIST ZL ; FINPROC XL YL ZL ; **** @AMPLI DEBPROC @AMPLI XV*CHPOINT YV*CHPOINT ZV*CHPOINT VALDIM*ENTIER MAIL0*MAILLAGE ; * ************************************************************* * Procedure d'adaptation du facteur d'amplification utilise * * pour visualiser un champ de vecteur sur une geometrie. * * Alain MOAL (juillet 1995) * ************************************************************* * SI (VALDIM EGA 2) ; ZM = XM * 0. ; SINON ; FINSI ; * *---- norme du vecteur VECNORM = ((XV * XV) + (YV * YV) + (ZV * ZV))**0.5 ; * *---- calcul d'une longueur caracteristique du maillage * SI (VALDIM EGA 2) ; SINON ; FINSI ; * * FINPROC AMPLI0 ; **** @ANADES DEBPROC @ANADES TAB1*TABLE ; * ************************************************* * Procedure (inspiree de @ANALY) permettant de * * descendre les lignes de champ et de calculer * * avec une methode analytique exacte les points * * d'intersection sur le plan de reference pour * * recuperer les valeurs du flux normalise. * * Alain MOAL (Fevrier 2001) * ************************************************* * * *--------------- VARIABLES D'ENTREE : S_OMBRE = TAB1.LFLUX_EXTE ; S_OMBRAN = TAB1.<MAILLAGE_FN ; CHSIGN1 = TAB1.<CHAMP_SIGNE ; PASB2 = TAB1.<LONGUEUR_PAS_AVEC_TEST ; DMAX2 = TAB1.<DISTANCE_AVEC_TEST ; NBPAS2 = TAB1.<NOMBRE_PAS_AVEC_TEST ; PASB1 = TAB1.<LONGUEUR_PAS_SANS_TEST ; DMAX1 = TAB1.<DISTANCE_SANS_TEST ; NBPAS1 = TAB1.<NOMBRE_PAS_SANS_TEST ; TOL1 = 1.e-9 ; *------------------------------------ * * --- PASSAGE EN TRI3 POUR LA PROCEDURE @INTSEC s_ombra2 = squtri3 et stri3 ; sinon ; finsi ; * * --- CONSTRUCTION DU MAILLAGE DES POINTS A SUIVRE TABPTS1 = table ; npts = 1 ; tablig1 = table ; * --- CREATION DES 3 CHMELEM DE COORDONNEES AUX ELEMENTS TAB1.<MAILLAGE = S_OMBRA2 ; *AM*27/01/04 @RMXYZ TAB1 ; @RMCOORO TAB1 ; * --- CALCUL DES NORMALES AUX ELEMENTS SUR LE MAILLAGE OMBRANT *AM*27/01/04 @AMNORM TAB1 ; @RMNORM TAB1 ; * ---- Flux normalise sur le maillage ombrant @RMFLUN TAB1 ; MESS ' '; MESS 'WITHOUT TEST'; MESS 'Distance covered :' DMAX1 ; MESS 'Step :' PASB1 ; MESS 'Iterations number :' NBPAS1 ; MESS ' '; MESS 'WITH TEST'; MESS 'Distance covered :' DMAX2 ; MESS 'Step :' PASB2 ; MESS 'Iterations number :' NBPAS2 ; MESS ' ' ; * --- initialisation du pas I1 = 0 ; * ---initialisation de la distance de connexion * --- initialisation du flux normalise * --- initialisation du maillage ou on va tester les intersections s_ombre2 = s_ombre ; * --- initialisation du maillage ou on va remonter les lignes mailcou = s_ombre2 et mailpts ; * ---- initialisation des distances LCOURAN1 = 0. ; LMAX1 = 0. ; * ---- coordonnees * * --- initialisation des lignes de champ remontees REPETER BOUPTS1 NPTS ; tablig1 . &BOUPTS1 = TABPTS1 . &BOUPTS1 ; FIN BOUPTS1 ; *-------------------------------------------------------------- * * DEBUT DE LA BOUCLE DE REMONTEE ITERATIVE DES LIGNES DE CHAMP * *-------------------------------------------------------------- * * ----- sans test d'interception PASB0 = PASB1 ; * increment de la distance de connexion (= PAS tant qu'il n'y a pas * d'intersection) * * initialisation a 0 des deplacements DEPX0 = XG_OLD * 0. ; DEPY0 = YG_OLD * 0. ; DEPZ0 = ZG_OLD * 0. ; TAB1.<DEPLACEMENT = DEPX0 ET DEPY0 ET DEPZ0 ; SI (NBPAS1 NEG 0) ; MESS 'WITHOUT INTERCEPTION TEST'; REPETER BOUCLE1 NBPAS1 ; I1 = I1 + 1 ; LCOURAN1 = LCOURAN1 + PASB0 ; MESS ' '; MESS 'ITERATION : ' I1 'distance covered' LCOURAN1 ; * ---- Appel de la procedure de descente des lignes de champ XG_NEW YG_NEW ZG_NEW DEP0 = @descend XG_OLD YG_OLD ZG_OLD PASB0 CHSIGN1 TAB1; FORM DEP0 ; TAB1.<DEPLACEMENT = TAB1.<DEPLACEMENT + DEP0 ; * --- CHPOINT CONTENANT LES DISTANCES PARCOURUES AVANT INTERCEPTION chdist = chdist + CHDIST9 ; * --- construction des lignes de champ remontees * --- Extraction des coordonnees des points a remonter * xmailpt2 = redu XG_NEW mailpts ; * ymailpt2 = redu YG_NEW mailpts ; * zmailpt2 = redu ZG_NEW mailpts ; * * --- Construction des lignes de remontee * repeter boupts2 npts ; * xprem2 = extr xmailpt2 SCAL (tabpts1 . &boupts2) ; * yprem2 = extr ymailpt2 SCAL (tabpts1 . &boupts2) ; * zprem2 = extr zmailpt2 SCAL (tabpts1 . &boupts2) ; * prem2 = xprem2 yprem2 zprem2 ; * tablig1.&boupts2 = (tablig1 . &boupts2) d 1 prem2 ; * fin boupts2 ; * --- actualisation des champs de coordonnees pour iteration suivante XG_OLD = XG_NEW ; YG_OLD = YG_NEW ; ZG_OLD = ZG_NEW ; MENA ; FIN BOUCLE1 ; FINSI ; MESS 'WITH INTERCEPTION TEST'; PASB0 = PASB2 ; mailcou = s_ombre2 et mailpts ; I2 = 0 ; I3 = 0 ; REPETER BOUCLE2 NBPAS2 ; I1 = I1 + 1 ; I3 = I3 + 1 ; * ---- si il reste des noeuds non encore intersectes LCOURAN1 = LCOURAN1 + PASB0 ; MESS ' '; MESS 'ITERATION : ' I1 'distance covered' LCOURAN1 ; * ---- Appel de la procedure de descente des lignes de champ XG_NEW YG_NEW ZG_NEW DEP0 = @DESCEND XG_OLD YG_OLD ZG_OLD PASB0 CHSIGN1 TAB1 ; * ---- test sur les eventuels noeuds interceptes * ---- Les CHPO sont reduits sur les points de s_ombre * ---- qui n'ont pas encore ete intersectes : s_ombre2 CH_OLD = XG_OLD_R ET YG_OLD_R ET ZG_OLD_R ; CH_NEW = XG_NEW_R ET YG_NEW_R ET ZG_NEW_R ; * * ---- Test d'interception * CHDIST9 MINTER CHFN9 DEPMP1 = @INTSEC CH_OLD CH_NEW TOL1 TAB1 ; * CHDIST9 = CHPO CONTENANT PAS POUR LES NOEUDS INTERSECTES * ET D(M,PT_REMONTE) SINON * S_OMBRE2 contient les noeuds de s_ombre qui n'ont * pas ete intesectes * s_ombre0 contient les noeuds qui ont deja ete intersectes * minter contient les noeuds qui viennent d'etre intersectes TITRE 'TEST : POINTS INTERCEPTES (BLANC ET JAUNE)' ; * DEP0 = DEP01 ET DEP02 ET DEPMP1 ; SINON ; DEP0 = DEP01 ET DEP02 ; FINSI ; FORM DEP0 ; * ---- Test * i9 = 0 ; * repeter bouc01 (nbno (EXTR DEP0 'MAIL')) ; * i9 = i9 + 1 ; * list ((EXTR DEP0 'MAIL') poin i9) ; * list (redu CHFN9 ((EXTR DEP0 'MAIL') poin i9)) ; * fin bouc01 ; * TITRE 'TEST : NOEUDS SUPPORTS DU DEPLACEMENT'; * TRAC (EXTR DEP0 'MAIL') ; * ---- Fin test TAB1.<DEPLACEMENT = TAB1.<DEPLACEMENT + DEP0 ; * ---- actualisation du maillage de descente mailcou = s_ombre2 et mailpts ; FINSI ; * ---- Distances parcourues avant interception chdist = chdist + CHDIST9 ; chfnorm = chfnorm + chfn9 ; * list chfnorm ; * --- construction des lignes de champ remontees * --- Extraction des coordonnees des points a remonter * xmailpt2 = redu XG_NEW mailpts ; * ymailpt2 = redu YG_NEW mailpts ; * zmailpt2 = redu ZG_NEW mailpts ; * * --- Construction des lignes de descentes * repeter boupts3 npts ; * xprem2 = extr xmailpt2 SCAL (tabpts1 . &boupts3) ; * yprem2 = extr ymailpt2 SCAL (tabpts1 . &boupts3) ; * zprem2 = extr zmailpt2 SCAL (tabpts1 . &boupts3) ; * prem2 = xprem2 yprem2 zprem2 ; * tablig1 . &boupts3 = (tablig1 . &boupts3) d 1 prem2 ; * fin boupts3 ; * --- actualisation des champs de coordonnees pour iteration suivante MENA ; sinon ; SI (I2 EGA 0) ; MESS ' '; MESS 'ALL POINTS ARE INTERCEPTED' ; MESS ' '; I2 = I1 ; FINSI ; finsi ; FIN BOUCLE2 ; *--- Sorties dans TAB1 TAB1.<CHAMP_DISTANCE = CHDIST ; TAB1.<LONGUEUR_CONNEXION_MAX = LMAX1 ; TAB1.<LONGUEUR_PARCOURUE = LCOURAN1 ; *si (exis tab1 <remontee) ; * tab1 . <remontee . <ligne = tablig1 ; *finsi ; FINPROC chfnorm ; **** @ANAJET DEBPROC @ANAJET TAB1*TABLE ; MESS 'METHODE ANALYTIQUE' ; * *--------------- VARIABLES D'ENTREE : * S_OMBRE = TAB1.<S_OMBRE ; S_OMBRAN = TAB1.<S_OMBRANT ; IMETHOD = TAB1.<METHODE_REMONTEE ; CHSIGN1 = TAB1.<CHSIGN ; TABPTS1 = TAB1.<REMONTEE.<POINT ; tablig1 = table ; finsi ; PASB2 = TAB1.<PAS_AVEC_TEST ; DMAX2 = TAB1.<DIST_AVEC_TEST ; NBPAS2 = TAB1.<NBPAS2 ; PASB1 = TAB1.<PAS_SANS_TEST ; DMAX1 = TAB1.<DIST_SANS_TEST ; NBPAS1 = TAB1.<NBPAS1 ; FINSI ; TOL1 = TAB1.<TOLERANCE ; SINON ; TOL1 = 1.e-9 ; FINSI ; * * --- PASSAGE EN TRI3 POUR LA PROC @INTERC * si (ntyp ega 2) ; s_ombra2 = squtri3 et stri3 ; sinon ; finsi ; * --- CONSTRUCTION DU MAILLAGE DES POINTS A REMONTER REPETER BOUPTS1 (NPTS - 1) ; MAILPTS = MAILPTS ET TABPTS1 . (&BOUPTS1 + 1) ; FIN BOUPTS1 ; sinon ; * RM 15/06/2000 MAILPTS = MANU POI1 (s_ombre poin init) ; TABPTS1 = table ; npts = 1 ; tablig1 = table ; finsi ; si (non (tab1.<reprise)) ; * --- CREATION DES 3 CHMELEM DE COORDONNEES AUX ELEMENTS * --- Remarque : ces coordonnees seront exprimees dans le repere globale TAB1.<MAILLAGE = S_OMBRA2 ; *AM*27/01/04 si (non (exis tab1 <chamx1)) ; *AM*27/01/04 @AMCOORO TAB1 ; @RMCOORO TAB1 ; *AM*27/01/04 finsi ; * --- CALCUL DES NORMALES AUX ELEMENTS SUR LE MAILLAGE OMBRANT *AM*27/01/04 si (non (exis tab1 <cosx)) ; @RMNORM TAB1 ; *AM*27/01/04 finsi ; finsi ; * * --- Rappel des parametres de la procedure * MESS ' '; MESS '##################################################'; MESS ' '; MESS ' '; si (tab1.<reprise) ; mess 'Reprise d un calcul'; finsi ; SI (IMETHOD EGA 1) ; FINSI ; SI (IMETHOD EGA 2) ; FINSI ; SI (IMETHOD EGA 3) ; FINSI ; SI (IMETHOD EGA 4) ; FINSI ; MESS ' '; MESS 'Calcul en deux parties :'; MESS ' '; MESS 'SANS TEST'; MESS 'Distance remontee :' DMAX1 ; MESS 'Pas pour la remontee :' PASB1 ; MESS 'Nombre d iterations :' NBPAS1 ; MESS ' '; MESS 'AVEC TEST'; MESS 'Distance remontee :' DMAX2 ; MESS 'Pas pour la remontee :' PASB2 ; MESS 'Nombre d iterations :' NBPAS2 ; SINON ; MESS 'Calcul avec test systematique :'; MESS 'Distance remontee :' DMAX2 ; MESS 'Pas de remontee :' PASB2 ; MESS 'Nombre d iterations :' NBPAS2 ; FINSI ; MESS ' ' ; * *-------------------------------------------------------------- * * INITIALISATION DE LA BOUCLE DE REMONTEE ITERATIVE DES LIGNES DE CHAMP * --- CAS SANS REPRISE --- *-------------------------------------------------------------- si (non (tab1.<reprise)) ; * --- initialisation du pas I1 = 0 ; * ---initialisation de la distance de connexion * --- initialisation du maillage ou on va tester les intersections s_ombre2 = s_ombre ; * --- initialisation du maillage ou on va remonter les lignes mailcou = s_ombre2 et mailpts ; *---- initialisation des distances LCOURAN1 = 0. ; LMAX1 = 0. ; * ---- coordonnees dans le repere du maillage *---- Coordonnees dans le repere global du tore XG_OLD = XM0 ; YG_OLD = YM0 ; ZG_OLD = ZM0 ; * * --- initialisation des lignes de champ remontees REPETER BOUPTS1 NPTS ; tablig1 . &BOUPTS1 = TABPTS1 . &BOUPTS1 ; FIN BOUPTS1 ; sinon ; * *-------------------------------------------------------------- * * INITIALISATION DE LA BOUCLE DE REMONTEE ITERATIVE DES LIGNES DE CHAMP * --- CAS AVEC REPRISE --- *-------------------------------------------------------------- * --- initialisation du pas I1 = tab1.<i_ombrage ; * --- initialisation de la distance de connexion CHDIST = tab1.<chdist; * --- initialisation du maillage ou on va tester les intersections s_ombre2 = tab1.<s_omb_non_inter ; * --- initialisation du maillage ou on va remonter les lignes mailcou = s_ombre2 et mailpts ; *---- initialisation des distances LMAX1 = tab1.<CONNEXION_MAX ; *---- Coordonnees dans le repere global du tore * * --- initialisation des lignes de champ remontees tablig1 = tab1.<remontee.<ligne ; sinon ; finsi ; finsi ; *-------------------------------------------------------------- * * DEBUT DE LA BOUCLE DE REMONTEE ITERATIVE DES LIGNES DE CHAMP * *-------------------------------------------------------------- * MESS ' '; MESS '##################################################'; MESS ' '; * ------------------ Boucle 1 on remonte sans test ------------------- PASB0 = PASB1 ; * increment de la distance de connexion (= PAS tant qu'il n'y a pas * d'intersection) * * initialisation a 0 des deplacements DEPX0 = XG_OLD * 0. ; DEPY0 = YG_OLD * 0. ; DEPZ0 = ZG_OLD * 0. ; TAB1.<DEPLACE = DEPX0 ET DEPY0 ET DEPZ0 ; MESS 'PREMIERE PARTIE DU CALCUL, SANS TEST D INTERSECTION'; REPETER BOUCLE1 NBPAS1 ; I1 = I1 + 1 ; LCOURAN1 = LCOURAN1 + PASB0 ; MESS ' '; MESS 'ITERATION : ' I1 'distance remontee' LCOURAN1 ; * ---- Appel de la procedure de remontee des lignes de champ XG_NEW YG_NEW ZG_NEW DEP0 = @remojet XG_OLD YG_OLD ZG_OLD PASB0 CHSIGN1 TAB1 ; FORM DEP0 ; TAB1.<DEPLACE = TAB1.<DEPLACE + DEP0 ; TITRE 'SANS TEST, ITERATION : 'I1 ; *--- CHPOINT CONTENANT LES DISTANCES PARCOURUES AVANT INTERCEPTION chdist = chdist + CHDIST9 ; *----------------------------------------------------------------- *--- construction des lignes de champ remontees * --- Extraction des coordonnees des points a remonter * --- Calcul des coordonnees des points a remonter dans le repere du maillage xmailpt2 = xmailpt1 ; ymailpt2 = ymailpt1 ; zmailpt2 = zmailpt1 ; * * --- Construction des lignes de remontee repeter boupts2 npts ; prem2 = xprem2 yprem2 zprem2 ; tablig1.&boupts2 = (tablig1 . &boupts2) d 1 prem2 ; fin boupts2 ; **----------------------------------------------------------------- * --- actualisation des champs de coordonnees pour iteration suivante XG_OLD = XG_NEW ; YG_OLD = YG_NEW ; ZG_OLD = ZG_NEW ; MENA ; FIN BOUCLE1 ; * ------------------------ Fin de la boucle 1 ------------------------ finsi ; MESS ' '; MESS '##################################################'; MESS ' '; MESS 'CALCUL AVEC TEST D INTERSECTION'; * ------------------ Boucle 2 on remonte avec test ------------------- PASB0 = PASB2 ; si (non (tab1.<reprise)) ; mailcou = s_ombre2 et mailpts ; finsi ; REPETER BOUCLE2 NBPAS2 ; I1 = I1 + 1 ; LCOURAN1 = LCOURAN1 + PASB0 ; MESS ' '; MESS 'ITERATION : ' I1 'distance remontee' LCOURAN1 ; * ---- Appel de la procedure de remonter des lignes de champ XG_NEW YG_NEW ZG_NEW DEP0 = @remojet XG_OLD YG_OLD ZG_OLD PASB0 CHSIGN1 TAB1 ; *---- ------test sur les eventuels noeuds interceptes ----------- *---- seulement s'il reste des noeuds non encore intersectes ---- * --- Les CHPO sont reduits sur les points de s_ombre * --- qui n'ont pas encore ete intersectes : s_ombre2 CH_OLD = XG_OLD_R ET YG_OLD_R ET ZG_OLD_R ; CH_NEW = XG_NEW_R ET YG_NEW_R ET ZG_NEW_R ; * * --- APPEL DE LA PROCEDURE DE CALCUL DES NOEUDS INTERSECTES * * CHDIST9 MINTER = @INTERC CH_OLD CH_NEW TOL1 TAB1 ; * CHDIST9 = CHPO CONTENANT PAS POUR LES NOEUDS INTERSECTES * ET D(M,PT_REMONTE) SINON * S_OMBRE2 contient les noeuds de s_ombre qui n'ont * pas ete intesectes. * actualisation du maillage de remontee mailcou = s_ombre2 et mailpts ; FINSI ; * --- CHPOINT CONTENANT LES DISTANCES PARCOURUES AVANT INTERCEPTION chdist = chdist + CHDIST9 ; finsi ; * ------------------ fin du test d'interception ------------------ *----------------------------------------------------------------- *--- construction des lignes de champ remontees *--- Extraction des coordonnees des points a remonter *--- Calcul des coordonnees des points a remonter dans le repere du maillage xmailpt2 = xmailpt1 ; ymailpt2 = ymailpt1 ; zmailpt2 = zmailpt1 ; *--- Construction des lignes de remontee repeter boupts3 npts ; prem2 = xprem2 yprem2 zprem2 ; tablig1 . &boupts3 = (tablig1 . &boupts3) d 1 prem2 ; fin boupts3 ; *----------------------------------------------------------------- * --- actualisation des champs de coordonnees pour iteration suivante MENA ; FORM DEP0 ; TAB1.<DEPLACE = TAB1.<DEPLACE + DEP0 ; TITRE 'AVEC TEST, ITERATION : 'I1 ; FIN BOUCLE2 ; * --------------------- Fin de la boucle 2 ---------------------- *--- Sorties dans TAB1 TAB1.<CHDIST = CHDIST ; TAB1.<CONNEXION_MAX = LMAX1 ; TAB1.<LONGUEUR_REMONTEE = LCOURAN1 ; tab1 . <remontee . <ligne = tablig1 ; finsi ; *Sauvegardes pour reprise eventuelle tab1.<CHCOOR0 = (XG_OLD et YG_OLD et ZG_OLD) ; tab1.<s_omb_non_inter = s_ombre2 ; tab1.<i_ombrage = i1 ; FINPROC ; **** @ANALY DEBPROC @ANALY TAB1*TABLE ; MESS 'METHODE ANALYTIQUE' ; * *--------------- VARIABLES D'ENTREE : * S_OMBRE = TAB1.<S_OMBRE ; S_OMBRAN = TAB1.<S_OMBRANT ; IMETHOD = TAB1.<METHODE_REMONTEE ; CHSIGN1 = TAB1.<CHSIGN ; TYPCAL = TAB1.<TYPE_CALCUL ; RP = TAB1.<RP ; RHO0 = TAB1.<RHO0 ; RR = TAB1.<RR ; HP = TAB1.<HP ; EPS0 = TAB1.<EPS ; COEFA = TAB1.<COEFA ; COEFB = TAB1.<COEFB ; COEFC = TAB1.<COEFC ; NBOB = TAB1.<NBOB ; TABPTS1 = TAB1.<REMONTEE.<POINT ; tablig1 = table ; finsi ; PASB2 = TAB1.<PAS_AVEC_TEST ; DMAX2 = TAB1.<DIST_AVEC_TEST ; NBPAS2 = TAB1.<NBPAS2 ; PASB1 = TAB1.<PAS_SANS_TEST ; DMAX1 = TAB1.<DIST_SANS_TEST ; NBPAS1 = TAB1.<NBPAS1 ; FINSI ; TOL1 = TAB1.<TOLERANCE ; SINON ; TOL1 = 1.e-9 ; FINSI ; * * --- PASSAGE EN TRI3 POUR LA PROC @INTERC * si (ntyp ega 2) ; s_ombra2 = squtri3 et stri3 ; sinon ; finsi ; * * --- * SI (EGA TYPCAL 'AVEC_SHIFT_AVEC_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'AVEC_SHIFT_SANS_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = FAUX ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_AVEC_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_SANS_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = FAUX ; FINSI ; SI ((NON (EXISTE ISHIFT)) OU (NON (EXISTE IRIPPLE))) ; FINSI ; * --- CONSTRUCTION DU MAILLAGE DES POINTS A REMONTER REPETER BOUPTS1 (NPTS - 1) ; MAILPTS = MAILPTS ET TABPTS1 . (&BOUPTS1 + 1) ; FIN BOUPTS1 ; sinon ; * RM 15/06/2000 MAILPTS = MANU POI1 (s_ombre poin init) ; TABPTS1 = table ; npts = 1 ; tablig1 = table ; finsi ; si (non (tab1.<reprise)) ; * --- CREATION DES 3 CHMELEM DE COORDONNEES AUX ELEMENTS * --- Remarque : ces coordonnees seront exprimees dans le repere globale TAB1.<MAILLAGE = S_OMBRA2 ; @RMCOORO TAB1 ; finsi ; * --- CALCUL DES NORMALES AUX ELEMENTS SUR LE MAILLAGE OMBRANT @RMNORM TAB1 ; finsi ; finsi ; * * --- Rappel des parametres de la procedure * MESS ' '; MESS '##################################################'; MESS ' '; MESS ' '; si (tab1.<reprise) ; mess 'Reprise d un calcul'; finsi ; SI (IMETHOD EGA 1) ; FINSI ; SI (IMETHOD EGA 2) ; FINSI ; SI (IMETHOD EGA 3) ; FINSI ; SI (IMETHOD EGA 4) ; FINSI ; MESS ' '; MESS 'Calcul en deux parties :'; MESS ' '; MESS 'SANS TEST'; MESS 'Distance remontee :' DMAX1 ; MESS 'Pas pour la remontee :' PASB1 ; MESS 'Nombre d iterations :' NBPAS1 ; MESS ' '; MESS 'AVEC TEST'; MESS 'Distance remontee :' DMAX2 ; MESS 'Pas pour la remontee :' PASB2 ; MESS 'Nombre d iterations :' NBPAS2 ; SINON ; MESS 'Calcul avec test systematique :'; MESS 'Distance remontee :' DMAX2 ; MESS 'Pas de remontee :' PASB2 ; MESS 'Nombre d iterations :' NBPAS2 ; FINSI ; MESS ' ' ; SI ISHIFT ; MESS 'Calcul avec shift de Safranov' ; SINON ; MESS 'Calcul sans shift de Safranov'; FINSI ; SI IRIPPLE ; MESS 'Calcul avec ripple du champ toroidal' ; SINON ; MESS 'Calcul sans ripple du champ toroidal' ; FINSI ; * *-------------------------------------------------------------- * * INITIALISATION DE LA BOUCLE DE REMONTEE ITERATIVE DES LIGNES DE CHAMP * --- CAS SANS REPRISE --- *-------------------------------------------------------------- si (non (tab1.<reprise)) ; * --- initialisation du pas I1 = 0 ; * ---initialisation de la distance de connexion * --- initialisation du maillage ou on va tester les intersections s_ombre2 = s_ombre ; * --- initialisation du maillage ou on va remonter les lignes mailcou = s_ombre2 et mailpts ; *---- initialisation des distances LCOURAN1 = 0. ; LMAX1 = 0. ; * ---- coordonnees dans le repere du maillage *---- Coordonnees dans le repere global du tore XG_OLD YG_OLD ZG_OLD = @CRMGC XM0 YM0 ZM0 TAB1 ; * * --- initialisation des lignes de champ remontees REPETER BOUPTS1 NPTS ; tablig1 . &BOUPTS1 = TABPTS1 . &BOUPTS1 ; FIN BOUPTS1 ; sinon ; * *-------------------------------------------------------------- * * INITIALISATION DE LA BOUCLE DE REMONTEE ITERATIVE DES LIGNES DE CHAMP * --- CAS AVEC REPRISE --- *-------------------------------------------------------------- * --- initialisation du pas I1 = tab1.<i_ombrage ; * --- initialisation de la distance de connexion CHDIST = tab1.<chdist; * --- initialisation du maillage ou on va tester les intersections s_ombre2 = tab1.<s_omb_non_inter ; * --- initialisation du maillage ou on va remonter les lignes mailcou = s_ombre2 et mailpts ; *---- initialisation des distances LMAX1 = tab1.<CONNEXION_MAX ; *---- Coordonnees dans le repere global du tore * * --- initialisation des lignes de champ remontees tablig1 = tab1.<remontee.<ligne ; sinon ; finsi ; finsi ; *-------------------------------------------------------------- * * DEBUT DE LA BOUCLE DE REMONTEE ITERATIVE DES LIGNES DE CHAMP * *-------------------------------------------------------------- * MESS ' '; MESS '##################################################'; MESS ' '; * ------------------ Boucle 1 on remonte sans test ------------------- PASB0 = PASB1 ; * increment de la distance de connexion (= PAS tant qu'il n'y a pas * d'intersection) MESS 'PREMIERE PARTIE DU CALCUL, SANS TEST D INTERSECTION'; REPETER BOUCLE1 NBPAS1 ; I1 = I1 + 1 ; LCOURAN1 = LCOURAN1 + PASB0 ; MESS ' '; MESS 'ITERATION : ' I1 'distance remontee' LCOURAN1 ; * ---- Appel de la procedure de remontee des lignes de champ XG_NEW YG_NEW ZG_NEW = @remonte XG_OLD YG_OLD ZG_OLD PASB0 CHSIGN1 TAB1 ; *--- CHPOINT CONTENANT LES DISTANCES PARCOURUES AVANT INTERCEPTION chdist = chdist + CHDIST9 ; *----------------------------------------------------------------- *--- construction des lignes de champ remontees * --- Extraction des coordonnees des points a remonter * --- Calcul des coordonnees des points a remonter dans le repere du maillage xmailpt2 ymailpt2 zmailpt2 = @crgmc xmailpt1 ymailpt1 zmailpt1 tab1 ; * * --- Construction des lignes de remontee repeter boupts2 npts ; prem2 = xprem2 yprem2 zprem2 ; tablig1.&boupts2 = (tablig1 . &boupts2) d 1 prem2 ; fin boupts2 ; **----------------------------------------------------------------- * --- actualisation des champs de coordonnees pour iteration suivante XG_OLD = XG_NEW ; YG_OLD = YG_NEW ; ZG_OLD = ZG_NEW ; MENA ; FIN BOUCLE1 ; * ------------------------ Fin de la boucle 1 ------------------------ finsi ; MESS ' '; MESS '##################################################'; MESS ' '; MESS 'CALCUL AVEC TEST D INTERSECTION'; * ------------------ Boucle 2 on remonte avec test ------------------- PASB0 = PASB2 ; si (non (tab1.<reprise)) ; mailcou = s_ombre2 et mailpts ; finsi ; REPETER BOUCLE2 NBPAS2 ; I1 = I1 + 1 ; LCOURAN1 = LCOURAN1 + PASB0 ; MESS ' '; MESS 'ITERATION : ' I1 'distance remontee' LCOURAN1 ; * ---- Appel de la procedure de remonter des lignes de champ XG_NEW YG_NEW ZG_NEW = @remonte XG_OLD YG_OLD ZG_OLD PASB0 CHSIGN1 TAB1 ; *---- ------test sur les eventuels noeuds interceptes ----------- *---- seulement s'il reste des noeuds non encore intersectes ---- * --- Les CHPO sont reduits sur les points de s_ombre * --- qui n'ont pas encore ete intersectes : s_ombre2 CH_OLD = XG_OLD_R ET YG_OLD_R ET ZG_OLD_R ; CH_NEW = XG_NEW_R ET YG_NEW_R ET ZG_NEW_R ; * * --- APPEL DE LA PROCEDURE DE CALCUL DES NOEUDS INTERSECTES * * CHDIST9 MINTER = @INTERC CH_OLD CH_NEW TOL1 TAB1 ; * CHDIST9 = CHPO CONTENANT PAS POUR LES NOEUDS INTERSECTES * ET D(M,PT_REMONTE) SINON * S_OMBRE2 contient les noeuds de s_ombre qui n'ont * pas ete intesectes. * actualisation du maillage de remontee mailcou = s_ombre2 et mailpts ; FINSI ; * --- CHPOINT CONTENANT LES DISTANCES PARCOURUES AVANT INTERCEPTION chdist = chdist + CHDIST9 ; finsi ; * ------------------ fin du test d'interception ------------------ *----------------------------------------------------------------- *--- construction des lignes de champ remontees *--- Extraction des coordonnees des points a remonter *--- Calcul des coordonnees des points a remonter dans le repere du maillage xmailpt2 ymailpt2 zmailpt2 = @crgmc xmailpt1 ymailpt1 zmailpt1 tab1 ; *--- Construction des lignes de remontee repeter boupts3 npts ; prem2 = xprem2 yprem2 zprem2 ; tablig1 . &boupts3 = (tablig1 . &boupts3) d 1 prem2 ; fin boupts3 ; *----------------------------------------------------------------- * --- actualisation des champs de coordonnees pour iteration suivante MENA ; FIN BOUCLE2 ; * --------------------- Fin de la boucle 2 ---------------------- *--- Sorties dans TAB1 TAB1.<CHDIST = CHDIST ; TAB1.<CONNEXION_MAX = LMAX1 ; TAB1.<LONGUEUR_REMONTEE = LCOURAN1 ; tab1 . <remontee . <ligne = tablig1 ; finsi ; *Sauvegardes pour reprise eventuelle tab1.<CHCOOR0 = (XG_OLD et YG_OLD et ZG_OLD) ; tab1.<s_omb_non_inter = s_ombre2 ; tab1.<i_ombrage = i1 ; FINPROC ; **** @ARANGU DEBPROC @ARANGU T1*FLOTTANT V1*FLOTTANT E1*FLOTTANT ; *-------------------------------------------------------------------* * R. Mitteau * Fatigue du cuivre OFHC * * D'apres la publi * * * High Temperature Torsional Low Cycle Fatigue of OFHC Copper * Ahmet Aran and Dogan Erdun Gucer, Material Research Division, * Marmara Research Institute... * * in Z. Metallkunde * T1 temperature en degres K * V1 vitesse de deformation en s-1 * E1 Deformation en . * * *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 *-------------------------------------------------------------------* * * --- donnees * * Temperature de la matiere en Kelvin TLIEU1 = T1 ; * Variation equivalente de la deformation au lieu considere EPSETOI1 = E1 ; * Vitesse de deformation VDEF1 = V1 ; * * --- Calcul du alpha de la loi de Mansson-Coffin * VALALPH1 = IPOE EVALPH1 TLIEU1 FIXE; VALALPH2 = IPOE EVALPH2 TLIEU1 FIXE; ALPHA1 = IPOE VDEF1 EVALPH3 LINE; * * --- Calcul du C de la loi de Mansson-Coffin * VALC1 = IPOE EVC1 TLIEU1 FIXE; VALC2 = IPOE EVC2 TLIEU1 FIXE; CA1 = IPOE VDEF1 EVC3 LINE; * * --- Calcul du nombre de cycles * NCYCLES1 = (CA1/EPSETOI1) ** (1. / ALPHA1) ; NCYCLES2 = ENTI (NCYCLES1 + 1); FINPROC NCYCLES1; **** @BOWRI72 DEBPROC @BOWRI72 TAB_1*TABLE ; * * * CALCUL DU FLUX CRITIQUE SUIVANT LA CORRELATION DE BOWRING *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 * * --- entrees * INIVEAU1 = TAB_1.'NIVEAU' ; D_DIAM1 = TAB_1.'D_DIAM' ; L_LONG1 = TAB_1.'L_HEATED' ; P_PRES1 = TAB_1.'P_IN' ; V_VITE1 = TAB_1.'V_IN' ; T_TEMP1 = TAB_1.'T_IN' ; TEST1 = FAUX ; SI (EXISTE TAB1 ANNULE_D_DEF); SI TAB1.ANNULE_D_DEF ; TEST1 = VRAI; FINSI ; FINSI ; * * --- racine * SI (INIVEAU1 >EG 2 ) ; FINSI ; PI = 3.14159; LOGI_1 = EXISTE TAB_1 EPTSAT; LOGI_2 = EXISTE TAB_1 ETHFG; LOGI_3 = EXISTE TAB_1 ETRHOF; LOGI_4 = EXISTE TAB_1 ETCPF; SI (NON (LOGI_1 ET LOGI_2 ET LOGI_3 ET LOGI_4)); @TABEAU TAB_1 ; FINSI ; * * --- Test du domaine de definition des entrees * G_VITE1 = V_VITE1 * (@IPOE TAB_1.ETRHOF T_TEMP1); SI TEST1 ; * - test sur la vitesse de l'eau SI ((G_VITE1 < 136.) OU ( G_VITE1 > 18600.)) ; MESS 'Vitesse massique : ' G_VITE1; FINSI ; * - test sur le diametre SI ((D_DIAM1 < 2.E-3) OU (D_DIAM1 > 450.E-3)) ; MESS 'Diametre : ' D_DIAM1; FINSI ; * - test sur la Pression SI ((P_PRES1 < 1.E5) OU (P_PRES1 > 200.E5)) ; MESS 'Pression : ' P_PRES1; FINSI ; * - test sur la longueur chauffee SI ((L_LONG1 < 0.15) OU (L_LONG1 > 3.7)) ; MESS 'Longueur : ' L_LONG1; FINSI ; * Fin des tests sur les entrees de @BOWRI72 FINSI ; T_SAT = @IPOE TAB_1.EPTSAT P_PRES1 ; P1 = P_PRES1 / 6900000. ; SI (INIVEAU1 >EG 2) ; MESS 'P_PRIME : ' P1 ; FINSI ; SI (P1 <EG 1.) ; F1 = (((P1 ** 18.942) * (EXP (20.8 * (1. - P1)))) + 0.917) / 1.917; F2 = (F1 * 1.309)/(((P1 ** 1.316)*(EXP(2.444*(1. - P1)))) + 0.309); F3 = (((P1 ** 17.023)*(EXP(16.658*(1. - P1)))) + 0.667)/1.667; F4 = F3 * (P1 ** 1.649) ; SINON ; F1 = (P1 ** (-0.368))*(EXP(0.648*(1. - P1))); F2 = (P1 ** (-0.448))*(EXP(0.245*(1. - P1))); F3 = P1 ** 0.219; F4 = F3 * (P1 ** 1.649) ; FINSI ; SI (INIVEAU1 >EG 2) ; MESS 'F1 : ' F1 ; MESS 'F2 : ' F2 ; MESS 'F3 : ' F3 ; MESS 'F4 : ' F4 ; FINSI ; L_VAP = @IPOE TAB_1.ETHFG T_TEMP1 ; CP__1 = @IPOE TAB_1.ETCPF T_TEMP1 ; S_SAT = CP__1 * (T_SAT - T_TEMP1) ; SI (INIVEAU1 >EG 2) ; MESS 'L_VAP : ' L_VAP ; MESS 'CP__1 : ' CP__1 ; MESS 'S_SAT : ' S_SAT ; FINSI ; A__1 = 0.5793 * L_VAP * D_DIAM1 * G_VITE1 * F1 / (1. + (0.0143 * F2 * (D_DIAM1 ** .5) * G_VITE1 )) ; B__1 = .25 * D_DIAM1 * G_VITE1 ; C__1 = 0.077 * D_DIAM1 * G_VITE1 * F3 / (1. + (0.347 * F4 * ((G_VITE1/1356.) ** (2. - (.5 * P1))))) ; SI (INIVEAU1 >EG 5) ; MESS 'A : ' A__1 ; MESS 'B : ' B__1 ; MESS 'C : ' C__1 ; FINSI ; QCHFW = (A__1 + (B__1 * S_SAT)) / (C__1 + L_LONG1) ; G1 = G_VITE1 * PI * D_DIAM1 * D_DIAM1 / 4. ; * * --- sortie de la procedure * SI ( INIVEAU1 >EG 1 ) ; FINSI ; SI (INIVEAU1 >EG 2 ) ; FINSI ; * * --- sorties * TAB1.CHF = QCHFW ; FINPROC ; debproc @calcflu mod1*mmodel cht1*chpoint mat1*chpoint ; flux1 = mat1 * gradt1 ; finproc flux1 ; **** @CALHCON DEBPROC @CALHCON TAB_1*TABLE ; * * !!! R. MITTEAU !!! attention, procedure standard * * un pointeur dans /CASTEM9X/procedures pointe sur cette procedure * pour les mises a jour * *-------------------------------------------------------------------* * * * COEFFICIENT D ECHANGE TENANT COMPTE * * DE L EBULLITION SOUS SATUREE * * * *-------------------------------------------------------------------* * DIAM = TAB_1 . D_MAQUETTE ; TTAPE = TAB_1 . T_TAPE ; YTW1 = TAB_1 . TWIST_RATIO ; V1 = TAB_1 . V_LOCAL ; *js 20/4/95 je change T_MOY en t_local ???? T_LOC1 = TAB_1 . 'T_LOCAL' ; NIVEAU = TAB_1.'NIVEAU' ; P_LOCAL1 = TAB_1.'P_LOCAL' ; L1TRAC = TAB_1.'TRAC_GRAPHE' ; * SI (NIVEAU >EG 4) ; FINSI ; * * PI = 3.14159 ; *S1 = PI * DIAM * DIAM / 4. ; SI ( NON ( EXISTE TAB_1 HYPERVAP ) ) ; TAB_1.HYPERVAP = FAUX ; FINSI ; SI ( ( YTW1 EGA 0. 1.E-6 ) ET ( EGA TAB_1.HYPERVAP FAUX ) ) ; S1 = PI * DIAM * DIAM / 4. ; TAB_1.DH = DIAM ; FACV = 1. ; FACF = 1. ; FINSI ; SI ( NON ( EXISTE TAB_1 HELI_WIRE ) ) ; TAB_1.HELI_WIRE = FAUX ; FINSI ; SI ( ( YTW1 EGA 0. 1.E-6 ) ET ( EGA TAB_1.HELI_WIRE VRAI ) ET ( EGA TAB_1.HYPERVAP FAUX ) ) ; S1 = PI * DIAM * DIAM / 4. ; SM = PI * TAB_1.WIRE_D * TAB_1.WIRE_D / 4. ; P1 = PI * DIAM ; PM = PI * TAB_1.WIRE_D ; TAB_1.DH = 4. * ( S1 - SM ) / ( P1 + PM ) ; PIS2Y = PI / ( 2 * TAB_1.PITCH_WIRE ) ; FACV = ( 1. + ( PIS2Y ** 2 ) ) ** 0.5 ; * FACV = 1. ; FACF = 1. ; FINSI ; * SI ( ( YTW1 EGA 0. 1.E-6 ) ET ( EGA TAB_1.HYPERVAP VRAI ) ) ; SM = ( TAB_1 . LARG_CANAL * TAB_1 . HMIN_CANAL ) + ( 2. * ( TAB_1 . LARG_ESP * TAB_1 . HFIN ) ) ; PM = TAB_1 . LARG_CANAL + ( 2.* TAB_1 . HMAX_CANAL ) + ( 2. * TAB_1 . LARG_ESP ) + ( 2. * TAB_1 . HFIN ) + TAB_1 . LFIN ; TAB_1.DH = 4. * SM / PM ; FACV = 1. ; * FACF = 2.25 ; * modif 261099 calcul du rapport Strue/Sapparent * N CURT SI (TAB_1.HFIN > 0. ) ; S_E1 = ((4.*TAB_1.HFIN)+(2.*TAB_1.LARG_ESP)+(TAB_1.LFIN))* (TAB_1.FF + TAB_1.f0) ; S_E2 = ((4.*TAB_1.HFIN)+(2.*TAB_1.LARG_ESP)+(TAB_1.LFIN))* (TAB_1.FF) ; S_E3 = 2.* (TAB_1.LFIN * (TAB_1.HFIN - TAB_1.RFIN)) ; S_E4 = PI * ( TAB_1.RFIN * TAB_1.LFIN) ; S_E5 = 2. * (( TAB_1.HFIN + TAB_1.LARG_ESP) * TAB_1.f0) ; S_E6 = TAB_1.RFIN * ((2.*TAB_1.f0)-(PI* TAB_1.RFIN)) ; FACF = (S_E2+S_E3+S_E4+S_E5+S_E6)/ S_E1 ; SINON ; FACF = 1. ; FINSI ; *fin modif TAB_1.FACCF = FACF ; TAB_1.HYP_SM = SM ; FINSI ; SI ( YTW1 > 0. ) ; QUAS = 4. * ( ( PI * DIAM * DIAM / 8.) - ( TTAPE * DIAM / 2. ) ) ; PERI = ( ( PI * DIAM / 2.) - TTAPE + DIAM ) ; TAB_1.DH = QUAS / PERI ; PIS2Y = PI / ( 2. * YTW1 ) ; FACV = ( 1. + ( PIS2Y ** 2 ) ) ** 0.5 ; FACF = 1.15 ; FINSI ; SI ( EXISTE TAB_1 RIP_FLOWS ) ; S1 = ( TAB_1 . RIP_FLOWS ) ; FINSI ; SI ( EXISTE TAB_1 RIP_WETP ) ; PERI = ( TAB_1 . RIP_WETP ) ; TAB_1.DH = 4. * S1 / PERI ; FINSI ; SI ( EXISTE TAB_1 RIP_TWIST ) ; PIS2Y = PI / ( 2. *( TAB_1 . RIP_TWIST ) ) ; FACV2 = ( 1. + ( PIS2Y ** 2 ) ) ** 0.5 ; FINSI ; SI ( EGA TAB_1.HYPERVAP FAUX ) ; FACD = ( DIAM / TAB_1.DH ) ** 0.2 ; FACT = ( FACV ** 0.8 ) * FACD * FACF ; SINON ; FACD = 1. ; FACT = ( FACV ** 0.8 ) * FACD * FACF ; FINSI ; * modif pour calcul W7x provisoire * adaptation du coef correctif W7X du au swirl * N CURT 18012000 * SI ( EGA TAB_1.HYPERVAP FAUX ) ; * SI (YTW1 > 0. ) ; * FACF = 2.18 * ((YTW1)**(-1 * 0.09)) ; * FACF = 2.26 * ((YTW1)**(-1 * 0.248)) ; * FACD = 1. ; * FACV = 1. ; * FACT = ( FACV ** 0.8 ) * FACD * FACF ; * SINON ; *FACD = ( DIAM / TAB_1.DH ) ** 0.2 ; * FACT = ( FACV ** 0.8 ) * FACD * FACF ; * FINSI ; * SINON ; * FACD = 1. ; * FINSI ; * fin modif * * attention modification par R. MITTEAU le 7 fevrier 1994 * j'ai rajoute les " FIXE " pour pouvoir passer un calcul * dans lequel l'eau est quasi immobile. Car dans ce cas les valeurs * sont en dehors des tables * avant modif *TSAT = @IPOE P_LOCAL1 TAB_1.EPTSAT ; *NNU = @IPOE T_LOC1 TAB_1.ETNNU ; *RHO = @IPOE T_LOC1 TAB_1.ETRHOF ; *PR = @IPOE T_LOC1 TAB_1.ETPRAF ; *LLAM = @IPOE T_LOC1 TAB_1.ETLLA ; *NNUB = @IPOE T_LOC1 TAB_1.ETNNU ; * apres modif raph *MESS '>>PRESS T_MOY S1' P_LOCAL T_LOC1 ; TSAT = @IPOE P_LOCAL1 TAB_1.EPTSAT FIXE ; NNU = @IPOE T_LOC1 TAB_1.ETNNU FIXE ; RHO = @IPOE T_LOC1 TAB_1.ETRHOF FIXE ; PR = @IPOE T_LOC1 TAB_1.ETPRAF FIXE ; LLAM = @IPOE T_LOC1 TAB_1.ETLLA FIXE ; NNUB = @IPOE T_LOC1 TAB_1.ETNNU FIXE ; * RE = RHO * ( NNU ** -1 ) * V1 * TAB_1.DH * FACV ; * SI ( T_LOC1 < TSAT ) ; LTWALL1 = PROG -52. pas 25. (T_LOC1 + 0.01) pas 25. TSAT pas 25. 350. 400. 450. 500. 1500. 2550. 3000. 3500. 20000. ; SINON ; FINSI ; * LNNUW = @IPOE LTWALL1 TAB_1.ETNNU 'FIXE' ; *modif NCURT 10012000 *calcul nb de Prandtl sur le mur LPRW = @IPOE LTWALL1 TAB_1.ETPRAF 'FIXE' ; *fin modif * LM_ITETA = LTWALL1 MASQUE 'INFERIEUR' T_LOC1 ; LM_STETA = LTWALL1 MASQUE 'EGSUP' T_LOC1 ; * *SI ( EGA TAB_1.L_CONVECT 'DITTUS_BOELTER' ) ; NUS_2 = FACF * 0.023 * ( RE ** 0.8 ) * ( PR ** 0.4 ) ; NUS_1 = FACF * 0.023 * ( RE ** 0.8 ) * ( PR ** 0.3 ) ; LNUS = ( LNUS_1 * LM_ITETA ) + ( LNUS_2 * LM_STETA ) ; LH_DB = LNUS * LLAM / TAB_1.DH ; LFC_DB = ( LTWALL1 - LTETA ) * LH_DB; TITRE 'DITTUS_BOELTER' ; *FINSI ; * *SI ( EGA TAB_1.L_CONVECT 'SIEDER_TATE' ) ; NUS1 = FACF * 0.027 * ( RE ** 0.8 ) * ( PR ** ( 1. / 3. )) ; LNUS = ( ( LNNUW / NNUB ) ** -0.14 ) * NUS1 ; LH_ST = LNUS * ( LLAM / TAB_1.DH ) ; LFC_ST = ( LTWALL1 - LTETA ) * LH_ST ; TITRE 'SIEDER_TATE' ; *FINSI ; * *SI ( EGA TAB_1.L_CONVECT 'PETHUKOV' ) ; F_P = (1. / ( 1.82 * ( ( LOG RE ) / ( LOG 10.) ) - 1.64 )) ** 2 ; X_P = 1.07 + (12.7 * (PR ** (2. / 3.) - 1.) * ( (F_P / 8.) ** 0.5 )); NUS1 = ( RE * PR * F_P ) / ( X_P * 8. ) ; LNUS_2 = ( ( LNNUW / NNUB ) ** -0.11 ) * FACF * NUS1 ; LNUS_1 = ( ( LNNUW / NNUB ) ** -0.25 ) * FACF * NUS1 ; LNUS = (LNUS_1 * LM_ITETA) + (LNUS_2 * LM_STETA) ; LH_P = LNUS * ( LLAM /TAB_1.DH ) ; LFC_P = ( LTWALL1 - LTETA ) * LH_P ; TITRE 'PETHUKOV' ; *FINSI ; *modif NCURT 10012000 *adaptation de la correlation non courte de Gnielinski *cf Greuner 260499 *SI ( EGA TAB_1.L_CONVECT 'GNIELINSKI' ) ; F_G = (1. / (1.82 * ( ( LOG RE ) / ( LOG 10.)) - 1.64 )) ** 2 ; R_G = ( (PR ** (2. / 3.)) - 1.) * ( (F_G / 8.) ** 0.5) ; X_G = 1. + (12.7 * R_G); NUS3 = FACF * (((RE - 1000.)* PR) * F_G) / ( X_G * 8.) ; * correlation courte * NUS3 = FACF * 0.012 * ((RE ** 0.87) - 280. ) * (PR ** 0.4) ; LNUS = ( ( LPRW / PR ) ** -0.11 ) * NUS3 ; LH_GN = LNUS * ( LLAM/TAB_1.DH) ; LFC_GN = ( LTWALL1 - LTETA ) * LH_GN ; TITRE 'GNIELINSKI' ; *fin modif *SI ( EGA TAB_1.L_CONVECT 'JB_CONVEC' ) ; SI (NON ( YTW1 EGA 0. 1.E-6 ) ) ; FACFJB = 1. + ( 0.7 / YTW1 ) ; SINON ; FACFJB = 1. ; FINSI ; NUS_3 = FACFJB * 0.023 * ( RE ** 0.8 ) * ( PR ** 0.4 ) ; LNUS = ( ( LNNUW / NNUB ) ** -0.25 ) * NUS_3 ; LH_JB = LNUS * ( LLAM / TAB_1.DH ) ; LFC_JB = ( LTWALL1 - LTETA ) * LH_JB ; TITRE 'JB_CONVEC' ; *FINSI ; * SI ( NON ( EXISTE TAB_1 L_CONVECT ) ) ; *js TAB_1.L_CONVECT = 'DITTUS_BOELTER' ; TAB_1.L_CONVECT = 'SIEDER_TATE' ; FINSI ; * SI ( EGA TAB_1.L_CONVECT 'DITTUS_BOELTER' ) ; LHCONV = LH_DB ; FINSI ; * SI ( EGA TAB_1.L_CONVECT 'SIEDER_TATE' ) ; LHCONV = LH_ST ; FINSI ; * SI ( EGA TAB_1.L_CONVECT 'PETHUKOV' ) ; LHCONV = LH_P ; FINSI ; * SI ( EGA TAB_1.L_CONVECT 'JB_CONVEC') ; LHCONV = LH_JB ; FINSI ; *modif 10012000 SI ( EGA TAB_1.L_CONVECT 'GNIELINSKI') ; LHCONV = LH_GN ; FINSI ; *fin modif * * Calculation of TONB FONB Bergles & Rohsenow correlation * IONB = 0 ; TB1 = TSAT + 15. ; REPETER BOUCONB ; IONB = IONB + 1 ; SI ( IONB > 7 ) ; QUITTER BOUCONB ; FINSI ; PRATIO = P_LOCAL1 * 1.E-5 ; EXPO1 = 1. / ( 0.463 * ( PRATIO ** 0.0234 ) ) ; DUM = ( 1. / 0.556 ) * ( TB1 - TSAT ) ; FTBA = 1082. *( PRATIO ** 1.156 )* ( DUM ** EXPO1 ) ; FTB = ( HCONV * ( TB1 - T_LOC1 ) ) - FTBA ; ; * **** CALCUL DE LA DERIVEE PAR RAPPORT A TB1-TETA ********** FTB1 = HCONV - ( ( EXPO1 * FTBA ) / ( TB1 - TSAT ) ) ; * **** CALCUL DU NOUVEAU TB ********** TONB = TB1 - ( FTB / FTB1 ) ; SI ( ( ABS ( TONB -TB1 ) ) <EG 0.1 ) ; QUITTER BOUCONB ; FINSI ; TB1 = TONB ; FIN BOUCONB ; * * SI ( T_LOC1 < TSAT ) ; LTWALL2 = PROG -52. pas 25. (T_LOC1 + 0.01) pas 25. TSAT pas 5. (TONB + 0.01) pas 5. (TONB + 50.) pas 25. 450. 500. 1500. 3000. 2.1E4 ; SINON ; LTWALL2 = PROG -52. pas 25. TSAT pas 5. (TONB + 0.01) pas 5. (TONB + 50.) pas 25. 450. 500. 1500. 3000. 2.1E4 ; FINSI ; LTWALL = LTWALL2 ; * LHCONV = @ITPLT LTWALL1 LHCONV 'FIXE' LTWALL2 ; * LM_ITSAT = LTWALL MASQUE 'INFERIEUR' TSAT ; LM_STSAT = LTWALL MASQUE 'EGSUPE' TSAT ; LM_ITONB = LTWALL MASQUE 'INFERIEUR' TONB ; LM_STONB = LTWALL MASQUE 'EGSUPE' TONB ; LM_ITON1 = LTWALL MASQUE 'EGINFE' TONB ; LM_STON1 = LTWALL MASQUE 'SUPERIEUR' TONB ; * *SI ( EGA TAB_1.L_SUBNB 'THOM' ) ; VEXPTM = EXP ( 1.E-5 * P_LOCAL1 / 87. ) ; LFB_TM = ( LTWALL - LTSAT ) * ( VEXPTM / 22.65 ) ; LFB_TM = ( LFB_TM ** 2 ) * 1.E6 ; LFB_TM = LFB_TM * LM_STSAT ; TITRE 'THOM' ; EVOFB_T1 = EVOFB_TM ; *FINSI ; * SI ( NON ( EXISTE TAB_1 L_SUBNB ) ) ; TAB_1.L_SUBNB = 'THOM_CEA' ; SI ( NON ( EXISTE TAB_1 V_EXPTHOM ) ) ; TAB_1 . V_EXPTHOM = 2.8 ; FINSI ; FINSI ; * SI ( EGA TAB_1.L_SUBNB 'THOM_CEA' ) ; VEXPTM = EXP ( 1.E-5 * P_LOCAL1 / 87. ) ; LFB_TM = ( LTWALL - LTSAT ) * ( VEXPTM / 22.65 ) ; E_TMP = TAB_1.V_EXPTHOM / 2. ; LFB_TMP = (( LFB_TM ** 2 ) ** E_TMP) * 1.E6 ; LFB_TMP = LFB_TMP * LM_STSAT ; TITRE 'THOM_CEA' ; EVOFB_T1 = EVOFB_T1 ET EVFB_TMP ; FINSI ; * SI ( EGA TAB_1.L_SUBNB 'T_JAERI' ) ; VEXPTM = EXP ( 1.E-5 * P_LOCAL1 / 87. ) ; LFB_TM = ( LTWALL - LTSAT ) * ( VEXPTM / 25.72 ) ; E_TMJ = 3 / 2. ; LFB_TMJ = (( LFB_TM ** 2 ) ** E_TMJ) * 1.E6 ; LFB_TMJ = LFB_TMJ * LM_STSAT ; TITRE 'T_JAERI' ; EVOFB_T1 = EVOFB_T1 ET EVFB_TMJ ; FINSI ; * *SI ( EGA TAB_1.L_SUBNB 'JENS_LOTTES' ) ; VEXPJL = EXP ( 1.E-5 * P_LOCAL1 / 62. ) ; LFB_JL = ( LTWALL - LTSAT ) * ( VEXPJL / 25. ) ; LFB_JL = ( LFB_JL ** 4 ) * 1.E6 ; LFB_JL = LFB_JL * LM_STSAT ; TITRE 'JENS_LOTTES' ; *FINSI ; * SI ( EGA TAB_1.L_SUBNB 'YIN' ) ; D_YIN1 = 7.195 * ( TAB_1.GAM_YIN ** 1.82 ) ; D_YIN2 = ( 1.E-5 * P_LOCAL1 ) ** 0.072 ; LFB_YIN = ( 1.E6 * ( LTWALL - LTSAT ) ) / ( D_YIN1 * D_YIN2 ) ; LFB_YIN = LFB_YIN * LM_STSAT ; TITRE 'YIN' ; FINSI ; * TAC1 = TABLE ; TAC1.1 = 'MARQ CROI REGU' ; TAC1.3 = 'MARQ ETOI REGU' ; TAC1.4 = 'MARQ LOSA REGU' ; TAC1.5 = 'MARQ CARR REGU' ; TAC1.6 = 'MARQ TRIB REGU' ; * TAC2 = TABLE ; TAC2.1 = 'MARQ CARR REGU' ; TAC2.2 = 'MARQ LOSA REGU' ; TAC2.4 = 'MARQ TRIB REGU' ; * * MESS '>@CALHCON> MASS FLOW RATE ( KG/S ) : ' * (V1 * S1 * RHO) ; *MESS '>@CALHCON> TUBE DIAMETER (M) : ' DIAM ; *MESS '>@CALHCON> FACTOR DUE TO TWISTED VELOCITY : ' FACV ; *MESS ' EXPERIMENTAL CRITICAL FLUX : ' FCR1 ; * * * SI ( EGA TAB_1.L_SUBNB 'THOM' ) ; LFB = LFB_TM ; FINSI ; * SI ( EGA TAB_1.L_SUBNB 'THOM_CEA' ) ; LFB = LFB_TMP ; FINSI ; * SI ( EGA TAB_1.L_SUBNB 'T_JAERI' ) ; LFB = LFB_TMJ ; FINSI ; * SI ( EGA TAB_1.L_SUBNB 'JENS_LOTTES' ) ; LFB = LFB_JL ; FINSI ; * SI ( EGA TAB_1.L_SUBNB 'YIN' ) ; LFB = LFB_YIN ; TAB_1.CONNECT_METHOD = 'ADDITION' ; FINSI ; * SI ( EXISTE TAB_1 AMPL_H ) ; LHCONV = LHCONV * ( TAB_1 . AMPL_H ) ; FINSI ; * LFCONV = ( LTWALL - LTETA ) * LHCONV ; * SI ( NON ( EXISTE TAB_1 CONNECT_METHOD ) ) ; TAB_1.CONNECT_METHOD = 'BERG_ROH' ; FINSI ; * SI ( EGA TAB_1.CONNECT_METHOD 'ADDITION' ) ; TAB_1.L_SUBNB = 'YIN' ; LFT = LFCONV + LFB ; FINSI ; * SI ( EGA TAB_1.CONNECT_METHOD 'DIRECT' ) ; PA_TEMPE = 10. ; TEMPE_PA = TSAT ; FLUX_DIC = @IPOE TEMPE_PA EVOFC ; FLUX_DIE = @IPOE TEMPE_PA EVOFE ; * Recherche du point d'intersection REPETER BOUC_DIR ; SI ( ( ABS ( FLUX_DIE - FLUX_DIC ) ) <EG 1.E2 ) ; QUITTER BOUC_DIR ; FINSI ; SI ( FLUX_DIE > FLUX_DIC ) ; TEMPE_PA = TEMPE_PA - PA_TEMPE ; PA_TEMPE = PA_TEMPE / 2. ; FINSI ; TEMPE_PA = TEMPE_PA + PA_TEMPE ; FLUX_DIC = @IPOE TEMPE_PA EVOFC ; FLUX_DIE = @IPOE TEMPE_PA EVOFE ; FIN BOUC_DIR ; RANGE_D = (LTWALL MASQUE 'INFE' 'SOMME' TEMPE_PA) + 1 ; LTWALL_D = INSERER LTWALL RANGE_D TEMPE_PA ; LFCONV_D = INSERER LFCONV RANGE_D FLUX_DIC ; LFB_D = INSERER LFB RANGE_D FLUX_DIE ; LM_IFLUX = LFCONV_D MASQUE 'INFERIEUR' FLUX_DIC ; LM_SFLUX = LFB_D MASQUE 'EGSUPE' FLUX_DIE ; LFCONVI = LFCONV_D * LM_IFLUX ; LFBS = LFB_D * LM_SFLUX ; LFT = LFCONVI + LFBS ; LTWALL = LTWALL_D ; LFCONV = LFCONV_D ; LFB = LFB_D ; FINSI ; * SI ( EGA TAB_1.CONNECT_METHOD 'BERG_ROH' ) ; LFCONV1 = LFCONV * LM_ITONB ; LFCONV2 = LFCONV * LM_STONB ; LDFB = ( LFB - LFB_ONB ) * LM_STONB ; LF = ( LFCONV2 ** 2 ) + ( LDFB ** 2 ) ; LF = LF ** 0.5 ; LF = LF * LM_STONB ; LFT = LFCONV1 + LF ; FINSI ; * SI ( EGA TAB_1.CONNECT_METHOD 'JB_METHOD' ) ; * *liaison par flux = a Tparoi**10 + b * LA_1 = ( LFB_ONB1 - LFB_ONB ) / (( LTONB1 ** 10 ) - * ( LTONB ** 10 ) ) ; * LB_1 = LFB_ONB - ( LA_1 * ( LTONB ** 10 ) ) ; * LFPB = ( LA_1 * ( LTWALL_6 ** 10 ) ) + LB_1 ; * FB_ONB6 = 2.8 * FB_ONB5 ; * EVFB_TMP = EVOL MANU 'TEMPERATURE' LTWALL 'FLUX' LFB_TMP ; T_ONB6 = @IPOE FB_ONB6 EVFB_TM1 FIXE ; RANGE_6 = ( LTWALL MASQUE 'INFE' 'SOMME' T_ONB6 ) + 1 ; LTWALL_6 = INSERER LTWALL RANGE_6 T_ONB6 ; * LM_ITON2 = LTWALL_6 MASQUE 'INFERIEUR' T_ONB6 ; LM_STON2 = LTWALL_6 MASQUE 'EGSUPE' T_ONB6 ; LM_ITON3 = LTWALL_6 MASQUE 'INFERIEUR' TONB ; LM_STON3 = LTWALL_6 MASQUE 'EGSUPE' TONB ; * LHCONV1 = @ITPLT LTWALL LHCONV 'FIXE' LTWALL_6 ; LFCONV1 = ( LTWALL_6 - LTETA1 ) * LHCONV1 ; LFB1 = @ITPLT LTWALL LFB 'FIXE' LTWALL_6 ; LFCONV2 = LFCONV1 * LM_ITON3 ; LFCONV3 = LFCONV1 * LM_STON3 ; LFCONV3 = LFCONV3 * LM_ITON2 ; LB_1 = ( ( LFB_ONB6 ** 2 ) - ( LFCONV3 ** 2 ) ) / ( ( LFB_ONB6 - LFB_ONB4 ) ** 2 ) ; * LB_1 = 1. ; LDFB1 = ( LFB1 - LFB_ONB4 ) * LM_STON3 ; LFT0 = ( LFCONV3 ** 2 ) + ( LB_1 * ( LDFB1 ** 2 ) ) ; LFT0 = LFT0 ** 0.5 ; LFT0 = LFT0 * LM_STON3 ; LFT1 = LFCONV2 + LFT0 ; FINSI ; * SI ( NON ( EXISTE TAB_1 PFIXTONB ) ) ; TAB_1 . PFIXTONB = FAUX ; FINSI ; * SI ( TAB_1 . PFIXTONB ) ; LHT = (LFT - LF_ONB1) / (LTWALL - LTONB) ; LTETA_1 = LTONB - ( LF_ONB1 / LHT ) ; SINON ; SI ( EGA TAB_1.CONNECT_METHOD 'JB_METHOD' ) ; LFT = LFT1 ; LHT = LFT1 / (LTWALL_6 - LTETA1 ) ; LTWALL = LTWALL_6 ; SINON ; LHT = LFT / ( LTWALL - LTETA ) ; FINSI ; FINSI ; TITRE ' HEAT TRANSFER COEFFICIENT ' ; *TITRE TAB_1.L_CONVECT 'CONVECTION FLUX' ; *EVOFC = EVOL MANU 'TEMPERATURE' LTWALL 'CONVECTION' LFCONV ; *TITRE TAB_1.L_SUBNB 'BOILING FLUX' ; *EVOFE = EVOL MANU 'TEMPERATURE' LTWALL 'CONVECTION' LFB ; TITRE ' COMBINED FLUX ' ; * TITRE ' COEF. D ECHANGE EN EBULLITION SOUS SATUREE, TONB :' TONB ; *TITRE ' HEAT TRANSFER COEFFICIENT , TONB ' TONB ; TITRE ' CHOSEN CORRELATIONS , TONB ' TONB ; * modif raph/schlo pour couper l'echange au dessus du flux critique * en regime transitoire, effectuee par R. MITTEAU le 16 fevrier 94 SI (EXISTE TAB_1 TRANSITOIRE) ; SI TAB_1.TRANSITOIRE ; SI (EXISTE TAB_1 FLUCRIT1 ) ; T_CRISE = @IPOE TAB_1.FLUCRIT1 EVBIDON1 ; H_CRISE = @IPOE T_CRISE EVOCON ; RANGENTI = ( LTWALL MASQUE 'INFE' 'SOMME' T_CRISE ) + 1 ; LTWALL3 = INSERER LTWALL RANGENTI T_CRISE ; LHT2 = INSERER LHT RANGENTI H_CRISE ; LFT2 = INSERER LFT RANGENTI TAB_1.FLUCRIT1 ; MASQ1 = LFT2 MASQUE EGINFE TAB_1.FLUCRIT1 ; MASQ2 = LFT2 MASQUE SUPERIEUR TAB_1.FLUCRIT1 ; LHT3 = (LHT2 * MASQ1 ) + MASQ2 ; LFT3 = (LFT2 * MASQ1 ) + MASQ2 ; TITRE ' HEAT TRANSFER COEFFICIENT ' ; TITRE ' COMBINED FLUX ' ; FINSI ; FINSI ; FINSI ; * TAB_1.T_SAT = TSAT ; TAB_1.V_TONB = TONB ; TAB_1.ECONVEC1 = EVOCON ; TAB_1.EVOFE1 = EVOFE ; * TAC1 = TABLE ; TAC1.1 = 'MARQ CROI REGU' ; TAC1.3 = 'MARQ ETOI REGU' ; TAC1.4 = 'MARQ LOSA REGU' ; TAC1.5 = 'MARQ CARR REGU' ; TAC1.6 = 'MARQ TRIB REGU' ; * TAC2 = TABLE ; TAC2.1 = 'MARQ CARR REGU' ; TAC2.2 = 'MARQ LOSA REGU' ; TAC2.4 = 'MARQ TRIB REGU' ; * SI ( NON ( EXISTE TAB_1 C_TRACE ) ) ; TAB_1.C_TRACE = FAUX ; FINSI ; * SI L1TRAC ; SI TAB_1.C_TRACE ; SI ( EGA TAB_1.L_SUBNB 'YIN' ) ; TITRE 'CONVECTIVE AND SUBCOOLED BOILING CORRELATIONS' ; DESSIN ( EVOFC_DB ET EVOFC_ST ET EVOFC_P ET EVOFB_T1 ET EVOFB_JL ET EVFB_YIN) XBOR 0. 400. YBOR 0. 7.E7 LEGE TAC1 ; SINON ; TITRE 'CONVECTIVE AND SUBCOOLED BOILING CORRELATIONS' ; DESSIN ( EVOFC_DB ET EVOFC_ST ET EVOFC_P ET EVOFB_T1 ET EVOFB_JL) XBOR 0. 400. YBOR 0. 7.E7 LEGE TAC1 ; TAB_1.EVOFC_D1 = EVOFC_DB ; TAB_1.EVOFC_S1 = EVOFC_ST ; TAB_1.EVOFC_P1 = EVOFC_P ; TAB_1.EVOFC_M1 = EVOFC_JB ; TAB_1.EVOFB_T2 = EVOFB_T1 ; TAB_1.EVOFB_J1 = EVOFB_JL ; FINSI ; FINSI ; SI ( TAB_1 . PFIXTONB ) ; DESSIN TAB_1.EV_TETA XBOR T_LOC1 400. YBOR 0. 150000. MIMA ; FINSI ; DESSIN ( EVOFC ET TAB_1.EVOFE1 ET EVOFT ) XBOR 0. 400. YBOR 0. 7.E7 MIMA LEGE TAC2 ; DESSIN TAB_1.ECONVEC1 XBOR 0. 400. YBOR 0. 700000. MIMA ; FINSI ; TAB_1.EVOFC1 = EVOFC ; TAB_1.EVOFT1 = EVOFT ; * SI (NIVEAU >EG 4) ; FINSI ; FINPROC ; **** @CALHRAY DEBPROC @CALHRAY TAB1*TABLE ; MESS ' '; * * !!! R. MITTEAU !!! attention, procedure standard * * un pointeur dans /CASTEM9X/procedures pointe sur cette procedure * pour les mises a jour * *-------------------------------------------------------------------* * * * COEFFICIENT D ECHANGE TENANT COMPTE * * DU RAYONNEMENT * * * *-------------------------------------------------------------------* *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 * * --- entrees * TZERO = TAB1.'TEMP_RAYO' ; EPS1 = TAB1.'EMISSIVITE' ; AB_2 = TAB1.'ABSORPTION' ; NIVEAU1 = TAB1.'NIVEAU' ; LTRAC = TAB1.'TRAC_GRAPHE' ; SI (NIVEAU1 >EG 4 ) ; FINSI ; LTEMR = PROG -5000. 0. 50. 100. 200. 300. 400. 500. 600. 700. 800. 900. 1000. 1100. 1200. 1300. 1400. 1500. 1600. 1700. 1800. 1900. 2000. 2100. 2200. 2300. 2400. 2500. 2600. 2700. 2800. 2900. 3000. 3100. 3200. 3300. 3400. 3500. 3600. 3700. 3800. 3900. 2.E4 ; SIGMA =5.67E-8 ; TZK = 273.3 ; TZERK = TZERO + TZK ; * MESS ' TEMP H FR ' ; IH1 = 0 ; IH1 = IH1 + 1 ; EPSEQ = (( 1./EPS1 ) + (1./AB_2) - 1.) ** -1 ; * FE = SIGMA * ((EPS1 * ( TEMK ** 4 )) - (AB_2 * ( TZERK ** 4 ))); FE = SIGMA * EPSEQ *( ( TEMK ** 4 ) - ( TZERK ** 4 ) ) ; * H1 = TEMK ** 3 ; * H2 = ( TEMK ** 2 ) * ( TZERK ) ; * H3 = ( TEMK ) * ( TZERK ** 2 ) ; * H4 = TZERK ** 3 ; * H = SIGMA * EPS1 * ( H1 + H2 + H3 + H4 ) ; SI ( EGA TEMK TZERK 1. ) ; H = FE / 1. ; SINON ; H = FE / ( TEMK - TZERK ) ; FINSI ; * MESS TEMP H FE ; FIN CAH1 ; TITRE '>@CALHRAY> COEFFICIENT ECHANGE DE RAYONNEMENT ' ; TAB1.EVORAYT1 = EVOFE ; TAB1.EHRAYON1 = ERAYON ; * SI LTRAC ; DESSIN EVOFE XBOR 0. 3900. YBOR 0. 4.E6 ; DESSIN ERAYON XBOR 0. 3900. YBOR 0. 1500. ; FINSI; * SI (NIVEAU1 >EG 4 ) ; FINSI ; FINPROC ERAYON ; **** @CALOR 'DEBPROC' @CALOR TAB1*'TABLE ' PUI1*FLOTTANT ; MESS ' ' ; * pour le calcul de la puissance voir CFLUX * VIN = TAB1 . V_IN ; TIN = TAB1 . T_IN ; CPF = @IPOE TIN TAB1.ETCPF ; SI ( NON ( EXISTE TAB1 V_EMDOTI)) ; RHOIN = @IPOE TIN TAB1.ETRHOF ; NNUIN = @IPOE TIN TAB1.ETNNU ; GIN = RHOIN * VIN ; SI ( EXISTE TAB1 RIP_FLOWS ) ; EMDOTI = GIN * ( TAB1 . RIP_FLOWS ) ; SINON ; SI ( EGA TAB1.HYPERVAP VRAI ) ; TAB1.HYP_SM = ( TAB1.LARG_CANAL * TAB1.HMIN_CANAL ) + ( 2. * ( TAB1.LARG_ESP * TAB1.HFIN ) ) ; EMDOTI = GIN * TAB1.HYP_SM ; SINON ; PI = 3.14159 ; DIAM1 = TAB1 . D_MAQUETTE ; TTAPE = TAB1 . T_TAPE ; EMDOTI = GIN * ( ( PI * DIAM1 * DIAM1 / 4. ) - ( DIAM1 * TTAPE) ) ; FINSI ; FINSI ; TAB1.V_EMDOTI = EMDOTI ; SINON ; EMDOTI = TAB1.V_EMDOTI ; FINSI ; * * Modif jb 01/04/95 * Possibilite de creer une procedure calculant * la section de passage *SI ( NON ( EXISTE TAB1 SP ) ) ; * SI ( EXISTE TAB1 RIP_FLOWS ) ; * TAB1.SP = TAB1.RIP_FLOWS ; * FINSI ; * SI ( EGA TAB1.HYPERVAP VRAI ) ; * TAB1.HYP_SM = ( TAB1.LARG_CANAL * TAB1.HMIN_CANAL ) + * ( 2. * ( TAB1.LARG_ESP * TAB1.HFIN ) ) ; * TAB1.SP = TAB1.HYP_SM ; * SINON ; * PI = 3.14159 ; * DIAM1 = TAB1 . D_MAQUETTE ; * TTAPE = TAB1 . T_TAPE ; * TAB1.SP = ( PI * DIAM1 * DIAM1 / 4. ) - ( DIAM1 * TTAPE) ; * FINSI ; *EMDOTI = GIN * TAB1.SP ; * DELT = PUI1 / (EMDOTI * CPF) ; TOUT = TIN + DELT ; TAB1.TEMPE_OUT = TOUT ; SI ( EGA TAB1.HYPERVAP VRAI ) ; TAB1.'T_LOCAL' = TIN ; TAB1.'T_MOY' = TIN ; SINON ; TAB1.'T_LOCAL' = TIN + ((TOUT - TIN) * TAB1.X_LOCAL) ; TAB1.'T_MOY' = (TIN + TOUT) / 2. ; FINSI ; FINPROC ; **** @CAPKPC DEBPROC @CAPKPC EV_1*EVOLUTION PC_1*FLOTTANT D_1*FLOTTANT FL_INC*FLOTTANT NIV1/ENTIER; * * !!! R. MITTEAU !!! attention, procedure standard * * un pointeur dans /CASTEM9X/procedures pointe sur cette procedure * pour les mises a jour * * calcul du peaking factor correspondant au pourcentage PC_1 * FL_INC flux incident moyen * EV_1 evolution donnant le flux en paroi d eau SI (NON (EXISTE NIV1)); SINON; SI (NIV1 >EG 4); FINSI; FINSI; SI ( PC_1 >EG 1. ) ; FINSI ; VA_1 = PC_1 * VINT0 ; VINT1 = VINT0 ; REPETER B__1 N1 ; SI( VINT2 <EG VA_1 ) ; PENTE = (Y_1 - Y_2) / (X_1 - X_2) ; DELTA = Y_2 ** 2 + ( 2. * PENTE *( VA_1 - VINT2 )) ; SI ( DELTA < 0. ) ; FINSI ; * X_11 = X_2 + ((X_1 - X_2) / ( VINT1 - VINT2 ) * * ( VA_1 - VINT2 )) ; RDELT = DELTA ** 0.5 ; DX_11 = ( (-1. * Y_2) + RDELT ) / PENTE ; X_11 = X_2 + DX_11 ; SI ( (DX_11 * ( X_11 - X_1)) > 0. ) ; FINSI ; QUITTER B__1 ; FINSI ; P_X_1 = P_X_2 ; P_Y_1 = P_Y_2 ; VINT1 = VINT2 ; FIN B__1 ; FL_PC = VINT0 / X_11 ; AL_1 = 2.* X_11 / D_1 ; PKF_1 = FL_PC / FL_INC ; SI (NON (EXISTE NIV1)); SINON; SI (NIV1 >EG 4); FINSI; FINSI; FINPROC AL_1 PKF_1 ; **** @CBGMV DEBPROC @CBGMV BXG*CHPOINT BYG*CHPOINT BZG*CHPOINT TAB1*TABLE ; * ******************************************************************** * Procedure de changement de base. On passe de la base cartesienne * * globale de la machine definie par l'axe du tore dirige suivant * * Z et l'axe X situe dans le plan median entre deux bobines a la * * base cartesienne du maillage. * * Trois cas sont etudies : 3D, 2D en coupe Phi constant et 2D en * * coupe Theta constant. Alain MOAL (Decembre 1995-Janvier 1996) * ******************************************************************** * *--------------- VARIABLES D'ENTREE : IPLAN = TAB1.<PLAN ; SI (EGA IPLAN 'PHICONS') ; CT0 = TAB1.<CENTRE_TORE ; CT1 = TAB1.<POINT_SUR_AXE_TORE ; P1 = TAB1.<POINT_SUR_OBJET ; FINSI ; SI (EGA IPLAN 'THECONS') ; THETA0 = TAB1.<THETA0 ; CP = TAB1.CENTRE_PLASMA ; RP = TAB1.<RP ; HP = TAB1.<HP ; FINSI ; SINON ; CT0 = TAB1.<CENTRE_TORE ; CT1 = TAB1.<POINT_SUR_AXE_TORE ; P1 = TAB1.<POINT_SUR_OBJET ; FINSI ; ANGPHI0 = TAB1.<ANG_PHI0 ; *------------------------------------ * SI (DIM0 EGA 2) ; FINSI ; * SI (((DIM0 EGA 2) ET (EGA IPLAN 'PHICONS')) OU (DIM0 EGA 3)) ; * * ---- Calcul des coordonnees du point P0, projection du point P1 de * ---- l'objet dans le plan orthogonal a l'axe du tore en CT0. A = X1 - X0 ; B = Y1 - Y0 ; C = Z1 - Z0 ; * SI (A EGA 0.) ; SI (B EGA 0.) ; XP0 = XP1 ; YP0 = YP1 ; ZP0 = Z0 ; FINSI ; SI (C EGA 0.) ; XP0 = XP1 ; YP0 = Y0 ; ZP0 = ZP1 ; FINSI ; SI ((B NEG 0.) ET (C NEG 0.)) ; XP0 = XP1 ; YP0 = (-1.*B*C*ZP1 + (C*C*YP1) + (B*B*Y0) + (B*C*Z0)) /(B*B + (C*C)) ; ZP0 = (B*ZP1 - (C*YP1) + (C*(Y0+Z0)))/(B+C); FINSI ; SINON ; AUX1 = A / (A*A + (B*B) + (C*C)) ; AUX2 = (B*B + (C*C)) / A ; XP0 = AUX1 * (A*X0 + (B*Y0) + (C*Z0) + (AUX2*XP1) - (B*YP1) - (C*ZP1)) ; YP0 = B * (XP0 - XP1) / A + YP1 ; ZP0 = C * (XP0 - XP1) / A + ZP1 ; FINSI ; * P0 = XP0 YP0 ZP0 ; * * ---- Rotation de la ligne (CT0,P0) pour l'aligner sur l'axe X * ---- du repere global LIG0 = CT0 D 1 P0 ; * * ---- Calcul des 3 vecteurs unitaires du repere global * * ---- Changement de repere * BXM = (A1 * BXG) + (A2 * BYG) + (A3 * BZG) ; BYM = (B1 * BXG) + (B2 * BYG) + (B3 * BZG) ; BZM = (C1 * BXG) + (C2 * BYG) + (C3 * BZG) ; * SINON ; * * ---- en 2D pour une section a Theta constant NORM_CP = (XCP*XCP + (YCP*YCP) + (ZCP*ZCP))**0.5 ; ANG1 = ATG XCP YCP ; * * ---- Rotation de (90 + ANGPHI0) par rapport a l'axe Z BX1 = -1. * BXG * (SIN ANGPHI0) + (BYG * (COS ANGPHI0)) ; BY1 = -1. * BXG * (COS ANGPHI0) - (BYG * (SIN ANGPHI0)) ; BZ1 = BZG ; * * ---- Rotation de -THETA0 par rapport a l'axe X BX2 = BX1 ; BY2 = BY1 * (COS THETA0) - (BZ1 * (SIN THETA0)) ; BZ2 = BY1 * (SIN THETA0) + (BZ1 * (COS THETA0)) ; * * ---- Rotation de ANG1 par rapport a l'axe Z BXM = BX2 * (COS ANG1) + (BY2 * (SIN ANG1)) ; BYM = -1. * BX2 * (SIN ANG1) + (BY2 * (COS ANG1)) ; BZM = BZ2 ; * FINSI ; SI (DIM0 EGA 2) ; FINSI ; * FINPROC BXM BYM BZM ; **** @CBGTV DEBPROC @CBGTV BX*CHPOINT BY*CHPOINT BZ*CHPOINT THETA*CHPOINT PHI*CHPOINT ; * ********************************************************************** * Procedure de changement de base pour un vecteur B de coordonnees * * BX, BY, BZ dans la base globale aux coordonnees pseudo-toroidales * * BRHO, BTHETA, BPHI. Alain MOAL (mars 1996) * ********************************************************************** * *---- Rotation de Phi autour de "l'axe Theta" BRHO1 = (COS PHI) * BX + ((SIN PHI) * BY) ; BTHETA1 = BZ ; BPHI1 = -1.*(SIN PHI) * BX + ((COS PHI) * BY) ; * *---- Rotation de Theta autour de "l'axe Phi" BRHO = (COS THETA) * BRHO1 + ((SIN THETA) * BTHETA1) ; BTHETA = -1.*(SIN THETA) * BRHO1 + ((COS THETA) * BTHETA1) ; BPHI = BPHI1 ; * FINPROC BRHO BTHETA BPHI ; **** @CBLMV DEBPROC @CBLMV VXL*CHPOINT VYL*CHPOINT VZL*CHPOINT TAB1*TABLE ; * ******************************************************************** * Version amelioree de l'ancien @CBLMV rebaptise @ACBLM * * Procedure de changement de base. On passe de la base cartesienne * * locale de l'objet modelise a la base cartesienne du maillage. * * l'axe Y est dirige du point de tangence au plasma vers le centre * * du plasma. En 3D, L'axe X du repere local est dans la direction * * toroidale. * * en 2D cas PHICONS l'axe Z du repere local est l'axe toroidal * * en 2D cas THECONS l'axe x du repere local est l'axe toroidal * * Jacques SCHLOSSER et Alain MOAL (Decembre 1995) * ******************************************************************** * *--------------- VARIABLES D'ENTREE : CP = TAB1.CENTRE_PLASMA ; PTG = TAB1.PT_TGPLASMA ; SI (EXISTE TAB1 <PLAN) ; IPLAN = TAB1.<PLAN ; SINON ; FINSI ; SINON ; SI (EXISTE TAB1 <DIR_TOROIDAL) ; DIR1 = TAB1.<DIR_TOROIDAL ; SINON ; FINSI ; FINSI ; *------------------------------------ * VECT0 = CP MOINS PTG ; * * ---- calcul de l'angle de rotation dans le plan XY SI ((VX EGA 0.) ET (VY EGA 0.)) ; ANG1 = 0. ; SINON ; ANG1 = -1.* (ATG VX VY) ; FINSI ; * SI (EGA IPLAN 'PHICONS'); * ---- Coupe 2D a Phi constant VXL1 = VZL ; VYL1 = VYL ; VZL1 = VXL * (-1.); * ---- rotation VXM = VXL1 * (COS ANG1) + (VYL1 * (-1.) * (SIN ANG1)); VYM = VXL1 * (SIN ANG1) + (VYL1 * (COS ANG1)) ; VZM = VZL1 ; FINSI ; SI (EGA IPLAN 'THECONS'); * ---- Coupe 2D a Theta constant * ---- rotation VXM = VXL * (COS ANG1) + (VYL * (-1.) * (SIN ANG1)) ; VYM = VXL * (SIN ANG1) + (VYL * (COS ANG1)) ; VZM = VZL ; FINSI; * SINON ; * DIR2 = CP MOINS PTG ; * * VXM = (A1 * VXL) + (A2 * VYL) + (A3 * VZL) ; VYM = (B1 * VXL) + (B2 * VYL) + (B3 * VZL) ; VZM = (C1 * VXL) + (C2 * VYL) + (C3 * VZL) ; * FINSI ; FINPROC VXM VYM VZM ; **** @CBMGV DEBPROC @CBMGV BXM*CHPOINT BYM*CHPOINT BZM*CHPOINT TAB1*TABLE ; * ******************************************************************** * Procedure de changement de base. On passe de la base cartesienne * * quelconque du maillage a la base cartesienne globale de la * * machine definie par l'axe du tore dirige suivant Z et l'axe X * * situe dans le plan median entre deux bobines. * * Trois cas sont etudies : 3D, 2D en coupe Phi constant et 2D en * * coupe Theta constant. Alain MOAL (Decembre 1995-Janvier 1996) * ******************************************************************** * *--------------- VARIABLES D'ENTREE : IPLAN = TAB1.<PLAN ; SI (EGA IPLAN 'PHICONS') ; CT0 = TAB1.<CENTRE_TORE ; CT1 = TAB1.<POINT_SUR_AXE_TORE ; P1 = TAB1.<POINT_SUR_OBJET ; FINSI ; SI (EGA IPLAN 'THECONS') ; THETA0 = TAB1.<THETA0 ; CP = TAB1.CENTRE_PLASMA ; RP = TAB1.<RP ; HP = TAB1.<HP ; FINSI ; SINON ; CT0 = TAB1.<CENTRE_TORE ; CT1 = TAB1.<POINT_SUR_AXE_TORE ; P1 = TAB1.<POINT_SUR_OBJET ; FINSI ; ANGPHI0 = TAB1.<ANG_PHI0 ; *------------------------------------ * SI (DIM0 EGA 2) ; FINSI ; * SI (((DIM0 EGA 2) ET (EGA IPLAN 'PHICONS')) OU (DIM0 EGA 3)) ; * ---- en 3D ou en 2D pour la section Phi constant * * ---- Calcul des coordonnees du point P0, projection du point P1 de * ---- l'objet dans le plan orthogonal a l'axe du tore en CT0. A = X1 - X0 ; B = Y1 - Y0 ; C = Z1 - Z0 ; * SI (A EGA 0.) ; SI (B EGA 0.) ; XP0 = XP1 ; YP0 = YP1 ; ZP0 = Z0 ; FINSI ; SI (C EGA 0.) ; XP0 = XP1 ; YP0 = Y0 ; ZP0 = ZP1 ; FINSI ; SI ((B NEG 0.) ET (C NEG 0.)) ; XP0 = XP1 ; YP0 = (-1.*B*C*ZP1 + (C*C*YP1) + (B*B*Y0) + (B*C*Z0)) /(B*B + (C*C)) ; ZP0 = (B*ZP1 - (C*YP1) + (C*(Y0+Z0)))/(B+C); FINSI ; SINON ; AUX1 = A / (A*A + (B*B) + (C*C)) ; AUX2 = (B*B + (C*C)) / A ; XP0 = AUX1 * (A*X0 + (B*Y0) + (C*Z0) + (AUX2*XP1) - (B*YP1) - (C*ZP1)) ; YP0 = B * (XP0 - XP1) / A + YP1 ; ZP0 = C * (XP0 - XP1) / A + ZP1 ; FINSI ; * P0 = XP0 YP0 ZP0 ; * * ---- Rotation de la ligne (CT0,P0) pour l'aligner sur l'axe X * ---- du repere global LIG0 = CT0 D 1 P0 ; * * ---- Calcul des 3 vecteurs unitaires du repere global * * ---- Changement de repere * BXG = (A1 * BXM) + (B1 * BYM) + (C1 * BZM) ; BYG = (A2 * BXM) + (B2 * BYM) + (C2 * BZM) ; BZG = (A3 * BXM) + (B3 * BYM) + (C3 * BZM) ; * SINON ; * ---- en 2D pour une section a Theta constant * NORM_CP = (XCP*XCP + (YCP*YCP) + (ZCP*ZCP))**0.5 ; ANG1 = ATG XCP YCP ; * * ---- Rotation de - ANG1 par rapport a l'axe Z BX1 = BXM * (COS ANG1) - (BYM * (SIN ANG1)) ; BY1 = BXM * (SIN ANG1) + (BYM * (COS ANG1)) ; BZ1 = BZM ; * * ---- Rotation de THETA0 par rapport a l'axe X BX2 = BX1 ; BY2 = BY1 * (COS THETA0) + (BZ1 * (SIN THETA0)) ; BZ2 = -1. * BY1 * (SIN THETA0) + (BZ1 * (COS THETA0)) ; * * ---- Rotation de -(90 + ANGPHI0) par rapport a l'axe Z BXG = -1. * BX2 * (SIN ANGPHI0) - (BY2 * (COS ANGPHI0)) ; BYG = BX2 * (COS ANGPHI0) - (BY2 * (SIN ANGPHI0)) ; BZG = BZ2 ; * FINSI; * SI (DIM0 EGA 2) ; FINSI ; * FINPROC BXG BYG BZG ; **** @CBMLV DEBPROC @CBMLV VXM*CHPOINT VYM*CHPOINT VZM*CHPOINT TAB1*TABLE ; * ******************************************************************** * Version amelioree de l'ancien @CBMLV rebaptise @ACBML * * Procedure de changement de base. On passe de la base cartesienne * * du maillage a la base cartesienne locale de l'objet modelise. * * l'axe Y final est dirige du point de tangence vers le centre du * * plasma. En 3D l'axe x du repere local est donne par la direction * * toroidale * * en 2D cas PHICONS l'axe Z initial est l'axe toroidal * * en 2D cas THECONS l'axe x initial est l'axe toroidal * * Jacques SCHLOSSER et Alain MOAL (Decembre 1995) * ******************************************************************** * *--------------- VARIABLES D'ENTREE : CP = TAB1.CENTRE_PLASMA ; PTG = TAB1.PT_TGPLASMA ; SI (EXISTE TAB1 <PLAN) ; IPLAN = TAB1.<PLAN ; SINON ; FINSI ; SINON ; SI (EXISTE TAB1 <DIR_TOROIDAL) ; DIR1 = TAB1.<DIR_TOROIDAL ; SINON ; FINSI ; FINSI ; *------------------------------------ * VECT0 = CP MOINS PTG ; * * ---- calcul de l'angle de rotation dans le plan XY SI ((VX EGA 0.) ET (VY EGA 0.)) ; ANG1 = 0. ; SINON ; ANG1 = -1.* (ATG VX VY) ; FINSI ; * * ---- rotation pour aligner l'axe Y avec VECT0 SI (EGA IPLAN 'PHICONS'); * ---- Coupe 2D a Phi constant VXL1 = VXM * (COS ANG1) + (VYM * (SIN ANG1)); VYL1 = VXM * (-1.) * (SIN ANG1) + (VYM * (COS ANG1)); VZL1 = VZM ; * ---- Coupe 2D a Phi constant VXL = VZL1 ; VYL = VYL1 ; VZL = VXL1 * (-1.); FINSI ; SI (EGA IPLAN 'THECONS'); * ---- Coupe 2D a Theta constant * ---- rotation VXL = VXM * (COS ANG1) + (VYM * (SIN ANG1)); VYL = VXM * (-1.) * (SIN ANG1) + (VYM * (COS ANG1)); VZL = VZM ; FINSI ; * SINON ; * DIR2 = CP MOINS PTG ; * * VXL = (A1 * VXM) + (B1 * VYM) + (C1 * VZM) ; VYL = (A2 * VXM) + (B2 * VYM) + (C2 * VZM) ; VZL = (A3 * VXM) + (B3 * VYM) + (C3 * VZM) ; * FINSI ; FINPROC VXL VYL VZL ; **** @CBTGV DEBPROC @CBTGV BRHO*CHPOINT BTHETA*CHPOINT BPHI*CHPOINT THETA*CHPOINT PHI*CHPOINT ; * ********************************************************************* * Procedure de changement de base pour un vecteur B de coordonnees * * BRHO, BPHI, BTHETA dans une base pseudo-toroidale aux coordonnees * * cartesiennes BX, BY, BZ dans la base globale de la machine. * * Alain MOAL (decembre 1995) * ********************************************************************* * *---- Rotation de - Theta autour de "l'axe Phi" BRHO1 = (COS THETA) * BRHO - ((SIN THETA) * BTHETA) ; BTHETA1 = (SIN THETA) * BRHO + ((COS THETA) * BTHETA) ; BPHI1 = BPHI ; * *---- Rotation de - Phi autour de "l'axe Theta" BRHO2 = (COS PHI) * BRHO1 - ((SIN PHI) * BPHI1) ; BTHETA2 = BTHETA1 ; BPHI2 = (SIN PHI) * BRHO1 + ((COS PHI) * BPHI1) ; * BX = BRHO2 ; BY = BPHI2 ; BZ = BTHETA2 ; * FINPROC BX BY BZ ; **** @CBTLV DEBPROC @CBTLV BRHO*CHPOINT BTHETA*CHPOINT BPHI*CHPOINT THETA*CHPOINT PHI*CHPOINT TAB1*TABLE ; * ********************************************************************* * Procedure de changement de base pour un vecteur B de coordonnees * * BRHO, BPHI, BTHETA dans une base pseudo-toroidale aux coordonnees * * cartesiennes BX, BY, BZ dans la base de l'objet. * * Alain MOAL (juin 1995) * ********************************************************************* * *--------------- VARIABLES D'ENTREE : THETA0 = TAB1.<THETA0 ; *------------------------------------ * CT = COS THETA ; ST = SIN THETA ; CT0 = COS THETA0 ; ST0 = SIN THETA0 ; MST0 = ST0 * -1. ; CPHI = COS PHI ; SPHI = SIN PHI ; MSPHI= SPHI * -1. ; * *---- 1) rotation de - Theta autour de "l'axe Phi" BRHO1 = (CT * BRHO) - (ST * BTHETA) ; BTHETA1 = (ST * BRHO) + (CT * BTHETA) ; BPHI1 = BPHI ; * *---- 2) rotation de - Phi autour de "l'axe Theta" BRHO2 = (CPHI * BRHO1) + (MSPHI * BPHI1) ; BTHETA2 = BTHETA1 ; BPHI2 = (SPHI * BRHO1) + (CPHI * BPHI1) ; * *---- 3) rotation de Theta0 autour de "l'axe Phi" BRHO3 = (BRHO2 * CT0) + (BTHETA2 * ST0) ; BTHETA3 = (BRHO2 * MST0) + (BTHETA2 * CT0) ; BPHI3 = BPHI2 ; * *---- 4) composantes dans le repere cartesien BX = BPHI3 ; BY = BRHO3 * -1. ; BZ = BTHETA3 ; * FINPROC BX BY BZ; **** PROP_PHY DEBPROC PROP_PHY TAB_1*TABLE ; ****************************************************************************** ***** CELATA94 ***** ****************************************************************************** * CALCUL DU FLUX CRITIQUE SUIVANT LA CORRELATION DE CELATA 94 *_____________________________________________________________________________ * * * *----------------------------------------------------- * Calcul des proprietes de l eau a la temperature de * saturation correspondant a la pression de sortie *----------------------------------------------------- * @TABEAU TAB_1 ; POUT = TAB_1.'P_LOCAL' ; TAB_1.TTSAT = @IPOE POUT TAB_1.EPTSAT ; TSAT = TAB_1.TTSAT ; TAB_1.CCPLOUT = @IPOE TSAT TAB_1.ETCPF ; TAB_1.RRHOL = @IPOE TSAT TAB_1.ETRHOF ; TAB_1.RRHOV = @IPOE TSAT TAB_1.ETRHOG ; TAB_1.LLLV = @IPOE TSAT TAB_1.ETHFG ; TAB_1.LLAM = @IPOE TSAT TAB_1.ETLLA ; TAB_1.SSIGM = @IPOE TSAT TAB_1.ETSIGM ; TAB_1.MMUL = @IPOE TSAT TAB_1.ETNNU ; TAB_1.PPRAL = @IPOE TSAT TAB_1.ETPRAF ; * *----------------------------------------------------- * Calcul des proprietes de l eau a la temperature d entree *----------------------------------------------------- * TIN = TAB_1.'T_LOCAL' ; TAB_1.CCPLIN = @IPOE TIN TAB_1.ETCPF ; TAB_1.RRHOLIN = @IPOE TIN TAB_1.ETRHOF ; * *----------------------------------------------------- * Calcul de quantites utiles *----------------------------------------------------- * PI = 3.1415926 ; D = TAB_1.D_MAQUETTE ; SI ( NON ( EXISTE TAB_1 T_TAPE ) ) ; TAB_1 . T_TAPE = 0. ; FINSI ; TTAPE = TAB_1 . T_TAPE ; SI ( NON ( EXISTE TAB_1 TWIST_RATIO ) ) ; TAB_1 . TWIST_RATIO = 0. ; FINSI ; YTWIST = TAB_1 . TWIST_RATIO ; VIN = TAB_1.'V_LOCAL' ; * *----------------------------------------------------- * Prise en compte de l insert torsade *----------------------------------------------------- * SI ( YTWIST EGA 0. ) ; TAB_1 . DDH = D ; FACV = 1. ; VP = VIN ; FINSI ; SI ( YTWIST > 0. ) ; QUAS = 4. * (( PI * D * D / 8. ) - ( TTAPE * D / 2. )) ; PERI = (( PI * D / 2. ) - TTAPE + D ) ; DH = QUAS / PERI ; TAB_1 . DDH = DH ; PIS2Y = PI / ( 2. * YTWIST ) ; FACV = ( 1. + ( PIS2Y ** 2 ) ) ** ( 1. / 2. ) ; FINSI ; *----------------------------------------------------- * Prise en compte du fil helicoidal *----------------------------------------------------- * SI ( NON ( EXISTE TAB_1 HELI_WIRE ) ) ; TAB_1.HELI_WIRE = FAUX ; FINSI ; SI ( ( YTWIST EGA 0. ) ET ( EGA TAB_1.HELI_WIRE VRAI ) ) ; S1 = PI * D1 * D1 / 4. ; SM = PI * TAB_1.WIRE_D * TAB_1.WIRE_D / 4. ; P1 = PI * D ; PM = PI * TAB_1.WIRE_D ; DH = 4. * ( S1 - SM ) / ( P1 + PM ) ; PIS2Y = PI / ( 2 * TAB_1.PITCH_WIRE ) ; FACV = ( 1. + ( PIS2Y ** 2 ) ) ** 0.5 ; * FACV = 1. ; FINSI ; * *----------------------------------------------------- * Calcul de la vitesse *----------------------------------------------------- * SI (NON (EXISTE TAB_1 FF_SANDIA)) ; TAB_1 . FF_SANDIA = FAUX ; FINSI ; F_SANDIA = TAB_1 . FF_SANDIA ; SI ( F_SANDIA EGA VRAI ) ; FACV = 1. ; FINSI ; VP = VIN * FACV ; TAB_1 . VITPAROI = VP ; * *----------------------------------------------------- * Prise en compte du chauffage non asymetrique *----------------------------------------------------- * LH = TAB_1 . L_HEATED ; SI ( NON ( EXISTE TAB_1 CCHAU_SYM ) ) ; TAB_1 . CCHAU_SYM = VRAI ; FINSI ; SI ( TAB_1 . CCHAU_SYM EGA VRAI ) ; TAB_1.HHAR = PI * D * LH ; AR = PI * D * D / 4. ; SINON ; QUAS = 4. * (( PI * D * D / 8. ) - ( TTAPE * D / 2. )) ; AR = QUAS / 4. ; ** PERI = (( PI * D / 2. ) - TTAPE ) ; ** DHC = QUAS / PERI ; ** TAB_1.HHAR = PI * ( D / 2. ) * LH ; TAB_1.HHAR = D * LH ; FINSI ; * MUL = TAB_1.MMUL ; RHOLIN = TAB_1.RRHOLIN ; G = RHOLIN * VP ; TAB_1.GGAM = RHOLIN * VP * AR ; TAB_1.GG = G ; REYL = G * TAB_1 . DDH / MUL ; * *----------------------------------------------------- * Calcul du coefficient de frottement *----------------------------------------------------- * * Facteur de Sandia * multiplier le coefficient de frottement par * 2.75 * ( YTWIST ** ( - 0.406 ) ) * 2.2 * ( YTWIST ** ( - 0.406 ) ) FA = 4. * 1.375E-3 * (( 1. + ( 21.544 * ( 0.00375 /( TAB_1 . DDH * 1000. / 2. ))) + ( 100. / REYL )) ** ( 1. / 3. )) ; SI ( ( F_SANDIA EGA VRAI ) ET ( YTWIST NEG 0. ) ) ; * FA = FA * (2.75 / ( YTWIST ** ( 0.406 ) )) ; FA = FA * (2.2 / ( YTWIST ** ( 0.406 ) )) ; FINSI ; RHOL = TAB_1.RRHOL ; REPETER BOUCFA 100 ; RADEFF = 1.14 - ( 2. * ( LOG ((( 0.72 * SIGM * RHOL ) / ( FA * TAB_1 . DDH * ( G**2 ))) + ( 9.35 / ( REYL *( FA **( 1. / 2. ))))))/( LOG 10 )) ; DIF1 = ( RADEFF ** (-2))- FA ; DELTAF = ABS (DIF1) ; FA = RADEFF**(-2) ; SI ( ( F_SANDIA EGA VRAI ) ET ( YTWIST NEG 0. ) ) ; * FA = FA * (2.75 * ( YTWIST ** ( -0.406 ) )) ; FA = FA * (2.2 * ( YTWIST ** ( -0.406 ) )) ; TAB_1.FFA = FA ; SINON ; TAB_1.FFA = FA ; FINSI ; SI (DELTAF <EG 1.E-6) ; QUITTER BOUCFA ; FINSI ; FIN BOUCFA ; FINPROC ; * *_____________________________________________________________________________ * **** QCALCO DEBPROC QCALCO TAB_1*TABLE Q*FLOTTANT ; * TIN = TAB_1.T_IN ; TSAT = TAB_1.TTSAT ; GAM = TAB_1.GGAM ; G = TAB_1.GG ; HAR = TAB_1.HHAR ; * *----------------------------------------------------- * Calcul de la temperature moyenne du fluide *----------------------------------------------------- * CPLIN = TAB_1.CCPLIN ; CPLOUT = TAB_1.CCPLOUT ; CPLMED = ( CPLIN + CPLOUT )/ 2. ; *MESS ' CPLIN = ' CPLIN ; *MESS ' CPLOUT = ' CPLOUT ; *MESS ' CPLMED = ' CPLMED ; *MESS ' HAR = ' HAR ; *MESS ' GAM = ' GAM ; *MESS ' Q = ' Q ; *TMED = TIN + (( Q * HAR )/( GAM * CPLMED )) ; TMED = TIN + (( Q * HAR )/( GAM * CPLIN )) ; * MESS 'MEAN FLUID TEMPERATURE (C) :' TMED ; * *----------------------------------------------------- * Calcul de la temperature de la paroi *----------------------------------------------------- * FA = TAB_1.FFA ; RHOL = TAB_1.RRHOL ; PRAL = TAB_1.PPRAL ; MUL = TAB_1.MMUL ; D = TAB_1.D_MAQUETTE ; *MESS ' FA =' FA ; *MESS ' RHOL = ' RHOL ; *MESS ' PRAL = ' PRAL ; *MESS ' MUL = ' MUL ; *MESS ' D = ' D ; UTAU = ( FA * ( G **2 ))/(8.*( RHOL**2 ))**(1./2.) ; *MESS ' UTAU =' UTAU ; QU = Q /(RHOL * CPLOUT * UTAU) ; *MESS ' QU = ' QU ; R = D / 2. ; TT = 1. + (5.* PRAL ) ; *MESS ' TT = ' TT ; XX = ( R * UTAU * RHOL )/ MUL ; *MESS ' XX = ' XX ; ZZ = XX - 30. ; TW = TMED + ( ( 5. * QU / XX ) * ( (( PRAL / 2. ) * (( 2. * XX ) - 5. )) + (( 5. / PRAL ) * (( TT * ( LOG TT )) + ( 1. - TT ))) + ( ZZ * ( LOG TT )) + (( 1. / 2. ) * ((( LOG ( XX / 30. )) * XX ) + ( 30. - XX ))) )); * MESS ' SATURATION TEMPERATURE (C) : ' TSAT ; SI ( TW <EG TSAT ) ; IFLAG = 1 ; QUITTER QCALCO ; FINSI ; * *----------------------------------------------------- * Calcul de l epaisseur de la couche liquide surchauffee *----------------------------------------------------- * *MESS '-----------------------------------> TW>TSAT ' ; DT1 = QU * PRAL * 5. ; DT2 = 5.* QU * ( PRAL + ( LOG ( 1. + ( 5. * PRAL )))) ; SI (( TW - TSAT ) < DT1 ) ; YPIU = ( TW - TSAT )/( QU * PRAL ) ; SINON ; SI (( TW - TSAT ) < DT2 ) ; YPIU = 5. + ( ( 5. / PRAL )* ( EXP (( TW - TSAT )/( 5. * QU )- PRAL )- 1. )) ; SINON ; AA1 = ( TW - TSAT )/( 5. * QU ) ; AA2 = 1. + ( 5. * PRAL ) ; AA = ( AA1 - PRAL - ( LOG AA2 )) * 2. ; YPIU = 30.* (EXP AA) ; FINSI ; FINSI ; YSTAR = ( YPIU * MUL )/( UTAU * RHOL ) ; * MESS ' SUPERHEATED LAYER THICKNESS (m) : ' YSTAR ; * *----------------------------------------------------- * Calcul de l epaisseur de l amas de vapeur et de * sa distance de la paroi chauffee *----------------------------------------------------- * DELTA = YSTAR - DB ; * MESS ' INITIAL LIQUID SUBLAYER THICKNESS (m) : ' DELTA ; SI (DELTA <EG 0.) ; IFLAG = 1 ; QUITTER QCALCO ; FINSI ; * *----------------------------------------------------- * Calcul des parametres de l amas de vapeur *----------------------------------------------------- * YPIU = ( DELTA + ( DB / 2. ))* UTAU * RHOL / MUL ; SI ( YPIU <EG 5.) ; UBL = YPIU * UTAU ; * MESS ' YPIU <EG 5. ' ; * MESS ' UBL = ' UBL ; SINON ; SI ( YPIU <EG 30.) ; UBL = (( 5. * ( LOG YPIU ) - 3.05 )) * UTAU ; * MESS ' YPIU <EG 30. ' ; * MESS ' UBL = ' UBL ; SINON ; UBL = (( 2.5 *( LOG YPIU )) + 5.5 )* UTAU ; * MESS ' YPIU > 30. ' ; * MESS ' UBL = ' UBL ; FINSI ; FINSI ; RHOV = TAB_1.RRHOV ; SI ( NON ( EXISTE TAB_1 FFLOW_HO ) ) ; TAB_1 . FFLOW_HO = VRAI ; FINSI ; SI ( NON ( EXISTE TAB_1 FFLOW_VE ) ) ; TAB_1 . FFLOW_VE = FAUX ; FINSI ; SI ( TAB_1 . FFLOW_HO EGA VRAI ) ; UB = UBL ; FINSI ; SI ( TAB_1 . FFLOW_VE EGA VRAI ) ; PI = 3.1415926 ; C1 = (( 4.* PI * 9.81 *( RHOL + RHOV ) * ( RHOL - RHOV )) /(( RHOL **2 )* RHOV * CD)) ** (1./2.) ; UB1 = ( UBL + ((( UBL **2 ) + ( 4. * C1))**(1./2.)))/2. ; UB2 = ( UBL - ((( UBL **2 ) + ( 4. * C1))**(1./2.)))/2. ; *UB2<0 toujours UB = UB1 ; *MESS ' CD = ' CD ; *MESS ' C1 = ' C1 ; FINSI ; *MESS ' UB = ' UB ; SI (UB <EG 0.) ; IFLAG = 1 ; QUITTER QCALCO ; FINSI ; TAU = BLB/UB ; *MESS ' TAU = ' TAU ; *MESS ' IFLAG = ' IFLAG ; * MESS ' VAPOR BLANKET VELOCITY (m/s) : ' UB ; * MESS ' VAPOR BLANKET LENGTH (m) : ' BLB ; FINPROC DELTA UB UBL BLB TAU IFLAG ; * *_____________________________________________________________________________ * **** QUQU DEBPROC QUQU TAB_1*TABLE Q*FLOTTANT ; * DELTA = 0. ; UB = 0. ; UBL = 0. ; BLB = 0. ; TAU = 0. ; DELTA UB UBL BLB TAU IFLAG = QCALCO TAB_1 Q ; SI (IFLAG NEG 0) ; * MESS ' On quitte la procedure QUQU sans definir FQ '; QUITTER QUQU ; FINSI ; LLV = TAB_1.LLLV ; RHOL = TAB_1.RRHOL ; *MESS 'DELTA =' DELTA ; *MESS 'RHOL =' RHOL ; *MESS 'LLV =' LLV ; *MESS 'TAU =' TAU ; *MESS 'UB =' UB ; *MESS 'UBL =' UBL ; *MESS 'Q ='Q ; FQ = Q - ( DELTA * RHOL * LLV / TAU) ; FINPROC FQ IFLAG ; * *_____________________________________________________________________________ * **** SECANTI DEBPROC SECANTI TAB_1*TABLE X1*FLOTTANT X2*FLOTTANT X1MIN*FLOTTANT ERRMAX*FLOTTANT NMAX*ENTIER ; * SI (OU (X1 >EG 10.E10) (X2 >EG 10.E10)) ; IFLAG = 1 ; FINSI ; SI (IFLAG NEG 0) ; QUITTER SECANTI ; FINSI ; I = 0 ; F1 IFLAG1 = QUQU TAB_1 X1 ; F2 IFLAG2 = QUQU TAB_1 X2 ; *MESS ' F1 = ' F1 ; *MESS ' F2 = ' F2 ; XPREC = 0. ; REPETER BOUC4(NMAX) ; SI (OU (X1 >EG 10.E10) (X2 >EG 10.E10)) ; IFLAG = 1 ; FINSI ; SI (X1 <EG X1MIN) ; X1 = X1MIN ; FINSI ; SI (IFLAG NEG 0) ; QUITTER SECANTI ; FINSI ; X3 = X2-(F2*(X1-X2)/(F1-F2)) ; ERR = (ABS ((XPREC-X3)/X3))*100 ; F3 IFLAG3 = QUQU TAB_1 X3 ; * MESS ' F3 = ' F3 ; SI ((ERR <EG ERRMAX) ET (F3 <EG 1.E-3)) ; QUITTER SECANTI ; FINSI ; XPREC = X3 ; I = I + 1 ; SI ((F1*F3) < 0.) ; SI ((F2*F3) < 0.) ; A1 = ABS (F3-F1) ; A2 = ABS (F3-F2) ; SI (A1 > A2) ; X1 = X3 ; F1 = F3 ; SINON ; X2 = X3 ; F2 = F3 ; FINSI ; SINON ; X2 = X3 ; F2 = F3 ; FINSI ; SINON ; SI ((F2*F3) > 0.) ; A1 = ABS (F3-F1) ; A2 = ABS (F3-F2) ; SI (A1 > A2) ; X1 = X3 ; F1 = F3 ; SINON ; X2 = X3 ; F2 = F3 ; FINSI ; SINON ; X1 = X3 ; F1 = F3 ; FINSI ; FINSI ; FIN BOUC4 ; *MESS ' X3 = ' X3 ; FINPROC X3 ERR IFLAG ; *_____________________________________________________________________________ * **** @CELAT94 DEBPROC @CELAT94 TAB_1*TABLE ; * * --- entrees * NIVEAU = TAB_1.'NIVEAU'; SI (NIVEAU >EG 4); FINSI ; PROP_PHY TAB_1 ; * NORADICI = 0 ; *DQ = 2.E3 ; DQ = 2.E6 ; Q1 = 0. ; *Q1 = 20.E6 ; REPETER BOUC2 ; * MESS '---> BOUC2 ' ; QQ = Q1 ; IFLAG = 0 ; QQ = QQ + DQ ; FQ IFLAG = QUQU TAB_1 QQ ; * MESS 'FQ =' FQ ; * MESS '--------------------------IFLAG =' IFLAG ; REPETER BOUC1 ; * MESS '--> BOUC1 ' ; SI (IFLAG <EG 0) ; QUITTER BOUC1 ; FINSI ; IFLAG = 0 ; QQ = QQ + DQ ; FQ IFLAG = QUQU TAB_1 QQ ; FIN BOUC1 ; SI (FQ >EG 0.) ; QUITTER BOUC2 ; SINON ; SI (DQ < 1.E-2) ; NORADICI = 1 ; QUITTER BOUC2 ; FINSI ; Q1 = QQ - DQ ; DQ = DQ / 2. ; * MESS ' --------QQ = ' QQ ; * MESS ' --------Q1 = ' Q1 ; * MESS ' FQ = ' FQ ; FINSI ; FIN BOUC2 ; * *MESS '--->BOUC3' ; *MESS ' **************************** ' ; *MESS ' **************************** ' ; *MESS ' **************************** ' ; *MESS ' **************************** ' ; *MESS ' **************************** ' ; Q1 = QQ ; Q1MIN = Q1 ; Q2 = QQ + DQ ; *MESS 'Q1 ='Q1 ; *MESS 'Q1MIN =' Q1MIN ; *MESS 'Q2 =' Q2 ; *MESS 'DQ =' DQ ; *MESS 'NORADICI =' NORADICI ; REPETER BOUC3 ; SI (NORADICI EGA 1) ; QUITTER BOUC3 ; FINSI ; IFLAG = 0 ; ERRMAX = 0.00001 ; SI (OU (Q1 >EG 10.E10) (Q2 >EG 10.E10)) ; MESS ' WARNING Q1 OR Q2 EXCEEDED MAXIMUM VALUE ' ; QUITTER BOUC3 ; FINSI ; QCAL ERR IFLAG = SECANTI TAB_1 Q1 Q2 Q1MIN ERRMAX 500 ; SI (IFLAG NEG 0) ; MESS ' PARAMETER PROBLEM IN TEST ' ; IFLAG = 0 ; FINSI ; SI (QCAL EGA 0.) ; QUITTER BOUC3 ; FINSI ; QUITTER BOUC3 ; FIN BOUC3 ; * * QCHFW = QCAL ; DELTA = 0. ; UB = 0. ; UBL = 0. ; BLB = 0. ; Q1 = 0. ; Q2 = 0. ; QCAL = 0. ; * TAB_1.CHF = QCHFW ; SI (NIVEAU >EG 4); FINSI ; *FINPROC QCHFW ; FINPROC ; **** @CERI DEBPROC @CERI P_1*POINT P_2*POINT P_3*POINT R_1*FLOTTANT ; X_I = (X_1 + X_2 ) / 2. ; Y_I = (Y_1 + Y_2 ) / 2. ; A_1 = (( X_1 - X_2 ) ** 2 ) + (( Y_1 - Y_2 ) ** 2 ) / 4. ; R_12 = R_1 ** 2 ; REPETER BLO1 1 ; SI ( A_1 EGA R_12 1.E-6 ) ; PS_1 = X_I Y_I ; PSCAL_1 = ((X_I - X_4) * (X_I - X_3)) + ((Y_I - Y_4) * (Y_I - Y_3)) ; SI (PSCAL_1 > 0. ) ; FINSI ; QUITTER BLO1 ; FINSI ; SI ( ( X_1 - X_2 ) NEG 0. 1.E-6) ; B_1 = (( Y_1 - Y_2 ) ** 2 ) / (( X_1 - X_2 ) ** 2 ) + 1. ; SI ( A_1 < R_12) ; YS_1 = Y_I + (((R_12 - A_1) / B_1) ** 0.5 ) ; XS_1 = X_I - ((YS_1 - Y_I)*(Y_1 - Y_2 )/(X_1 - X_2 )) ; PS_1 = XS_1 YS_1 ; PSCAL_1 = ((X_I - XS_1) * (X_I - X_3)) + ((Y_I - YS_1) * (Y_I - Y_3)) ; SI (PSCAL_1 < 0. ) ; YS_2 = Y_I - (((R_12 - A_1) / B_1) ** 0.5 ) ; XS_2 = X_I - ((YS_2 - Y_I)*(Y_1 - Y_2 )/(X_1 - X_2 )) ; PS_1 = XS_2 YS_2 ; FINSI ; SINON ; FINSI ; SINON ; B_1 = (( Y_1 - Y_2 ) ** 2 ) + 1. ; R_12 = R_1 ** 2 ; YS_1 = Y_I + (((R_12 ) / B_1) ** 0.5 ) ; XS_1 = X_I - ((YS_1 - Y_I)*(Y_2 - Y_1 )) ; PS_1 = XS_1 YS_1 ; PSCAL_1 = ((X_I - XS_1) * (X_I - X_3)) + ((Y_I - YS_1) * (Y_I - Y_3)) ; SI (PSCAL_1 < 0. ) ; YS_2 = Y_I - (((R_12 ) / B_1) ** 0.5) ; XS_2 = X_I - ((YS_2 - Y_I)*(Y_2 - Y_1 )) ; PS_1 = XS_2 YS_2 ; FINSI ; FINSI ; FIN BLO1 ; FINPROC C_ERC1 PS_1 ; *----------------------------------------------------------------------- * Procedure CFLUXTOT *----------------------------------------------------------------------- DEBPROC CFLUXTOT TAB1*TABLE; * *********************************************************************** * CFLUXTOT developpee par Nicolas URAGO (avr-sept 1994) * * largement revisitee par Jacques SCHLOSSER et Alain MOAL (aout 1995) * *********************************************************************** ******* ATTENTION --> Cette procedure ne tourne qu'en 3D et ne peut * traiter que des cas de limiteurs plancher car * Z (point tangent) = Z (centre du plasma) * * *-------------------- VARIABLES D'ENTREE LPAT1 = TAB1.LFLUX_EXTE ; GRP1 = TAB1.GRAND_RAYON ; IMESS = TAB1.'NIVEAU' ; PTG = TAB1.'PT_TGPLASMA'; MODEL0 = TAB1.'MODELF' ; LAMBQ = TAB1.LAMDAQ ; LISFLU = TAB1.LIS_FLUX ; OEIL0 = TAB1.VIEW_P ; * SI (EXISTE TAB1 ANGLE_DEC) ; PSI = TAB1.ANGLE_DEC ; SINON; PSI = 0.0 ; FINSI; *--------------------------------------- * *---- On calcule pour chaque point de LPAT1, les coordonnees *---- de son'centre plasma'. GRAYP1 = (XP1**2 + (YP1**2))**0.5 ; XCP1 = XP1 * GRP1 / GRAYP1 ; YCP1 = YP1 * GRP1 / GRAYP1 ; * AUX1 = ((XCP1 - XP1)**2 + ((YCP1 - YP1)**2))**0.5; BETA1 = ATG (AUX1/ZP1) ; ALPHA2 = ATG YCP1 XCP1 ; * *---- le vecteur tangent aux lignes de champ B est orthogonal *---- a V = P1CP1 VX1 = XCP1 - XP1 ; VY1 = YCP1 - YP1 ; VZ1 = ZP1 * -1. ; * *---- B appartient au plan defini par les vecteurs K (0, 0, 1) et U *UX1 = SIN (PSI + ALPHA2) ; *UY1 = (COS (PSI + ALPHA2)) * -1. ; *UZ1 = UX1 * 0. ; * UX1 = SIN (PSI - ALPHA2) ; UY1 = COS (PSI - ALPHA2) ; UZ1 = UX1 * 0. ; * *---- calcul de B BZ = ((VZ1*UX1)**2 + ((VZ1*UY1)**2)) / ((VX1*UX1 + (VY1*UY1))**2) + 1. ; BZ = BZ**(-0.5) * -1.; BY = BZ * (VZ1*UY1) /(VX1*UX1 + (VY1*UY1)) * -1. ; BX = BY * UX1 / UY1 ; * *---- Calcul du produit scalaire : VECTEUR TANGENT . NORMALE COS_BN = ABS ((BX*NX) + (BY*NY) + (BZ*NZ)) ; * *---- Coordonnees du point de tangence * *---- Centre du plasma au dessus du point de tangence XCREF1 = XREF1 * GRP1 / ((XREF1**2 + (YREF1**2))**0.5); YCREF1 = YREF1 * GRP1 / ((XREF1**2 + (YREF1**2))**0.5); * *---- DREF1 est le petit rayon du plasma DREF1 = (((XREF1-XCREF1)**2) + ((YREF1-YCREF1)**2) + (ZREF1**2))**.5; DIST1 = (((XP1 - XCP1)**2) + ((YP1 - YCP1)**2) + (ZP1**2))**.5; * *---- Distance a la DSMF LDEC1 = DIST1 - DREF1 ; * *---- Calcul du profil de flux VPAT1 = COS_BN * (EXP (LDEC1/(-1.*LAMBQ))) ; * *---- Visualisations ARET0 = ARETE LPAT1 ; TITRE 'CFLUXTOT : B.N = COSINUS OF THE INCIDENCE ANGLE'; TRAC OEIL0 COS_BN LPAT1 ARET0; TITRE 'CFLUXTOT : TANGENT VECTOR TO THE MAGNETIC LINE'; VB = @CVECT BX BY BZ LPAT1 VERT; TRAC OEIL0 VB LPAT1 ; TITRE 'CFLUXTOT : DISTANCE TO THE LCFS' ; TRAC OEIL0 LDEC1 LPAT1 ARET0; TITRE 'CFLUXTOT : PROFILE OF THE INCIDENT FLUX' ; TRAC OEIL0 VPAT1 LPAT1 ARET0; * *-------------------- VARIABLES EN SORTIE *---- flux moyen et puissance *----------------------------------------- * FINPROC VPAT1 ; **** @CFPFLU DEBPROC @CFPFLU TAB1*TABLE ; * ************************************************************** * Procedure de calcul du profil du depot de puissance sur un * * objet avec la configuration magnetique de JET. * * Alain MOAL (Janvier - Avril 2001) * ************************************************************** * Modif : * * 08/11/01 (A.MOAL) : nouveau nom (JETFLU devient CFPFLU) * * 08/11/01 (A.MOAL) : calcul de la puissance reelle deposee * * 23/11/01 (A.MOAL) : trace de dpsi sur le maillage * * 06/12/01 (A.MOAL) : indicateur du passage dans cfpflu * * 27/01/04 (A.MOAL) : suppression de l'indicateur <CFPFLU * ************************************************************** * * *---- Valeurs par defaut, verification des indices de la table @VDEFJET TAB1 ; * *--------------- VARIABLES D'ENTREE : MAIL0 = TAB1.<MAILLAGE ; MMAIL0 = TAB1.MODELF ; CONT0 = TAB1.LFLUX_EXTE ; IMESS = TAB1.<IMESS ; ITRAC = TAB1.<ITRAC ; ITYPDEP = TAB1.<TYPE_DEPOT ; SI (NON (EXISTE TAB1 <NXM)) ; ICALNORM = VRAI ; SINON ; ICALNORM = FAUX ; NXM = TAB1.<NXM ; NYM = TAB1.<NYM ; NZM = TAB1.<NZM ; FINSI ; OEIL0 = TAB1.VIEW_P ; SINON ; CONTDES0 = TAB1.LFLUX_EXTE_DESS ; FINSI ; ICALINCI = TAB1.<CALCUL_INCIDENCE ; PUISTOT0 = TAB1.<PUISSANCE_TOTALE ; *------------------------------------ * *TAB1.<CFPFLU = VRAI ; * *---- lecture de la carte de champ magnetique dans un fichier @LECTB TAB1 ; *--- trace de dpsi sur le maillage TAB1.<MAILLAGE_B = CONT0 ; CHDPSI = @DPSI TAB1 ; TITRE '@CFPFLU : DPSI ON THE MESH' ; TRAC LISOV0 CHDPSI CONT0 ; * *---- lecture du flux normalise sur une ligne dans un fichier @LECTF TAB1 ; TITRE '@CFPFLU : MAGNETIC DOMAIN, AREA FOR NORMALIZED FLUX AND STUDIED OBJECT'; *TRAC (TAB1.<GRILLE_B ET TAB1.<MAILLAGE_FN ET MAIL0) ; * *---- calcul du champ B sur la ligne de reference pour *---- verification des angles d'incidences SI (ICALINCI) ; @VERANG TAB1 ; FINSI ; TAB1.<MAILLAGE_B = TAB1.<MAILLAGE_FN ; BR BZ BPHI = @MAGNB TAB1 ; * *---- calcul du champ magnetique sur le maillage TAB1.<MAILLAGE_B = MAIL0 ; BR BZ BPHI = @MAGNB TAB1 ; *AM*11/09/01*BXM = BR * (COS PHI) + (BPHI * (SIN PHI)); *AM*11/09/01*BYM = BR * (SIN PHI) - (BPHI * (COS PHI)); BXM = BR * (COS PHI) - (BPHI * (SIN PHI)); BYM = BR * (SIN PHI) + (BPHI * (COS PHI)); BZM = BZ ; MENAGE ; * *---- calcul des normales a la surface calculees *---- dans le repere du maillage SI (ICALNORM) ; NXM NYM NZM = @VNORM3D MAIL0 CONT0 ; TAB1.<NXM = NXM ; TAB1.<NYM = NYM ; TAB1.<NZM = NZM ; FINSI; MENAGE ; * *---- calcul du produit scalaire et de l'angle d'incidence B_NORM = ((BXM*BXM) + (BYM*BYM) + (BZM*BZM))**0.5 ; VBVN = (ABS ((BXM*NXM) + (BYM*NYM) + (BZM*NZM))) / B_NORM; ANGINCI = ATG ((1.-(VBVN**2))**0.5) VBVN ; * *---- vecteur champ magnetique et vecteur normal dans le repere *---- du maillage en vue de la visualisation VB1 = @CVECT BXM BYM BZM CONT0 VERT; VN1 = @CVECT NXM NYM NZM CONT0 BLEU; * *---- dans le plan xy du repere du maillage BETA2DXY = ATG (BYM*-1.) (BXM*-1.) ; *---- dans le plan xz du repere du maillage BETA2DXZ = ATG (BZM*-1.) (BXM*-1.) ; * *---- calcul de la densite de puissance recue par chaque point VAR1 = @FLNORM TAB1 ; * *---- profil du flux pour une puissance de 1 MW deposee sur l'objet *---- (flux parallele ou perpendiculaire) SI (ITYPDEP) ; PROFIL0 = VAR1 * VBVN ; SINON ; PROFIL0 = VAR1 * ((1. - (VBVN*VBVN)) ** .5) ; FINSI ; * *---- integration du flux sur la surface * *---- calcul du flux moyen * *---- flux reel deposee pour une puissance donnee en MW PROFIL1 = PROFIL0 * PUISTOT0 ; * *---- traces en 3D ARET1 = ARETE CONT0 ; SINON ; ARET1 = ARETE CONT0 40. ; FINSI ; TITRE '@CFPFLU : MAGNETIC FIELD AND NORMAL VECTOR' ; TRACE CACH OEIL0 (VB1 ET VN1) MAIL0 ; TITRE '@CFPFLU : COSINUS OF THE ANGLE BETWEEN b AND n' ; TRACE CACH OEIL0 20 VBVN CONT0 ARET1; TITRE '@CFPFLU : 90 - ANGLE BETWEEN VECTORS B AND SURFACE (DEGREE)'; TRACE CACH OEIL0 20 (90. - ANGINCI) CONT0 ARET1; TRACE CACH OEIL0 20 B_NORM CONT0 ARET1 ; * TITRE '@CFPFLU : flux0 * exp (- delta / lamdaq)' ; * TRACE CACH OEIL0 20 VAR1 CONT0 ARET1; TITRE '@CFPFLU : INCIDENT HEAT FLUX FOR 'PUISTOT0' MW' ; * TRACE CACH OEIL0 20 PROFIL0 CONT0 ARET1 ; TRACE CACH OEIL0 20 PROFIL1 CONT0 ARET1 ; FINSI ; SI (IMESS >EG 2) ; FINSI ; SI (IMESS >EG 3) ; FINSI ; * *--------------- VARIABLES DE SORTIE : TAB1.V_FACFM2 = PROMOY ; TAB1.<ANGINCI = ANGINCI ; TAB1.<VBVN = VBVN ; *TAB1.<CFPFLU = FAUX ; *------------------------------------- FINPROC PROFIL1 ; **** @CHAMB DEBPROC @CHAMB TAB1*TABLE XG1*CHPOINT YG1*CHPOINT ZG1*CHPOINT ISHIFT*LOGIQUE IRIPPLE*LOGIQUE ; * *********************************************************** * Procedure de calcul du champ magnetique en chaque point * * en utilisant le modele Seigneur-Hertout de ripple avec * * prise en compte du shift de Shafranov. * * Alain MOAL (juin 1995) * *********************************************************** *123456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 *********************************************************** * *MESS '---------------------------------> calling @CHAMB'; * *--------------- VARIABLES D'ENTREE : RP = TAB1.<RP ; HP = TAB1.<HP ; RHO0 = TAB1.<RHO0 ; THETA0 = TAB1.<THETA0 ; ANGPHI0 = TAB1.<ANGPHI0 ; RR = TAB1.<RR ; LAMB = TAB1.<LAMB ; IPLASMA = TAB1.<IPLASMA ; COEFA = TAB1.<COEFA ; COEFB = TAB1.<COEFB ; COEFC = TAB1.<COEFC ; EPS = TAB1.<EPS ; NBOB = TAB1.<NBOB ; NSPI = TAB1.<NSPI ; INTENS = TAB1.<INTENS ; IMESS = TAB1.<IMESS ; ICHAMP = TAB1.<MODEL_CHAMP ; *------------------------------------ * PI = 3.141592 ; MU0 = PI * 4.E-7 ; * *---- Coordonnees de chaque point dans le repere du plasma RHOP THETAP PHIP = @CRGTC XG1 YG1 ZG1 RP HP ; * *---- Masque delimitant le domaine de validite du modele de ripple *attention domaine de validite etendu de 110 a 180 par *E.COSTA/E.TSITRONE le 02/06/97 *MASK0 = (ABS THETAP) MASQUE INFERIEUR 110. ; MASK0 = (ABS THETAP) MASQUE INFERIEUR 181. ; * *SI (NON ISHIFT) ; * LAMB = -1. ; *FINSI ; * *---- Calcul dans le repere du plasma des composantes du champ *---- poloidal induit par le courant circulant dans le plasma AUX0 = -1. * MU0 * IPLASMA / (2. * PI) ; * SI (EGA ICHAMP 'SEIGNEUR') ; BPOL_RHO = (RHOP ** -2) * (RHO0**2) - 1. ; BPOL_RHO = BPOL_RHO * (LAMB + 0.5) + (LOG (RHOP / RHO0)) ; BPOL_RHO = BPOL_RHO * (SIN THETAP) * AUX0 / (2. * RP) ; * BPOL_THE = ((RHOP ** -2) * (RHO0**2)) + 1. ; BPOL_THE = BPOL_THE * (LAMB + 0.5) - 1. + (LOG (RHOP / RHO0)); BPOL_THE = BPOL_THE * RHOP * (COS THETAP) / (2. * RP) + 1. ; BPOL_THE = BPOL_THE * (RHOP ** -1) * AUX0 ; FINSI ; * SI (EGA ICHAMP 'SHAFRANOV') ; * ---- cette formulation a ma preference, les 2 autres semblent * douteuses (A.MOAL) BPOL_RHO = ((RHOP ** -2) * (RHO0**2) - 1.) * -1. ; BPOL_RHO = BPOL_RHO * (LAMB + 0.5) + (LOG (RHOP / RHO0)) ; BPOL_RHO = BPOL_RHO * (SIN THETAP) * AUX0 / (2. * RP) ; * BPOL_THE = ((RHOP ** -2) * (RHO0**2)) + 1. ; BPOL_THE = BPOL_THE * (LAMB + 0.5) - 1. + (LOG (RHOP / RHO0)); BPOL_THE = BPOL_THE * RHOP * (COS THETAP) / (2. * RP) + 1. ; BPOL_THE = BPOL_THE * (RHOP ** -1) * AUX0 ; FINSI ; * SI (EGA ICHAMP 'ARTSIMOVICH') ; BPOL_RHO = ((RHOP ** -2) * (RHO0**2) - 1.) * -1. ; BPOL_RHO = BPOL_RHO * (LAMB + 0.5) + (LOG (RHOP / RHO0)) ; BPOL_RHO = BPOL_RHO * (SIN THETAP) * AUX0 / (2. * RP) ; * BPOL_THE = ((RHOP ** -2) * (RHO0**2)) + 1. ; BPOL_THE = BPOL_THE * (LAMB + 0.5) - 1. + (LOG (RHOP / RHO0)); BPOL_THE = BPOL_THE * (COS THETAP) / 2. + 1. ; BPOL_THE = BPOL_THE * AUX0 / RP ; FINSI ; * SI (NON ISHIFT) ; BPOL_THE = ((RHOP * 2. * PI / (MU0 * IPLASMA))**(-1))*(-1.) ; BPOL_RHO = BPOL_THE * 0. ; FINSI ; * BPOL_PHI = RHOP * 0. ; * *---- Passage dans la base cartesienne de la machine BXPOL BYPOL BZPOL = @CBTGV BPOL_RHO BPOL_THE BPOL_PHI THETAP PHIP ; * *---- Coordonnees de chaque point dans le "repere du ripple" RHOR THETAR PHIR = @CRGTC XG1 YG1 ZG1 RR 0. ; * SI IRIPPLE ; * ---- Calcul dans le repere adapte au calcul du ripple du champ * ---- cree par les bobines toroidales * * ---- 1) calcul de la coordonnee radiale dans le plan meridien Phi=0 * ---- de la ligne de champ consideree par une methode de point fixe RHO_OLD = RHOR ; KAUX = (EXP(THETAR**2 * -1. * COEFC)) * ((COS((PHIR + ANGPHI0) * NBOB)) * -1. + 1.) * COEFA ; I = 0 ; IMAX = 50 ; REPETER BOUCLE IMAX ; I = I + 1; RHO_NEW = RHOR + (KAUX * (EXP(RHO_OLD * COEFB))) ; * MESS ' ITERATIONS NUMBER : ' I ; * MESS (maxi RHO_NEW ) ; * MESS ' ITERATIONS NUMBER : ' I ; QUITTER BOUCLE ; FINSI ; RHO_OLD = RHO_NEW ; FIN BOUCLE ; SI (I >EG IMAX) ; *EC* ERRE ' >>> STOP IN @CHAMB'; FINSI ; RHOMER = RHO_NEW ; * * ---- 2) composantes du champ (modele Hertout-Seigneur) DRHOMER = (EXP(RHOMER * COEFB)) * (EXP(THETAR**2 * COEFC * -1.)) * COEFA ; FINSI ; RAUX1 = RHOR * (COS THETAR) + RR ; * *---- champ toroidal moyen sur le cercle de rayon Rr BPHI0 = -1. * MU0 * INTENS * NBOB * NSPI / (2. * PI * RR) ; * *---- champ toroidal moyen sur le cercle de rayon * (Rr + Rhor * cos Thetar) BTPHI0 = (RAUX1 ** -1.) * BPHI0 * RR ; * SI IRIPPLE ; *EC mai 1997* BTOR_PHI = RHOR / (RAUX1*RHOR) + COEFB ; *CB fev 2015* BTOR_PHI = RR / (RAUX1*RHOR) + COEFB ; *CB, pour prendre l'inverse du CHPOINT, utilisation de '**' (-1) BTOR_PHI = RR * ((RAUX1*RHOR)**(-1)) + COEFB ; *AM* BTOR_PHI = ((RHOR * RAUX1)**-1) * (RAUX1 * -1. + (2.*RR)) + COEFB; BTOR_PHI = BTOR_PHI * (-1.) * DRHOMER * (COS((PHIR + ANGPHI0) * NBOB)) + 1. ; BTOR_PHI = MASK0 * BTOR_PHI * BTPHI0 + ((1.-MASK0) * BTPHI0); * BTOR_RHO = MASK0 * (RAUX1 ** -1.) * DRHOMER * BTPHI0 * (SIN((PHIR + ANGPHI0) * NBOB)) * NBOB * (-1.) ; * BTOR_THE = RHOR * 0. ; * RHOMER = MASK0 * RHOMER + ((1.-MASK0) * RHOR) ; SINON ; BTOR_PHI = BTPHI0 ; BTOR_RHO = RHOR * 0. ; BTOR_THE = RHOR * 0. ; RHOMER = RHOR ; FINSI ; * *---- Passage dans la base cartesienne de la machine BXTOR BYTOR BZTOR = @CBTGV BTOR_RHO BTOR_THE BTOR_PHI THETAR PHIR ; * *---- Normes du champ poloidal et du champ toroidal N_BPOL = (BXPOL*BXPOL + (BYPOL*BYPOL) + (BZPOL*BZPOL))**0.5 ; N_BTOR = (BXTOR*BXTOR + (BYTOR*BYTOR) + (BZTOR*BZTOR))**0.5 ; * *---- Facteur de securite FSECU = (RHOP / (RHOP*(COS THETAP)+RP)) * (N_BTOR / N_BPOL) ; * *---- Champ total SI (EXISTE TAB1 MOAL1) ; BXPOL = BXPOL*0.; BYPOL = BYPOL*0.; BZPOL = BZPOL*0.; FINSI ; SI (EXISTE TAB1 MOAL2) ; BXTOR = BXTOR*0.; BYTOR = BYTOR*0.; BZTOR = BZTOR*0.; FINSI ; BX = BXPOL + BXTOR ; BY = BYPOL + BYTOR ; BZ = BZPOL + BZTOR ; * *---- Messages de verification du calcul SI (IMESS >EG 2) ; MESS 'max and min of the BPOL components in RP' ; MESS 'max and min of the BTOR components in RR' ; MESS 'max and min of the BPOL components' ; MESS 'max and min of the BTOR components' ; MESS 'max and min of Rho, Theta, Phi in RP'; MESS 'max and min of X, Y, Z '; FINSI ; SI (IMESS >EG 3) ; FINSI ; * *MESS '---------------------------------> exiting @CHAMB'; * *--------------- VARIABLES DE SORTIE : TAB1.<RHOMER = RHOMER ; TAB1.<BXPOL = BXPOL ; TAB1.<BYPOL = BYPOL ; TAB1.<BZPOL = BZPOL ; TAB1.<BXTOR = BXTOR ; TAB1.<BYTOR = BYTOR ; TAB1.<BZTOR = BZTOR ; *------------------------------------- FINPROC BX BY BZ FSECU; **** @CRLTC DEBPROC @CRLTC TAB1*TABLE XM*CHPOINT YM*CHPOINT ZM*CHPOINT R*FLOTTANT ; * *************************************************************** * Procedure de changement de repere, on passe des * * coordonnees cartesiennes dans le repere de local de l'objet * * XM YM ZM repere defini par TAB1.<RHO0, TAB1.<THETA0 et * * TAB1.<RP aux coordonnees pseudo-toroidales defini par un * * grand rayon donne R . Alain MOAL (mai 1995) * *************************************************************** * *--------------- VARIABLES D'ENTREE : RHO0 = TAB1.<RHO0 ; THETA0 = TAB1.<THETA0 ; RP = TAB1.<RP ; *------------------------------------ * CT0 = COS THETA0 ; ST0 = SIN THETA0 ; MST0 = ST0 * -1. ; * *---- 1) rotation d'angle THETA0 autour de l'axe X X1 = XM ; Y1 = (YM * CT0) + (ZM * ST0) ; Z1 = (YM * MST0) + (ZM * CT0) ; * *---- 2) changement d'origine vers le centre du tore, *---- rotation de 180 degres autour de l'axe Z2 pour *---- retrouver le repere global puis calcul de PHI X2 = X1 ; Y2 = Y1 - (RHO0 * CT0 + RP) ; Z2 = Z1 + (RHO0 * ST0) ; * X2 = X2 * -1. ; Y2 = Y2 * -1. ; PHI = ATG (X2 * -1.) Y2 ; * *---- 3) rotation d'angle PHI autour de l'axe Z2 CPHI = COS PHI ; SPHI = SIN PHI ; MSPHI = SPHI * -1. ; X3 = (X2 * CPHI) + (Y2 * SPHI) ; Y3 = (X2 * MSPHI) + (Y2 * CPHI) ; Z3 = Z2 ; * *---- 4) changement d'origine vers le centre du nouveau repere X4 = X3 ; Y4 = Y3 - R ; Z4 = Z3 ; * *---- calcul de RHO et THETA RHO = ((Y4 * Y4) + (Z4 * Z4))**0.5 ; THETA = ATG Z4 Y4 ; * * FINPROC RHO THETA PHI ; **** @CRTLC DEBPROC @CRTLC R*FLOTTANT RHO*CHPOINT THETA*CHPOINT PHI*CHPOINT TAB1*TABLE ; * *************************************************************** * Procedure de changement de repere, on passe des coordonnees * * pseudo-toroidales centrees sur un grand rayon R aux * * coordonnees cartesiennes dans le repere de la structure * * modelisee. Alain MOAL (mai 1995) * *************************************************************** * *--------------- VARIABLES D'ENTREE : RHO0 = TAB1.<RHO0 ; THETA0 = TAB1.<THETA0 ; RP = TAB1.<RP ; *------------------------------------ * CT0 = COS THETA0 ; ST0 = SIN THETA0 ; MST0= ST0 * -1. ; CPHI = COS PHI ; SPHI = SIN PHI ; MSPHI = SPHI * -1. ; * X4 = RHO * 0. ; Y4 = RHO * (COS THETA) ; Z4 = RHO * (SIN THETA) ; * *---- 1) changement d'origine vers le centre du tore X3 = X4 ; Y3 = Y4 + R ; Z3 = Z4 ; * *---- 2) rotation d'angle - PHI autour de l'axe Z3 * puis rotation de - 180 degres autour de l'axe Z2 X2 = (X3 * CPHI) + (Y3 * MSPHI) ; Y2 = (X3 * SPHI) + (Y3 * CPHI) ; Z2 = Z3 ; * X2 = X2 * -1. ; Y2 = Y2 * -1. ; * *---- 3) changement d'origine vers le centre d'objet X1 = X2 ; Y1 = Y2 + RP + (RHO0 * CT0) ; Z1 = Z2 - (RHO0 * ST0) ; * *---- 4) rotation d'angle - THETA0 autour de l'axe X1 XP = X1 ; YP = (Y1 * CT0) + (Z1 * MST0) ; ZP = (Y1 * ST0) + (Z1 * CT0) ; * FINPROC XP YP ZP ; **** @CRTTC DEBPROC @CRTTC R1*FLOTTANT RHO1*CHPOINT THETA1*CHPOINT PHI1*CHPOINT R2*FLOTTANT ; * *************************************************************** * Procedure de changement de repere. On passe d'un repere * * pseudo-toroidal defini par son grand rayon R1 a un autre * * repere pseudo-toroidal defini par son grand rayon R2. Ces * * deux reperes ont la meme orientation toroidale: Phi1 = Phi2 * * Alain MOAL (juin 1995) * *************************************************************** * RHO2 = RHO1**2 + ((R1 - R2)**2) ; RHO2 = RHO2 + (RHO1*(R1 - R2)*(COS THETA1)*2.) ; RHO2 = RHO2**0.5 ; * AUX1 = RHO1 * (SIN THETA1) ; AUX2 = RHO1 * (COS THETA1) - R2 + R1 ; THETA2 = ATG AUX1 AUX2 ; * PHI2 = PHI1 ; * FINPROC RHO2 THETA2 PHI2 ; **** @CRLMC DEBPROC @CRLMC XL*CHPOINT YL*CHPOINT ZL*CHPOINT TAB1*TABLE ; * ******************************************************************* * Version amelioree de l'ancien @CRLMC rebaptise @ACRLM * * Procedure de changement de repere. On passe du repere cartesien * * local de l'objet modelise au repere cartesien du maillage. Le * * point de tangence au plasma est l'origine du repere local et * * l'axe Y est dirige vers le centre du plasma. En 3D, L'axe X du * * repere local est dans la direction toroidale. * * en 2D cas PHICONS l'axe Z du repere local est l'axe toroidal * * en 2D cas THECONS l'axe x du repere local est l'axe toroidal * * Jacques SCHLOSSER et Alain MOAL (Decembre 1995) * ******************************************************************* * *--------------- VARIABLES D'ENTREE : CP = TAB1.CENTRE_PLASMA ; PTG = TAB1.PT_TGPLASMA ; SI (EXISTE TAB1 <PLAN) ; IPLAN = TAB1.<PLAN ; SINON ; FINSI ; SINON ; SI (EXISTE TAB1 <DIR_TOROIDAL) ; DIR1 = TAB1.<DIR_TOROIDAL ; SINON ; FINSI ; FINSI ; *------------------------------------ * VECT0 = CP MOINS PTG ; * * ---- calcul de l'angle de rotation dans le plan XY SI ((VX EGA 0.) ET (VY EGA 0.)) ; ANG1 = 0. ; SINON ; ANG1 = -1.* (ATG VX VY) ; FINSI ; * * SI (EGA IPLAN 'PHICONS'); * ---- Coupe 2D a Phi constant XL = ZL ; ZL = ZL * 0.; * ---- rotation XL1 = XL * (COS ANG1) + (YL * (-1.) * (SIN ANG1)); YL1 = XL * (SIN ANG1) + (YL * (COS ANG1)); FINSI; SI (EGA IPLAN 'THECONS'); * ---- Coupe 2D a Theta constant * ---- rotation XL1 = XL * (COS ANG1) + (YL * (-1.) * (SIN ANG1)); YL1 = XL * (SIN ANG1) + (YL * (COS ANG1)); FINSI; * ---- changement d'origine du repere XM = XL1 + XPTG ; YM = YL1 + YPTG ; ZM = YL1 * 0. ; * SINON ; * DIR2 = CP MOINS PTG ; * * XM1 = (A1 * XL) + (A2 * YL) + (A3 * ZL) ; YM1 = (B1 * XL) + (B2 * YL) + (B3 * ZL) ; ZM1 = (C1 * XL) + (C2 * YL) + (C3 * ZL) ; * XM = XM1 + X0 ; YM = YM1 + Y0 ; ZM = ZM1 + Z0 ; * FINSI ; FINPROC XM YM ZM ; **** @CRMLC DEBPROC @CRMLC XM*CHPOINT YM*CHPOINT ZM*CHPOINT TAB1*TABLE ; * ******************************************************************* * Version amelioree de l'ancien @CRMLC rebaptise @ACRML * * Procedure de changement de repere. On passe du repere cartesien * * du maillage au repere cartesien local de l'objet modelise. Le * * point de tangence au plasma est l'origine de ce repere et l'axe * * l'axe Y final est dirige vers le centre du plasma. * * en 3D l'axe x du repere local est donne par la direction * * toroidale * * en 2D cas PHICONS l'axe Z initial est l'axe toroidal * * en 2D cas THECONS l'axe x initial est l'axe toroidal * * Jacques SCHLOSSER et Alain MOAL (Decembre 1995) * ******************************************************************* * *--------------- VARIABLES D'ENTREE : CP = TAB1.CENTRE_PLASMA ; PTG = TAB1.PT_TGPLASMA ; SI (EXISTE TAB1 <PLAN) ; IPLAN = TAB1.<PLAN ; SINON ; FINSI ; SINON ; SI (EXISTE TAB1 <DIR_TOROIDAL) ; DIR1 = TAB1.<DIR_TOROIDAL ; SINON ; FINSI ; FINSI ; *------------------------------------ * VECT0 = CP MOINS PTG ; * * ---- calcul de l'angle de rotation dans le plan XY SI ((VX EGA 0.) ET (VY EGA 0.)) ; ANG1 = 0. ; SINON ; ANG1 = -1.* (ATG VX VY) ; FINSI ; * * * ---- changement d'origine du repere XM1 = XM - XPTG ; YM1 = YM - YPTG ; * ---- rotation pour aligner l'axe Y avec VECT0 SI (EGA IPLAN 'PHICONS'); * ---- Coupe 2D a Phi constant XL = XM1 * (COS ANG1) + (YM1 * (SIN ANG1)); YL = XM1 * (-1.) * (SIN ANG1) + (YM1 * (COS ANG1)); ZL = XM * 0. ; * ZL = XL ; XL = XL * 0.; FINSI; SI (EGA IPLAN 'THECONS'); * ---- Coupe 2D a Theta constant XL = XM1 * (COS ANG1) + (YM1 * (SIN ANG1)); YL = XM1 * (-1.) * (SIN ANG1) + (YM1 * (COS ANG1)); ZL = XM * 0. ; FINSI ; * SINON ; * DIR2 = CP MOINS PTG ; * * XM1 = XM - X0 ; YM1 = YM - Y0 ; ZM1 = ZM - Z0 ; * XL = (A1 * XM1) + (B1 * YM1) + (C1 * ZM1) ; YL = (A2 * XM1) + (B2 * YM1) + (C2 * ZM1) ; ZL = (A3 * XM1) + (B3 * YM1) + (C3 * ZM1) ; * FINSI ; FINPROC XL YL ZL ; **** @CBTLV DEBPROC @CBTLV BRHO*CHPOINT BTHETA*CHPOINT BPHI*CHPOINT THETA*CHPOINT PHI*CHPOINT TAB1*TABLE ; * ********************************************************************* * Procedure de changement de base pour un vecteur B de coordonnees * * BRHO, BPHI, BTHETA dans une base pseudo-toroidale aux coordonnees * * cartesiennes BX, BY, BZ dans la base de l'objet. * * Alain MOAL (juin 1995) * ********************************************************************* * *--------------- VARIABLES D'ENTREE : THETA0 = TAB1.<THETA0 ; *------------------------------------ * CT = COS THETA ; ST = SIN THETA ; CT0 = COS THETA0 ; ST0 = SIN THETA0 ; MST0 = ST0 * -1. ; CPHI = COS PHI ; SPHI = SIN PHI ; MSPHI= SPHI * -1. ; * *---- 1) rotation de - Theta autour de "l'axe Phi" BRHO1 = (CT * BRHO) - (ST * BTHETA) ; BTHETA1 = (ST * BRHO) + (CT * BTHETA) ; BPHI1 = BPHI ; * *---- 2) rotation de - Phi autour de "l'axe Theta" BRHO2 = (CPHI * BRHO1) + (MSPHI * BPHI1) ; BTHETA2 = BTHETA1 ; BPHI2 = (SPHI * BRHO1) + (CPHI * BPHI1) ; * *---- 3) rotation de Theta0 autour de "l'axe Phi" BRHO3 = (BRHO2 * CT0) + (BTHETA2 * ST0) ; BTHETA3 = (BRHO2 * MST0) + (BTHETA2 * CT0) ; BPHI3 = BPHI2 ; * *---- 4) composantes dans le repere cartesien BX = BPHI3 ; BY = BRHO3 * -1. ; BZ = BTHETA3 ; * FINPROC BX BY BZ; **** @CBLMV DEBPROC @CBLMV VXL*CHPOINT VYL*CHPOINT VZL*CHPOINT TAB1*TABLE ; * ******************************************************************** * Version amelioree de l'ancien @CBLMV rebaptise @ACBLM * * Procedure de changement de base. On passe de la base cartesienne * * locale de l'objet modelise a la base cartesienne du maillage. * * l'axe Y est dirige du point de tangence au plasma vers le centre * * du plasma. En 3D, L'axe X du repere local est dans la direction * * toroidale. * * en 2D cas PHICONS l'axe Z du repere local est l'axe toroidal * * en 2D cas THECONS l'axe x du repere local est l'axe toroidal * * Jacques SCHLOSSER et Alain MOAL (Decembre 1995) * ******************************************************************** * *--------------- VARIABLES D'ENTREE : CP = TAB1.CENTRE_PLASMA ; PTG = TAB1.PT_TGPLASMA ; SI (EXISTE TAB1 <PLAN) ; IPLAN = TAB1.<PLAN ; SINON ; FINSI ; SINON ; SI (EXISTE TAB1 <DIR_TOROIDAL) ; DIR1 = TAB1.<DIR_TOROIDAL ; SINON ; FINSI ; FINSI ; *------------------------------------ * VECT0 = CP MOINS PTG ; * * ---- calcul de l'angle de rotation dans le plan XY SI ((VX EGA 0.) ET (VY EGA 0.)) ; ANG1 = 0. ; SINON ; ANG1 = -1.* (ATG VX VY) ; FINSI ; * SI (EGA IPLAN 'PHICONS'); * ---- Coupe 2D a Phi constant VXL1 = VZL ; VYL1 = VYL ; VZL1 = VXL * (-1.); * ---- rotation VXM = VXL1 * (COS ANG1) + (VYL1 * (-1.) * (SIN ANG1)); VYM = VXL1 * (SIN ANG1) + (VYL1 * (COS ANG1)) ; VZM = VZL1 ; FINSI ; SI (EGA IPLAN 'THECONS'); * ---- Coupe 2D a Theta constant * ---- rotation VXM = VXL * (COS ANG1) + (VYL * (-1.) * (SIN ANG1)) ; VYM = VXL * (SIN ANG1) + (VYL * (COS ANG1)) ; VZM = VZL ; FINSI; * SINON ; * DIR2 = CP MOINS PTG ; * * VXM = (A1 * VXL) + (A2 * VYL) + (A3 * VZL) ; VYM = (B1 * VXL) + (B2 * VYL) + (B3 * VZL) ; VZM = (C1 * VXL) + (C2 * VYL) + (C3 * VZL) ; * FINSI ; FINPROC VXM VYM VZM ; **** @CBMLV DEBPROC @CBMLV VXM*CHPOINT VYM*CHPOINT VZM*CHPOINT TAB1*TABLE ; * ******************************************************************** * Version amelioree de l'ancien @CBMLV rebaptise @ACBML * * Procedure de changement de base. On passe de la base cartesienne * * du maillage a la base cartesienne locale de l'objet modelise. * * l'axe Y final est dirige du point de tangence vers le centre du * * plasma. En 3D l'axe x du repere local est donne par la direction * * toroidale * * en 2D cas PHICONS l'axe Z initial est l'axe toroidal * * en 2D cas THECONS l'axe x initial est l'axe toroidal * * Jacques SCHLOSSER et Alain MOAL (Decembre 1995) * ******************************************************************** * *--------------- VARIABLES D'ENTREE : CP = TAB1.CENTRE_PLASMA ; PTG = TAB1.PT_TGPLASMA ; SI (EXISTE TAB1 <PLAN) ; IPLAN = TAB1.<PLAN ; SINON ; FINSI ; SINON ; SI (EXISTE TAB1 <DIR_TOROIDAL) ; DIR1 = TAB1.<DIR_TOROIDAL ; SINON ; FINSI ; FINSI ; *------------------------------------ * VECT0 = CP MOINS PTG ; * * ---- calcul de l'angle de rotation dans le plan XY SI ((VX EGA 0.) ET (VY EGA 0.)) ; ANG1 = 0. ; SINON ; ANG1 = -1.* (ATG VX VY) ; FINSI ; * * ---- rotation pour aligner l'axe Y avec VECT0 SI (EGA IPLAN 'PHICONS'); * ---- Coupe 2D a Phi constant VXL1 = VXM * (COS ANG1) + (VYM * (SIN ANG1)); VYL1 = VXM * (-1.) * (SIN ANG1) + (VYM * (COS ANG1)); VZL1 = VZM ; * ---- Coupe 2D a Phi constant VXL = VZL1 ; VYL = VYL1 ; VZL = VXL1 * (-1.); FINSI ; SI (EGA IPLAN 'THECONS'); * ---- Coupe 2D a Theta constant * ---- rotation VXL = VXM * (COS ANG1) + (VYM * (SIN ANG1)); VYL = VXM * (-1.) * (SIN ANG1) + (VYM * (COS ANG1)); VZL = VZM ; FINSI ; * SINON ; * DIR2 = CP MOINS PTG ; * * VXL = (A1 * VXM) + (B1 * VYM) + (C1 * VZM) ; VYL = (A2 * VXM) + (B2 * VYM) + (C2 * VZM) ; VZL = (A3 * VXM) + (B3 * VYM) + (C3 * VZM) ; * FINSI ; FINPROC VXL VYL VZL ; **** @CHAQT * modification raph MITTEAU le 22 fevrier 1994 pour * que CHAQT ne fasse rien en 3D SI ( existe MM_1 ) ; MM_11 = MM_1 ; SINON ; MM_11 = 'MECANIQUE ELASTIQUE ' ; FINSI ; SI ( existe MCH_1 ) ; * M_21 = chan 'NOEUD' MOD_1 ( REDU MCH_1 MAI_1) ; FINSI ; SI ( existe CHP_1 ) ; FINSI ; SI ((NON ( existe CHP_1 )) ET (NON ( existe MCH_1))) ; FINSI ; * MAI_2 = chan tri6 MAI_1 ; * MESS 'nbre de Q8:' n_q8 'nbre de TRI6:' n_t6 ; SI ( n_q8 > 0 ) ; SI ( n_t6 > 0 ) ; SINON ; FINSI ; * MOD_2 = MODE MAI_2 mecanique elastique ; TT_1 = TEXTE MM_11 ; * il faut utiliser diff pour ne faire le proi que sur les noeuds nouveaux SINON ; MAI_2 = MAI_1 ; CHP_22 = CHP_21 ; MOD_2 = MOD_1 ; FINSI ; SINON; MOD_2 = MOD_1; MAI_2 = MAI_1 ; FINSI ; 'FINPROC' m_22 MOD_2 MAI_2 ; *----------------------------------------------------------------------* * * * C H A Q T * * --------- * * DATE 93/05/07 * procedure CHAQT (DRFC - J. Schlosser) * ------------------------------------------ * * MCHPO2 MAIL2 = CHAQT3D MOD1 OBJET1 MAIL1 * * * * Objet : * _________ * * Etant donne un objet de type MCHAML ou CHPOINT , OBJET1, * defini sur un MMODEL massif,MOD1,compose de QUA8 et TRI6 (ou * en 3D de CU20 PR15) et un sous ensemble MAIL1 du maillage MAITOT1 * correspondant a MOD1 ( en 3D par exemple * l enveloppe) compose de QUA8 et TRI6. La procedure cree * un CHPOINT defini sur un nouveau maillage compose exclusivement * de TRI6 afin de pouvoir effectue un trace d isovaleur plus correct * ( le QUA8 initial se trouve ainsi transforme en QUA9 avec un point * milieu ce qui permet un decoupage en 8 triangles lineaires. Cela * revient a approximer la variation quadratique dans l element par * une variation bilineaire) * * * * Commentaire * _____________ * * * MOD1 : objet de type MODE (elements massifs) * * OBJET1 : objet de type MCHAML ou CHPOINT * * MAIL1 : objet de type MAILLAGE compose de TRI6 et de QUA8 * * MCHPO2 : objet de type CHPOINT * * MAIL2 : objet de type MAILLAGE compose de TRI6 * * * * * * Remarque * _____________ * * * la procedure utilise grosso modo * MAIL2 = chan tri6 MAIL1 ; * MCHPO2 =proi MAIL2 MCHPO1 ; * ce shema brut est optimisee et la procedure ne * fait la projection que sur les points nouveaux milieux des QUA8 * ( malheureusement PROI ne calcule pas dans ce cas les bonnnes valeurs) * * Attention on voit que l on passe par l intermediaire d un CHPOINT * les valeurs vont se trouver moyennees aux interfaces des materiaux * si vous le souhaitez, procedez materiau par materiau ! * l' OBJET1 est REDUIT a MOD_1 a l entree de la procedure *----------------------------------------------------------------------* *123456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 'DEBPROC' CHAQT3D MOD_1*MMODEL MCH_1/MCHAML CHP_1/CHPOINT MAI_1*MAILLAGE ; SI ( existe MCH_1 ) ; FINSI ; SI ( existe CHP_1 ) ; * M_21 = chan CHAM CHP_21 MOD_1 'STRESSES' ; FINSI ; SI ((NON ( existe CHP_1 )) ET (NON ( existe MCH_1))) ; FINSI ; * MESS 'nbre de Q8:' n_q8 'nbre de TRI6:' n_t6 ; SI ( n_q8 > 0 ) ; SI ( n_t6 > 0 ) ; SINON ; FINSI ; * il faut utiliser diff pour ne faire le proi que sur les noeuds nouveaux * trac ( 1.e5 5.e4 -1.e5 ) CHP_20 MAI_1 ; * trac ( 1.e5 5.e4 -1.e5 ) M_21 MOD_1 MAI_1 ; * trac ( 1.e5 5.e4 -1.e5 ) ( MAI_1 et POI_NEW ); * trac face ( 1.e5 5.e4 -1.e5 ) MAI_2 ; * trac ( 1.e5 5.e4 -1.e5 ) CHP_22 MAI_2 ; SINON ; MAI_2 = MAI_1 ; CHP_22 = CHP_21 ; FINSI ; 'FINPROC' CHP_22 MAI_2 ; ****************************************** * * * procedure CHREP : changement de repere * * * ****************************************** SI ( EXISTE CH_2); CH_1 = CH_2 ; CH_PP = CH_PP2 ; SINON ; CH_1 = CH_M ; CH_PP = CH_MP; FINSI; MESS'DIMENSION'; P = TABLE ; P.1 = TABLE ; P.2 = TABLE ; P.3 = TABLE ; S = TABLE ; S.1 = TABLE ; S.2 = TABLE ; S.3 = TABLE ; SP = TABLE ; SP.1 = TABLE ; SP.2 = TABLE ; SP.3 = TABLE ; MR2D_1 = CHAINE 'TX ' 'TY ' 'NX ' 'NY ' ; MR2D_2 = CHAINE 'P11 ' 'P12 ' 'P21 ' 'P22 ' ; MR3D_1 = CHAINE 'TX ' 'TY ' 'TZ ' 'NX ' 'NY ' 'NZ ' 'BX ' 'BY ' 'BZ '; MR3D_2 = CHAINE 'P11 ' 'P12 ' 'P13 ' 'P21 ' 'P22 ' 'P23 ' 'P31 ' 'P32 ' 'P33 ' ; SI ( EGA CHOIX 'CONTRAINTES' ) ; MC2D_1 = CHAINE 'SMXX' 'SMYY' 'SMZZ' 'SMXY' ; MC2D_2 = CHAINE 'SMRR' 'SMZZ' 'SMTT' 'SMRZ' ; MC3D_1 = CHAINE 'SMXX' 'SMYY' 'SMZZ' 'SMXY' 'SMXZ' 'SMYZ' ; FINSI ; SI ( EGA CHOIX 'DEFORMATIONS' ) ; MC2D_1 = CHAINE 'EPXX' 'EPYY' 'EPZZ' 'EPXY' ; MC2D_2 = CHAINE 'EPRR' 'EPZZ' 'EPTT' 'EPRZ' ; MC3D_1 = CHAINE 'EPXX' 'EPYY' 'EPZZ' 'EPXY' 'EPXZ' 'EPYZ' ; FINSI ; SI (V1 EGA 2) ; SI ( NON (( EGA MCR1 MR2D_1) OU ( EGA MCR1 MR2D_2)) ) ; ERREUR 'COMP_REP_NON_ADMISES' ; FINSI; SI ( NON (( EGA MCC1 MC2D_1) OU ( EGA MCC1 MC2D_2)) ) ; ERREUR 'COMP_CHAMP_NON_ADMISES' ; FINSI; FINSI; SI (V1 EGA 3) ; SI ( NON ( EGA MCR1 MR3D_1) ) ; ERREUR 'COMP_REP_NON_ADMISES' ; FINSI; SI ( NON ( EGA MCC1 MC3D_1) ) ; ERREUR 'COMP_CHAMP_NON_ADMISES' ; FINSI; FINSI; SI (V1 EGA 2); S.2 . 1 = S.1 . 2 ; FINSI; SI (V1 > 2) ; * S.2 . 1 = S.1 . 2 ; S.3 . 1 = S.1 . 3 ; S.3 . 2 = S.2 . 3 ; I = 0; REPETER BOUCS1 3; I = I + 1; J = I - 1; REPETER BOUCS2 ( 3 + 1 - I ); J = J + 1; SP.I.J = 0.; L = 0; REPETER BOUCS3 3; L = L + 1; Q = 0; REPETER BOUCS4 3; Q = Q + 1; SP.I.J = (SP.I.J) + ( (P.I.L) * ( P.J.Q) * (S.L.Q )) ; FIN BOUCS4; FIN BOUCS3; FIN BOUCS2; FIN BOUCS1; SI ( EGA CHOIX CONTRAINTES); SINON; FINSI; SINON; I = 0; REPETER BOUCS11 2; I = I + 1; J = I-1; REPETER BOUCS21 (2+1-I); J = J + 1; SP.I.J = 0. ; L = 0; REPETER BOUCS31 2; L = L + 1; Q = 0 ; REPETER BOUCS41 2; Q = Q + 1; SP.I.J = (SP.I.J) + ( (P.I.L) * ( P.J.Q) * (S.L.Q )) ; FIN BOUCS41; FIN BOUCS31; FIN BOUCS21; FIN BOUCS11; SP.3 . 3 = S.3 . 3; SI ( EGA CHOIX CONTRAINTES); SINON; FINSI; FINSI; FINPROC CH_2; **** @CLAMQ DEBPROC @CLAMQ TAB1*TABLE XM*CHPOINT YM*CHPOINT ZM*CHPOINT ISHIFT*LOGIQUE IRIPPLE*LOGIQUE ; * *********************************************************** * Procedure de calcul du parametre Lambdaq necessaire au * * calcul du profil du depot de puissance en chaque point * * de la surface de la structure modelisee. * * Alain MOAL (juin 1995) * *********************************************************** * * *--------------- VARIABLES D'ENTREE : RP = TAB1.<RP ; HP = TAB1.<HP ; RHO0 = TAB1.<RHO0 ; THETA0 = TAB1.<THETA0 ; ANGPHI0 = TAB1.<ANGPHI0 ; RR = TAB1.<RR ; LAMB = TAB1.<LAMB ; LAMBQREF = TAB1.<LAMBQREF ; THETAREF = TAB1.<THETAREF ; IPLASMA = TAB1.<IPLASMA ; COEFA = TAB1.<COEFA ; COEFB = TAB1.<COEFB ; COEFC = TAB1.<COEFC ; RHOMER = TAB1.<RHOMER ; NBOB = TAB1.<NBOB ; IMESS = TAB1.<IMESS ; *------------------------------------ * PI = 3.141592 ; MU0 = 4.E-7 * PI ; * *---- Coordonnees de chaque point dans le repere du plasma RHOP THETAP PHIP = @CRGTC XM YM ZM RP HP ; * *---- Masque delimitant le domaine de validite du modele de ripple *attention domaine de validite etendu a 180 par E.COSTA et *E.TSITRONE le 02/06/97 *MASK0 = (ABS THETAP) MASQUE INFERIEUR 110. ; MASK0 = (ABS THETAP) MASQUE INFERIEUR 180. ; * SI ISHIFT ; AUX0 = -1. * MU0 * IPLASMA / (2. * PI) ; * BPTHEREF = (((RHOP/RP) * (COS THETAREF) * LAMB) + 1.) * AUX0 ; BPTHE = (((COS THETAP) * (RHOP/RP) * LAMB) + 1.) * AUX0 ; * * ---- facteur de compression des lignes de champ due au shift H1 = (RHOP * (COS THETAREF) + RP) * BPTHEREF ; H2 = ((COS THETAP) * RHOP + RP) * BPTHE ; HS = H2 ** -1 * H1 ; SINON ; HS = RHOP * 0. + 1. ; FINSI ; * SI IRIPPLE ; * ---- enveloppe de la DSMF dans le repere adapte au calcul du ripple * ---- Rho0 dans le "repere du ripple" RHOR THETAR PHIR = @CRGTC XM YM ZM RR 0. ; * RHO0R = ((RHO0**2) + ((RP - RR)**2) + (2. * RHO0 * (RP - RR) * (COS THETAP)))**0.5 ; RHODSMFR = (EXP((THETAR**2) * -1. * COEFC)) * (EXP(COEFB * RHO0R)) * ((COS((PHIR + ANGPHI0) * NBOB)) - 1.) * COEFA + RHO0R; * ---- dans le repere du plasma RHODSMFP = RHODSMFR * 2. * (RR - RP) * (COS THETAR) ; RHODSMFP = RHODSMFP + ((RR - RP)**2) + (RHODSMFR**2) ; RHODSMFP = RHODSMFP**0.5 ; RHOMERP = RHOMER * 2. * (RR - RP) * (COS THETAR) ; RHOMERP = RHOMERP + ((RR - RP)**2) + (RHOMER**2) ; RHOMERP = RHOMERP**0.5 ; * * ---- facteur de compression des lignes de champ due au ripple * ---- Rem : le masque sert a traiter le cas Rhomer = Rho0r * ---- dans le repere du ripple *AM1** MASQ1 = ((ABS(RHOR - RHODSMFR)) MASQUE INFERIEUR 1.E-6)*1.E-6; *AM1** MASQ2 = ((ABS(RHOMER - RHO0R)) MASQUE INFERIEUR 1.E-6)*1.E-6 ; *AM1** HR = ((RHOR - RHODSMFR) + MASQ1) / ((RHOMER - RHO0R) + MASQ2) ; * ---- dans le repere du plasma *AM2** MASQ1 = ((ABS(RHOP - RHODSMFP)) MASQUE INFERIEUR 1.E-6)*1.E-6; *AM2** MASQ2 = ((ABS(RHOMERP - RHO0)) MASQUE INFERIEUR 1.E-6)*1.E-6 ; *AM2** HR = ((RHOP - RHODSMFP) + MASQ1) / ((RHOMERP - RHO0) + MASQ2); *AM*** HR = MASK0 * HR + ((1.-MASK0) * 1.) ; * ---- Pas de compression des lignes de champ due au ripple HR = RHOP * 0. + 1. ; SINON ; HR = RHOP * 0. + 1. ; FINSI ; * LAMBQ = HR * HS * LAMBQREF ; * *---- distance a la derniere surface magnetique avec ripple SI IRIPPLE ; * ---- dans le repere du plasma DELTA = MASK0 * (RHOP - RHODSMFP) + ((1.-MASK0) * (RHOP - RHO0)); * ---- dans le repere du ripple *AM1** DELTA = MASK0 * (RHOR - RHODSMFR) + ((1.-MASK0) * (RHOR - RHO0R)); SINON ; DELTA = RHOP - RHO0 ; FINSI ; * *---- messages de verification SI (IMESS >EG 3) ; FINSI ; * SI (IMESS >EG 2) ; FINSI ; * FINPROC LAMBQ HS HR DELTA ; **** @CLIGB DEBPROC @CLIGB NBPAS0*ENTIER PASB0*FLOTTANT TAB1*TABLE TABLIG1*TABLE IMETHOD*ENTIER; * ***************************************************************** * Procedure de calcul des lignes de champ magnetique partant de * * chaque point d'une geometrie donnee. * * methode 1 : methode explicite (tangentes) * * methode 2 : Methode iterative avec convergence sur un critere * * d'appartenance a la surface magnetique * * Alain MOAL (mars 1996) * ***************************************************************** * * * ---- Valeurs par defaut @VDEFAUT TAB1 ; * *--------------- VARIABLES D'ENTREE : LISTE0 = TAB1.<LI_LIGNE_B ; TYPCAL = TAB1.<TYPE_CALCUL ; RP = TAB1.<RP ; RR = TAB1.<RR ; HP = TAB1.<HP ; EPS0 = TAB1.<EPS ; COEFA = TAB1.<COEFA ; COEFB = TAB1.<COEFB ; COEFC = TAB1.<COEFC ; NBOB = TAB1.<NBOB ; SI (EXISTE TAB1 <LPT) ; RHO0 = TAB1.<RHO0 ; FINSI ; *------------------------------------ * SI (EGA TYPCAL 'AVEC_SHIFT_AVEC_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'AVEC_SHIFT_SANS_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = FAUX ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_AVEC_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_SANS_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = FAUX ; FINSI ; SI ((NON (EXISTE ISHIFT)) OU (NON (EXISTE IRIPPLE))) ; FINSI ; SI (IMETHOD EGA 1) ; * ---- Methode explicite simple (tangentes) I0 = 0 ; TABLIG1.I0 = ((XM+1.E-6) YM ZM) D 1 P0 ; * ---- Transformation en champ par point * ---- Coordonnees dans le repere global du tore XG_OLD YG_OLD ZG_OLD = @CRMGC XM0 YM0 ZM0 TAB1 ; * I1 = 0 ; REPETER BOUCLE1 NBPAS0 ; * I1 = I1 + 1 ; MESS 'I1 = ' I1; * ---- Calcul du champ dans le repere global BXG BYG BZG FSECU = @CHAMB TAB1 XG_OLD YG_OLD ZG_OLD ISHIFT IRIPPLE ; NORM_B = ((BXG*BXG) + (BYG*BYG) + (BZG*BZG))**0.5 ; XG_NEW = XG_OLD - (BXG * PASB0 / NORM_B) ; YG_NEW = YG_OLD - (BYG * PASB0 / NORM_B) ; ZG_NEW = ZG_OLD - (BZG * PASB0 / NORM_B) ; * ---- Coordonnees dans le repere du maillage XM_NEW YM_NEW ZM_NEW = @CRGMC XG_NEW YG_NEW ZG_NEW TAB1 ; SI (EXISTE TAB1 <LPT) ; * ---- traitement particulier pour le LPT * ---- on change la couleur de la ligne qui * ---- passe au dessous XM2 YM2 ZM2 = @CRGMC XG_OLD YG_OLD ZG_OLD TAB1; SI ((ZG_NEW >EG RHO0) ET (ZG_OLD >EG RHO0)) ; SINON ; FINSI ; FINSI ; TABLIG1.I0 = TABLIG1.I0 D 1 (XM1 YM1 ZM1) ; XG_OLD = XG_NEW ; YG_OLD = YG_NEW ; ZG_OLD = ZG_NEW ; MENAGE ; FIN BOUCLE1 ; * ---- calcul de l'erreur sur Rho SI ((NON ISHIFT) ET (NON IRIPPLE)) ; * ---- Coordonnees du point initial dans le repere * ---- global du tore XG0 YG0 ZG0 = @CRMGC XM0 YM0 ZM0 TAB1 ; * ---- Coordonnees du point initial dans le repere * ---- pseudo-toroidal du plasma RHO0 THE0 PHI0 = @CRGTC XG0 YG0 ZG0 RP HP ; * ---- Coordonnees du point final dans le repere * ---- pseudo-toroidal du plasma RHO1 THE1 PHI1 = @CRGTC XG_OLD YG_OLD ZG_OLD RP HP; * ---- sans ripple, on doit avoir Rho constant le * ---- long de la ligne de champ DRHO0 = RHO1 - RHO0 ; ERREUR0 = (ABS DRHO0) / RHO0 ; FINSI ; FIN BOUCLE0 ; FINSI ; SI (IMETHOD EGA 2) ; * ---- Methode iterative avec convergence sur un critere * ---- d'appartenance a la surface magnetique I0 = 0 ; I0 = I0 + 1 ; TABLIG1.I0 = ((XM+1.E-6) YM ZM) D 1 P0 ; * ---- Transformation en champ par point * ---- Coordonnees dans le repere global du tore XG_OLD YG_OLD ZG_OLD = @CRMGC XM0 YM0 ZM0 TAB1 ; * I1 = 0 ; REPETER BOUCLE1 NBPAS0 ; * ---- Calcul du champ dans le repere global BXG BYG BZG FSECU = @CHAMB TAB1 XG_OLD YG_OLD ZG_OLD ISHIFT IRIPPLE ; NORM_B = ((BXG*BXG) + (BYG*BYG) + (BZG*BZG))**0.5 ; XG_NEW0 = XG_OLD - (BXG * PASB0 / NORM_B) ; YG_NEW0 = YG_OLD - (BYG * PASB0 / NORM_B) ; ZG_NEW0 = ZG_OLD - (BZG * PASB0 / NORM_B) ; * ---- Coordonnees dans le repere * ---- pseudo-toroidal du ripple RHOR THER PHIR = @CRGTC XG_OLD YG_OLD ZG_OLD RR 0.; * ---- calcul de la coordonnee radiale dans le * ---- plan meridien Phi=0 de la ligne de champ * ---- consideree par une methode de point fixe RHOR_OLD = RHOR ; KAUX = (EXP(THER**2 * -1. * COEFC)) * ((COS (PHIR * NBOB)) * -1. + 1.) * COEFA ; I3 = 0 ; REPETER BOUCLE3 50 ; RHOR_NEW = RHOR + (KAUX * (EXP(RHOR_OLD * COEFB))); QUITTER BOUCLE3 ; FINSI ; RHOR_OLD = RHOR_NEW ; FIN BOUCLE3 ; RHOMER = RHOR_NEW ; * ---- le point obtenu doit etre sur la surface magnetique I2 = 0 ; REPETER BOUCLE2 2 ; * ---- Coordonnees dans le repere * ---- pseudo-toroidal du ripple RHORN THERN PHIRN = @CRGTC XG_NEW0 YG_NEW0 ZG_NEW0 RR 0.; DRHOMERN = (EXP(RHOMER * COEFB)) * (EXP(THERN**2 * COEFC * -1.)) * COEFA ; RHORIP = DRHOMERN * ((COS (PHIRN*NBOB)) - 1.) + RHOMER; * ---- Coordonnees dans le repere global XG_NEW1 YG_NEW1 ZG_NEW1 = @CRTGC RHORIP THERN PHIRN RR 0.; * ---- Calcul du champ dans le repere global BXG0 BYG0 BZG0 FSECU0 = @CHAMB TAB1 XG_NEW1 YG_NEW1 ZG_NEW1 ISHIFT IRIPPLE ; * ---- on prend la moyenne des 2 tangentes BXG1 = (BXG + BXG0)/2. ; BYG1 = (BYG + BYG0)/2. ; BZG1 = (BZG + BZG0)/2. ; NORM_B1 = ((BXG1*BXG1) + (BYG1*BYG1) + (BZG1*BZG1))**0.5 ; XG_NEW0 = XG_OLD - (BXG1 * PASB0 / NORM_B1) ; YG_NEW0 = YG_OLD - (BYG1 * PASB0 / NORM_B1) ; ZG_NEW0 = ZG_OLD - (BZG1 * PASB0 / NORM_B1) ; SI (I2 EGA 2) ; XG_NEW = XG_NEW0 ; YG_NEW = YG_NEW0 ; ZG_NEW = ZG_NEW0 ; FINSI ; FIN BOUCLE2 ; * ---- Coordonnees dans le repere du maillage XM_NEW YM_NEW ZM_NEW = @CRGMC XG_NEW YG_NEW ZG_NEW TAB1 ; XG_OLD = XG_NEW ; YG_OLD = YG_NEW ; ZG_OLD = ZG_NEW ; TABLIG1.I0 = TABLIG1.I0 D 1 (XM1 YM1 ZM1) ; MENAGE ; FIN BOUCLE1 ; FIN BOUCLE0 ; FINSI ; FINPROC ; **** @CLIGB0 DEBPROC @CLIGB0 DPHI*FLOTTANT PHIMAX*FLOTTANT TAB1*TABLE TABLIG1*TABLE IMETHOD*ENTIER; * ***************************************************************** * Procedure de calcul des lignes de champ magnetique partant de * * chaque point d'une geometrie donnee. * * methode 1 : methode explicite (tangentes) * * methode 2 : Runge-Kutta du 4eme ordre a pas constant * * Alain MOAL (mars 1996) * ***************************************************************** * * *--------------- VARIABLES D'ENTREE : LISTE0 = TAB1.<LI_LIGNE_B ; OEIL0 = TAB1.VIEW_P ; RP = TAB1.<RP ; HP = TAB1.<HP ; ANGPHI0 = TAB1.<ANG_PHI0 ; TYPCAL = TAB1.<TYPE_CALCUL ; *------------------------------------ * SI (EGA TYPCAL 'AVEC_SHIFT_AVEC_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'AVEC_SHIFT_SANS_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = FAUX ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_AVEC_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_SANS_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = FAUX ; FINSI ; SI ((NON (EXISTE ISHIFT)) OU (NON (EXISTE IRIPPLE))) ; FINSI ; * ---- Valeurs par defaut @VDEFAUT TAB1 ; TABLIG1 = TABLE ; * SI (IMETHOD EGA 1) ; * ---- Methode explicite (tangentes) TEMPS ZERO ; I0 = 0 ; I0 = I0 + 1 ; TABLIG1.I0 = ((XM+1.E-6) YM ZM) D 1 P0 ; * * ---- Transformation en champ par point * * ---- Coordonnees dans le repere global du tore XG_OLD YG_OLD ZG_OLD = @CRMGC XM0 YM0 ZM0 TAB1 ; * * PHIAUX = ANGPHI0 ; * REPETER BOUCLE1 (ENTI (PHIMAX/DPHI)) ; * PHIAUX = PHIAUX + DPHI ; * ---- Numero du grand tour calcule a partir du plan * ---- median entre bobines NTOUR0 = (ENTI (PHIAUX / 360.)) + 1 ; * * ---- Calcul du champ dans le repere global BX BY BZ FSECU = @CHAMB TAB1 XG_OLD YG_OLD ZG_OLD ISHIFT IRIPPLE ; * * ---- Coordonnees dans le repere pseudo-toroidal du plasma RHO_OLD THE_OLD PHI_OLD = @CRGTC XG_OLD YG_OLD ZG_OLD RP HP ; * * ---- Champ dans le repere pseudo-toroidal du plasma BRHO BTHETA BPHI = @CBGTV BX BY BZ THE_OLD PHI_OLD ; * DRHO0 = (RHO_OLD * (COS THE_OLD) + RP) * BRHO * DPHI0 / BPHI; DTHE0 = (RHO_OLD * (COS THE_OLD) + RP) * BTHETA * DPHI0 / BPHI / RHO_OLD; RHO_NEW = RHO_OLD + DRHO0 ; THE_NEW = THE_OLD + DTHE0 ; * MESS 'PHI_OLD+DPHI0 '; LIST (MAXI (PHI_OLD+DPHI0)); PHI_NEW = PHI_OLD + DPHI0 + (360. * (NTOUR0-1)); FINSI ; PHI_NEW = PHI_OLD + DPHI0 + (360. * NTOUR0) ; FINSI ; PHI_NEW = PHI_OLD + DPHI0 ; FINSI ; * * ---- Coordonnees dans le repere global XG_NEW YG_NEW ZG_NEW = @CRTGC RHO_NEW THE_NEW PHI_NEW RP HP; * * MESS 'MAX DE BPHI '; LIST (MAXI BPHI); * MESS 'MAX DE BRHO '; LIST (MAXI BRHO); * MESS 'MAX DE BTHE '; LIST (MAXI BTHETA); * ---- Coordonnees dans le repere du maillage XM_NEW YM_NEW ZM_NEW = @CRGMC XG_NEW YG_NEW ZG_NEW TAB1 ; * XG_OLD = XG_NEW ; YG_OLD = YG_NEW ; ZG_OLD = ZG_NEW ; TABLIG1.I0 = TABLIG1.I0 D 1 (XM1 YM1 ZM1) ; QUITTER BOUCLE1 ; FINSI ; MENAGE ; FIN BOUCLE1 ; DESSIN EVRHO MIMA ; DESSIN EVTHE MIMA ; DESSIN EVFSE MIMA ; FIN BOUCLE0 ; TEMPS ; FINSI ; SI (IMETHOD EGA 2) ; * ---- Runge-Kutta d'ordre 4 a pas constant TEMPS ZERO ; I0 = 0 ; I0 = I0 + 1 ; TABLIG1.I0 = ((XM+1.E-6) YM ZM) D 1 P0 ; * * ---- Transformation en champ par point * * ---- Coordonnees dans le repere global du tore XG_OLD YG_OLD ZG_OLD = @CRMGC XM0 YM0 ZM0 TAB1 ; * * PHIAUX = ANGPHI0 ; * REPETER BOUCLE1 (ENTI (PHIMAX/DPHI)) ; * PHIAUX = PHIAUX + DPHI ; * ---- Numero du grand tour calcule a partir du plan * ---- median entre bobine NTOUR0 = (ENTI (PHIAUX / 360.)) + 1 ; * * ---- Calcul du champ dans le repere global BX BY BZ FSECU = @CHAMB TAB1 XG_OLD YG_OLD ZG_OLD ISHIFT IRIPPLE ; * ---- Coordonnees dans le repere pseudo-toroidal du plasma RHO_OLD THE_OLD PHI_OLD = @CRGTC XG_OLD YG_OLD ZG_OLD RP HP ; * ---- Champ dans le repere pseudo-toroidal du plasma BRHO BTHE BPHI = @CBGTV BX BY BZ THE_OLD PHI_OLD ; * * ---- calcul de K0 et L0 K0 = (RHO_OLD * (COS THE_OLD) + RP) * BRHO / BPHI; L0 = (RHO_OLD * (COS THE_OLD) + RP) * BTHE / BPHI / RHO_OLD; * ---- calcul de K1 et L1 RHO1_OLD = RHO_OLD + (K0/2.) ; THE1_OLD = THE_OLD + (L0/2.) ; * SI (((MAXI (PHI_OLD+DPHI0)) >EG 0.) ET * ((MAXI (PHI_OLD+DPHI0)) <EG 180.)); * PHI1_OLD = PHI_OLD + (DPHI0/2.) + (360. * (NTOUR0-1)); * FINSI ; * SI (((MAXI (PHI_OLD+DPHI0)) > -180.) ET * ((MAXI (PHI_OLD+DPHI0)) < 0.)); * PHI1_OLD = PHI_OLD + (DPHI0/2.) + (360. * NTOUR0) ; * FINSI ; * SI ((MAXI (PHI_OLD+DPHI0)) > 180.) ; PHI1_OLD = PHI_OLD + (DPHI0/2) ; * FINSI ; XG1_OLD YG1_OLD ZG1_OLD = @CRTGC RHO1_OLD THE1_OLD PHI1_OLD RP HP; * ---- Calcul du champ dans le repere global BX1 BY1 BZ1 FSECU = @CHAMB TAB1 XG1_OLD YG1_OLD ZG1_OLD IRIPPLE ISHIFT ; * ---- Champ dans le repere pseudo-toroidal du plasma BRHO1 BTHE1 BPHI1 = @CBGTV BX1 BY1 BZ1 THE1_OLD PHI1_OLD ; K1 = (RHO1_OLD * (COS THE1_OLD) + RP)*BRHO1 /BPHI1 * DPHI0; L1 = (RHO1_OLD * (COS THE1_OLD) + RP)*BTHE1/BPHI1 / RHO1_OLD * DPHI0; * ---- calcul de K2 et L2 RHO2_OLD = RHO_OLD + (K1/2.) ; THE2_OLD = THE_OLD + (L1/2.) ; * SI (((MAXI (PHI_OLD+DPHI0)) >EG 0.) ET * ((MAXI (PHI_OLD+DPHI0)) <EG 180.)); * PHI2_OLD = PHI_OLD + (DPHI0/2.) + (360. * (NTOUR0-1)); * FINSI ; * SI (((MAXI (PHI_OLD+DPHI0)) > -180.) ET * ((MAXI (PHI_OLD+DPHI0)) < 0.)); * PHI2_OLD = PHI_OLD + (DPHI0/2.) + (360. * NTOUR0); * FINSI ; * SI ((MAXI (PHI_OLD+DPHI0)) > 180.) ; PHI2_OLD = PHI_OLD + (DPHI0/2) ; * FINSI ; XG2_OLD YG2_OLD ZG2_OLD = @CRTGC RHO2_OLD THE2_OLD PHI2_OLD RP HP; * ---- Calcul du champ dans le repere global BX2 BY2 BZ2 FSECU = @CHAMB TAB1 XG2_OLD YG2_OLD ZG2_OLD ISHIFT IRIPPLE ; * ---- Champ dans le repere pseudo-toroidal du plasma BRHO2 BTHE2 BPHI2 = @CBGTV BX2 BY2 BZ2 THE2_OLD PHI2_OLD ; K2 = (RHO2_OLD * (COS THE2_OLD) + RP)*BRHO2 /BPHI2 * DPHI0; L2 = (RHO2_OLD * (COS THE2_OLD) + RP)*BTHE2/BPHI2 / RHO2_OLD * DPHI0; * ---- calcul de K3 et L3 RHO3_OLD = RHO_OLD + K2 ; THE3_OLD = THE_OLD + L2 ; * SI (((MAXI (PHI_OLD+DPHI0)) >EG 0.) ET * ((MAXI (PHI_OLD+DPHI0)) <EG 180.)); * PHI3_OLD = PHI_OLD + DPHI0 + (360. * (NTOUR0-1)); * FINSI ; * SI (((MAXI (PHI_OLD+DPHI0)) > -180.) ET * ((MAXI (PHI_OLD+DPHI0)) < 0.)); * PHI3_OLD = PHI_OLD + DPHI0 + (360. * NTOUR0); * FINSI ; * SI ((MAXI (PHI_OLD+DPHI0)) > 180.) ; PHI3_OLD = PHI_OLD + DPHI0 ; * FINSI ; XG3_OLD YG3_OLD ZG3_OLD = @CRTGC RHO3_OLD THE3_OLD PHI3_OLD RP HP; * ---- Calcul du champ dans le repere global BX3 BY3 BZ3 FSECU = @CHAMB TAB1 XG3_OLD YG3_OLD ZG3_OLD ISHIFT IRIPPLE ; * ---- Champ dans le repere pseudo-toroidal du plasma BRHO3 BTHE3 BPHI3 = @CBGTV BX3 BY3 BZ3 THE3_OLD PHI3_OLD ; K3 = (RHO3_OLD * (COS THE3_OLD) + RP)*BRHO3 / BPHI3 * DPHI0; L3 = (RHO3_OLD * (COS THE3_OLD) + RP)*BTHE3/BPHI3 / RHO3_OLD * DPHI0; RHO_NEW = RHO_OLD + ((K0 + (2.*K1) + (2.*K2) + K3)/6.); THE_NEW = THE_OLD + ((L0 + (2.*L1) + (2.*L2) + L3)/6.); PHI_NEW = PHI_OLD + DPHI0 + (360. * (NTOUR0-1)); FINSI ; PHI_NEW = PHI_OLD + DPHI0 + (360. * NTOUR0) ; FINSI ; PHI_NEW = PHI_OLD + DPHI0 ; FINSI ; * ---- Coordonnees dans le repere global XG_NEW YG_NEW ZG_NEW = @CRTGC RHO_NEW THE_NEW PHI_NEW RP HP; * ---- Coordonnees dans le repere du maillage XM_NEW YM_NEW ZM_NEW = @CRGMC XG_NEW YG_NEW ZG_NEW TAB1 ; * XG_OLD = XG_NEW ; YG_OLD = YG_NEW ; ZG_OLD = ZG_NEW ; TABLIG1.I0 = TABLIG1.I0 D 1 (XM1 YM1 ZM1) ; QUITTER BOUCLE1 ; FINSI ; MENAGE ; FIN BOUCLE1 ; DESSIN EVRHO MIMA ; DESSIN EVTHE MIMA ; DESSIN EVFSE MIMA ; FIN BOUCLE0 ; TEMPS ; FINSI ; FINPROC ; **** CONTACT *--------------------------------------------------------------------- * PROCEDURE CONTACT VERSION DU 15/10/87 *--------------------------------------------------------------------- * CETTE PROCEDURE SERT A DEFINIR LE CONTACT ENTRE 2 SOLIDES * OU ENTRE 1 SOLIDE ET UN OBSTACLE . * * SYNTAXE : * ------- * * * BLC BLT FFF COEF = * * CONTACT | MINI | NOMINC | POI1 ( POI2 ) | * | MAXI | DIRECTION V1 | GEO1 ( GEO2 ) | * * | CONSTANT | MU ( JEU | VVAL | ) ; * | COULOMB | | CHSCA | * | CHP | * * * ATTENTION METTRE LES NOMS CONNUS EN 4 LETTRES | * EXEMPLE : METTRE DIRE ET NON PAS DIRECTION * * ( EXPLICATION : CF BLOQUER , RELA ET DEPI ) * * BLC ET BLT: LES BLOCAGES ASSOCIES AU CONTACT * ( NORMAUX ET TANGENTIELS ) * FFF : LE SECOND MEMBRE ( NON NUL SI JEU ) * COEF : LES COEFFICIENTS DE FROTTEMENT * *--------------------------------------------------------------------- * IDIR = 0 ; SI ( EGA DDL DIRE ) ; IDIR = 1 ; FINSI ; *------------------------------ * ON RECUPERE LA GEOMETRIE *------------------------------ IDEUX = 0 ; SI ( EGA IDIR 0 ) ; SI ( EXISTE V1 ) ; GEO1 = V1 ; SI ( EXISTE POI1 ) ; IDEUX = 1 ; GEO2 = POI1 ; FINSI ; FINSI ; SINON ; SI ( EXISTE POI1 ) ; GEO1 = POI1 ; SI ( EXISTE POI2 ) ; IDEUX = 1 ; GEO2 = POI2 ; FINSI ; FINSI; FINSI ; SI ( EXISTE MA1 ) ; GEO1 = MA1 ; FINSI ; SI ( EXISTE MA2 ) ; IDEUX = 1 ; GEO2 = MA2 ; FINSI ; SI ( EGA IDEUX 1 ) ; GEO = GEO1 ET GEO2 ; SINON ; GEO = GEO1 ; FINSI ; * *------------------------------ * ON RECUPERE LA DIRECTION *------------------------------ SI ( EGA IDIR 1 ) ; IDIR = 1 ; SI ( EGA SSDIM 2 ) ; V2 = V1Y ( 0 - V1X ) ; SINON ; V2X = 0. - V1Y ; V2Y = V1X ; V2Z = 0. ; V2 = V2X V2Y V2Z ; SI ( EGA V2NOR 0. ) ; V2 = 0. ( 0. - V1Z ) V1Y ; FINSI ; V3 = PVECT V1 V2 ; FINSI ; SINON ; SI ( EGA DDL UX ) ; SI ( EGA SSDIM 2 ) ; V1 = 1 0 ; V2 = 0 -1 ; SINON ; V1 = 1 0 0 ; V2 = 0 1 0 ; V3 = 0 0 1 ; FINSI ; FINSI ; SI ( EGA DDL UY ) ; SI ( EGA SSDIM 2 ) ; V1 = 0 1 ; V2 = 1 0 ; SINON ; V1 = 0 1 0 ; V2 = 0 0 1; V3 = 1 0 0 ; FINSI ; FINSI ; SI ( EGA DDL UR ) ; V1 = 1 0 ; V2 = 0 1 ; FINSI ; SI ( EGA DDL UZ ) ; SI ( EGA SSDIM 2 ) ; V1 = 0 1 ; V2 = 1 0 ; SINON ; V1 = 0 0 1 ; V2 = 1 0 0; V3 = 0 1 0 ; FINSI ; FINSI ; FINSI ; *----------------------- * ON RECUPERE LE JEU *----------------------- IJEU = 0 ; SI ( EXISTE MJEU ) ; IJEU = 1 ; SI ( EXISTE VVAL ) ; VJEU = VVAL ; FINSI ; SI ( EXISTE VCHP ) ; VJEU = VCHP ; FINSI ; FINSI ; *-------------------------- * ON CREE LES BLOCAGES *-------------------------- * SI ( EGA IDEUX 0 ) ; SI ( EGA SSDIM 3 ) ; FINSI ; SINON ; SI ( EGA SSDIM 3 ) ; FINSI ; FINSI ; *BLOCAG = BLC ET BLT ; *------------------------------------------- * ON CALCULE LES FORCES AU SECOND MEMBRE *------------------------------------------- SI ( EGA IJEU 1 ) ; FAC = 1.; SINON ; FAC = -1. ; FINSI ; SINON ; FINSI ; *--------------------------------------------- * ON CALCULE LES COEFFICIENTS DE FROTTEMENT *--------------------------------------------- *---------------------------------------------------------------------- * SORTIE DE LA PROCEDURE *---------------------------------------------------------------------- FINPROC BLC BLT FFF COEF ; * 1 2 3 4 5 6 7* *123456789012345678901234567890123456789012345678901234567890123456789012 * * * * * * DEBPROC CONTRAPH LIGN_1*MAILLAGE INSTEVOL*FLOTTANT MOD1*MMODEL TAB1*TABLE SM1/EVOLUTION SM2/EVOLUTION VAL1/FLOTTANT; * test sur la dimension SI (EGA DIM1 2) ; MESS ' attention au SMZZ en 2D' ; SINON ; FINSI; SI (NON (EXISTE TAB1 RESUCONT)) ; MESS ' TAB1 NE CONTIENT PAS DE CONTRAINTES ' ; MESS ' SORTIE DE CONTRAPH ' ; QUITTER CONTRAPH ; FINSI ; * test sur la dimension de LIGN_1*MAILLAGE : a faire LCONFON = FAUX ; SI ( EGA N_1 N_2 ) ; LCONFON = VRAI ; FINSI ; SI (NON(EXISTE TAB1 TETMAT)) ; MESS ' TAB1 NE CONTIENT PAS DE TETMAT ' ; MESS ' SORTIE DE CONTRAPH ' ; QUITTER CONTRAPH ; FINSI ; SI (NON(EXISTE (TAB1.TETMAT) MOD1)) ; MESS ' SORTIE DE CONTRAPH ' ; QUITTER CONTRAPH ; FINSI ; SI (NON(EXISTE (TAB1.TETMAT.MOD1) SIGY)) ; MESS ' LE MATERIAU DEMANDE N EST PAS PLASTIQUE ' ; MESS ' SORTIE DE CONTRAPH ' ; QUITTER CONTRAPH ; FINSI ; L1TITR = CHAIN 'DEPOUILLEMENT LE LONG DE LA LIGNE A' INSTEVOL ; TITR L1TITR ; SI (EXISTE SM1) ; FINSI ; SI (EXISTE SM2) ; FINSI ; SI LCONFON ; LIMELAS2 = LIMELAS1 ; SI (EXISTE SM1 ) ; LIM2SM1 = LIMSM1 ; FINSI ; SI (EXISTE SM2 ) ; LIM2SM2 = LIMSM2 ; FINSI ; SINON ; SI (EXISTE SM1) ; FINSI ; SI (EXISTE SM2) ; FINSI ; FINSI ; TAC1 = TABLE ; * champs dde t le long de la ligne EV_OTT = EVVM1 ET EVEL1 ET EVTE1 ; SI (EXISTE SM1) ; SI (EXISTE SM2) ; SI (EXISTE VAL1) ; EV_OTT = EV_OTT ET EVRU1 ET EVRU2 ET EVVA1 ; SINON ; EV_OTT = EV_OTT ET EVRU1 ET EVRU2 ; FINSI ; SINON ; SI (EXISTE VAL1) ; EV_OTT = EV_OTT ET EVRU1 ET EVVA1 ; FINSI ; *tc ajout d'un finsi ??? 'FINSI' ; SINON ; SI (EXISTE VAL1 ) ; EV_OTT = EV_OTT ET EVVA1 ; FINSI ; FINSI ; DESS EV_OTT LEGE MIMA TAC1 ; FINPROC ; **** @COUTOR1 ***************************************************************** * PROCEDURE @COUTOR1 : ***************************************************************** PI = 3.14159 ; SI (DIMGEO1 > 2); VN2 = NXI2 NYI2 NZI2 ; VT2 = TXI2 TYI2 TZI2 ; VB2 = BXI2 BYI2 BZI2 ; VN3 = NXI3 NYI3 NZI3 ; VT3 = TXI3 TYI3 TZI3 ; VB3 = BXI3 BYI3 BZI3 ; * MESS 'XR =' XR 'YR =' YR ; ALPHA = ATG YR XR ; * MESS 'ALPHA =' ALPHA ; RR = (ALPHA*PI/180.)/DS2 ; SI (RR NEG 0.) ; R = 1./RR ; SINON ; R = 1.E99 ; FINSI ; * MESS 'R =' R ; * MESS 'XT =' XT 'YT =' YT ; BETA = ATG YT XT ; * MESS 'BETA =' BETA ; TT = -1*(BETA*PI/180.)/DS2 ; SI (TT NEG 0.) ; T = 1./TT ; SINON ; T = 1.E99 ; FINSI ; * MESS 'T =' T ; SINON; VN2 = NXI2 NYI2 ; VT2 = TXI2 TYI2 ; VB2 = BXI2 BYI2 ; VN3 = NXI3 NYI3 ; VT3 = TXI3 TYI3 ; VB3 = BXI3 BYI3 ; * MESS 'XR =' XR 'YR =' YR ; ALPHA = ATG YR XR ; * MESS 'ALPHA =' ALPHA ; RR = (ALPHA*PI/180.)/DS2 ; SI (RR NEG 0.) ; R = 1./RR ; SINON ; R = 1.E99 ; FINSI ; * MESS 'R =' R ; BETA = 0.; T = 0.; FINSI; FINPROC DS2 R T ALPHA BETA ; **** @COUTOR2 ***************************************************************** * PROCEDURE @COUTOR2 : CREATION DE 2 CHAMPS PAR ELEMENTS R ET T ***************************************************************** NBEL1 = 0; REPETER BOUCEL NBELGEO; NBEL1 = NBEL1 + 1; SI (DIMGEO1 > 2); VN2 = NXI2 NYI2 NZI2 ; VT2 = TXI2 TYI2 TZI2 ; VB2 = BXI2 BYI2 BZI2 ; VN3 = NXI3 NYI3 NZI3 ; VT3 = TXI3 TYI3 TZI3 ; VB3 = BXI3 BYI3 BZI3 ; * MESS 'XR =' XR 'YR =' YR ; ALPHA = ATG YR XR ; * MESS 'ALPHA =' ALPHA ; RR = (ALPHA*PI/180.)/DS2 ; SI (RR NEG 0.) ; R = 1./RR ; SINON ; R = 1.E99 ; FINSI ; * MESS 'R =' R ; * MESS 'XT =' XT 'YT =' YT ; BETA = ATG YT XT ; * MESS 'BETA =' BETA ; TT = -1*(BETA*PI/180.)/DS2 ; SI (TT NEG 0.) ; T = 1./TT ; SINON ; T = 1.E99 ; FINSI ; * MESS 'T =' T ; SINON; VN2 = NXI2 NYI2 ; VT2 = TXI2 TYI2 ; VB2 = BXI2 BYI2 ; VN3 = NXI3 NYI3 ; VT3 = TXI3 TYI3 ; VB3 = BXI3 BYI3 ; * MESS 'XR =' XR 'YR =' YR ; ALPHA = ATG YR XR ; * MESS 'ALPHA =' ALPHA ; RR = (ALPHA*PI/180.)/DS2 ; SI (RR NEG 0.) ; R = 1./RR ; SINON ; R = 1.E99 ; FINSI ; * MESS 'R =' R ; BETA = 0.; T = 0.; FINSI; SI (EGA NBEL1 1) ; SINON ; FINSI; FIN BOUCEL; FINPROC CHRT; **** @CRCACY DEBPROC @CRCACY XG*CHPOINT YG*CHPOINT ZG*CHPOINT ; * *************************************************************** * NICOLAS CURT 30032000Procedure de changement de repere. * cartesiennes => cylindriques * *************************************************************** * PHI = ATG YG XG ; RHO = (XG*XG + (YG*YG))**0.5 ; * FINPROC RHO PHI ZG ; **** @CRGMC DEBPROC @CRGMC XG*CHPOINT YG*CHPOINT ZG*CHPOINT TAB1*TABLE ; * ******************************************************************* * Procedure de changement de repere. On passe du repere cartesien * * global de la machine defini par son origine au centre du tore, * * l'axe du tore dirige suivant Z et l'axe X situe dans le plan * * median entre deux bobines au repere cartesien du maillage. * * Trois cas sont etudies : 3D, 2D en coupe Phi constant et 2D en * * coupe Theta constant. Alain MOAL (Decembre 1995-Janvier 1996) * ******************************************************************* * *--------------- VARIABLES D'ENTREE : IPLAN = TAB1.<PLAN ; SI (EGA IPLAN 'PHICONS') ; CT0 = TAB1.<CENTRE_TORE ; CT1 = TAB1.<POINT_SUR_AXE_TORE ; P1 = TAB1.<POINT_SUR_OBJET ; FINSI ; SI (EGA IPLAN 'THECONS') ; THETA0 = TAB1.<THETA0 ; CP = TAB1.CENTRE_PLASMA ; RP = TAB1.<RP ; HP = TAB1.<HP ; FINSI ; SINON ; CT0 = TAB1.<CENTRE_TORE ; CT1 = TAB1.<POINT_SUR_AXE_TORE ; P1 = TAB1.<POINT_SUR_OBJET ; FINSI ; ANGPHI0 = TAB1.<ANG_PHI0 ; *------------------------------------ * SI (DIM0 EGA 2) ; FINSI ; * SI (((DIM0 EGA 2) ET (EGA IPLAN 'PHICONS')) OU (DIM0 EGA 3)) ; * ---- en 3D ou en 2D pour la section Phi constant * * ---- Calcul des coordonnees du point P0, projection du point P1 de * ---- l'objet dans le plan orthogonal a l'axe du tore en CT0. A = X1 - X0 ; B = Y1 - Y0 ; C = Z1 - Z0 ; * SI (A EGA 0.) ; SI (B EGA 0.) ; XP0 = XP1 ; YP0 = YP1 ; ZP0 = Z0 ; FINSI ; SI (C EGA 0.) ; XP0 = XP1 ; YP0 = Y0 ; ZP0 = ZP1 ; FINSI ; SI ((B NEG 0.) ET (C NEG 0.)) ; XP0 = XP1 ; YP0 = (-1.*B*C*ZP1 + (C*C*YP1) + (B*B*Y0) + (B*C*Z0)) /(B*B + (C*C)) ; ZP0 = (B*ZP1 - (C*YP1) + (C*(Y0+Z0)))/(B+C); FINSI ; SINON ; AUX1 = A / (A*A + (B*B) + (C*C)) ; AUX2 = (B*B + (C*C)) / A ; XP0 = AUX1 * (A*X0 + (B*Y0) + (C*Z0) + (AUX2*XP1) - (B*YP1) - (C*ZP1)) ; YP0 = B * (XP0 - XP1) / A + YP1 ; ZP0 = C * (XP0 - XP1) / A + ZP1 ; FINSI ; * P0 = XP0 YP0 ZP0 ; * * ---- Rotation de la ligne (CT0,P0) pour l'aligner sur l'axe X * ---- du repere global LIG0 = CT0 D 1 P0 ; * * ---- Calcul des 3 vecteurs unitaires du repere global * * ---- Changement de repere * XM1 = (A1 * XG) + (A2 * YG) + (A3 * ZG) ; YM1 = (B1 * XG) + (B2 * YG) + (B3 * ZG) ; ZM1 = (C1 * XG) + (C2 * YG) + (C3 * ZG) ; * XM = XM1 + X0 ; YM = YM1 + Y0 ; ZM = ZM1 + Z0 ; * SINON ; * * ---- en 2D pour une section a Theta constant NORM_CP = (XCP*XCP + (YCP*YCP) + (ZCP*ZCP))**0.5 ; ANG1 = ATG XCP YCP ; * * ---- Rotation de (90 + ANGPHI0) par rapport a l'axe Z X1 = -1. * XG * (SIN ANGPHI0) + (YG * (COS ANGPHI0)) ; Y1 = -1. * XG * (COS ANGPHI0) - (YG * (SIN ANGPHI0)) ; Z1 = ZG ; * * ---- Changement d'origine vers le centre du plasma X2 = X1 ; Y2 = Y1 + RP + (NORM_CP * (COS THETA0)) ; Z2 = Z1 - HP - (NORM_CP * (SIN THETA0)) ; * * ---- Rotation de -THETA0 par rapport a l'axe X X3 = X2 ; Y3 = Y2 * (COS THETA0) - (Z2 * (SIN THETA0)) ; Z3 = Y2 * (SIN THETA0) + (Z2 * (COS THETA0)) ; * * ---- Rotation de ANG1 par rapport a l'axe Z XM = X3 * (COS ANG1) + (Y3 * (SIN ANG1)) ; YM = -1. * X3 * (SIN ANG1) + (Y3 * (COS ANG1)) ; ZM = Z3 ; * FINSI ; * SI (DIM0 EGA 2) ; FINSI ; * FINPROC XM YM ZM ; **** @CRGTC DEBPROC @CRGTC XG*CHPOINT YG*CHPOINT ZG*CHPOINT R*FLOTTANT H*FLOTTANT ; * *************************************************************** * Procedure de changement de repere. On passe des coordonnees * * cartesiennes dans le repere global de la machine defini par * * son origine au centre du tore, l'axe du tore dirige suivant * * Z et l'axe X situe dans le plan median entre deux bobines * * aux coordonnees pseudo-toroidales dans un repere defini par * * son grand rayon R et la hauteur H de son centre par rapport * * au plan equatorial. Alain MOAL (decembre 1995) * *************************************************************** *mess ' ---> calling @CRGTC'; * PHI = ATG YG XG ; * * *---- Rotation de Phi par rapport a l'axe Z * X1 = (COS PHI) * XG + ((SIN PHI) * YG) ; Y1 = -1. * (SIN PHI) * XG + ((COS PHI) * YG) ; Z1 = ZG ; * *---- Changement d'origine vers le centre du nouveau repere X2 = X1 - R ; Y2 = Y1 ; Z2 = Z1 - H ; * *---- Calcul de Theta et Rho * THETA = ATG Z2 X2 ; RHO = (X2*X2 + (Z2*Z2))**0.5 ; *mess ' ---> exiting @CRGTC'; FINPROC RHO THETA PHI ; **** @CRIT MESS ' Calcul du critere d interception par le code'; * * ========= PARAMETRES D'ENTREE MAIL2 = TAB1.<S_OMBRANT; ALPHA = TAB1.<INCIDENCE_MAXIMALE ; PASB0 = TAB1.<PAS_AVEC_TEST ; * CALCUL DES PARAMETRES GEOMETRIQUES ENTRANT DANS * * LE CALCUL DE DELIM * * ---- CAS 3D C2MAX = 0. ; typ = table ; bootri = faux ; booqua = faux ; repeter bouty ntyp ; i = &bouty ; si (ega typ.i tri3);bootri = vrai; finsi ; si (ega typ.i qua4);booqua = vrai; finsi ; fin bouty ; * ---- BOUCLE LES MAILLES TRIANGULAIRES * si bootri ; repeter boutri nbtri ; i = &boutri ; * ---- CALCUL DES DISTANCES A UN DES SOMMETS DE LA MAILLE * * --- ON CONSIDERE LA MAILLE LA PLUS GRANDE SI (C2 > C2MAX) ; C2MAX = C2 ; C1CO = C1 ; FINSI ; fin boutri ; finsi ; * ---- BOUCLE LES MAILLES QUADRANGULAIRES * si booqua ; repeter bouqua nbqua ; i = &bouqua ; * ---- CALCUL DES DISTANCES ENTRE LES SOMMETS DE LA MAILLE * * ---- CAS DES RECTANGLES * SI ((d1_2 ega d3_4) et (d2_3 ega d4_1)) ; * ---- CAS D'UNE MAILLE NON STRUCTUREE * SINON ; FINSI ; * --- ON CONSIDERE LA MAILLE LA PLUS GRANDE SI (C2 > C2MAX) ; C2MAX = C2 ; C1CO = C1 ; FINSI ; fin bouqua ; finsi ; * --- CALCUL DU CRITERE SELON LA FORMULE TROUVEE delim = (((C2MAX**2)+(PASB0**2)+((C1CO*(SIN ALPHA))**2))**0.5) / 2. ; * ---- CAS 2D (On considere le pas non projete => majore delim SINON ; CMAX = 0. ; REPETER BOUSEG2 NSEG2 ; I = &BOUSEG2 ; * ---- CALCUL DE LA DISTANCE ENTRE LES EXTREMITES DE LA MAILLE * * ---- On stocke la distance la plus grande SI (D1_2 > CMAX) ; CMAX = D1_2 ; FINSI ; FIN BOUSEG2 ; * --- CALCUL DU CRITERE SELON LA FORMULE TROUVEE DELIM = (((PASB0**2)+((CMAX*(SIN ALPHA))**2))**0.5) / 2. ; FINSI ; FINPROC delim ; **** @CRLMC DEBPROC @CRLMC XL*CHPOINT YL*CHPOINT ZL*CHPOINT TAB1*TABLE ; * ******************************************************************* * Version amelioree de l'ancien @CRLMC rebaptise @ACRLM * * Procedure de changement de repere. On passe du repere cartesien * * local de l'objet modelise au repere cartesien du maillage. Le * * point de tangence au plasma est l'origine du repere local et * * l'axe Y est dirige vers le centre du plasma. En 3D, L'axe X du * * repere local est dans la direction toroidale. * * en 2D cas PHICONS l'axe Z du repere local est l'axe toroidal * * en 2D cas THECONS l'axe x du repere local est l'axe toroidal * * Jacques SCHLOSSER et Alain MOAL (Decembre 1995) * ******************************************************************* * *--------------- VARIABLES D'ENTREE : CP = TAB1.CENTRE_PLASMA ; PTG = TAB1.PT_TGPLASMA ; SI (EXISTE TAB1 <PLAN) ; IPLAN = TAB1.<PLAN ; SINON ; FINSI ; SINON ; SI (EXISTE TAB1 <DIR_TOROIDAL) ; DIR1 = TAB1.<DIR_TOROIDAL ; SINON ; FINSI ; FINSI ; *------------------------------------ * VECT0 = CP MOINS PTG ; * * ---- calcul de l'angle de rotation dans le plan XY SI ((VX EGA 0.) ET (VY EGA 0.)) ; ANG1 = 0. ; SINON ; ANG1 = -1.* (ATG VX VY) ; FINSI ; * * SI (EGA IPLAN 'PHICONS'); * ---- Coupe 2D a Phi constant XL = ZL ; ZL = ZL * 0.; * ---- rotation XL1 = XL * (COS ANG1) + (YL * (-1.) * (SIN ANG1)); YL1 = XL * (SIN ANG1) + (YL * (COS ANG1)); FINSI; SI (EGA IPLAN 'THECONS'); * ---- Coupe 2D a Theta constant * ---- rotation XL1 = XL * (COS ANG1) + (YL * (-1.) * (SIN ANG1)); YL1 = XL * (SIN ANG1) + (YL * (COS ANG1)); FINSI; * ---- changement d'origine du repere XM = XL1 + XPTG ; YM = YL1 + YPTG ; ZM = YL1 * 0. ; * SINON ; * DIR2 = CP MOINS PTG ; * * XM1 = (A1 * XL) + (A2 * YL) + (A3 * ZL) ; YM1 = (B1 * XL) + (B2 * YL) + (B3 * ZL) ; ZM1 = (C1 * XL) + (C2 * YL) + (C3 * ZL) ; * XM = XM1 + X0 ; YM = YM1 + Y0 ; ZM = ZM1 + Z0 ; * FINSI ; FINPROC XM YM ZM ; **** @CRLTC DEBPROC @CRLTC TAB1*TABLE XM*CHPOINT YM*CHPOINT ZM*CHPOINT R*FLOTTANT ; * *************************************************************** * Procedure de changement de repere, on passe des * * coordonnees cartesiennes dans le repere de local de l'objet * * XM YM ZM repere defini par TAB1.<RHO0, TAB1.<THETA0 et * * TAB1.<RP aux coordonnees pseudo-toroidales defini par un * * grand rayon donne R . Alain MOAL (mai 1995) * *************************************************************** * *--------------- VARIABLES D'ENTREE : RHO0 = TAB1.<RHO0 ; THETA0 = TAB1.<THETA0 ; RP = TAB1.<RP ; *------------------------------------ * CT0 = COS THETA0 ; ST0 = SIN THETA0 ; MST0 = ST0 * -1. ; * *---- 1) rotation d'angle THETA0 autour de l'axe X X1 = XM ; Y1 = (YM * CT0) + (ZM * ST0) ; Z1 = (YM * MST0) + (ZM * CT0) ; * *---- 2) changement d'origine vers le centre du tore, *---- rotation de 180 degres autour de l'axe Z2 pour *---- retrouver le repere global puis calcul de PHI X2 = X1 ; Y2 = Y1 - (RHO0 * CT0 + RP) ; Z2 = Z1 + (RHO0 * ST0) ; * X2 = X2 * -1. ; Y2 = Y2 * -1. ; PHI = ATG (X2 * -1.) Y2 ; * *---- 3) rotation d'angle PHI autour de l'axe Z2 CPHI = COS PHI ; SPHI = SIN PHI ; MSPHI = SPHI * -1. ; X3 = (X2 * CPHI) + (Y2 * SPHI) ; Y3 = (X2 * MSPHI) + (Y2 * CPHI) ; Z3 = Z2 ; * *---- 4) changement d'origine vers le centre du nouveau repere X4 = X3 ; Y4 = Y3 - R ; Z4 = Z3 ; * *---- calcul de RHO et THETA RHO = ((Y4 * Y4) + (Z4 * Z4))**0.5 ; THETA = ATG Z4 Y4 ; * * FINPROC RHO THETA PHI ; **** @CRMGC DEBPROC @CRMGC XM*CHPOINT YM*CHPOINT ZM*CHPOINT TAB1*TABLE ; * ******************************************************************* * Procedure de changement de repere. On passe du repere cartesien * * quelconque du maillage au repere cartesien global de la machine * * defini par son origine au centre du tore, l'axe du tore dirige * * suivant Z et l'axe X situe dans le plan median entre deux * * bobines. Trois cas sont etudies : 3D, 2D en coupe Phi constant * * et 2D en coupe Theta constant. Alain MOAL (Decembre 1995) * ******************************************************************* * *--------------- VARIABLES D'ENTREE : IPLAN = TAB1.<PLAN ; SI (EGA IPLAN 'PHICONS') ; CT0 = TAB1.<CENTRE_TORE ; CT1 = TAB1.<POINT_SUR_AXE_TORE ; P1 = TAB1.<POINT_SUR_OBJET ; FINSI ; SI (EGA IPLAN 'THECONS') ; THETA0 = TAB1.<THETA0 ; CP = TAB1.CENTRE_PLASMA ; RP = TAB1.<RP ; HP = TAB1.<HP ; FINSI ; SINON ; CT0 = TAB1.<CENTRE_TORE ; CT1 = TAB1.<POINT_SUR_AXE_TORE ; P1 = TAB1.<POINT_SUR_OBJET ; FINSI ; ANGPHI0 = TAB1.<ANG_PHI0 ; *------------------------------------ * SI (DIM0 EGA 2) ; FINSI ; * SI (((DIM0 EGA 2) ET (EGA IPLAN 'PHICONS')) OU (DIM0 EGA 3)) ; * ---- en 3D ou en 2D pour la section Phi constant * * ---- Calcul des coordonnees du point P0, projection du point P1 de * ---- l'objet dans le plan orthogonal a l'axe du tore en CT0. A = X1 - X0 ; B = Y1 - Y0 ; C = Z1 - Z0 ; * SI (A EGA 0.) ; SI (B EGA 0.); XP0 = XP1 ; YP0 = YP1 ; ZP0 = Z0 ; FINSI ; SI (C EGA 0.) ; XP0 = XP1 ; YP0 = Y0 ; ZP0 = ZP1 ; FINSI ; SI ((B NEG 0.) ET (C NEG 0.)) ; XP0 = XP1 ; YP0 = (-1.*B*C*ZP1 + (C*C*YP1) + (B*B*Y0) + (B*C*Z0)) /(B*B + (C*C)) ; ZP0 = (B*ZP1 - (C*YP1) + (C*(Y0+Z0)))/(B+C); FINSI ; SINON ; AUX1 = A / (A*A + (B*B) + (C*C)) ; AUX2 = (B*B + (C*C)) / A ; XP0 = AUX1 * (A*X0 + (B*Y0) + (C*Z0) + (AUX2*XP1) - (B*YP1) - (C*ZP1)) ; YP0 = B * (XP0 - XP1) / A + YP1 ; ZP0 = C * (XP0 - XP1) / A + ZP1 ; FINSI ; * P0 = XP0 YP0 ZP0 ; * * ---- Rotation de la ligne (CT0,P0) pour l'aligner sur l'axe X * ---- du repere global LIG0 = CT0 D 1 P0 ; * * ---- Calcul des 3 vecteurs unitaires du repere global * * ---- Changement de repere * XG1 = XM - X0 ; YG1 = YM - Y0 ; ZG1 = ZM - Z0 ; * XG = (A1 * XG1) + (B1 * YG1) + (C1 * ZG1) ; YG = (A2 * XG1) + (B2 * YG1) + (C2 * ZG1) ; ZG = (A3 * XG1) + (B3 * YG1) + (C3 * ZG1) ; * SINON ; * ---- en 2D pour une section a Theta constant * NORM_CP = (XCP*XCP + (YCP*YCP) + (ZCP*ZCP))**0.5 ; ANG1 = ATG XCP YCP ; * * ---- Rotation de - ANG1 par rapport a l'axe Z X1 = XM * (COS ANG1) - (YM * (SIN ANG1)) ; Y1 = XM * (SIN ANG1) + (YM * (COS ANG1)) ; Z1 = ZM ; * * ---- Rotation de THETA0 par rapport a l'axe X X2 = X1 ; Y2 = Y1 * (COS THETA0) + (Z1 * (SIN THETA0)) ; Z2 = -1. * Y1 * (SIN THETA0) + (Z1 * (COS THETA0)) ; * * ---- Changement d'origine vers le centre du tore X3 = X2 ; Y3 = Y2 - RP - (NORM_CP * (COS THETA0)) ; Z3 = Z2 + HP + (NORM_CP * (SIN THETA0)) ; * * ---- Rotation de -(90 + ANGPHI0) par rapport a l'axe Z XG = -1. * X3 * (SIN ANGPHI0) - (Y3 * (COS ANGPHI0)) ; YG = X3 * (COS ANGPHI0) - (Y3 * (SIN ANGPHI0)) ; ZG = Z3 ; * FINSI; * SI (DIM0 EGA 2) ; FINSI ; * FINPROC XG YG ZG ; **** @CRMLC DEBPROC @CRMLC XM*CHPOINT YM*CHPOINT ZM*CHPOINT TAB1*TABLE ; * ******************************************************************* * Version amelioree de l'ancien @CRMLC rebaptise @ACRML * * Procedure de changement de repere. On passe du repere cartesien * * du maillage au repere cartesien local de l'objet modelise. Le * * point de tangence au plasma est l'origine de ce repere et l'axe * * l'axe Y final est dirige vers le centre du plasma. * * en 3D l'axe x du repere local est donne par la direction * * toroidale * * en 2D cas PHICONS l'axe Z initial est l'axe toroidal * * en 2D cas THECONS l'axe x initial est l'axe toroidal * * Jacques SCHLOSSER et Alain MOAL (Decembre 1995) * ******************************************************************* * *--------------- VARIABLES D'ENTREE : CP = TAB1.CENTRE_PLASMA ; PTG = TAB1.PT_TGPLASMA ; SI (EXISTE TAB1 <PLAN) ; IPLAN = TAB1.<PLAN ; SINON ; FINSI ; SINON ; SI (EXISTE TAB1 <DIR_TOROIDAL) ; DIR1 = TAB1.<DIR_TOROIDAL ; SINON ; FINSI ; FINSI ; *------------------------------------ * VECT0 = CP MOINS PTG ; * * ---- calcul de l'angle de rotation dans le plan XY SI ((VX EGA 0.) ET (VY EGA 0.)) ; ANG1 = 0. ; SINON ; ANG1 = -1.* (ATG VX VY) ; FINSI ; * * * ---- changement d'origine du repere XM1 = XM - XPTG ; YM1 = YM - YPTG ; * ---- rotation pour aligner l'axe Y avec VECT0 SI (EGA IPLAN 'PHICONS'); * ---- Coupe 2D a Phi constant XL = XM1 * (COS ANG1) + (YM1 * (SIN ANG1)); YL = XM1 * (-1.) * (SIN ANG1) + (YM1 * (COS ANG1)); ZL = XM * 0. ; * ZL = XL ; XL = XL * 0.; FINSI; SI (EGA IPLAN 'THECONS'); * ---- Coupe 2D a Theta constant XL = XM1 * (COS ANG1) + (YM1 * (SIN ANG1)); YL = XM1 * (-1.) * (SIN ANG1) + (YM1 * (COS ANG1)); ZL = XM * 0. ; FINSI ; * SINON ; * DIR2 = CP MOINS PTG ; * * XM1 = XM - X0 ; YM1 = YM - Y0 ; ZM1 = ZM - Z0 ; * XL = (A1 * XM1) + (B1 * YM1) + (C1 * ZM1) ; YL = (A2 * XM1) + (B2 * YM1) + (C2 * ZM1) ; ZL = (A3 * XM1) + (B3 * YM1) + (C3 * ZM1) ; * FINSI ; FINPROC XL YL ZL ; **** @CRTGC DEBPROC @CRTGC RHO*CHPOINT THETA*CHPOINT PHI*CHPOINT R*FLOTTANT H*FLOTTANT ; * ***************************************************************** * Procedure de changement de repere. On passe des coordonnees * * pseudo-toroidales dans un repere defini par son grand rayon R * * et la hauteur H de son centre par rapport au plan equatorial * * aux coordonnees cartesiennes dans le repere global de la * * machine defini par son origine au centre du tore, l'axe du * * tore dirige suivant Z et l'axe X situe dans le plan median * * entre deux bobines. Alain MOAL (decembre 1995) * ***************************************************************** * X2 = RHO * (COS THETA) ; Y2 = RHO * 0. ; Z2 = RHO * (SIN THETA) ; * *---- Changement d'origine vers le centre du tore X1 = X2 + R ; Y1 = Y2 ; Z1 = Z2 + H ; * *---- Rotation de - phi par rapport a l'axe Z XG = (COS PHI) * X1 - ((SIN PHI) * Y1) ; YG = (SIN PHI) * X1 + ((COS PHI) * Y1) ; ZG = Z1 ; * FINPROC XG YG ZG ; **** @CRTLC DEBPROC @CRTLC R*FLOTTANT RHO*CHPOINT THETA*CHPOINT PHI*CHPOINT TAB1*TABLE ; * *************************************************************** * Procedure de changement de repere, on passe des coordonnees * * pseudo-toroidales centrees sur un grand rayon R aux * * coordonnees cartesiennes dans le repere de la structure * * modelisee. Alain MOAL (mai 1995) * *************************************************************** * *--------------- VARIABLES D'ENTREE : RHO0 = TAB1.<RHO0 ; THETA0 = TAB1.<THETA0 ; RP = TAB1.<RP ; *------------------------------------ * CT0 = COS THETA0 ; ST0 = SIN THETA0 ; MST0= ST0 * -1. ; CPHI = COS PHI ; SPHI = SIN PHI ; MSPHI = SPHI * -1. ; * X4 = RHO * 0. ; Y4 = RHO * (COS THETA) ; Z4 = RHO * (SIN THETA) ; * *---- 1) changement d'origine vers le centre du tore X3 = X4 ; Y3 = Y4 + R ; Z3 = Z4 ; * *---- 2) rotation d'angle - PHI autour de l'axe Z3 * puis rotation de - 180 degres autour de l'axe Z2 X2 = (X3 * CPHI) + (Y3 * MSPHI) ; Y2 = (X3 * SPHI) + (Y3 * CPHI) ; Z2 = Z3 ; * X2 = X2 * -1. ; Y2 = Y2 * -1. ; * *---- 3) changement d'origine vers le centre d'objet X1 = X2 ; Y1 = Y2 + RP + (RHO0 * CT0) ; Z1 = Z2 - (RHO0 * ST0) ; * *---- 4) rotation d'angle - THETA0 autour de l'axe X1 XP = X1 ; YP = (Y1 * CT0) + (Z1 * MST0) ; ZP = (Y1 * ST0) + (Z1 * CT0) ; * FINPROC XP YP ZP ; **** @CRTTC DEBPROC @CRTTC R1*FLOTTANT RHO1*CHPOINT THETA1*CHPOINT PHI1*CHPOINT R2*FLOTTANT ; * *************************************************************** * Procedure de changement de repere. On passe d'un repere * * pseudo-toroidal defini par son grand rayon R1 a un autre * * repere pseudo-toroidal defini par son grand rayon R2. Ces * * deux reperes ont la meme orientation toroidale: Phi1 = Phi2 * * Alain MOAL (juin 1995) * *************************************************************** * RHO2 = RHO1**2 + ((R1 - R2)**2) ; RHO2 = RHO2 + (RHO1*(R1 - R2)*(COS THETA1)*2.) ; RHO2 = RHO2**0.5 ; * AUX1 = RHO1 * (SIN THETA1) ; AUX2 = RHO1 * (COS THETA1) - R2 + R1 ; THETA2 = ATG AUX1 AUX2 ; * PHI2 = PHI1 ; * FINPROC RHO2 THETA2 PHI2 ; **** @CSHIFT DEBPROC @CSHIFT RHOM*CHPOINT THETAM*CHPOINT PHIM*CHPOINT IMETHOD*ENTIER TAB1*TABLE ; * *************************************************************** * Procedure de calcul des grand et petit rayons du "cercle de * * Shafranov" en chaque point M defini dans le repere centre * * sur le plasma. On calcule de plus l'angle theta dans le * * repere centre sur le cercle calcule. * * Deux methodes sont utilisees pour calculer le grand rayon. * * Alain MOAL (aout-sept 1995) * *************************************************************** * *--------------- VARIABLES D'ENTREE : RP = TAB1.<RP ; RHO0 = TAB1.<RHO0 ; LAMB = TAB1.<LAMB ; *------------------------------------ * SI ((NON (IMETHOD EGA 1)) ET (NON (IMETHOD EGA 2))) ; FINSI ; * *---- variables auxiliaires A = ((RHOM/RHO0)**-2) + 1. ; A = A * (LAMB + 0.5) ; A = A + (LOG (RHOM/RHO0)) - 1. ; B = LOG (RHOM/RHO0) ; B = B - ((((RHOM/RHO0)**-2) - 1.) * (LAMB + 0.5)) ; STM = SIN THETAM ; CTM = COS THETAM ; AUX1 = 1. + LAMB ; AUX2 = RHOM * CTM + RP ; AUX3 = RHOM * STM ; * *---- TEST : calcul du decentrement par la methode de Shafranov DELT0 = B * (RHOM**2) / (2.*RP) ; *---- FIN TEST * SI (IMETHOD EGA 1) ; * ---- calcul du grand rayon * * RM 08/04/97 J'enleve STM qui figure a la fois au numerateur et au denominateur * dans l'expression definie par les trois lignes suivantes * Il provoque une division par 0 quand des points du maillage sont dans le plan * equatorial * GRANDR = RHOM * RP * CTM * (A - B) ; * equatorial * GRANDR = RHOM * RP * CTM * (A - B) ; GRANDR = GRANDR + (2.*(RP**2) - (B*(RHOM**2))) ; GRANDR = GRANDR / (2.*RP + (RHOM*CTM*(A - B))) ; FINSI ; * SI (IMETHOD EGA 2) ; DELTA = ((AUX2**2) * (AUX1**2)) - ((AUX1 + 1.) * ( ((AUX2**2) + (AUX3**2)) * AUX1 - (RP**2) - ((RHO0**2) * AUX1))) ; * * ---- deux cercles possibles GRANDR1 = ((AUX2 * AUX1) + (DELTA**0.5))/(AUX1 + 1.) ; GRANDR2 = ((AUX2 * AUX1) - (DELTA**0.5))/(AUX1 + 1.) ; * * ---- choix du bon cercle SI ((COS THETAM) >EG 0.) ; GRANDR = GRANDR2 ; SINON ; GRANDR = GRANDR1 ; FINSI ; FINSI ; * *---- calcul du petit rayon PETITR = ((RHOM*CTM+RP-GRANDR)**2 + ((RHOM*STM)**2))**0.5 ; * *--- calcul de theta dans le repere centre sur le cercle calcule THETAR = ATG (RHOM * STM) (RHOM * CTM + RP - GRANDR) ; * *---- test (methode 1) *AM*TERME1 = PETITR * LAMB * (COS THETAR) / GRANDR ; *AM*TERME2 = (STM**2 * B + ((CTM**2) * A))/(2.*RP) ; *AM*TERME2 = TERME2 + (CTM / RHOM) ; *AM*TERME2 = TERME2 * (RP - GRANDR); *AM*TERME2 = TERME2 + (RHOM * CTM * A / (2.*RP)) ; *AM*ERREUR0 = (ABS ((TERME1-TERME2)/TERME2)) ; *AM*MESS 'TEST'; LIST TERME1; LIST TERME2; LIST ERREUR0; * FINPROC GRANDR PETITR THETAR; **** @CVECT * ************************************************************** * Procedure de creation d'un objet de type vecteur a partir * * des composantes d'un champ de vecteurs. * * Si le facteur d'amplification pour visualiser un champ de * * vecteur sur une geometrie n'est pas donne,il est adapte * * aux dimensions geometriques du probleme. * * Alain MOAL (juillet 1995) * ************************************************************** * ZM = XM * 0. ; SINON ; FINSI ; * SI (NON (EXISTE AMPLI0)) ; * ---- norme du vecteur VECNORM = ((XV * XV) + (YV * YV) + (ZV * ZV))**0.5 ; * RM 16.01.03 @listmm VECNORM ; * * ---- calcul d'une longueur caracteristique du maillage * SINON ; FINSI ; * *AM* AMPLI0 = LONGCAR / (MAXI VECNORM) ; *AM* AMPLI0 = 2. * LONGCAR / (MAXI VECNORM) ; FINSI ; * *CAST94* CHV1 = (NOMC UX XV) ET (NOMC UY YV) ; SINON ; *CAST94* CHV1 = (NOMC UX XV) ET (NOMC UY YV) ET (NOMC UZ ZV) ; FINSI ; FINPROC VECT1 ; **** ARBRE derniere modif 16/04/91 DEBPROC ARBRE MAILSEG*MAILLAGE IMEN*ENTIER; * determination du maillage des aretes de la surface de separation * en seg2 sera a changer si p2 au lieu de p1 * HDL CHPOINT VIDE SUR DFCAN EN ENTREE IP= 0; * TEMPS ; MESS ' NBRE DE POINTS DE LA SURFACE DE SEPARATION ' NPB; IPASS= 0;IMA= 0 ; REPETER BOUC1 ; IPASS= IPASS + 1;IMA= IMA + 1 ; ITUR= 0; REPETER BOUCON ; ITUR= ITUR + 1 ; P1= ALBERT POINT ITUR; SI (( NBL < NBT) OU ('EGA' IPASS 1)) ; QUITTER BOUCON ;FINSI ; FIN BOUCON ; SI (IPASS > 1); * TRAC OEIL ((SEGBL COUL ROUG) * ET (MAILSEG ELEM BLAN) ET (MAILSEG ELEM VERT)) NOEUDS; FINSI ; IBL= 0 ; * on ordonne les segments connectes a P1 sens P1 PN REPETER BOUC0 NBL ; IBL= IBL + 1 ; SI (IBL EGA 1 ) ; SSI= SSS;SINON ; SSI = SSI ET SSS ; FINSI ; 2P= SSS POINT FINAL ; FIN BOUC0 ; SEGBL= SSI ; * SI NBL > 1 ON VA ELIMINER LES DOUBLES DE SEGBL IA=0 ; 2P= SEG1 POINT FINAL ; FINSI ; SI ( NBL > 1 ) ; REPETER BOUC2 (NBL - 1 ); IA= IA + 1 ; PP1= SEG1 POINT FINAL ; I3= IA + 1 ; REPETER BOUC3 ; SI ( I3 > NBL ) QUITTER BOUC3 ; FINSI ; PP2=SEG2 POINT FINAL; SI ( PP1 EGA PP2 ) ; * MESS ' ELIMINATION DU NO ' I3 ; FINSI ; I3= I3 + 1; FIN BOUC3 ; FIN BOUC2 ; FINSI ; * TRAC OEIL MAILSEG ; SI ( N1 EGA N2 ) ; QUITTER BOUC1 ; FINSI ; SI ( EGA IMA IMEN) ; MENAGE ;IMA = 0 ; FINSI ; FIN BOUC1 ; SAUTER 2 LIGNES ; MESS ' NB D ARETES AYANT SERVI A L INTEGRATION ' N2 ; *TEMPS ; * HDL= IN_MINI (MAILSEG ELEM VERT ) TABHS ORIG B_ANTI ; FINPROC MAILSEG; **** FL_HS derniere modif 16/04/91 * chamelem des projections de hs sur les normales des elements * au cdg IP= 0; OB1= DFCANT AFFECT (MODELE STANDARD ) TYEL ; * calcul des moyennes sur l element HSXM = PRCH HPX OB1 'GRAVITE' ; HSYM = PRCH HPY OB1 'GRAVITE' ; HSZM = PRCH HPZ OB1 'GRAVITE' ; * IP= 0 ; IMENA= 0 ; REPETER BOUCEL BBNEL ; IMENA= IMENA + 1 ; T1= ITOT POINT 1 ;T2= ITOT POINT 2 ; T3= ITOT POINT 3 ; * normale a l element V1= T2 MOINS T1 ; V2= T3 MOINS T1 ; NNN= V1 PVECT V2 ; VPROJ = (HSXE * CVX ) + (HSYE * CVY ) + (HSZE * CVZ) ; MENAGE ; IMENA= 0 ; FINSI ; FIN BOUCEL ; FINPROC FLHS ; **** IN_MINI derniere modif 16/04/91 * integration de v par minimisation fonctionnelle * en entree maillage frontiere cote phi et hs sur ce maiilage * en sortie V(b)= phi(b)-psi(b) chpoint sur fcan * avec psi(p1) = phi(p1) HX=TABHS.1;HY=TABHS.2;HZ=TABHS.3; I= 0 ; I= I + 1 ; HMOY =(( HX1 + HX2) / 2.) ( ( HY1 + HY2) / 2.) ((HZ1 + HZ2) / 2.); * si ( ega nbi 3 ) ; * p3= segcou point 3 ; * hmx= extr hx scal p3 ; * hmy= extr hy scal p3 ; * hmz= extr hz scal p3 ; * hmil= ( hmx hmy hmz ) * 4. ; * hmoy =( hmoy / 3. ) + ( hmil / 6. ) * finsi ; DV = (VL PSCAL HMOY ) ;DVI= DV * -1.; TI= 1. / DL ;IT= -1. * TI ; SI (EGA I 1); RIGT = RIGEL ; HTH = HH ; SINON ; RIGT1= RIGT ET RIGEL; HTH1= HTH ET HH ; FINSI ; FIN BLOCALC ; TUTU= BLOQUE ORIG T; HHHH= RESOU (RIGT ET TUTU ET TITI ) HTH ; FINPROC HHHH ; **** ARBRE_IN derniere modif 16/04/91 DEBPROC ARBRE_IN DFCAN*MAILLAGE TABHS*TABLE ORIG*POINT ; * CALCUL DE L ARBORESCENCE ET INTEGRATION DE HS.DL * cette methode amene des differences suivant le chemin choisi * il vaut mieux utiliser l autre ( minimisation) * DFCAN SURFACE DE SEPARATION * HDL CHPOINT VIDE SUR DFCAN EN ENTREE I= 1 ; REPE BOUCSEG1 ( NELSURF1 - 1 ); I = I + 1; FIN BOUCSEG1; I= 0 ; REPE BOUCSEG2 NELSURF2; I = I + 1; FIN BOUCSEG2; IP= 0; *TEMPS ; MESS ' NBRE DE POINTS DE LA SURFACE DE SEPARATION ' NPB; IPASS= 0; REPETER BOUC1 ; IPASS= IPASS + 1; ITUR= 0; REPETER BOUCON ; ITUR= ITUR + 1 ; P1= ALBERT POINT ITUR; SI (( NBL < NBT) OU ('EGA' IPASS 1)) ; QUITTER BOUCON ;FINSI ; FIN BOUCON ; SI (IPASS > 1); * TRAC OEIL ((SEGBL COUL ROUG) * ET (MAILSEG ELEM BLAN) ET (MAILSEG ELEM VERT)) NOEUDS; FINSI ; IBL= 0 ; * on ordonne les segments connectes a P1 sens P1 PN REPETER BOUC0 NBL ; IBL= IBL + 1 ; SI (IBL EGA 1 ) ; SSI= SSS;SINON ; FINSI ; FIN BOUC0 ; SEGBL= SSI ; * SI NBL > 1 ON VA ELIMINER LES DOUBLES DE SEGBL IA=0 ; 2P= SEG1 POINT FINAL ; SI (( EGA VV 0.) ET (2P NEG ORIG)); HDL=INT_BIOT HDL P1 2P ORIG TABHS ; FINSI ; FINSI ; SI ( NBL > 1 ) ; REPETER BOUC2 (NBL - 1 ); IA= IA + 1 ; PP1= SEG1 POINT FINAL ; SI ((EGA VV 0.) ET (PP1 NEG ORIG)); HDL=INT_BIOT HDL P1 PP1 ORIG TABHS ; FINSI ; I3= IA + 1 ; REPETER BOUC3 ; SI ( I3 > NBL ) QUITTER BOUC3 ; FINSI ; PP2=SEG2 POINT FINAL; SI ( PP1 EGA PP2 ) ; * MESS ' ELIMINATION DU NO ' I3 ; FINSI ; *tc mise en commentaire du finsi * FINSI; I3= I3 + 1; FIN BOUC3 ; FIN BOUC2 ; FINSI ; * TRAC OEIL MAILSEG ; SI ( N1 EGA N2 ) ; QUITTER BOUC1 ; FINSI ; FIN BOUC1 ; DETR SEGBL ; SAUTER 2 LIGNES ; MESS ' NB D ARETES AYANT SERVI A L INTEGRATION ' N2 ; *TEMPS ; * sortie hdl chpoint de V FINPROC HDL ; **** INT_BIOT derniere modif 16/04/91 DEBPROC INT_BIOT HDL*CHPOINT 1P*POINT 2P*POINT ORIG*POINT TABHS*TABLE ; * integration de ht.dl sur le long des aretes sur la surface de * separation HSX= TABHS.1 ;HSY=TABHS.2;HSZ= TABHS.3 ; * HDL EST LE STOCKAGE DU RESULTAT * integrale sur le segment XHM= (XHS1 + XHS2 ) / 2.; YHM= (YHS1 + YHS2 ) / 2.; ZHM= (ZHS1 + ZHS2 ) / 2.; DL= 2P MOINS 1P ; VINT = VAL + INTSEG ; *LIST (1P ET 2P); *MESS 'VAL1P INTSEG VINT2P ' VAL INTSEG VINT ; * le cas ou 2p est ORIG a ete exclu a l exterieur FINPROC HDL; **** SAUT_POT derniere modif 16/04/91 DEBPROC SAUT_POT FCAN*MAILLAGE FFER*MAILLAGE LLLL*CHPOINT ORIG*POINT ; * calcul du saut de potentiel *************************************************************** * relations entre points homologues de la separation * orig est le point ou psi=phi=0. * attention a la coherence avec la condition limite *************************************************************** IK= 0 ;ILO= 0 ; REPETER BLOC1 NNN; IK= IK + 1 ; IP=FCAN POINT IK ;IQ= FFER POINT PROCHE IP ; SI (NEG IP ORIG) ; SI (EGA ILO 0 ) ; REL1=RELP; FDEPI= DEPIP ; ILO= 1 ; SINON ; REL2= REL1 ET RELP ; FDEPI2= FDEPI ET DEPIP ; FINSI; FINSI; FIN BLOC1 ; FINPROC REL1 FDEPI; **** B_ARETES derniere modif 16/04/91 DEBPROC B_ARETES SEP_PHI*MAILLAGE ; * reduit un maillage surfacique p1 a ses aretes * en conservant les doubles SI (NEG NBU NBQU); I= 0 ; REPE BOUCSEGT NTRI; I = I + 1; FIN BOUCSEGT; FINSI ; I= 1 ; REPE BOUCSEGQ (NBQU - 1 ); I = I + 1; FIN BOUCSEGQ; * TRAC OEIL MAILSEG QUAL ; FINPROC MAILSEG ; * **** LIRBIOT derniere modif 16/04/91 DEBPROC LIRBIOT SEP_PHI*MAILLAGE MU0*FLOTTANT ; *************************************************************** * RECUP BIOT ET SAVART SUR FRONTIERE * genere en exterieur la surface frontiere a ete sortie pas sort * noopt precedement et a servi a calculer hs * on recupere le tout coordonnees et hs et on elmine pour etre sur * du support (ordre ) *************************************************************** IMET= 2 ; SI ( EGA IMET 1); OPTION ACQUERIR 9 ; ACQUERIR HX*LISTREEL NFN HY*LISTREEL NFN HZ*LISTREEL NFN ; SINON ; * AUTRE FACON A ESSAYER * OPTION ACQUERIR 8 ; IP= 0; REPETER BOUCA NFN ; ACQUERIR X*FLOTTANT Y*FLOTTANT Z*FLOTTANT HX*FLOTTANT HY*FLOTTANT HZ*FLOTTANT ; * X= EXTR VALP 1 ;Y= EXTR VALP 2 ; Z= EXTR VALP 3; * HX= EXTR VALP 4 ;HY= EXTR VALP 5 ; HZ= EXTR VALP 6; P1= X Y Z ; PT= SEP_PHI POINT PROCHE P1 ; *tc mise en commentauire du finsi ci dessou * FINSI ; * FIN BOUCA; FINSI; * provisoire chambob donne B on divise par mu0 HS= HS / MU0 ; * ELIM .1 SEP_PHI PT ; FINPROC HS ; **** FOR_CONT derniere modif 16/04/91 * calcul des forces par integrale de contour OBSEG = CCONT AFFECT ( MODELE STANDARD ) SEG2 ; AA = PRCH OBSEG SOL1 'GRAVITE'; IEL = 0 ;SOMX = 0. ; SOMY = 0. ;SMM = 0. ; * REPETER BOUC NBSEG ; I1 = SEGC POINT INITIAL ; I2 = SEGC POINT FINAL ; DX = X2 - X1 ; DY = Y2 - Y1 ; SOMX = SOMX + ( AME * DX) ; SOMY = SOMY + ( AME * DY) ; MOMM = (RX * DX) + (RY * DY ) ; SMM= SMM + ( AME * MOMM ) ; FIN BOUC ; * FXX = COURI * SOMY ; FYY = -1. * COURI * SOMX ; MOMT = -1. * COURI * SMM ; FINPROC RFORC SMM ; **** FORBLOC derniere modif 16/04/91 * bobi maillage non complexe * bb champ induction AUX CDG du maillage reduit * integration de j vectoriel b sur les elements resultats aux cdg * sort un champ par points aux cdgs dans rfor * sort un champ par point aux noeuds dans rpt IP= 0 ;IPAS= 0 ; REPETER BOUE NNN ; IPAS= IPAS + 1 ; SI ( EGA IP 1) ;RFOR = R_F ;RPX = RFXP ;RPY=RFYP ; SINON ; RFOR = RFOR + R_F ;RPX= RPX + RFXP ; RPY= RPY + RFYP ; FINSI ; * SI ( EGA IPAS 10 ) ;MESS 'menage';MENAGE ; IPAS = 0 ; FINSI ; RPT= RPX + RPY ; FIN BOUE ; * FINPROC RFOR RPT ; **** INDUCTIO derniere modif fevrier/92 ****************************************************************** **************************************************************** * 2D UNIQUEMENT * calcul; de l induction en potentiel vecteur * * GEO maillage sur lequel on recherche B * * SOL1 solution en potentiel vecteur * * AXI logique vrai si axi * **************************************************************** SI ( AXI ) ; IMET = 2 ; SI ( EGA IMET 1 ) ; 1SRAY = MUAXI2 GEO 1. 1 ; FINSI ; SI ( EGA IMET 2 ) ; 1SRAY = MUAXI2 GEO 1. 2 ; FINSI ; SINON ; FINSI ; BTOT = BX + BY ; FINPROC BTOT ; **** POT_VECT derniere modif 1/03/92 ******************************************************************** * MAGETOSTATIQUE 2D EN POTENTIEL VECTEUR * ******************************************************************** * MATAB TABLE D ENTREE CONTENANT * MATAB.'MU0' PERMEABILITE DE L AIR (PAR DEFAUT UNITE METRE * * MATAB.'MUREL' MU RELATIF DEPART 2900 PAR DEFAUT * * MATAB.'AIR' PARTIE AIR NON REDUITE A UN SUPER ELEMENT * * MATAB.'FER' FER * * MATAB.'MAITRES' POINT MAITRES SI SUPER ELEMENT * * MATAB.'AIRSUP' PARTIE AIR TRAITEE EN SUPER (NON OBLIGATOIRE)* * MATAB.'ENCS ' LIMITE A A NULL SUR LE SUPER ELEMENT (MAILL) * * MATAB.'BLOCAGE' LIMITE A A NULL SUR LA ZONE STANDARD( MAILL) * * MATAB.'COUR' TABLE DE TABLES CONTENANT LA DESCRIPTION DES * * BLOCS DE COURANTS CONSTITUEE PAR UN OU DES * * APPEL(S) A LA PROCEDURE DESCOUR * * MATAB.'AXI' = VRAI SI PROBLEME AXISYMETRIQUE * * SOLIN MOT OPTIONNNEL POUR LE CALCUL DU PREMIER PAS LINEAIRE* ******************************************************************** * EN SORTIE MATAB CONTIENT LES OBJETS NECESSAIRES * * AU CALCUL NON LINEAIRE * * ET LA SOLUION DU PREMIER PAS SI DEMANDEE DS MATAB.'POTENTIEL * ******************************************************************** AXI= FAUX ; SI ( EXISTE MATAB 'AXI' ); AXI = MATAB.'AXI' ; FINSI ; MUAIR = 4 * PI * 1.E-7 ; SI ( EXISTE MATAB 'MU0') ;MUAIR = MATAB.'MU0' ;FINSI ; SI ( EXISTE MATAB 'MUREL' ) ; MUFER = MUAIR * (MATAB.'MUREL') ; SINON ; MUFER = MUAIR * 2900 ; FINSI ; MATAB.'MUAIR'= MUAIR ; AIR = MATAB.'AIR' ; FER = MATAB.'FER' ; SI ( AXI ) ; MAT1= MUAXI2 AIR MUAIR 1; MAT2= MUAXI2 FER MUFER 1; SINON ; * rectification conductibilites FINSI ; SI ( EXISTE MATAB 'AIRSUP') ; AIRSUP = MATAB.'AIRSUP' ; SI ( AXI ) ; MAT3 = MUAXI2 AIRSUP MUAIR 1 ; SINON; FINSI ; SI ( EXISTE MATAB 'ENCS' ); RIGB= (CONDUC OBJ3 MAT3 ) ET ( BLOQUER (MATAB.'ENCS' ) T ) ; SFAC = MATAB.'MAITRES'; SUP1 = SUPER 'RIGIDITE' RIGB SFAC ; MATAB.'SUPER' = SUP1 ; FINSI ; FINSI ; RIGA= CONDUC OBJ1 MAT1 ; RIGF= CONDUC OBJ2 MAT2 ; * SI ( EXISTE MATAB 'MAITRES') ; SINON ; RIGCON = RIGA ; FINSI ; * charge TABCOUR = TABLE ; III = INDEX TABCOUR ; IZ= 'ENTIER' 0 ; REPETER BOUC ; IZ= IZ + 1 ; SI ( 'NON' ('EXISTE' III IZ )) ;QUITTER BOUC ; FINSI ; STN = TABCOUR.IZ ;GEO = STN.'GEO' ; FEIZ = SOURCE OBJ1 1. GEO ; * SI ( EXISTE STN 'AMP' ) ; J = STN.'AMP' ; STN.'AT' = SSS * J ; SINON ; SDO = STN.'AT' ; J = SDO / SSS ; STN.'AMP'= J ; FINSI ; * FEIZ = FEIZ * J ; * MESS ' BLOC ' IZ ' JAMP ' J ' NI' STN.'AT' ; SI ( EGA IZ 1 ) ; FE = FEIZ ; SINON ; FE = FE + FEIZ ; FINSI ; FIN BOUC ; MATAB.'RHS'= FE ; MATAB.'RIGCON'= RIGCON; MATAB.'RIGFER'= RIGF; SI ( EXISTE SOLIN ) ; SI ( EXISTE MATAB 'BLOCAGE' ); BBB = BLOQUER ( MATAB.'BLOCAGE') T ; MATAB.'BLOCAGE'= BBB ; SOL1= RESOU ( RIGF ET RIGCON ET BBB ) (MATAB.'RHS') ; SINON ; SOL1= RESOU ( RIGF ET RIGCON ) (MATAB.'RHS') ; FINSI ; MATAB.'POTENTIEL'= SOL1 ; FINSI ; * FINPROC ; **** DESCOUR derniere modif 16/04/91 ******************************************************************* * DESCRIPTION D UNE ZONE DE COURANTS * * TAB TABLE QUI CONTIENDRA LE DESCIPTIF DE TOUTES LES * * ZONES DE COURANTS * * I NUMERO D ORDRE DE LA ZONE DE COURANT * * BLOCI ZONE DE COURANT TYPE MAILLAGE * * MM MOT 'AMP' OU 'AT' * * J FLOTTANT DENSITE DE COURANT OU AMPERES TOURS * ******************************************************************* STN= TABLE ; STN.'GEO'= BLOCI ; SI ( EGA MM 'AMP') ; STN.'AMP' = J ; SINON ; STN.'AT' = J ; FINSI ; TAB.I= STN ; FINPROC ; **** MAG_NLIN derniere modif 16/04/91 *----------------------------------------------------------------------* * * * INSPIRE DE TRANSIT1 * * POUR TENIR COMPTE DE PLUSIEURS MATERIAUX DONT UN NON LINEAIRE * * POUR TRAITER PB MAGNETOSTATIQUE * * --------------- * * * * RESOLUTION D'UN PROBLEME DE MAGNETOSTATIQUE NON-LINEAIRE * * EN REGIME PERMANENT,A L'AIDE DE LA METHODE DU POINT FIXE * * ETAB, TABLE CONTENANT EN ENTREE : * * OBLIGATOIRE * * INDICE 'SOUSTYPE' THERMIQUE * * INDICE 'AXI ' LOGIQUE VRAI EN 2D SI AXISYM ( PLAN DEFAUT) * * * * INDICE 'EVOCOND' EVOLUTION DE Mu CREE PAR LA PROCEDURE H_B * * QUI REND LA COURBE AD HOC POUR POT VECT OU POT SCALAIRE * * OPTIONNEL * * INDICE 'CRITERE' CRITERE DE CONVERGENCE * * INDICE 'OME' COEFF AMORTISSEMENT OSCI 0< OME < 1. * * (10E-5 PAR DEFAUT) * * INDICE 'NITER' REACTUALISATION DE LA CONDUCTIVITE TOUTES * * LES NITER ITERATIONS (NITER=1 PAR DEFAUT) * * INDICE 'NIVEAU' NIVEAU DE MESSAGES (NIVEAU=0 PAR DEFAUT) * * INDICE 'ITERMAX' NOMBRE D'ITERATIONS MAXIMUM * * (ITERMAX=10 PAR DEFAUT) * ************************************************************************ * arguments fabriques dans les passages soit ds pot_vect ou pot_scal * * INDICE 'FLUX' FLUX EQUIVALENTS * * INDICE 'BLOCAGE' MATRICE DE BLOCAGE (CREEE PAR "BLOQUE") * * INDICE 'IMPOSE' VALEURS IMPOSEES (CREE PAR "DEPI") * * INDICE 'RIGCON ' RAIDEUR CONSTANTE * * INDICE 'RIGFER ' RAIDEUR VARIABLE * * ETAB CONTENANT EN SORTIE : * * * * INDICE 'POTENTIEL' POTENTIEL RESULTAT * * * * D.R., LE 7 JUILLET 1988.VERSION DU 18 JANVIER 1989. * * MODIFIE PAR BAZE MAI 90 *----------------------------------------------------------------------* CONVERGE = FAUX ;ETAB.CONVERGE= FAUX ; 'REPETER' PROC 1 ; 'SI' ( 'NEG' ( ETAB.'SOUSTYPE' ) 'THERMIQUE' ) ; 'MESS' 'SOUS TYPAGE INCORRECT DE LA TABLE EN ENTREE|' ; 'QUITTER' PROC ; 'FINSI' ; 'SI' ( 'EXISTE' ETAB 'NIVEAU' ) ; NIV_MESS = ETAB.'NIVEAU' ; 'SINON' ; NIV_MESS = 0 ; 'FINSI' ; 'SI' ( NIV_MESS '>EG' 1 ) ; 'SAUTER' 1 'LIGNE' ; 'FINSI' ; * *--- RECUPERATION DE L'INFORMATION CONTENUE DANS "ETAB" * 'SI' ('EXISTE' ETAB BLOCAGE ); MAT_BLO = ETAB.'BLOCAGE' ; 'FINSI'; RIG_CON = ETAB.'RIGCON'; 'SI' ( 'EXISTE' ETAB 'IMPOSE' ); VAL_IMPO = ETAB.'IMPOSE' ; 'FINSI' ; * IL FAUT EXTRAIRE LE FER ; FER = EXTRA ( ETAB.RIGFER ) MAIL; AXI = FAUX ; SI ( EXISTE ETAB 'AXI') ; AXI = ETAB.'AXI' ;FINSI ; SI AXI ; FINSI ; * SI ( EXISTE ETAB 'SUPER' ) ; MAIL_CHP= FER ET ( EXTRA RIG_CON MAIL ); * SINON ; * MAIL_CHP= ETAB.'GEORED' ; * FINSI ; QTE_FLUX = ETAB.'RHS' ; EVO_COND = ETAB.'EVOCOND' ; LIS_COND = 'EXTRAIRE' EVO_COND 'CONDUCTIVITE' ; LIS_TEMP = 'EXTRAIRE' EVO_COND 'TEMPERATURE' ; * SAUTER 3 LIGNES ; * MESS ' CONDUCTIVITE INITIALE DU FER ' VAL_COND ; SAUTER 3 LIGNES ; 'SI' ( 'EXISTE' ETAB 'CRITERE' ) ; EPSILON = ETAB.'CRITERE' ; 'SINON' ; EPSILON = 1.E-5 ; 'FINSI' ; 'SI' ( 'EXISTE' ETAB 'NITER' ) ; NBRE_ITE = ETAB.'NITER' ; 'SI' ( NIV_MESS '>EG' 1 ) ; 'SAUTER' 1 'LIGNE' ; 'MESS' 'REACTUALISATION DE LA MATRICE DE CONDUCTIVITE A L ENTREE ' 'PUIS TOUTES LES ' NBRE_ITE 'ITERATIONS' ; 'FINSI' ; 'SINON' ; NBRE_ITE = 1 ; 'FINSI' ; 'SI' ( 'EXISTE' ETAB 'ITERMAX' ) ; ITER_MAX = ETAB.'ITERMAX' ; 'SINON' ; ITER_MAX = 10 ; 'FINSI' ; ************************** 'SI' ( 'EXISTE' ETAB 'IMPOSE'); FF1 = QTE_FLUX 'ET' VAL_IMPO ; 'SINON'; FF1 = QTE_FLUX; 'FINSI'; ome= ETAB.'OME' ; 'SI' ('NON' ( 'EXISTE' ETAB 'POTENTIEL')) ; SI ( AXI ) ; KLAST = (KLAST * ( RFER ** -1. )) ; SINON ; FINSI ; CND1 = 'CONDUCTIVITE' OBJ_MFER CHAM_CND ; 'SI' ( 'EXISTE' ETAB BLOCAGE ) ; RIG1 = CND1 ET RIG_CON ET MAT_BLO ; 'SINON'; RIG1 = CND1 ET RIG_CON ; 'FINSI' ; U1_T = 'RESOUDRE' RIG1 FF1 ; ETAB.'POTENTIEL'= U1_T ENLEVER LX ; * CI= (LUMP RIG1 ) * VEC1 ; C2= (LUMP RIG1 ( MOTS T )) * VEC1 ; * CI = (C2 - CI ) NOMC 'SCAL'; SINON ; SI (EXISTE ETAB 'KLAST') ; KLAST= ETAB.'KLAST' ; SINON ; FINSI ; * CI = ETAB.'CI' ; FINSI ; 'SI' ( NIV_MESS '>EG' 2 ) ; 'SAUTER' 1 'LIGNE' ; 'MESS' 'CHAMP THERMIQUE AVANT ITERATION ' ; 'LISTE' U1_T ; 'FINSI' ; DAN= 1.; * MOESP='REA' ; * * *********************************************************** *--- ... ITERATIONS ... *********************************************************** NUM_ITE = 0 ; IFOIS = 0 ; 'REPETER' BOUC_1 ; NUM_ITE = NUM_ITE + 1 ; IFOIS = IFOIS + 1 ; * * calcul du champ dans le fer -----> modif de mufer SI ( AXI ) ; DERIV = DERIV / RFER ; FINSI ; SI (EXISTE DERIV 'T,Z' ) ; BB= (( DAY * DAY ) + ( DAX * DAX ) +( DAZ * DAZ )) ** .5 ; SINON ; FINSI ; * SAUTER 1 LIGNE ; KLAST = K1 ; SI ( AXI ) ; CHAM_CND = CHAMELEM FER K2 'CARACTERISTIQUES'; SINON ; CHAM_CND = 'CHAMELEM' FER K2 'CARACTERISTIQUES' ; FINSI ; CND2 = 'CONDUCTIVITE' OBJ_MFER CHAM_CND ; RR2= CND2 ET RIG_CON ; RESID= ( FF1 - ( RR2 * U1_T ) ) ENLEVER 'FLX' ; * * tests de convergence * DETR RESID ; MESS IFOIS MAXA MIXA DAN ; * * 'SI' (( NUM_ITE 'EGA' NBRE_ITE ) 'OU' ( IFOIS 'EGA' 1 ) ); ***************************************************************** * --- REACTUALISATION DE LA MATRICE DE CONDUCTIVITE ***************************************************************** MOESP='REA' ; * CI= (LUMP RR2 ) * VEC1 ; C2= (LUMP RR2 ( MOTS T )) * VEC1 ; * CI = (C2 - CI ) NOMC 'SCAL'; 'SI' ( 'EXISTE' ETAB BLOCAGE ); RIG1 = RR2 ET MAT_BLO ; 'SINON'; RIG1 = RR2 ; 'FINSI' ; U2 = 'RESOUDRE' RIG1 FF1 ; NUM_ITE = 0 ; 'SINON' ; ***************************************************************** * --- RE-EQUILIBRAGE DU SECOND MEMBRE ***************************************************************** MOESP=' ' ; FF2 = ( RIG1 * U1_T ) - ( RR2 * U1_T ) ; FF3 = FF1 + FF2 ; U2 = 'RESOUDRE' RIG1 FF3 ; * 'DETR' CND2 ;DETR RR1 ; DETR RR2 ; 'FINSI' ; ***************************************************************** ***************************************************************** * 'SI' ( NIV_MESS '>EG' 2 ) ; 'SAUTER' 1 'LIGNE' ; 'MESS' 'CHAMP THERMIQUE A L ITERATION :' IFOIS ; 'LISTE' U2_T ; 'FINSI' ; * CDIF= U2_T - U1_T ; DAN = DAN ** .5 ; * * 'SI' ( ERROR < EPSILON ) ; 'SI' ( DAN < EPSILON ) ; CONVERGE = VRAI ; 'SINON' ; CONVERGE = FAUX ; 'FINSI' ; * *--- LE CRITERE DE CONVERGENCE EST-IL SATISFAIT ? MENAGE ; 'SI' ( CONVERGE ) ; 'SI' ( NIV_MESS '>EG' 1 ) ; * 'SAUTER' 1 'LIGNE' ; 'MESS' 'CONVERGENCE A L ITERATION :' IFOIS ; 'MESS' 'CRITERE DE CONVERGENCE :' EPSILON ; 'FINSI' ; 'QUITTER' BOUC_1 ; 'FINSI' ; U1_T = U2_T ; 'SI' ( 'EGA' IFOIS ITER_MAX ) ; * 'SAUTER' 1 'LIGNE' ; 'MESS' 'PAS DE CONVERGENCE A L ITERATION :' ITER_MAX ; 'QUITTER' BOUC_1 ; 'FINSI' ; * ON FAIT LE MENAGE 'FIN' BOUC_1 ; ETAB.NBITER= IFOIS; * *--- ARCHIVAGE DES RESULTATS DANS "ETAB" * ETAB.'KLAST'= KLAST ; ETAB.'POTENTIEL' = U2_T ; * ETAB.'CI'= CI ; 'SI' ( NIV_MESS '>EG' 1 ) ; 'SAUTER' 1 'LIGNE' ; 'FINSI' ; 'FIN' PROC ; 'FINPROC' ETAB ; ************************ **** H_B derniere modif 16/04/91 * definition de la courbe mu de b ou h * mu0 systeme mksa 4 pi 10-7 ; MUVRA = 4. * 3.14159 * 1.E-7 ;RAP= MU0 / MUVRA ; * B= PROG 0. 1.09 1.5 1.57 1.67 1.81 1.92 2.01 20.1 ; * H= PROG 0. 300 800 1250 3000 8000 13000 20000 200000 ; B= PROG 0. .8 1.2 1.4 1.5 PAS .05 2.15 2.175 2.2 2.25 2.28 2.3 2.3443 2.3996 2.4905 2.5627 2.6706 2.8498 3.2074 3.5644 4.2782 4.8134 5.7052 6.4186 7.4887 17.48 27.48 200. 400. 600. 10000. 30000.; H= PROG 0. 159.2 294.4 501.3 795.8 1154. 1795. 2862. 4383. 6044. 8122. 10590. 13610. 17220. 21170. 26750. 33760. 43800. 52440. 66000. 99470. 120960. 141210. 169600. 212170. 283130. 339890. 425040. 566950. 850760. 1134600. 1702300. 2128000. 2837700. 3405100. 4256700. 12215578. 20174457. 155800000. 311600000. 467400000. 7.32E9 21.E9 ; * TITRE ' COURBE H B A/M TESLAS ****** '; * BHEVO=EVOL MANU 'H' H 'B' B ; * DESS BHEVO; * RECTIF POUR COHERENCE UNITES H= H / RAP ; H_1= ENLEVER H 1 ;B_1= ENLEVER B 1 ; BOBO= TEXTE ' MU F(H) POT SCAL ' ; TITRE BOBO ; SINON ; TITRE BOBO ; FINSI ; SAUTER 3 LIGNES ; MESS BOBO ; SAUTER 3 LIGNES ; FINPROC REVOL ; * **** POT_SCAL derniere modif 10/02/92 ********************************************************************* * procedure de mise en place des elements d un calcul 3d * * magnetostatique potentiel scalaire reduit et total * * DPHI zone de potentiel reduit * * DPsI zone de potentiel total ***** desciption du domaine dphi ( pas de super pour le moment)**** * TABGEO.'DPHI' = geometrie DPHI * * TABGEO.'SEPPHI'= surface de separation appartient a DPHI * attention pour le moment on doit verifier l orientation de la * * normale a sepphi ( exterieure ) en attendant extension de flux * * TABGEO.'B_ANTI' = partie de sepphi appartenant a la limite * * TABGEO.'MUAIR' = mu0 * * d antisymetrie pour B * *******description du domaine dpsi ********************************** * on donne la descprition du fer puis une table tdolin de tables * * contenant chacune la descrition d un sous domaine * * TABGEO.'FER' =zone du fer appartient a DPSI * TABGEO.'MUFER' = mufer ( mu0 * murelatif) valeur de depart * * TABGEO.'TDOLIN' * TDOLIN.I = TABLE STN * * STN.'GEO' = maillage du sous domaine * * STN.'MU' = permeabilite * eventuellement * * STN.'BLOCAGE'= type maillage * * STN.'IMPOSE' = type chpoint * * STN.'MAITRES' = type maillage * * * * TABGEO.'SEPPSI'= surface de separation appartient a DPSI * * TABGEO.'ORIG' = point ou on impose PHI = PSI * * TABGEO.'BLOQUE' = condition limite generale (sauf super elements) * * TABGEO.'BIOT' = table contenant le champ de la bobine sur DPHI * * TABGEO.'MAILSEG' = elements d aretes de sep_phi (optionnel) * * la routine l etablira si il n existe pas * * TABGEO.'LISMO1' = listmot de elements de volumes utilises * * TABGEO.'LISMO2' = listmot de elements de surface utilises * * SOLIN si present on calcule un la solution lineaire * * si absent le premier pas sera fait dans MAG_NLIN * * jm baze aout 90 * ********************************************************************* MU0 = TABGEO.'MUAIR' ; SI ( EXISTE TABGEO 'DPHI' ) ; DPHI = TABGEO.'DPHI' ; SEP_PHI= TABGEO.'SEPPHI'; B_ANTI = TABGEO.'B_ANTI'; SEP_PSI= TABGEO.'SEPPSI'; ORIG = TABGEO.'ORIG' ; LIMO1= TABGEO.'LISMO1'; LIMO2= TABGEO.'LISMO2'; * reduction de biot et savart sur sep_phi TABHS= TABLE ; sauter 5 lignes ; MMM= TEXTE ' THERMIQUE ISOTROPE '; MESS ' COORD POINT ORIGINE INTEGRATION DE V '; LIST ORIG ; sauter 5 lignes ; NBLD= DIMENSION LIMO2 ; FLHS = FL_HS SEP_PHI1 TABHS TTTT OBJPHI ; SI ( EGA NBLD 2 ) ; FLHS2 = FL_HS SEP_PHI2 TABHS TTTT OBJPHI; FLHS = FLHS + FLHS2 ; FINSI ; * TEMPS PLACE ; FLHS= FLHS * MU0 ; sauter 5 lignes ; * integration sur la surface de separation de l equation de * de continuite tangentielle SI ( 'EXISTE' TABGEO 'MAILSEG' ) ; MAILSEG= TABGEO.'MAILSEG'; SINON ; * decomposition de la surface de separation en element d aretes MESS ' CALCUL DES ELEMENTS ARETES DE LA SEPARATION '; imena = 50 ; TABGEO.'MAILSEG'= MAILSEG ; FINSI; * TEMPS PLACE ; METHOD = 1 ; SAUTER 4 LIGNES ; IMENA= 3 ; SI (EGA METHOD 1) ; MESS ' CALCUL PAR MINIMISATION '; SINON; MESS ' CALCUL PAR INTEGRATION '; LLLL = ARBRE_IN SEP_PHI TABHS ORIG ; FINSI ; *****************!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1 TABGEO.'LLLL'=LLLL ; * RELT FDEPI= SAUT_POT SEP_RED SEP_PSI LRED ORIG ; ***************** RIGCON = RIGCON ET RELT ;RHS = FLHS ET FDEPI ; ***************** * LIST FSAUT ; sauter 5 lignes ; * TEMPS PLACE ; SINON ; SAUTER 5 LIGNES ; SAUTER 5 LIGNES ; FINSI ; ** MUFER = TABGEO.'MUFER' ; * boucle sur les domaines lineaires non contenus dans dphi SI ('EXISTE' TABGEO 'DOLIN' ); TDOLIN = TABGEO.'DOLIN' ; III = INDEX TDOLIN ; IDOM = 0 ; REPETER BOUCDOM ; IDOM = IDOM + 1 ; SI ( 'NON' ( 'EXISTE' III IDOM )) ; QUITTER BOUCDOM ;FINSI ; STN = TDOLIN.IDOM ; LIST STN ; MUI = STN.'MU' ; * SI ( EXISTE STN 'BLOQUE' ) ; ENC1 = BLOQUER (STN.'BLOQUE') 'T'; RIGO = RIGO ET ENC1 ; FINSI ; SI ( EXISTE STN 'IMPOSE' ) ; FINSI ; SI ( EXISTE STN 'MAITRES'); ****************************************************************** * construction eventuelle du super element ****************************************************************** * attention ici si il y a une charge OU UN IMPOSE SUP1 = SUPER 'RIGIDITE' RIGO ( STN.'MAITRES' ) ; SINON ; RIGCON = RIGCON ET RIGO ; FINSI ; FIN BOUCDOM ; * fin de la boucle sur les table de domaines lineaires de dpsi FINSI ; * SI( EXISTE TABGEO 'IMPOSE') ; MESS ' CONDITION GENERALE IMPOSEE ' ; RIMG = BLOQUER MAIG 'T' ; FPOTG = DEPIMP RIMG CHIMG ; RIGCON = RIGCON ET RIMG ;RHS = RHS ET FPOTG ; FINSI ; * SI (EXISTE TABGEO 'BLOQUE') ; MESS ' CONDITION GENERALE BLOQUEE ' ; ENCG = BLOQUER (TABGEO.'BLOQUE') 'T'; RIGCON= RIGCON ET ENCG ; TABGEO.'BLOCAGE' = ENCG ; FINSI ; * * SI ( EXISTE SOLIN ) ; RIGT = RIGCON ET RIGFER ; TABGEO.'RHS'= RHS ; TABGEO.'RIGCON'= RIGCON ; TABGEO.'RIGFER'= RIGFER ; SOL0= RESOU RIGT RHS ; TABGEO.'POTENTIEL'=(ENLEVER SOL0 LX) ; FINSI ; * FINPROC ; **** A_HOMO derniere modif 10/02/92 DEBPROC A_HOMO AKN*LISTREEL RHARM*FLOTTANT RCIRC*FLOTTANT NHARM*ENTIER; SAUTER 2 LIGNES ; OPTION ELEM SEG2 ; SAUTER 2 LIGNES ; SAUTER 2 LIGNES ; K= 0 ; REPETER BLOCC NHARM ; AKM= COK / ( RHARM ** (K - 1)) ; CQUA= COK / C2R ; CDIP = COK / BDIP; MESS K AKM CQUA ; FIN BLOCC ; SAUTER 2 LIGNES ; * ON CONSTRUIT UN CHPO SUR LE RAYON ANALYSE CE QUI SERA PRATIQUE POUR * TRACER DES EVOLUTIONS ; OP = RCIRC 0.;OO= 0. 0. ; LSUP= D 10 OO OP; NN= 11 ; DX =2.; X= -2. ; IP=0 ; REPETER BLOCA 11 ; IP= IP + 1 ; X =X + DX ; Z = X / RHARM ; B = 0 ; G = G0 ; BQUAD = C2R * Z ; K= 0 ; REPETER BLOCB NHARM ; SI ( K EGA 1 ) ; B = B + COK ;SINON ;TERM= COK * ( Z ** (K - 1 )); B= B + TERM ; SI ( (K >EG 3 ) ET ( (ABS X ) >EG 1.E-4 ) ); G = G + (( TERM / X ) * (K - 1)) ; FINSI ; FINSI ; FIN BLOCB ; * SI (( ABS X ) >EG 1.E-4 ) ; HQUAD= (B - BDIP - BQUAD ) /C2R ; GQUAD= (G - G0 ) / G0 ; HDIP = (B - BDIP) / BDIP ; * FINSI; SI ( IP EGA 1 ) ; SINON ; FINSI ; FIN BLOCA ; SAUTER 2 LIGNES ; SAUTER 2 LIGNES ; MESS ' ANALYSE CONFORME A HARMBIS '; SAUTER 2 LIGNES ; RECAP = CX ET TUTU ; LIST RECAP ; FINPROC ; * **** INT_COMP derniere modif janvier /92 ************************************************************************ * interpolation d une composante sur un maillage * * TYEL TYPE D ELEMENTS * * entree cccc chpoint original a 1 composante de support geop * * sortie chpo de support geof * ************************************************************************ SI ( NON ( EGA TYT 'TRI3')); FINSI ; OBS1 = AFFECT GEOP ( MODELE STANDARD ) TRI3 ; CEL1 = PRCH CCCC OBS1 'NOEUD' ; FINPROC CRES ; * **** IDE_ELE derniere modif fevrier/92 DEBPROC IDE_ELE ; ********************************************************************** * IDENTIFICATION DU TYPE D ELEMENTS UTILISES ********************************************************************** SI ( EGA TIDIM 2 ) ; SI (( EGA TVAL 'QUA8') 'OU' (EGA TVAL 'TRI6')) ; TYEL = TEXTE 'QUA8' 'TRI6' ; SINON ; TYEL = TEXTE 'QUA4' 'TRI3' ; FINSI ; SINON ; SI (( EGA TVAL 'CU20') 'OU' (EGA TVAL 'PRI16')) ; TYEL = TEXTE 'CU20' 'PR15' 'TET10'; SINON ; TYEL = TEXTE 'CUB8' 'PRI6' 'TET4'; FINSI ; FINSI ; FINPROC TYEL ; **** MUAXI2 MODIFIE FEVRIER 92 DEBPROC MUAXI2 GEO*MAILLAGE MU*FLOTTANT IDI*ENTIER ; *********************************************************************** * SORTIE De CONDUCTIBILITE = 1/(MU*R) EN AXISYMETRIQUE * * IDI = 1 sortie chamelem 'caracteristique au noeuds DEFAUT* * IDI = 2 sortie chpo aux noeuds scalaire * * IDI = 3 sortie chamelem au CDG * * MODIFIEE FEVRIER 92 POUR P2 * *********************************************************************** IMET = 2 ; SI ( EGA IMET 1 ) ; * estimation de mu au noeuds en trichant sur l axe AXE= GEO POINTS DROITE (0. 0) (0. 10.) .05 ; MATT= CHAMELEM GEO MUPO 'CARACTERISTIQUE' ; FINSI ; SI ( EGA IMET 2 ) ; * estimation de mu aux cdg sans tricher sur l axe * chamelem des rayons aux cdg * chamelem des cdg reportes aux noeuds SI ( EGA IDI 1 ) ; MATT= CHAMELEM GEO CHPMUGEO 'CARACTERISTIQUE' ; * MESS ' 1/MU CHAMP ELEM TYPE CARACTERISTIQUE K '; FINSI ; SI (EGA IDI 2 ) ; MATT = RGEO ; FINSI ; SI (EGA IDI 3 ) ; MATT = CE_RPOA ; FINSI ; FINSI ; FINPROC MATT ; **** REMONT derniere modif 14 08 91 DEBPROC REMONT ETAB*TABLE POT*CHPOINT GEON*MAILLAGE FE/CHPOINT GEOMAIT*MAILLAGE ; * POT SOLUTION * GEON MAILLAGE AUTRE QUE LE SUPER * GEOMAIT POINTS MAITRES SI ( EXISTE ETAB 'SUPER' ) ; SUPP= ETAB.'SUPER' ; DSUP = SUPER 'DEPLA' SUPP POT ; * ATTENTION SI IL Y AVAIT DES CHARGES DANS LE SUPER RIGS = EXTRAI SUPP 'RIGT' ; SI ( EXISTE FE ) ; SOLSUP = RESOU RIGS ( DSUP ET FE ) ; SINON ; SOLSUP = RESOU RIGS DSUP ; FINSI ; SINON ; ******************************************************** * autre methode eventuelle ******************************************************** * TAIR2 = REDU SOL1 CAIR1 ; * NN= CAIR1 NBNO ;CAIR1 = CHAN CAIR1 POI1 ; * IP = 0 ; * REPETER BBBB NN ; * IP = IP + 1 ;PP = CAIR1 POINT IP ; * CLIM = BLOQUER 'T' PP ; FP = DEPIMP CLIM ( EXTR TAIR2 'T' PP ) ; * SI ( EGA IP 1 ); CLIMT = CLIM ;FPT = FP ; * SINON ; CLIMT = CLIMT ET CLIM ; FPT = FPT ET FP ;FINSI ; * FIN BBBB ; * TIAIR2 = RESOU (RIGA ET CLIMT) ( FPT ET FE ) ; FINSI ; * SOLT= ( POT + SOLSU ) ; FINPROC SOLT ; **** F_S2PI derniere modif 30/3/92 K = -1 ; SI (( V1 < V2 ) ET ( NUM NEG 1 )) ; FINSI ; 1P = CHARM POINT INITIAL ;2P = CHARM POINT FINAL ; IP = 0 ; REPETER BOUC (NN - 1 ); IP = IP + 1 ; SI ( EGA IP 1 ) ; SINON ; FINSI ; PDOU = CHARM POINT FINAL ; SI ( EGA IP 1 ) ; SINON ; FINSI ; ELIM .0001 CHARM2 MAI2 ; CONFONDRE ( CHARM POINT FINAL) ( CHARM2 POINT INITIAL ) ; CHARM = CHARM ET CHARM2 ; SCIRC = SCIRC + SOL2 - VALDOU ; K = K * -1 ; FIN BOUC ; * SUPO = CHARM ; * TITRE ' SOLUTION SUR 2PI '; * EVV1 = EVOL ROUG CHPO SCIRC 'T' CHARM ; * titre ' evo '( dime evv1 ) 'supp ' ( supo nbno ) ; * trac supo ; * dess evv1 ; FINPROC SCIRC SUPO ; **** DDFOUR derniere modif 30/3/92 DEBPROC DDFOUR GEO*MAILLAGE CHARM*MAILLAGE NHARM*ENTIER SOL*CHPOINT RHARM*FLOTTANT ORIG/POINT LIS*LOGIQUE ; ********************************************************************* * ANALYSE HARMONIQUE DU POTENTIEL VECTEUR * GEO MAILLAGE SUPPORT SOLUTION GENERALE * * CHARM ARC DE CERCLE SUR LEQUEL ON A LE POTENTIEL * * NHARM NOMBRE D HARMONIQUES A CALCULER * * SOL SOLUTION EN POTENTIEL * * RHARM RAYON DE NORMALISATION * * ORIG ORIGINE CERCLE D ANALYSE * LIS LOGIQUE FAUX SI PAS DE LISSAGE POLYNOMIAL * ********************************************************************* 1P = CHARM POINT INITIAL ;2P= CHARM POINT FINAL ; SI ( EXISTE ORIG ) ; SINON ; FINSI ; PT = 2P PROJETER (( Y1 * -1. ) X1 ) DROITE ORIG 1P ; SI ( (X1 + X2 ) < 1.E-3 ) ; NUM = 2 ; SINON ; NUM = ( ENTI ( 360.1 / ANG )) ; MESS 'SOLUTION DONNEE SUR ' ANG ' DEGRES ' ; FINSI ; SI ( NON ( LIS )) ; SINON ; * lissage polynomial CHLI = LISS GEO CHARM SOL 2 PLAN ; FINSI ; RRAP = RHARM / RCIRC ; * QTOT= EXTR EQTT 'ORDO' ; * LIST QTOT ; * NI1= (DIME AAAA ) - 1 ; * IVAL = VALE ELEM ; * OPTION ELEM SEG2 ;I1 = 0. 0. ; I2 = 360. 0. ; * RTOT = DROI NI1 I1 I2 ; OBA_RMA= AFFECTE RTOT (MODELE STANDARD) COQ2; * MESS ' PERIODE ' PERIOD ; N=0; MESS ' ANALYSE CONFORME A POISSON HARMON '; MESS ' HARMONIQUE POTENTIEL CHAMP '; MESS ' NOMBRE DE SEGMENTS DE DR ' NI1 ; * CQTT = MANU CHPO RTOT 1 'POT' QTOT ; REPETER BLOCIT NHARM ; N= N + 1 ; RAN= RRAP ** N ; ANGLEN= CHPA * N ; CNX= COS ANGLEN ; SNX= SIN ANGLEN ; EVREL= CQTT * CNX ;EVIMA= CQTT * SNX ; CEVREL = PRCH EVREL OBA_RMA 'RIGIDITE' ; CEVIMA = PRCH EVIMA OBA_RMA 'RIGIDITE' ; CK= (( AK * AK ) + ( BK * BK ) ) ** .5 ; FF= ( FLOT N) / RHARM ; AKK= AK * FF ; BKK= BK * FF ; CKK= CK * FF ; SAUTER 1 LIGNE ; * MESS N AK BK CK AKK BKK CKK ; MESS N AK BK CK ; MESS N AKK BKK CKK ; FIN BLOCIT ; * OPTION ELEM IVAL ; FINPROC AKN ANGVEC ; ***** **** @DEFMAT DEBPROC @DEFMAT TAB1*TABLE ; *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 ************************************************************************ * on initialise des evol nuls CHP_TM1 = TAB1.>CHP_TM1 ; TAB1.TETMAT = TABLE ; TAB1.MODL_MAT = TABLE ; TAB1.MAT_MAT = TABLE ; I1 = 0 ; REPETER BOMA11 ; I1 = I1 + 1 ; *>1 SI ( EXISTE (TAB1.ZONE_MAT) I1 ) ; NOM_MAT1 = TAB1.NOM_MAT.I1 ; TAB1.MODL_MAT. I1 = MO1 ; TITRE NOM_MAT1 ' YOUN MODULUS ' ; TAB1.TETMAT.MO1 = TABLE ; *>>2*************** orthotropie SI ( EGA TAB1.TEXTMECA.I1 ' MECANIQUE ELASTIQUE ORTHOTROPE') ; CHAYGI= CHAINE TAB1 . TEXTMECA .(I1 + 100) ; * P1 = TAB1.DIRECT1 ; * P2 = TAB1.DIRECT2 ; * CHAYGI = 'DIRECTION P1 P2 ' ; * CHADIR = 'DIRECTION TAB1.DIRECT1 TAB1.DIRECT2' ; SI ( NON ( EXISTE TAB1 'MOMATR')) ; TAB1.'MOMATR' = TABLE ; FINSI ; TAB1.'MOMATR'.MO1 = TAB1.TEXTMECA.(I1 + 100) ; * CHAYG1 = CHAINE CHADIR ' YG1 ' ; * CHAYG2 = CHAINE CHADIR ' YG2 ' ; * CHAYG3 = CHAINE CHADIR ' YG3 ' ; * CHAG12 = CHAINE CHADIR ' G12 ' ; * CHAG23 = CHAINE CHADIR ' G23 ' ; * CHAG13 = CHAINE CHADIR ' G13 ' ; * CHANU12 = CHAINE CHADIR ' NU12 ' ; * CHANU23 = CHAINE CHADIR ' NU23 ' ; * CHANU13 = CHAINE CHADIR ' NU13 ' ; * CHAALP12 = CHAINE CHADIR ' ALP1 ' ; * CHAALP23 = CHAINE CHADIR ' ALP2 ' ; * CHAALP13 = CHAINE CHADIR ' ALP3 ' ; *>>3*************** orthotropie 333333333333333DDDDDDDDDD SI (EGA (VALEUR DIMENSION) 3 ) ; TAB1.TETMAT.MO1.YG1 = @EVMAT TAB1.NOM_MAT.I1 'YG1' TAB1 ; TAB1.TETMAT.MO1.YG2 = @EVMAT TAB1.NOM_MAT.I1 'YG2' TAB1 ; TAB1.TETMAT.MO1.YG3 = @EVMAT TAB1.NOM_MAT.I1 'YG3' TAB1 ; EVMA1 = EVMA1 ET TAB1.TETMAT.MO1.YG1 ET TAB1.TETMAT.MO1.YG2 ET TAB1.TETMAT.MO1.YG3 ; TITRE NOM_MAT1 ' POISSON COEFFICIENT ' ; TAB1.TETMAT.MO1.NU12 = @EVMAT TAB1.NOM_MAT.I1 'NU12' TAB1 ; TAB1.TETMAT.MO1.NU23 = @EVMAT TAB1.NOM_MAT.I1 'NU23' TAB1 ; TAB1.TETMAT.MO1.NU13 = @EVMAT TAB1.NOM_MAT.I1 'NU13' TAB1 ; EVMA2 = EVMA2 ET TAB1.TETMAT.MO1.NU12 ET TAB1.TETMAT.MO1.NU23 ET TAB1.TETMAT.MO1.NU13 ; TITRE NOM_MAT1 ' THERMAL EXPANSION ' ; TAB1.TETMAT.MO1.ALP1 = @EVMAT TAB1.NOM_MAT.I1 'ALP1' TAB1 ; TAB1.TETMAT.MO1.ALP2 = @EVMAT TAB1.NOM_MAT.I1 'ALP2' TAB1 ; TAB1.TETMAT.MO1.ALP3 = @EVMAT TAB1.NOM_MAT.I1 'ALP3' TAB1 ; EVMA3 = EVMA3 ET TAB1.TETMAT.MO1.ALP1 ET TAB1.TETMAT.MO1.ALP2 ET TAB1.TETMAT.MO1.ALP3; TAB1.TETMAT.MO1.G12 = @EVMAT TAB1.NOM_MAT.I1 'G12' TAB1 ; TAB1.TETMAT.MO1.G23 = @EVMAT TAB1.NOM_MAT.I1 'G23' TAB1 ; TAB1.TETMAT.MO1.G13 = @EVMAT TAB1.NOM_MAT.I1 'G13' TAB1 ; * *** DIRECTION 1 * * N_1 = CHANGER CHAM N_1 MO1 'RIGIDITE' ; Y_1 = CHANGER CHAM Y_1 MO1 'RIGIDITE' ; G_1 = CHANGER CHAM G_1 MO1 'RIGIDITE' ; A_1 = CHANGER CHAM A_1 MO1 'RIGIDITE' ; * *** DIRECTION 2 * * N_2 = CHANGER CHAM N_2 MO1 'RIGIDITE' ; Y_2 = CHANGER CHAM Y_2 MO1 'RIGIDITE' ; G_2 = CHANGER CHAM G_2 MO1 'RIGIDITE' ; A_2 = CHANGER CHAM A_2 MO1 'RIGIDITE' ; * *** DIRECTION 3 * * N_3 = CHANGER CHAM N_3 MO1 'RIGIDITE' ; Y_3 = CHANGER CHAM Y_3 MO1 'RIGIDITE' ; G_3 = CHANGER CHAM G_3 MO1 'RIGIDITE' ; A_3 = CHANGER CHAM A_3 MO1 'RIGIDITE' ; * SINON ; *>>3*************** orthotropie 222222222222222 DDDDDDDDDD TAB1.TETMAT.MO1.YG1 = @EVMAT TAB1.NOM_MAT.I1 'YG1' TAB1 ; TAB1.TETMAT.MO1.YG2 = @EVMAT TAB1.NOM_MAT.I1 'YG2' TAB1 ; EVMA1 = EVMA1 ET TAB1.TETMAT.MO1.YG1 ET TAB1.TETMAT.MO1.YG2 ; TITRE NOM_MAT1 ' POISSON COEFFICIENT ' ; TAB1.TETMAT.MO1.NU12 = @EVMAT TAB1.NOM_MAT.I1 'NU12' TAB1 ; EVMA2 = EVMA2 ET TAB1.TETMAT.MO1.NU12 ; TITRE NOM_MAT1 ' THERMAL EXPANSION ' ; TAB1.TETMAT.MO1.ALP1 = @EVMAT TAB1.NOM_MAT.I1 'ALP1' TAB1 ; TAB1.TETMAT.MO1.ALP2 = @EVMAT TAB1.NOM_MAT.I1 'ALP2' TAB1 ; EVMA3 = EVMA3 ET TAB1.TETMAT.MO1.ALP1 ET TAB1.TETMAT.MO1.ALP2 ; TAB1.TETMAT.MO1.G12 = @EVMAT TAB1.NOM_MAT.I1 'G12' TAB1 ; * *** DIRECTION 1 * * N_1 = CHANGER CHAM N_1 MO1 'RIGIDITE' ; Y_1 = CHANGER CHAM Y_1 MO1 'RIGIDITE' ; G_1 = CHANGER CHAM G_1 MO1 'RIGIDITE' ; A_1 = CHANGER CHAM A_1 MO1 'RIGIDITE' ; * *** DIRECTION 2 * Y_2 = CHANGER CHAM Y_2 MO1 'RIGIDITE' ; A_2 = CHANGER CHAM A_2 MO1 'RIGIDITE' ; FINSI ; ** MA1 = MATE MO1 (TEXT CHAYG1 ' Y_1 ' ) ; ** MA1 = MA1 ET (MATE MO1 (TEXT CHAYG2 ' Y_2 ')) ; ** MA1 = MA1 ET (MATE MO1 (TEXT CHAYG3 ' Y_3 ')) ; ** MA1 = MA1 ET (MATE MO1 (TEXT CHAYG12 ' G_1' )) ; ** MA1 = MA1 ET (MATE MO1 (TEXT CHAYG23 ' G_2' )) ; ** MA1 = MA1 ET (MATE MO1 (TEXT CHAYG13 ' G_3' )) ; ** MA1 = MA1 ET (MATE MO1 (TEXT CHAYNU12 ' N_1' )) ; ** MA1 = MA1 ET (MATE MO1 (TEXT CHAYNU23 ' N_2' )) ; ** MA1 = MA1 ET (MATE MO1 (TEXT CHAYNU13 ' N_3' )) ; ; MA1 = MA1 ET MA2 ET MA3 ET MA4 ; *>>2 ************* Isotropie SINON ; TITRE NOM_MAT1 ' YOUNG MODULUS ' ; TAB1.TETMAT.MO1.YOUN = @EVMAT TAB1.NOM_MAT.I1 'YOUN' TAB1 ; EVMA1 = EVMA1 ET TAB1.TETMAT.MO1.YOUN ; TITRE NOM_MAT1 ' POISSON COEFFICIENT ' ; TAB1.TETMAT.MO1.NU = @EVMAT TAB1.NOM_MAT.I1 'NU' TAB1; EVMA2 = EVMA2 ET TAB1.TETMAT.MO1.NU ; TITRE NOM_MAT1 ' THERMAL EXPANSION ' ; TAB1.TETMAT.MO1.ALPH = @EVMAT TAB1.NOM_MAT.I1 'ALPH' TAB1; EVMA3 = EVMA3 ET TAB1.TETMAT.MO1.ALPH ; NU_1 = CHANGER CHAM NU_1 MO1 'RIGIDITE' ; Y_1 = CHANGER CHAM Y_1 MO1 'RIGIDITE' ; AL_1 = CHANGER CHAM AL_1 MO1 'RIGIDITE' ; TEX1 = TEXTE ' YOUN Y_1 NU NU_1 ALPH AL_1 ' ; FINSI ; *>>2 SI ( IMOTM1 EGA 5 ) ; TITRE NOM_MAT1 ' YIELD STRESS ' ; TAB1.TETMAT.MO1.SIGY = @EVMAT TAB1.NOM_MAT.I1 'SIGY' TAB1 ; EVMA4 = EVMA4 ET TAB1.TETMAT.MO1.SIGY ; TEX1 = TEXTE TEX1 ' SIGY YM_1 ' ; TITRE NOM_MAT1 ' YIELD MODULUS' ; YM_1 = CHANGER CHAM YM_1 MO1 'RIGIDITE' ; TAB1.TETMAT.MO1.H = @EVMAT TAB1.NOM_MAT.I1 'H' TAB1 ; EVMA5 = EVMA5 ET TAB1.TETMAT.MO1.H ; H_1 = CHANGER CHAM H_1 MO1 'RIGIDITE' ; TEX1 = TEXTE TEX1 'H H_1 ' ; * TEMP IMPR PLACE ; * MENAGE ; @TRCPLAS TAB1 MO1 I1 ; * TEX5 TEX1 TEX2 TEX3 TEX4 ; FINSI; *>1 SINON ; QUITTER BOMA11 ; FINSI ; *>1 SI ( I1 EGA 1 ) ; MOD_1 = MO1 ; MAT_1 = MA1 ; SINON ; MOD_1 = MOD_1 ET MO1 ; MAT_1 = MAT_1 ET MA1 ; FINSI ; TAB1.MAT_MAT.I1 = MA1 ; FIN BOMA11 ; TAB1.MATTOT = MAT_1 ; TAB1.MODTOT = MOD_1 ; TAC8 = TABLE ; TAC8.1 = ' NOLI ' ; TAC8.3 = 'MARQ ETOI REGU' ; TAC8.4 = 'MARQ LOSA REGU' ; TAC8.5 = 'MARQ CARR REGU' ; TAC8.7 = 'MARQ TRIB REGU' ; TAC8.9 = 'MARQ ETOI REGU' ; TAC8.10 = 'MARQ CROI REGU' ; MO1 = TAB1.MODL_MAT.1 ; MA1 = TAB1.MAT_MAT.1 ; CHASIXX = MO1 HO11 * CHAEPXX ; CHAEEXX = MO1 HO11 * CHASIXX ; FINPROC ; * * * * * * * * DEBPROC DEFORAPH LIGN_1*MAILLAGE INSTEVOL*FLOTTANT MOD1*MMODEL TAB1*TABLE SM1/EVOLUTION EM1/EVOLUTION VAL1/FLOTTANT VAL2/FLOTTANT; * * !!! NON ENCORE OPERATIONNEL !!! * * test sur la dimension SI (EGA DIM1 2); MESS ' attention contraph ne tourne pas en 3D'; QUITTER CONTRAPH ; * malgre le probleme de PROI en 3D, qui n a pas ete regle * mais qu on accepte faute de mieux FINSI; SI (NON (EXISTE TAB1 RESUCONT)) ; MESS ' TAB1 NE CONTIENT PAS DE CONTRAINTES ' ; MESS ' SORTIE DE CONTRAPH ' ; QUITTER CONTRAPH ; FINSI ; * test sur la dimension de LIGN_1*MAILLAGE : a faire LCONFON = FAUX ; SI ( EGA N_1 N_2 ) ; LCONFON = VRAI ; FINSI ; SI (NON(EXISTE TAB1 TETMAT)) ; MESS ' TAB1 NE CONTIENT PAS DE TETMAT ' ; MESS ' SORTIE DE CONTRAPH ' ; QUITTER CONTRAPH ; FINSI ; SI (NON(EXISTE (TAB1.TETMAT) MOD1)) ; MESS ' SORTIE DE CONTRAPH ' ; QUITTER CONTRAPH ; FINSI ; SI (NON(EXISTE (TAB1.TETMAT.MOD1) SIGY)) ; MESS ' LE MATERIAU DEMANDE N EST PAS PLASTIQUE ' ; MESS ' SORTIE DE CONTRAPH ' ; QUITTER CONTRAPH ; FINSI ; TITR ' DEPOUILLEMENT LE LONG DE LA LIGNE ' ; * * --- Depouillement en deformation * DEPL1 = TAB1.RESUDEPL.INSTEVOL ; * --- METHODE 1 * evaluation de la deformation ELASTIQUE PAR ELAS * caract pris contant egal a sa moyenne sur l'intervalle de T considere * deduction de EPStherm * --- METHODE 2 * evaluation de la deformation du a la thermique * alpha pris contant egal a sa moyenne sur l'intervalle de T considere * deduction de EPS elas CHT1 = TAB1.CHPOTHETA . INSTEVOL - (TAB1.CHPOTHETA. (ID1 . 1)) ; CHT2 = (TAB1.CHPOTHETA. (ID1 . 1)) + (CHT1 / 2.) ; * evaluation de la limite elastique exprimee en epsilon * cette limite est egale a Re/E c'est a dire SIGY / YOUN en langage CASTEM * le tout dependant de la temperature du point considere CHYOUN2 = CHYOUN1 ** (-1) ; CHSIGY3 = CHSIGY2 ; LIMELAS1 = CHSIGY3 * CHYOUN3 ; SI LCONFON ; SI (EXISTE EM1 ) ; FINSI ; SINON ; SI (EXISTE EM1) ; FINSI ; FINSI ; SI (EGA DIM1 2) ; EPSETOT2 = ((2. ** .5 ) / 3.) * (( ((EXX1 - EYY1 ) ** 2) + 6 * ((GXY1 * 2. ) ** 2) ) ** .5); SINON ; TOTA3 = ((2. ** .5 ) / 3.) * ( ( ((EXX1 - EYY1 ) ** 2) + ((EXX1 - EZZ1 ) ** 2) + ((EYY1 - EZZ1 ) ** 2) + 6. * ( ((GXY1 / 2.) ** 2) + ((GXZ1 / 2.) ** 2) + ((GYZ1 / 2.)** 2) ) ) ** .5); ELAS1_3 = ((2. ** .5 ) / 3.) * ( ( ((EXX1 - EYY1 ) ** 2) + ((EXX1 - EZZ1 ) ** 2) + ((EYY1 - EZZ1 ) ** 2) + 6. * (( (GXY1 / 2.) ** 2) + ((GXZ1 / 2.)** 2) + ((GYZ1 / 2.)** 2)) ) ** .5); FINSI ; TAC1 = TABLE ; EVELL = EVEL1 ET EVEL2 ; DESS EVELL LEGE TAC1 ; TAC1 = TABLE ; EVETT = EVET1 ET EVET2 ; DESS EVETT LEGE TAC1 ; TITRE 'EPS_TOT' ; TITRE 'EPS_PLAS' ; TITRE 'EPS_THER' ; TITRE 'LIM_ELAS' ; TAD1 = TABLE ; EVEPS1 = EVTOT1 ET EVPLAS1 ET EVTHER1 ET EVLIEL1 ; DESS EVEPS1 LEGE MIMA TAD1 ; FINPROC ; **** @DEFO_EQ DEBPROC @DEFO_EQ EPSE1*MCHAML MOD1*MMODEL ; TERM1 = (EX1 - EY1 ) ** 2 ; TERM2 = (EY1 - EZ1 ) ** 2 ; TERM3 = (EZ1 - EX1 ) ** 2 ; TERM4 = 6. *( ((ABS (EG1/2.) ) ** 2.) + ((ABS (EG2/2.) ) ** 2.) + ((ABS (EG3/2.) ) ** 2.) ); EPS_ETOI = ((2. ** .5 )/3.) * ((TERM1 + TERM2 + TERM3 + TERM4 ) ** .5 ); * MIN1 = MINI EPS_ETOI ; * MAX1 = MAXI EPS_ETOI ; * RM 30/08/95 suppression du trace du champ * * SI (EGA MIN1 MAX1 1.E-6) ; * MESS ' epsilon equivalent constant egal a ' MAX1; * SINON ; * TITR1 = CHAIN 'mini maxi epsilon equivalent : 'MIN1 MAX1; * TITR TITR1 ; * TRAC EPS_ETOI MOD1 (EXTR MOD1 'MAIL'); * FINSI ; * FINPROC EPS_ETOI; **** @DEMATH1 DEBPROC @DEMATH1 TAB1*TABLE ; MESS ' '; NIVEAU = TAB1.'NIVEAU' ; * modification RMITTEAU le 6 juin 96 pour avoir les bonnes legendes *dans les traces * avec la version 96 SI (NIVEAU >EG 4) ; FINSI ; TACC1 = TABLE ; TACC1.TITRE = TABLE ; TAB1.DEF_MO = TABLE; IC1 = 0 ; SI ( EXISTE (TAB1.ZONE_MAT) 1 ) ; TITRE 'MATERIAL CONDUCTIVITY OR CAPACITY' ; TAB1.'MAILLAG1' = TAB1. ZONE_MAT.1 ; TAB1.'MAILLAGE' = TAB1. ZONE_MAT.1 ; SI ( EXISTE (TAB1.NOM_MAT) 1.1 ) ; SI ( NON ( EXISTE (TAB1.NOM_MAT) 1) ) ; FINSI ; TAB1.'EVOKX1' = @EVMAT (TAB1.NOM_MAT. 1.1) 'CONDUCTIVITE' TAB1 ; TAB1.'EVOKY1' = @EVMAT (TAB1.NOM_MAT. 1.2) 'CONDUCTIVITE' TAB1 ; TAB1.'EVOKZ1' = @EVMAT (TAB1.NOM_MAT. 1.3) 'CONDUCTIVITE' TAB1 ; TAB1.'CONDUCT1' = @EVMAT (TAB1.NOM_MAT. 1.1) 'CONDUCTIVITE' TIN TAB1; si (ega v1 2) ; EVMA1 = ( TAB1.'EVOKX1') ET ( TAB1.'EVOKY1') ; IC1 = IC1 + 1; TACC1.IC1 = 'MARQ CARR ' ; TACC1.TITRE.IC1 = TAB1.NOM_MAT.1.1 ; IC1 = IC1 + 1 ; TACC1.TITRE.IC1 = TAB1.NOM_MAT.1.2 ; sinon ; EVMA1 = ( TAB1.'EVOKX1') ET ( TAB1.'EVOKY1') ET TAB1.'EVOKZ1' ; IC1 = IC1 + 1; TACC1.IC1 = 'MARQ CARR ' ; TACC1.TITRE.IC1 = TAB1.NOM_MAT.1.1 ; IC1 = IC1 + 1 ; TACC1.TITRE.IC1 = TAB1.NOM_MAT.1.2 ; IC1 = IC1 + 1 ; TACC1.TITRE.IC1 = TAB1.NOM_MAT.1.3 ; finsi ; SINON ; TAB1.'EVOCON1' = @EVMAT (TAB1.NOM_MAT.1) 'CONDUCTIVITE' TAB1; TAB1.'CONDUCT1' = @EVMAT (TAB1.NOM_MAT.1) 'CONDUCTIVITE' TIN TAB1; TAB1.'EVOCOND' = @EVMAT (TAB1.NOM_MAT.1) 'CONDUCTIVITE' TAB1 ; EVMA1 = TAB1.'EVOCON1' ; IC1 = IC1 + 1 ; TACC1.TITRE.IC1 = TAB1.NOM_MAT.1; FINSI ; SI ( TAB1.TRANSITOIRE ) ; TAB1.'EVOCAPA' = @EVMAT (TAB1. NOM_MAT.1) 'CAPACITE' TAB1; EVCA1 = TAB1.'EVOCAPA' ; FINSI ; FINSI ; SI ( EXISTE (TAB1.ZONE_MAT) 2 ) ; TAB1.'MAILLAG2' = TAB1. ZONE_MAT.2 ; * TAB1.'EVOCON2' = @EVMAT (TAB1. NOM_MAT.2) 'CONDUCTIVITE' TAB1 ; * TAB1.'CONDUCT2' = @EVMAT (TAB1. NOM_MAT.2) 'CONDUCTIVITE' TIN TAB1 ; * EVMA1 = EVMA1 ET ( TAB1.'EVOCON2') ; * IC1 = IC1 + 1 ; * TACC1.IC1 = ET 'MARQ CARR TITRE ' TAB1.NOM_MAT.2; * TAB1.DEF_MO.2 = MODE TAB1.ZONE_MAT.2 'THERMIQUE' 'ISOTROPE' ; *> js 050296 SI ( EXISTE (TAB1.NOM_MAT) 2.1 ) ; SI ( NON ( EXISTE (TAB1.NOM_MAT) 2) ) ; FINSI ; TAB1.'EVOKX2' = @EVMAT (TAB1.NOM_MAT. 2.1) 'CONDUCTIVITE' TAB1 ; TAB1.'EVOKY2' = @EVMAT (TAB1.NOM_MAT. 2.2) 'CONDUCTIVITE' TAB1 ; TAB1.'EVOKZ2' = @EVMAT (TAB1.NOM_MAT. 2.3) 'CONDUCTIVITE' TAB1 ; TAB1.'CONDUCT2' =@EVMAT (TAB1.NOM_MAT. 2.1) 'CONDUCTIVITE' TIN TAB1; EVMA1 = EVMA1 ET ( TAB1.'EVOKX2') ET ( TAB1.'EVOKY2'); IC1 = IC1 + 1; TACC1.IC1 = 'MARQ CROI ' ; TACC1.TITRE.IC1 = (TAB1.NOM_MAT.2.1); * MESS TACC1.IC1 ; IC1 = IC1 + 1 ; TACC1.TITRE.IC1 = (TAB1.NOM_MAT.2.2); * MESS TACC1.IC1 ; SINON ; TAB1.'EVOCON2' = @EVMAT (TAB1.NOM_MAT.2) 'CONDUCTIVITE' TAB1; TAB1.'CONDUCT2' = @EVMAT (TAB1.NOM_MAT.2) 'CONDUCTIVITE' TIN TAB1; TAB1.'EVOCON2' = @EVMAT (TAB1.NOM_MAT.2) 'CONDUCTIVITE' TAB1 ; EVMA1 = EVMA1 ET TAB1.'EVOCON2' ; IC1 = IC1 + 1 ; TACC1.IC1 = 'MARQ TRIB ' ; TACC1.TITRE.IC1 = (TAB1.NOM_MAT.2); * MESS TACC1.IC1 ; FINSI ; *> SI ( TAB1.TRANSITOIRE ) ; TAB1.'EVOCAP2' = @EVMAT (TAB1. NOM_MAT.2) 'CAPACITE' TAB1 ; EVCA1 = EVCA1 ET ( TAB1.'EVOCAP2') ; FINSI ; FINSI ; SI ( EXISTE (TAB1.ZONE_MAT) 3 ) ; TAB1.'MAILLAG3' = TAB1. ZONE_MAT.3 ; TAB1.'EVOCON3' = @EVMAT (TAB1. NOM_MAT.3) 'CONDUCTIVITE' TAB1 ; TAB1.'CONDUCT3' = @EVMAT (TAB1. NOM_MAT.3) 'CONDUCTIVITE' TIN TAB1 ; EVMA1 = EVMA1 ET ( TAB1.'EVOCON3') ; IC1 = IC1 + 1 ; TACC1.IC1 = 'MARQ ETOI ' ; TACC1.TITRE.IC1=TAB1.NOM_MAT.3; SI ( TAB1.TRANSITOIRE ) ; TAB1.'EVOCAP3' = @EVMAT (TAB1. NOM_MAT.3) 'CAPACITE' TAB1 ; EVCA1 = EVCA1 ET ( TAB1.'EVOCAP3') ; FINSI ; FINSI ; SI ( EXISTE (TAB1.ZONE_MAT) 4 ) ; TAB1.'MAILLAG4' = TAB1. ZONE_MAT.4 ; TAB1.'EVOCON4' = @EVMAT (TAB1. NOM_MAT.4) 'CONDUCTIVITE' TAB1 ; TAB1.'CONDUCT4' = @EVMAT (TAB1. NOM_MAT.4) 'CONDUCTIVITE' TIN TAB1 ; EVMA1 = EVMA1 ET ( TAB1.'EVOCON4') ; IC1 = IC1 + 1 ; TACC1.IC1 = 'MARQ LOSA ' ; TACC1.TITRE.IC1 = TAB1.NOM_MAT.4 ; SI ( TAB1.TRANSITOIRE ) ; TAB1.'EVOCAP4' = @EVMAT (TAB1. NOM_MAT.4) 'CAPACITE' TAB1 ; EVCA1 = EVCA1 ET ( TAB1.'EVOCAP4') ; FINSI ; FINSI ; SI (NIVEAU >EG 4) ; FINSI ; FINPROC EVMA1 EVCA1 TACC1 ; **** @DEMATH2 DEBPROC @DEMATH2 TAB1*TABLE ; TAB1.TABCON = TABLE ; IPP1 = 0 ; REPETER BOUCM7 ; IPP1 = IPP1 + 1 ; SI ( EXISTE (TAB1.ZONE_MAT) IPP1 ) ; * MO_1 = MODE TAB1.ZONE_MAT.IPP1 'THERMIQUE' 'ISOTROPE'; MO_1 = TAB1.DEF_MO.IPP1 ; TAB1.TABCON.MO_1 =@EVMAT (TAB1.NOM_MAT.IPP1) 'CONDUCTIVITE' TAB1; SINON ; QUITTER BOUCM7 ; FINSI ; FIN BOUCM7 ; FINPROC EVMA1 EVCA1 TACC1 ; DEBPROC DEPOMIMA TAB1*TABLE ; MOD_1 = TAB1.MODTOT ; MAT_1 = TAB1.MATTOT ; SI (EXISTE TAB1 L_ADEPOU ) ; L_1 = TAB1.L_ADEPOU ; FINSI ; SI ( NON (EXISTE TAB1 MO_ADEPOU )) ; MOTOT1 = MOD_1 ; SINON ; MOTOT1 = TAB1.MO_ADEPOU ; FINSI ; *SI ( NON (EXISTE TAB1 NMAIL_ADEPOU )) ; * N_MAIL = 'MAIL TOT' ; *SINON ; * N_MAIL = TAB1.NMAIL_ADEPOU ; *FINSI ; I1 = 0 ; I1 = I1 + 1 ; SIRESU1 = TAB1.RESUCONT.XIT1 ET VMI1 ; SIRESUA = TAB1.RESUVARI.XIT1 ET VMI1 ; I2 = 0 ; MESS 'TIME' XIT1 ; SAUT LIGNE ; SAUT LIGNE ; I2 = I2 + 1 ; MOCOMP = 'SCAL' ; FINSI ; FIN BDEPO2 ; SI (EXISTE TAB1 L_ADEPOU ) ; DEPOULI L_1 'CONTRAINTES' MOD_1 TAB1.RESUCONT.XIT1 GLOBAL MASSIF ; FINSI ; FIN BDEPO1 ; I3 = 0 ; I3 = I3 + 1 ; DEPL_1 = TAB1.RESUDEPL.XIT1 ; SI_1 = TAB1.RESUCONT.XIT1 ; I4 = 0 ; MESS 'TIME' XIT1 ; SAUT LIGNE ; SAUT LIGNE ; I4 = I4 + 1 ; EPS_2 = TAB1.RESUDEFI.XIT1 + (EPSCHL MOD_1 SI_1 (TAB1.CHPOTHETA. 0.) (TAB1.CHPOTHETA.XIT1) TAB1 ) ; SINON ; FINSI ; FIN BDEPO4 ; SI (EXISTE TAB1 L_ADEPOU ) ; DEPOULI L_1 'DEFORMATIONS' MOD_1 EPS_0 GLOBAL MASSIF ; FINSI ; FIN BDEPO3 ; SAUT PAGE ; FINPROC ; ***************************************************************** * * * Procedure DEPOULI : trace des contraintes ou des deformations * * le long d'un ligne quelconque * * * ***************************************************************** 'DEBPROC' FRENETT LIGN_1*MAILLAGE ; SI( V1 EGA 2 ) ; CHT CHN CHB = FRENET LIGN_1 'TRACE' ; CHPP = CHT ET CHN ; SINON ; CHT CHN CHB = FRENET LIGN_1 'TRACE' (0. 0. 1000.); CHPP = CHT ET CHN ET CHB ; FINSI ; 'FINPROC' CHPP; TAB1 = TABLE; TAC1 = TABLE ; SI (( NON (EGA M_ELEM 'MASSIF')) ET (NON (EGA M_ELEM 'INFE')) ET (NON (EGA M_ELEM 'MOYE')) ET (NON (EGA M_ELEM 'SUPE'))); ERREUR 'MAUVAIS_INDIC_ELEMENT_DANS_DEPOULI'; FINSI ; SI (( NON (EGA M_REP2 'FIXE')) ET (NON (EGA M_REP2 'GLOBAL')) ET (NON (EGA M_REP2 'LOCAL'))); ERREUR 'MAUVAIS_INDIC_REPERE_DANS_DEPOULI'; SINON; M_REPE = M_REP2 ; FINSI ; SI (( NON (EGA M_IND1 'CONTRAINTES')) ET ( NON (EGA M_IND1 'DEFORMATIONS')) ); ERREUR 'MAUVAIS_INDIC_DANS_DEPOULI'; FINSI ; LCONFON = FAUX ; SI ( EGA N_1 N_2 ) ; LCONFON = VRAI; FINSI ; SI (EXISTE MCHA_E3); SI (EGA M_IND1 'CONTRAINTES'); CAR1 = MCHA_E3; FINSI ; SI (EGA M_IND1 'DEFORMATIONS'); MCHA_EP = MCHA_E3; FINSI ; FINSI; SI (EGA M_IND1 'CONTRAINTES'); FINSI ; SI (EGA M_IND1 'DEFORMATIONS'); FINSI ; SI (EGA M_REPE 'FIXE'); SINON; SI (EGA M_REPE 'GLOBAL'); SINON; FINSI; FINSI; SI(NON (EXISTE L_COQ2 )); L_COQ1 = FAUX ; SINON ; L_COQ1 = L_COQ2 ; FINSI; SI (EGA M_REPE 'FIXE'); MCHA_E11 = RTENS MCHA_E2 MOD_L VECT1 VECT2; MCHA_E1 = MCHA_E11; SINON; MCHA_E11 = RTENS MCHA_E2 MOD_L VECT1; MCHA_E1 = MCHA_E11; FINSI; SINON; MCHA_E1 = MCHA_E2; FINSI; ***CHTT1 CHPOINT sur la ligne ***EV_OTT evolution globale SI ( (EGA M_REPE 'FIXE') OU (EGA M_REPE 'GLOBAL') ); SI (EGA M_IND1 'CONTRAINTES'); SINON; FINSI; SINON; SINON; FINSI; FINSI; I1 = 1; SI LCONFON; SINON ; FINSI; TAB1.MOC1 = EV_I1; TITRE MO_TI1 MO_TI2; SI ( I1 EGA 1 ); * TAC1.1 = CHAINE ' MARQ ' MARQ1 ' REGU ' ' TITR ' COMP1; EV_OTT = EV_I1; SINON ; * TAC1.(DIM1+1) = CHAINE ' MARQ ' MARQ1 ' REGU ' ' TITR ' COMP1; EV_OTT = EV_OTT ET EV_I1 ; FINSI ; I1 = I1 + 1; FIN BOUC1; FINSI ; SI (EGA M_REPE 'LOCAL'); SI (EGA M_IND1 'CONTRAINTES'); SINON; FINSI; SINON; SINON; FINSI; FINSI; I1 = 1; SI LCONFON; SINON ; FINSI; TAB1.MOC1 = EV_I1; SI ( I1 EGA 1 ); SINON ; FINSI ; I1 = I1 + 1; FIN BOUC3; CHPP = FRENETT LIGN_1 ; CHTT2 = CHREP M_IND1 CHTT1 CHPP ; MENAGE ; I1 = 1 ; TITRE MO_TI1 MO_TI2 ; MENAGE ; SI ( I1 EGA 1 ) ; * TAC1.1 = CHAINE ' MARQ ' MARQ1 ' REGU TITR ' COMP1 ' '; EV_OTT = EV_I1; SINON; * TAC1.(DIM1+1) = CHAINE ' MARQ ' MARQ1 ' REGU TITR ' COMP1 ' '; EV_OTT = EV_OTT ET EV_I1; FINSI; I1 = I1 + 1; TAB1.MOC1 = EV_I1; FIN BOUC2; FINSI; SI (EGA M_IND1 'CONTRAINTES'); SI ((EGA M_ELEM 'MASSIF') OU (EGA M_ELEM 'MOYE')); * TAC1.(DIM1+1) = CHAINE ' MARQ ' MARQ1 ' REGU TITR ' COMP1 ' '; I1 = I1 + 1; SI (EXISTE MCHA_E3); SINON ; FINSI; SI LCONFON; SINON ; FINSI; EV_OTT = EV_OTT ET EVVM ; * TAC1.(DIM1+1) = CHAINE ' MARQ ' MARQ1 ' REGU TITR ' COMP1 ' '; I1 = I1 + 1; SI (EXISTE MCHA_E3); TRE1 = TRESCA MOD_L CHM1 CAR1 MOYE; SINON ; SI (EGA M_ELEM 'MASSIF'); TRE1 = TRESCA MOD_L CHM1 ; SINON ; TRE1 = TRESCA MOD_L CHM1 MOYE; FINSI ; FINSI; SI LCONFON; SINON ; FINSI; EV_OTT = EV_OTT ET EVTR1 ; TAB1.TRES1 = EVTR1; FINSI; SI (EGA M_ELEM 'MOYE') ; * TAC1.(DIM1+1) = CHAINE ' MARQ ' MARQ1 ' REGU TITR ' COMP1 ' '; I1 = I1 + 1; TRE2 = TRESCA MOD_L CHM1 CAR1 INFE; SI LCONFON; SINON ; FINSI; EV_OTT = EV_OTT ET EVTR2 ; TAB1.TRES2 = EVTR2; * TAC1.(DIM1+1) = CHAINE ' MARQ ' MARQ1 ' REGU TITR ' COMP1 ' '; SI LCONFON; SINON ; FINSI; EV_OTT = EV_OTT ET EVTR3 ; FINSI; FINSI; SI (EGA M_IND1 'DEFORMATIONS'); SI ( EXISTE MCHA_E3 ); * I2 = I1 * 2 - 1; * TAC1.I2 = 'MARQ ETOI TITR EPSE_PLAS'; SI LCONFON; SINON ; FINSI; * TAC1.(DIM1+1) = CHAINE ' MARQ ' MARQ1 ' REGU TITR ' COMP1 ' '; EV_OTT = EV_OTT ET EVOSE ; FINSI; FINSI; DESS EV_OTT TAC1 MIMA LEGE ; TAB1.MARC = TAC1; FINPROC TAB1; 'DEBPROC' DEPT LIGN_1*MAILLAGE MOD_L*MMODEL MCHA_E2*CHPOINT; LCONFON = FAUX ; SI ( EGA N_1 N_2 ) ; LCONFON = VRAI; FINSI ; SI LCONFON ; SINON ; FINSI ; DESS LEV3 ; FINPROC ; **** @DESCEND DEBPROC @DESCEND CHP_X*CHPOINT CHP_Y*CHPOINT CHP_Z*CHPOINT PASB0*FLOTTANT CHSIGN0*CHPOINT TAB1*TABLE ; * ***************************************************** * Procedure de descente des lignes de champ par une * * methode explicite. Alain MOAL (Fevrier 2001) * ***************************************************** * *MESS '---------------------------------> calling @descend'; * *--------------- VARIABLES D'ENTREE : MAIL0 = TAB1.<MAILLAGE_B ; *----------------------------------- * *---- Calcul du champ et de sa norme BR BZ BPHI = @MAGNB TAB1 ; * *---- Descente dans le plan (R,Z) BPHI = BPHI * 0. ; *AM*11/09/01*BX = BR * (COS PHI) + (BPHI * (SIN PHI)); *AM*11/09/01*BY = BR * (SIN PHI) - (BPHI * (COS PHI)); BX = BR * (COS PHI) - (BPHI * (SIN PHI)); BY = BR * (SIN PHI) + (BPHI * (COS PHI)); NORM_B = ((BX*BX) + (BY*BY) + (BZ*BZ))**0.5 ; * *---- Deplacements (methode explicite) affectes du signe *---- donnant le sens de descente dans le plan (R,Z) DEPX0 = CHSIGN0 * BX * PASB0 / NORM_B ; DEPY0 = CHSIGN0 * BY * PASB0 / NORM_B ; DEPZ0 = CHSIGN0 * BZ * PASB0 / NORM_B ; * *---- Nouvelles coordonnees X_NEW = CHP_X + DEPX0 ; Y_NEW = CHP_Y + DEPY0 ; Z_NEW = CHP_Z + DEPZ0 ; * *---- actualisation de la position des points de la ligne DEP0 = DEPX0 ET DEPY0 ET DEPZ0 ; * *MESS '---------------------------------> exiting @descend'; FINPROC X_NEW Y_NEW Z_NEW DEP0 ; **** @DEXPJET DEBPROC @DEXPJET CHP_X*CHPOINT CHP_Y*CHPOINT CHP_Z*CHPOINT PASB0*FLOTTANT TAB1*TABLE; *MESS '---------------------------------> calling @DEXPJET'; * *--------------- VARIABLES D'ENTREE : MAIL0 = TAB1.<MAILLAGE_B ; *----------------------------------- * *---- Calcul du champ et de sa norme BR BZ BPHI = @MAGNB TAB1 ; * *AM*11/09/01*BX = BR * (COS PHI) + (BPHI * (SIN PHI)); *AM*11/09/01*BY = BR * (SIN PHI) - (BPHI * (COS PHI)); BX = BR * (COS PHI) - (BPHI * (SIN PHI)); BY = BR * (SIN PHI) + (BPHI * (COS PHI)); NORM_B = ((BX*BX) + (BY*BY) + (BZ*BZ))**0.5 ; * *---- Deplacements (methode explicite) DEPX0 = BX * PASB0 / NORM_B ; DEPY0 = BY * PASB0 / NORM_B ; DEPZ0 = BZ * PASB0 / NORM_B ; *MESS '---------------------------------> exiting @DEXPJET'; FINPROC DEPX0 DEPY0 DEPZ0 ; **** @DEXPLI DEBPROC @DEXPLI CHP_X*CHPOINT CHP_Y*CHPOINT CHP_Z*CHPOINT PASB0*FLOTTANT TAB1*TABLE; *MESS '---------------------------------> calling @DEXPLI'; *--------------- VARIABLES D'ENTREE : TYPCAL = TAB1.<TYPE_CALCUL ; *------------------------------------ SI (EGA TYPCAL 'AVEC_SHIFT_AVEC_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'AVEC_SHIFT_SANS_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = FAUX ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_AVEC_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_SANS_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = FAUX ; FINSI ; SI ((NON (EXISTE ISHIFT)) OU (NON (EXISTE IRIPPLE))) ; FINSI ; * ---- Calcul du champ dans le repere global BXG BYG BZG FSECU = @CHAMB TAB1 CHP_X CHP_Y CHP_Z ISHIFT IRIPPLE ; * ---- Calcul de la norme du champ NORM_B = ((BXG*BXG) + (BYG*BYG) + (BZG*BZG))**0.5 ; * ---- Calcul des deplacements DEPX0 = BXG * PASB0 / NORM_B ; DEPY0 = BYG * PASB0 / NORM_B ; DEPZ0 = BZG * PASB0 / NORM_B ; *MESS '---------------------------------> exiting @DEXPLI'; FINPROC DEPX0 DEPY0 DEPZ0 ; **** @DMILIEU DEBPROC @DMILIEU CHP_X*CHPOINT CHP_Y*CHPOINT CHP_Z*CHPOINT PASB0*FLOTTANT CHSIGN/CHPOINT TAB1*TABLE; *MESS '---------------------------------> calling @DMILIEU'; *--------------- VARIABLES D'ENTREE : TYPCAL = TAB1.<TYPE_CALCUL ; RP = TAB1.<RP ; HP = TAB1.<HP ; *------------------------------------ SI (EGA TYPCAL 'AVEC_SHIFT_AVEC_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'AVEC_SHIFT_SANS_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = FAUX ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_AVEC_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_SANS_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = FAUX ; FINSI ; SI ((NON (EXISTE ISHIFT)) OU (NON (EXISTE IRIPPLE))) ; FINSI ; * * --- Cas ou l'appel vient d'une proc qui n'a pas calcule CHSIGN CHSIGN = 1. ; FINSI ; *BR01/10/98 SI (EXISTE TAB1 <CHSIGN) ; * CHSIGN = TAB1.<CHSIGN ; * --- Cas ou l'appel vient d'une proc qui n'a pas calcule TAB1.<CHSIGN *SINON ; * CHSIGN = 1. ; *FINSI ; * ---- Lors du premier pas, calcul des points milieux DEPX0 DEPY0 DEPZ0 = @DEXPLI CHP_X CHP_Y CHP_Z PASB0 TAB1; CHP_X1 = CHP_X + (CHSIGN * DEPX0) ; CHP_Y1 = CHP_Y + (CHSIGN * DEPY0) ; CHP_Z1 = CHP_Z + (CHSIGN * DEPZ0) ; SINON ; CHP_X1 = TAB1.<CHP_X1 ; CHP_Y1 = TAB1.<CHP_Y1 ; CHP_Z1 = TAB1.<CHP_Z1 ; FINSI ; * ---- Calcul du deplacement dans le repere global * ---- (aux points milieux) DEPX0 DEPY0 DEPZ0 = @DEXPLI CHP_X1 CHP_Y1 CHP_Z1 PASB0 TAB1 ; * ---- Actualisation des points initiaux X_NEW = CHP_X + (CHSIGN * DEPX0) ; Y_NEW = CHP_Y + (CHSIGN * DEPY0) ; Z_NEW = CHP_Z + (CHSIGN * DEPZ0) ; * ---- Calcul du deplacement aux points initiaux remontes DEPXI DEPYI DEPZI = @DEXPLI X_NEW Y_NEW Z_NEW PASB0 TAB1; * ---- Calcul des nouveaux points milieux CHP_X1 = CHP_X1 + (CHSIGN * DEPXI) ; CHP_Y1 = CHP_Y1 + (CHSIGN * DEPYI) ; CHP_Z1 = CHP_Z1 + (CHSIGN * DEPZI) ; * ---- Actualisation des points milieux TAB1.<CHP_X1 = CHP_X1 ; TAB1.<CHP_Y1 = CHP_Y1 ; TAB1.<CHP_Z1 = CHP_Z1 ; *MESS '---------------------------------> exiting @DMILIEU'; FINPROC DEPX0 DEPY0 DEPZ0 ; **** @DMOYEN DEBPROC @DMOYEN CHP_X*CHPOINT CHP_Y*CHPOINT CHP_Z*CHPOINT PASB0*FLOTTANT CHSIGN/CHPOINT TAB1*TABLE; *MESS '---------------------------------> calling @DMOYEN'; *--------------- VARIABLES D'ENTREE : TYPCAL = TAB1.<TYPE_CALCUL ; *------------------------------------ SI (EGA TYPCAL 'AVEC_SHIFT_AVEC_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'AVEC_SHIFT_SANS_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = FAUX ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_AVEC_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_SANS_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = FAUX ; FINSI ; SI ((NON (EXISTE ISHIFT)) OU (NON (EXISTE IRIPPLE))) ; FINSI ; * * --- Cas ou l'appel vient d'une proc qui n'a pas calcule CHSIGN CHSIGN = 1. ; FINSI ; * ---- Calcul du champ dans le repere global BXG BYG BZG FSECU = @CHAMB TAB1 CHP_X CHP_Y CHP_Z ISHIFT IRIPPLE ; * ---- Calcul de la norme du champ NORM_B = ((BXG*BXG) + (BYG*BYG) + (BZG*BZG))**0.5 ; * ---- Calcul du point extremite par la methode des tangentes XG_NEW0 = CHP_X + (CHSIGN * BXG * PASB0 / NORM_B) ; YG_NEW0 = CHP_Y + (CHSIGN * BYG * PASB0 / NORM_B) ; ZG_NEW0 = CHP_Z + (CHSIGN * BZG * PASB0 / NORM_B) ; * ---- Calcul du champ magnetique dans le repere global * ---- sur le point extremite BXG0 BYG0 BZG0 FSECU = @CHAMB TAB1 XG_NEW0 YG_NEW0 ZG_NEW0 ISHIFT IRIPPLE ; * ---- Moyenne des champs magnetiques BXG1 = (BXG + BXG0)/2. ; BYG1 = (BYG + BYG0)/2. ; BZG1 = (BZG + BZG0)/2. ; * ---- Calcul de la norme du champ moyenne NORM_B1 = ((BXG1*BXG1) + (BYG1*BYG1) + (BZG1*BZG1))**0.5 ; * ---- Calcul des deplacements DEPX0 = BXG1 * PASB0 / NORM_B1 ; DEPY0 = BYG1 * PASB0 / NORM_B1 ; DEPZ0 = BZG1 * PASB0 / NORM_B1 ; *MESS '---------------------------------> exiting @DMOYEN'; FINPROC DEPX0 DEPY0 DEPZ0 ; **** @DPSI DEBPROC @DPSI TAB1*TABLE ; ************************************************************* * Procedure de calcul de dpsi en chaque point d'un maillage * * donne. Alain MOAL (Novembre 2001) * ************************************************************* * * *--------------- VARIABLES D'ENTREE : CHB0 = TAB1.<CARTE_B ; GRILB0 = TAB1.<GRILLE_B ; MAIL1 = TAB1.<MAILLAGE_B ; *------------------------------------ *TRAC (MAIL1 ET GRILB0) ; * FINPROC CHDPSI ; **** @DREPROJ DEBPROC @DREPROJ CHP_X*CHPOINT CHP_Y*CHPOINT CHP_Z*CHPOINT PASB0*FLOTTANT CHSIGN/CHPOINT TAB1*TABLE ; **************************************************************** * Procedure de calcul du deplacement pour remonter des lignes * * de champ magnetique, a partir des CHPOINT de coordonnees * * methode utilisant une reprojection sur la SMF * * ---> construit un chpoint appuye sur l'objet etudie et * * contenant pour chaque point le deplacement sur un pas pour * * remonter les lignes de champ * **************************************************************** *MESS '---------------------------------> calling @DREPROJ'; *--------------- VARIABLES D'ENTREE : TYPCAL = TAB1.<TYPE_CALCUL ; RR = TAB1.<RR ; EPS0 = TAB1.<EPS ; NBOB = TAB1.<NBOB ; COEFA = TAB1.<COEFA ; COEFB = TAB1.<COEFB ; COEFC = TAB1.<COEFC ; * (pour info) TAB1.<CHSIGN ; *------------------------------------ SI (EGA TYPCAL 'AVEC_SHIFT_AVEC_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'AVEC_SHIFT_SANS_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = FAUX ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_AVEC_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_SANS_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = FAUX ; FINSI ; SI ((NON (EXISTE ISHIFT)) OU (NON (EXISTE IRIPPLE))) ; FINSI ; * * --- Cas ou l'appel vient d'une proc qui n'a pas calcule CHSIGN CHSIGN = 1. ; FINSI ; * ---- Calcul du champ dans le repere global BXG BYG BZG FSECU = @CHAMB TAB1 CHP_X CHP_Y CHP_Z ISHIFT IRIPPLE ; * ---- Calcul de la norme du champ NORM_B = ((BXG*BXG) + (BYG*BYG) + (BZG*BZG))**0.5 ; * XG_NEW0 = CHP_X + (CHSIGN * BXG * PASB0 / NORM_B) ; YG_NEW0 = CHP_Y + (CHSIGN * BYG * PASB0 / NORM_B) ; ZG_NEW0 = CHP_Z + (CHSIGN * BZG * PASB0 / NORM_B) ; * ---- Coordonnees dans le repere * ---- pseudo-toroidal du ripple RHOR THER PHIR = @CRGTC CHP_X CHP_Y CHP_Z RR 0. ; RHOR_OLD = RHOR ; KAUX = (EXP (THER ** 2 * -1. * COEFC))* ((COS (PHIR * NBOB)) * -1. + 1.) * COEFA ; I3 = 0 ; REPETER BOUCLE3 50 ; * I3 =I3 + 1 ; MESS ' I3 =' I3 ; RHOR_NEW = RHOR + (KAUX * (EXP(RHOR_OLD * COEFB))); QUITTER BOUCLE3 ; FINSI ; RHOR_OLD = RHOR_NEW ; FIN BOUCLE3 ; RHOMER = RHOR_NEW ; I2 = 0 ; REPETER BOUCLE2 2 ; I2 =I2 + 1 ; * MESS ' I2 =' I2 ; * ---- point sur la surface magnetique RHORN THERN PHIRN = @CRGTC XG_NEW0 YG_NEW0 ZG_NEW0 RR 0. ; DRHOMERN = (EXP (RHOMER*COEFB))*(EXP(THERN**2 *COEFC * -1.)) * COEFA ; RHORIP = DRHOMERN * ((COS(PHIRN * NBOB)) - 1.) + RHOMER ; XG_NEW1 YG_NEW1 ZG_NEW1 = @CRTGC RHORIP THERN PHIRN RR 0. ; * * ---- Calcul du champ dans le repere global BXG0 BYG0 BZG0 FSECU0 = @CHAMB TAB1 XG_NEW1 YG_NEW1 ZG_NEW1 ISHIFT IRIPPLE ; * ---- Moyenne des tangentes BXG1 = (BXG + BXG0)/2. ; BYG1 = (BYG + BYG0)/2. ; BZG1 = (BZG + BZG0)/2. ; NORM_B1 = ((BXG1*BXG1) + (BYG1*BYG1) + (BZG1*BZG1))**0.5 ; XG_NEW0 = CHP_X + (CHSIGN * BXG1 * PASB0 / NORM_B1) ; YG_NEW0 = CHP_Y + (CHSIGN * BYG1 * PASB0 / NORM_B1) ; ZG_NEW0 = CHP_Z + (CHSIGN * BZG1 * PASB0 / NORM_B1) ; SI (I2 EGA 2); XG_NEW = XG_NEW0 ; YG_NEW = YG_NEW0 ; ZG_NEW = ZG_NEW0 ; FINSI ; FIN BOUCLE2 ; * ---- Calcul des deplacements DEPX0 = BXG1 * PASB0 / NORM_B1 ; DEPY0 = BYG1 * PASB0 / NORM_B1 ; DEPZ0 = BZG1 * PASB0 / NORM_B1 ; *MESS '---------------------------------> exiting @DREPROJ'; FINPROC DEPX0 DEPY0 DEPZ0 ; 'DEBPROC' EPSCHL MOD_1*MMODEL SI_13*MCHAM TE0*CHPOINT TE1*CHPOINT TAB1/'TABLE ' ; SI (( NON ( EXISTE MAT_1)) ET ( EXISTE TAB1)) ; I1 = 0 ; REPETER BOMA11 ; I1 = I1 + 1 ; SI ( EXISTE (TAB1.ZONE_MAT) I1 ) ; MO1 = TAB1.MODL_MAT. I1 ; NU_1 = CHANGER CHAM NU_1 MO1 'RIGIDITE' ; Y_1 = CHANGER CHAM Y_1 MO1 'RIGIDITE' ; AL_1 = CHANGER CHAM AL_1 MO1 'RIGIDITE' ; TEX1 = TEXTE 'YOUN Y_1 NU NU_1 ALPH AL_1' ; SI ( IMOTM1 EGA 5 ) ; TEX1 = TEXTE TEX1 'SIGY YM_1 ' ; TITRE 'MAT' I1 ' YIELD MODULUS' ; YM_1 = CHANGER CHAM YM_1 MO1 'RIGIDITE' ; TEX1 = TEXTE TEX1 'H H_1 ' ; H_1 = CHANGER CHAM H_1 MO1 'RIGIDITE' ; FINSI ; SINON ; QUITTER BOMA11 ; FINSI ; SI ( I1 EGA 1 ) ; MOD_1 = MO1 ; MAT_1 = MA1 ; SINON ; MOD_1 = MOD_1 ET MO1 ; MAT_1 = MAT_1 ET MA1 ; FINSI ; FIN BOMA11 ; FINSI ; TAB1.MATTOT = MAT_1 ; SI_11 = THETA MAT_1 ( TE1 - TE0 ) ; FO1 = BSIGMA SI_11 ; SI_12 = SI_13 + SI_11 ; EPS1 = ALP3 * CHT2; EPS_THER = EPX2 ET EPY2 ET EPZ2 ET GAXY2 ET GAXZ2 ET GAYZ2; FINPROC EPS_THER ; **** @ET DEBPROC @ET CH1*CHPOINT CH2*CHPOINT ; CHR = CHA1 ET CHA2; FINPROC CHR ; **** @EVMAA SI (KK1 EGA 0. 1. ) ; PP1 = @IPOE LLTE1 EVE2 FIXE ; FINSI ; BETA1 = ((EVOCTY1 - (EVE2 * EVOCT1))/(EVOC700 - EVOCT1)) ; FINPROC BETA1 ; **** @EVMAT *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 * version cr\E9ee 19.12.96 par R. Mitteau pour fonctionner avec PASAPAS *modification des noms de composantes : * 'TEMPERATURE' -> 'T' * 'CONDUCTIVITE' -> 'K' * 'CAPACITE' -> 'CapaVolu' SI ( EXISTE TABTT) ; TABT = TABLE TABTT ; SINON ; TABT = TABLE ; FINSI ; TT1 = TABLE ; REPETER BLOC1 1 ; SI ( EGA MOT1 'DUNLOP' ) ; * donnees bonnal 19 avril 93 TT1.'DUNLOP' = TABLE ; *TITRE ' DUNLOP SPECIF HEAT' ; TT1.'DUNLOP' . 'C' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 3.5E3) 'C' (PROG 708. 708. 789. 937. 1066. 1178. 1274. 1357. 1431. 1495.4 1552.4 1603.2 1648.7 1689.7 1726.8 1760.5 1791.3 1819.6 1820. 2000. 2050. 2100.) ; *TITRE ' DUNLOP DENSITY' ; TT1.'DUNLOP' . 'RHO' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 3.5E3) 'RHO' (PROG 1903. 1903. 1902. 1902. 1901. 1901. 1900. 1900. 1899. 1899. 1898. 1898. 1897. 1897. 1897. 1896. 1896. 1895. 1894. 1890. 1890. 1890. ); EVRHOC = (TT1.'DUNLOP' . 'RHO') * ( TT1.'DUNLOP' . 'C') ; QUITTER BLOC1 ; FINSI ; *********************************************************************** * N11 redensifie direction P * materiau rentre par Raphael Mitteau le 6 juin 1996 * Source SEP lineaire entre 20 et 1000 C SI ( EGA MOT1 'N11P_DENSE1' ) ; * * --- definition de la table * TT1.'N11P_DENSE1' = TABLE ; * * --- definition de la conductivite thermique * * * --- tout est defini, on quitte les bloc de definition des materiaux * QUITTER BLOC1 ; FINSI ; * N11 redensifie direction P * materiau rentre par Raphael Mitteau le 6 juin 1996 * Source SEP a 20 et 1000 C copie variation N11 SI ( EGA MOT1 'N11P_DENSE2' ) ; * * --- definition de la table * TT1.'N11P_DENSE2' = TABLE ; * * --- definition de la conductivite thermique * TT1.'N11P_DENSE2' . 'K' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 4500.) 'K' (((((PROG 247.8 247.8 243.4 228.0 210.2 193.2 178.1 165. 153.8 144.2 136. 129. 122.9 117.7 113.2 109.2 105.7 102.6 91.69 75.17 65.28 58.52 43.95) - (PROG 23. * 102.6 ))/ (247.8 - 102.6))*(150.)) + (PROG 23. * 100.)); * * --- tout est defini, on quitte les bloc de definition des materiaux * QUITTER BLOC1 ; FINSI ; *********************************************************************** * Dunlop concept 1 conductivite dana la direction X mesure par CEA * materiau rentre par Raphael Mitteau le 5 juin 1996 * source CEA/DRN/DMT 95-495 rapport de J.P. Bonal SI ( EGA MOT1 'DUN_C1_BONAL_X' ) ; * * --- definition de la table * TT1.'DUN_C1_BONAL_X' = TABLE ; * * --- definition de la conductivite thermique * * * --- tout est defini, on quitte les bloc de definition des materiaux * QUITTER BLOC1 ; FINSI ; *********************************************************************** * Dunlop concept 1 conductivite dana la direction X mesure par CEA * materiau rentre par Raphael Mitteau le 5 juin 1996 * source CEA/DRN/DMT 95-495 rapport de J.P. Bonal SI ( EGA MOT1 'DUN_C1_BONAL_Y' ) ; * * --- definition de la table * TT1.'DUN_C1_BONAL_Y' = TABLE ; * * --- definition de la conductivite thermique * * * --- tout est defini, on quitte les bloc de definition des materiaux * QUITTER BLOC1 ; FINSI ; *********************************************************************** * Sepcarb NB31 Version C conductivite dana la direction X * materiau rentre par Raphael Mitteau le 5 juin 1996 * source SEP SI ( EGA MOT1 'NB31CX' ) ; * * --- definition de la table * TT1.'NB31CX' = TABLE ; * * --- definition de la conductivite thermique * * --- approximation lineaire * --- variation copiee sur celle du N11 TT1.'NB31CX' . 'K' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 4500.) 'K' (((((PROG 247.8 247.8 243.4 228.0 210.2 193.2 178.1 165. 153.8 144.2 136. 129. 122.9 117.7 113.2 109.2 105.7 102.6 91.69 75.17 65.28 58.52 43.95) - (PROG 23. * 102.6 ))/ (247.8 - 102.6))*(323. - 154.)) + (PROG 23. * 154.)); * * --- tout est defini, on quitte les bloc de definition des materiaux * QUITTER BLOC1 ; FINSI ; *********************************************************************** * Sepcarb NB31 Version C conductivite dans la direction Y * materiau rentre par Raphael Mitteau le 5 juin 1996 * source SEP SI ( EGA MOT1 'NB31CY' ) ; * * --- definition de la table * TT1.'NB31CY' = TABLE ; * * --- definition de la conductivite thermique * * --- approximation lineaire * --- variation copiee sur celle du N11 TT1.'NB31CY' . 'K' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 4500.) 'K' (((((PROG 247.8 247.8 243.4 228.0 210.2 193.2 178.1 165. 153.8 144.2 136. 129. 122.9 117.7 113.2 109.2 105.7 102.6 91.69 75.17 65.28 58.52 43.95) - (PROG 23. * 102.6 ))/ (247.8 - 102.6))*(117. - 58. )) + (PROG 23. * 58.)); * * --- tout est defini, on quitte les bloc de definition des materiaux * QUITTER BLOC1 ; FINSI ; *********************************************************************** * Sepcarb NB31 Version C conductivite dans la direction Z * materiau rentre par Raphael Mitteau le 5 juin 1996 * source SEP SI ( EGA MOT1 'NB31CZ' ) ; * * --- definition de la table * TT1.'NB31CZ' = TABLE ; * * --- definition de la conductivite thermique * * * --- tout est defini, on quitte les bloc de definition des materiaux * QUITTER BLOC1 ; FINSI ; *********************************************************************** * Sepcarb NS31 Version C conductivite dans la direction X * materiau rentre par Raphael Mitteau le 10 septembre 1996 * source SEP SI ( EGA MOT1 'NS31CX' ) ; * * --- definition de la table * TT1.'NS31CX' = TABLE ; * * --- definition de la conductivite thermique * * --- approximation lineaire * --- variation copiee sur celle du N11 TT1.'NS31CX' . 'K' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 4500.) 'K' (((((PROG 247.8 247.8 243.4 228.0 210.2 193.2 178.1 165. 153.8 144.2 136. 129. 122.9 117.7 113.2 109.2 105.7 102.6 91.69 75.17 65.28 58.52 43.95) - (PROG 23. * 102.6 ))/ (247.8 - 102.6))*(304. - 149.)) + (PROG 23. * 149.)); * * --- tout est defini, on quitte les bloc de definition des materiaux * QUITTER BLOC1 ; FINSI ; *********************************************************************** * Sepcarb NS31 Version C conductivite dans la direction Y * materiau rentre par Raphael Mitteau le 10 septembre 1996 * source SEP SI ( EGA MOT1 'NS31CY' ) ; * * --- definition de la table * TT1.'NS31CY' = TABLE ; * * --- definition de la conductivite thermique * * --- approximation lineaire * --- variation copiee sur celle du N11 TT1.'NS31CY' . 'K' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 4500.) 'K' (((((PROG 247.8 247.8 243.4 228.0 210.2 193.2 178.1 165. 153.8 144.2 136. 129. 122.9 117.7 113.2 109.2 105.7 102.6 91.69 75.17 65.28 58.52 43.95) - (PROG 23. * 102.6 ))/ (247.8 - 102.6))*(100. - 55. )) + (PROG 23. * 55.)); * * --- tout est defini, on quitte les bloc de definition des materiaux * QUITTER BLOC1 ; FINSI ; *********************************************************************** * Sepcarb NB31 Version C conductivite dans la direction Z * materiau rentre par Raphael Mitteau le 10 septembre 1996 * source SEP SI ( EGA MOT1 'NS31CZ' ) ; * * --- definition de la table * TT1.'NS31CZ' = TABLE ; * * --- definition de la conductivite thermique * * * --- variation copiee sur celle du N11 * TT1.'NS31CZ' . 'K' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 4500.) 'K' (((((PROG 247.8 247.8 243.4 228.0 210.2 193.2 178.1 165. 153.8 144.2 136. 129. 122.9 117.7 113.2 109.2 105.7 102.6 91.69 75.17 65.28 58.52 43.95) - (PROG 23. * 102.6 ))/ (247.8 - 102.6))*(91. - 48. )) + (PROG 23. * 48.)); * * --- tout est defini, on quitte les bloc de definition des materiaux * QUITTER BLOC1 ; FINSI ; *********************************************************************** * stands for DUNLOP CONCEPT 1 * valeurs rentrees le 04 mai 95 par J.F. Salavy * source : DUNLOP LIMITED AVIATION DIVISION (net supply contract * no 92-825A) envoyees par Ivi Smid le 29/03/95 * donnees entre 25 et 1200 C * Pour cond_Z, les valeurs sont celles de la courbe et non du tableau SI ( EGA MOT1 'DUN_CONCEPT1_X' ) ; TT1.'DUN_CONCEPT1_X' = TABLE ; EVRHOC = ( TT1.'DUN_CONCEPT1_X' . 'RHO') * ( TT1.'DUN_CONCEPT1_X' . 'C'); QUITTER BLOC1 ; FINSI ; SI ( EGA MOT1 'DUN_CONCEPT1_Y' ) ; TT1.'DUN_CONCEPT1_Y' = TABLE ; EVRHOC = ( TT1.'DUN_CONCEPT1_Y' . 'RHO') * ( TT1.'DUN_CONCEPT1_Y' . 'C'); QUITTER BLOC1 ; FINSI ; SI ( EGA MOT1 'DUN_CONCEPT1_Z' ) ; TT1.'DUN_CONCEPT1_Z' = TABLE ; EVRHOC = ( TT1.'DUN_CONCEPT1_Z' . 'RHO') * ( TT1.'DUN_CONCEPT1_Z' . 'C'); QUITTER BLOC1 ; FINSI ; ********************************************************************** LL1 = (( EGA MOT1 'DUNX' ) OU ( EGA MOT1 'I1DUNX' ) OU ( EGA MOT1 'DUNY' ) OU ( EGA MOT1 'I1DUNY' )); SI LL1 ; * Valeurs fournies par Deschamps le 12/02/93 a 20. et 1000. degres C TT1.'DUNX' = TABLE ; * * TT1.'DUNY' = TABLE ; * * * * Valeurs fournies par Deschamps le 12/02/93 a 20. et 1000. degres C TT1.'I1DUNX' = TABLE ; * P_COEF = prog .21 .21 .23 .26 .29 .33 .36 .39 .41 .44 .46 .48 .5 .52 .52 .52 .52 .52 .515 .51 .5 .5 ; * TT1.'I1DUNY' = TABLE ; * P_COEF = prog .21 .21 .23 .26 .29 .33 .36 .39 .41 .44 .46 .48 .5 .52 .52 .52 .52 .52 .515 .51 .5 .5 ; * * QUITTER BLOC1 ; FINSI ; ****************************************************************&***** SI ( EGA MOT1 'N112X' ) ; * Valeurs fournies par Deschamps le 12/02/93 a 20. et 1000. degres C TT1.'N112X' = TABLE ; * * QUITTER BLOC1 ; FINSI ; *********************************************************************** SI ( EGA MOT1 'N112Y' ) ; TT1.'N112Y' = TABLE ; * * * QUITTER BLOC1 ; FINSI ; SI ( EGA MOT1 'N112Z' ) ; TT1.'N112Z' = TABLE ; * * QUITTER BLOC1 ; FINSI ; *********************************************************************** SI ( EGA MOT1 'N112P' ) ; * donnees bonnal 19 avril 93 TT1.'N112P' = TABLE ; *TITRE ' N112P SPECIF HEAT' ; TT1.'N112P' . 'C' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 5.5E3) 'C' (PROG 669. 669. 770.3 935. 1063.2 1165.8 1249.7 1319.6 1378.8 1429.4 1473.4 1511.8 1545.7 1575.8 1602.7 1627.0 1648.9 1668.8 1748. 1950. 1950. 1950.) ; *TITRE ' N112P DENSITY' ; TT1.'N112P' . 'RHO' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 5.5E3) 'RHO' (PROG 2010. 2010. 2010. 2010. 2010. 2009. 2009. 2009. 2009. 2009. 2008. 2008. 2008. 2008. 2008. 2007. 2007. 2007. 2007. 2007. 2007. 2007. ); EVRHOC = (TT1.'N112P' . 'RHO') * ( TT1.'N112P' . 'C') ; QUITTER BLOC1 ; FINSI ; *********************************************************************** SI ( EGA MOT1 'N112H' ) ; TT1.'N112H' = TABLE ; * * TITRE ' N112 H CONDUCTIVITY' ; QUITTER BLOC1 ; FINSI ; *********************************************************************** SI ( EGA MOT1 'N112' ) ; TT1.'N112' = TABLE ; * *TITRE ' N112 SPECIF HEAT' ; *TITRE ' N112 DENSITY' ; EVRHOC = (TT1.'N112' . 'RHO') * ( TT1.'N112' . 'C') ; * valeurs donnee par Deschamps 28 le 16.02.93 * QUITTER BLOC1 ; FINSI ; *********************************************************************** SI ( EGA MOT1 'N11' ) ; TT1.'N11' = TABLE ; * *js 190296 TT1.'N11' . 'K' = EVOL MANU *js 190296 'T' (PROG -500. 23. 350. 500. 1000. 1500. 2000. 4.5E3) *js 190296 'K'(PROG 210. 210. 123. 105. 76. 62. 52. 52.) ; TT1.'N11' . 'K' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 4500.) 'K'((PROG 247.8 247.8 243.4 228.0 210.2 193.2 178.1 165. 153.8 144.2 136. 129. 122.9 117.7 113.2 109.2 105.7 102.6 91.69 75.17 65.28 58.52 43.95) * ( 210./247.) ); *TITRE ' N11 SPECIF HEAT' ; *TITRE ' N11 DENSITY' ; EVRHOC = (TT1.'N11' . 'RHO') * ( TT1.'N11' . 'C') ; * valeurs donnee par Deschamps 28 le 16.02.93 * QUITTER BLOC1 ; FINSI ; *************************************************************************** SI ( EGA MOT1 'N11_PPI' ) ; TT1.'N11_PPI' = TABLE ; * ....Lipa...actualise les valeurs le 28.3.95..suivant mesures PPI. *TITRE ' N11_PPI SPECIF HEAT' ; *TITRE ' N11_PPI DENSITY' ; EVRHOC = (TT1.'N11_PPI' . 'RHO') * ( TT1.'N11_PPI' . 'C') ; * valeurs donnee par Deschamps 28 le 16.02.93 * QUITTER BLOC1 ; FINSI ; *********************************************************************** SI ( EGA MOT1 'I1N112P' ) ; * creation de ce materiau par J. SCHLOS le 22/09/94 * valeurs dans le plan, moyenne des directions x et y * N112 // irradie at 640 deg C / 1.25 dpa.g TT1.'I1N112P' = TABLE ; * * Source :Bonnal telecopie a Deschamps le 21 09 94 * extrapole au dessus de 600. *TITRE ' I1N112P SPECIF HEAT' ; TT1.'I1N112P' . 'C' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 3500.) 'C' ((PROG 666. 666. 750. 901. 1031. 1142. 1237. 1320. 1391.8 1455. 1511. 1561. 1605. 1645. 1651.4 1680.6 1707.1 1731.3 1865.8 2098.4 2281. 2433.4 2682.6 ) ); *TITRE ' I1N112P DENSITY' ; TT1.'I1N112P' . 'RHO' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 3500. ) 'RHO' (PROG 2026. 2026. 2026. 2026. 2025. 2025. 2025. 2024. 2024. 2024. 2023. 2023. 2023. 2023. 2022. 2022. 2022. 2022. 2022. 2022. 2022. 2022. 2022.); EVRHOC = (TT1.'I1N112P' . 'RHO') * ( TT1.'I1N112P' . 'C') ; QUITTER BLOC1 ; FINSI ; ************************************************************************************** SI ( EGA MOT1 'N11P' ) ; * creation de ce materiau par R. MITTEAU le 20/01/94 * valeurs dans le plan, moyenne des directions x et y * MODIF Fred.ESC. le 28/10/95 ***** * But de la manoeuvre :ameliorer la conductivite a haute temperature * MODIF 1 : otpimisation au dela de 800 degC TT1.'N11P' = TABLE ; TT1.'N11P' . 'K' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 4500.) 'K'((PROG 247.8 247.8 243.4 228.0 210.2 193.2 178.1 165. 153.8 144.2 136. 129. 122.9 117.7 113.2 109.2 105.7 102.6 91.69 75.17 65.28 58.52 43.95) * ( 240./247.) ); *ESC 153.8 144.2 136. 129. 122.9 117.7 113.2 109.2 105.7 102.6 74.5 41. *ESC 41. 41. 41.) * ( 240./247.) ); * MODIF 2 : MODIF 1 * ( 240./247.) * 153.8 144.2 136. 129. 122.9 117.7 113.2 109.2 105.7 102.6 94.36 77.36 * 67.19 60.23 45.23) * ( 240./247.) ); * MODIF 3 : MODIF 2 * ( 1.05 ) * 153.8 144.2 136. 129. 122.9 117.7 113.2 109.2 105.7 102.6 99.08 81.23 * 70.54 63.25 47.5) * ( 240./247.) ); * MODIF 4 : ORIGINAL * ( 1.1 ) *153.8 144.2 136. 129. 122.9 117.7 113.2 109.2 105.7 102.6 74.5 41. * 41. 41. 41.) * ( 240./247.*1.1) ); * FIN MODIF Fred. ESC le 28/10/95 ***** * Source : Valeur a 25 C donnee par Chappuis selon mesures SEP * (registre de controle individuel)2129043 * extrapolees pour les temperatures superieures selon valeurs * du rapport DMT/93-265, J.P. BONAL, Elements pour la constitution * d'une base de donnee sur les composites carbone-carboneA05 A035 * N11 N112 envisages pour la fusion thermonucleaire * Aout 1993, extrapollee exponentiellement au dela de 800 C *TITRE ' N11P SPECIF HEAT' ; TT1.'N11P' . 'C' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 4500.) 'C' (PROG 672.8 672.8 763.9 920.5 1049.4 1156.6 1247. 1324. 1390.4 1448.2 1498.8 1543.6 1583.5 1619.2 1651.4 1680.6 1707.1 1731.3 1865.8 2098.4 2281. 2433.4 2682.6 ) ; * source: rapport DMT/93-265, J.P. BONAL, Elements pour la constitution * d'une base de donnee sur les composites carbone-carboneA05 A035 * N11 N112 envisages pour la fusion thermonucleaire * Aout 1993, extrapollee exponentiellement au dela de 800 C *TITRE ' N11P DENSITY' ; TT1.'N11P' . 'RHO' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 4500. ) 'RHO' (PROG 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720.); EVRHOC = (TT1.'N11P' . 'RHO') * ( TT1.'N11P' . 'C') ; * Source : Valeur a 20 C donnee par Chappuis selon mesures SEP * extrapolees pour les temperatures superieures selon lois precedentes * Source : Valeur a 20 C donnee par Chappuis selon mesures SEP * extrapolees pour les temperatures superieures selon lois precedentes * * Pris egal a celui de A05 par defaut d'autre valeur QUITTER BLOC1 ; FINSI ; *********************************************************************** SI ( EGA MOT1 'N11H' ) ; * creation de ce materiau par R. MITTEAU le 20/01/94 TT1.'N11H' = TABLE ; * TT1.'N11H' . 'K' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 4500.) 'K' ((PROG 170.1 170.1 168.1 159. 147.9 137.0 127.2 118.5 111. 104.5 98.9 94.1 89.9 86.2 82.9 80.1 77.6 75.3 56.3 32.3 18.6 10.7 3.5 ) * (149.4/170.1)); * Source : Valeur a 25 C donnee par Chappuis selon mesures SEP * (registre de controle individuel) 2129043 * extrapolees pour les temperatures superieures selon valeurs * du rapport DMT/93-265, J.P. BONAL, Elements pour la constitution * d'une base de donnee sur les composites carbone-carbone A05 A035 * N11 N112 envisages pour la fusion thermonucleaire * Aout 1993, extrapollee exponentiellement au dela de 800 C *TITRE ' N11H SPECIF HEAT' ; TT1.'N11H' . 'C' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 4500. ) 'C' (PROG 672.8 672.8 763.9 920.5 1049.4 1156.6 1247. 1324. 1390.4 1448.2 1498.8 1543.6 1583.5 1619.2 1651.4 1680.6 1707.1 1731.3 1865.8 2098.4 2281. 2433.4 2682.6 ) ; * source rapport DMT/93-265, J.P. BONAL, Elements pour la constitution * d'une base de donnee sur les composites carbone-carbone A05 A035 * N11 N112 envisages pour la fusion thermonucleaire * Aout 1993, extrapollee y=a*(x**b) au dela de 800 C *TITRE ' N11H DENSITY' ; TT1.'N11H' . 'RHO' = EVOL MANU 'T' (PROG -500. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 1000. 1500. 2000. 2500. 4500. ) 'RHO' (PROG 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720. 1720.); EVRHOC = (TT1.'N11H' . 'RHO') * ( TT1.'N11H' . 'C') ; * Source : Valeur a 25 C donnee par Chappuis selon mesures SEP * (registre de controle individuel)2129043 * extrapolee en T suivant loi ? * source : valeurs donnees par Deschamps le 16.02.93 * Pris egal a celui de A05 par defaut d'autre valeur QUITTER BLOC1 ; FINSI ; *********************************************************************** SI ( EGA MOT1 '5890PT' ) ; TT1.'5890PT' = TABLE ; * *TITRE ' 5890PT CONDUCTIVITY' ; EVRHOC = (TT1.'5890PT' . 'RHO') * ( TT1.'5890PT' . 'C'); * * caracteristiques mecaniques ajoutees par R. MITTEAU le 30 mars 1994 * source : MATERIAL DATA for predesign Analysis of In Vessel Components * compiled by E. Zolti The NET TEAM, internal Note, Revised 14.9.90 * source : MATERIAL DATA for predesign Analysis of In Vessel Components * compiled by E. Zolti The NET TEAM, internal Note, Revised 14.9.90 * source : MATERIAL DATA for predesign Analysis of In Vessel Components * compiled by E. Zolti The NET TEAM, internal Note, Revised 14.9.90 QUITTER BLOC1 ; FINSI ; ********************************************************************* SI ( EGA MOT1 'PYRO_GP' ) ; TT1.'PYRO_GP' = TABLE ; * *TITRE ' PYRO_GP CONDUCTIVITY' ; EVRHOC = (TT1.'PYRO_GP' . 'RHO') * ( TT1.'PYRO_GP' . 'C'); QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'PYRO_GH' ) ; * TT1.'PYRO_GH' = TABLE ; * *TITRE ' PYRO_GH CONDUCTIVITY' ; EVRHOC = (TT1.'PYRO_GP' . 'RHO') * ( TT1.'PYRO_GP' . 'C'); * QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'TOYOTANSO' ) ; TT1.'TOYOTANSO' = TABLE ; * LR1 = PROG 0. 20. 25. 50. 100. 150. 200. 250. 300. 350. 400. 450. 500. 550. 600. 650. 700. 750. 800. 4500. ; LR2 = PROG 149.6 149.6 150.1 150.5 145.7 137.9 129.4 121.3 113.8 107.0 100.8 95.3 90.4 86.0 82.0 78.5 75.2 72.2 69.5 69.5 ; *TITRE ' TOYOTANSO CONDUCTIVITY' ; LD = PROG 1838 1838 1838 1837 1836 1835 1833 1832 1831 1829 1828 1827 1825 1824 1823 1821 1820 1819 1817 1817 ; LR4 = PROG 666.8 666.8 686.4 778.0 933.3 1059.2 1162.9 1249.7 1323.3 1386.5 1441.2 1489.1 1531.4 1568.9 1602.5 1632.6 1659.9 1684.7 1707.3 1707.3 ; EVRHOC = (TT1.'TOYOTANSO' . 'RHO') * ( TT1.'TOYOTANSO' . 'C'); QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'A05P' ) ; TT1.'A05P' = TABLE ; * 31/7/92 diminution de la conduc A05 *TITRE ' A05 // CONDUCTIVITY' ; * EVRHOC = (TT1.'A05P' . 'RHO') * ( TT1.'A05P' . 'C'); QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'A05H' ) ; TT1.'A05H' = TABLE ; * *TITRE ' A05 H CONDUCTIVITY' ; * alpha pris egal a 6 * alpha de A05P le 3 decembre 1993 * R.MITTEAU - J. SCHLOSSER * toutes evolutions suivantes de A05 H prises egales a celle * de A05P le 3 decembre 1993 R.MITTEAU - J. SCHLOSSER EVRHOC = (TT1.'A05H' . 'RHO') * ( TT1.'A05H' . 'C'); QUITTER BLOC1 ; FINSI ; ******************************************************************************** SI ( EGA MOT1 'A05ORT3D' ) ; * ce materiau est de l A05 orthotrope en 3 dimensions * plans conducteurs dans la direction 2 - 3 * mis a jour le 22/12/93 par R. MITTEAU TT1.'A05ORT3D' = TABLE ; *------------------------ Donnees thermiques * ref : inconnue * ref Le Carbone Lorraine * reference Le Carbone Lorraine * ref : Principales caracteristiques des materiaux NET NT TS 51-90-06 * ref : Principales caracteristiques des materiaux NET NT TS 51-90-06 EVRHOC = (TT1.'A05ORT3D' . 'RHO') * ( TT1.'A05ORT3D' . 'C'); *------------------------ Donnees mecaniques * ref : Principales caracteristiques des materiaux NET NT TS 51-90-06 * ref : Principales caracteristiques des materiaux NET NT TS 51-90-06 * ref : Principales caracteristiques des materiaux NET NT TS 51-90-06 * ref : Le Carbone Lorraine, generalise pour toutes les T et directions * ref : Le Carbone Lorraine, generalise pour toutes les T et directions * ref : Le Carbone Lorraine, generalise pour toutes les T et directions TT1.'A05ORT3D' . 'G12' = TT1.'A05ORT3D' . 'YG3' /(2* (1PLUS + TT1.'A05ORT3D' . 'NU12' )); * ref : formule G = E / (2 * (1 + nu)), a verifier en orthotrope TT1.'A05ORT3D' . 'G23' = TT1.'A05ORT3D' . 'YG1' /(2* (1PLUS + TT1.'A05ORT3D' . 'NU23' )); * ref : formule G = E / (2 * (1 + nu)), a verifier en orthotrope TT1.'A05ORT3D' . 'G13' = TT1.'A05ORT3D' . 'YG2' /(2* (1PLUS + TT1.'A05ORT3D' . 'NU13' )); * ref : formule G = E / (2 * (1 + nu)), a verifier en orthotrope * TT1.'A05ORT3D' . 'G12' = EVOL MANU *'T' (PROG 0. 20. 500. 1000. 2000. 4.5E3 ) * 'COULOMB' (1.6*(PROG 20.E9 20.E9 22.E9 24.E9 26.E9 26.E9)); * TT1.'A05ORT3D' . 'G23' = EVOL MANU *'T' (PROG 0. 20. 500. 1000. 2000. 4.5E3 ) * 'COULOMB' (1.7*(PROG 20.E9 20.E9 22.E9 24.E9 26.E9 26.E9)); * TT1.'A05ORT3D' . 'G13' = EVOL MANU *'T' (PROG 0. 20. 500. 1000. 2000. 4.5E3 ) * 'COULOMB' (1.8*(PROG 20.E9 20.E9 22.E9 24.E9 26.E9 26.E9)); * ref : Principales caracteristiques des materiaux NET NT TS 51-90-06 * interpole a partir des valeurs a 20 C et 2000 C * interpole a partir des valeurs a 20 C et 2000 C * ref : Principales caracteristiques des materiaux NET NT TS 51-90-06 * ref : Principales caracteristiques des materiaux NET NT TS 51-90-06 * interpole a partir des valeurs a 20 C et 2000 C QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'A05ORT2D' ) ; * ce materiau est de l A05 orthotrope en 2 dimensions * plans conducteurs dans la direction TT1.'A05ORT2D' = TABLE ; *------------------------ Donnees thermiques EVRHOC = (TT1.'A05ORT2D' . 'RHO') * ( TT1.'A05ORT2D' . 'C'); *------------------------ Donnees mecaniques * le 6/12/93, tout est bidon et ne sert qu a verifier * que l orthotropie passe * * * QUITTER BLOC1 ; FINSI ; ****************************************************************************** SI ( EGA MOT1 'B4C' ) ; TT1.'B4C' = TABLE ; * Valeurs rentrees le 30.01.1995 par R. Mitteau, d'apres le rapport *'Determination de la conductivite thermique d'un depot de B4C sur * un substrat cuivre' par D. Gosset, Rapport LEMA.DG.AD/95-003 * du 06.01.1995, valeurs extrapolees lineairement au dessus de 800C * Valeurs representatives d'echantillons SNMI * Valeurs rentrees le 30.01.1995 par R. Mitteau, d'apres le rapport *'Determination de la conductivite thermique d'un depot de B4C sur * un substrat cuivre' par D. Gosset, Rapport LEMA.DG.AD/95-003 * du 06.01.1995, valeurs extrapolees lineairement au dessus de 800C * Valeurs representatives d'echantillons SNMI * Valeurs rentrees le 30.01.1995 par R. Mitteau, d'apres le rapport *'Determination de la conductivite thermique d'un depot de B4C sur * un substrat cuivre' par D. Gosset, Rapport LEMA.DG.AD/95-003 * du 06.01.1995, valeurs extrapolees lineairement au dessus de 800C * Valeurs representatives d'echantillons SNMI EVRHOC = (TT1.'B4C' . 'RHO') * ( TT1.'B4C' . 'C'); * * valeurs non connues prises identiques AU CUCRZR * TT1.'B4C' . 'H' = EVOL MANU *'T'(PROG 0. 20. 200. 400. 500. 600. * 800. 1000.) * 'H' (PROG 1190.5E6 1190.5E6 1041.7E6 875.E6 729.2E6 500.E6 * 312.5E6 10.E6 ); QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'BEHP' ) ; * stands for BEryllium Hot Pressed * valeurs rentrees le 18 mars 1994 par raphael MITTEAU TT1.'BEHP' = TABLE ; * source : MATERIAL DATA for predesign Analysis of In Vessel Components * compiled by E. Zolti The NET TEAM, internal Note, Revised 14.9.90 * valeurs pour 20 300 500 600, Best Fit pour les autres (log) * donnee en Watt/ metre * Kelvin * source : MATERIAL DATA for predesign Analysis of In Vessel Components * compiled by E. Zolti The NET TEAM, internal Note, Revised 14.9.90 * valeurs pour 20 100 500 1000, Best Fit pour les autres (puiss) * donnee en [.] * source : MATERIAL DATA for predesign Analysis of In Vessel Components * compiled by E. Zolti The NET TEAM, internal Note, Revised 14.9.90 * valeurs pour 20 100 500 1000 1500 C * donnee en Joule par Kelvin et par Kilo * ce jeu de valeurs montre sans doute un PB vers 100 C * source : MATERIAL DATA for predesign Analysis of In Vessel Components * compiled by E. Zolti The NET TEAM, internal Note, Revised 14.9.90 * valeurs pour 20 et 1500 C, linearise pour les autres valeurs * donnee en Kilo par metre cube EVRHOC = (TT1.'BEHP' . 'RHO') * ( TT1.'BEHP' . 'C'); * source : MATERIAL DATA for predesign Analysis of In Vessel Components * compiled by E. Zolti The NET TEAM, internal Note, Revised 14.9.90 * valeurs pour 20 600 et 800 C, Best Fit pour les autres (lineaire) * donnee Pascal * source : MATERIAL DATA for predesign Analysis of In Vessel Components * compiled by E. Zolti The NET TEAM, internal Note, Revised 14.9.90 * source : MATERIAL DATA for predesign Analysis of In Vessel Components * compiled by E. Zolti The NET TEAM, internal Note, Revised 14.9.90 * valeurs pour 20 a 800 C corrigees, * extrapolees a vue au dessus en fonction de Temp Fusion * donnees exprimees en Pascal * source : MATERIAL DATA for predesign Analysis of In Vessel Components * compiled by E. Zolti The NET TEAM, internal Note, Revised 14.9.90 * valeur moyenne prise cste pour tout T * donnees exprimees en Pascal QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'BE_ITER' ) ; * stands for BEryllium hot pressed and sintered, fitted values * valeurs rentrees le 29 mars 95 par J.F. Salavy * source : ITER MATERIAL PROPERTIES HANDBOOK * (draft, file code ITER-AL01-2101) * envoyees par Ivi Schmid le 29/03/95 (excepte pour H) * Pour Young, Poisson et yield, les polynomes donnent des valeurs * de 0 a 800C. Les valeurs suivantes sont intuitees mais * non exactes. TT1.'BE_ITER' = TABLE ; I1 = 0 ; I1 = I1 + 1 ; VALCON1 = (-1.0104E-07 * (TEMPC1 ** 3.)) + ( 2.5429E-04 * (TEMPC1 ** 2.)) + (-2.6939E-01 * TEMPC1 ) + ( 1.8980E+02 ) ; VALCSP1 = ( 1.2748E-06 * (TEMPC1 ** 3.)) + (-3.1125E-03 * (TEMPC1 ** 2.)) + ( 3.3358E+00 * TEMPC1 ) + ( 1.7418E+03 ) ; VALRHO1 = (-1.5139E-05 * (TEMPC1 ** 2.)) + (-6.9336E-02 * TEMPC1 ) + ( 1.8230E+03 ) ; VALALP1 = ( 3.4457E-15 * (TEMPC1 ** 3.)) + (-1.3462E-11 * (TEMPC1 ** 2.)) + ( 2.1892E-08 * TEMPC1 ) + ( 1.0822E-05 ) ; VALYOU1 = (-7.6042E+02 * (TEMPC1 ** 3.)) + ( 3.8393E+05 * (TEMPC1 ** 2.)) + (-8.6726E+07 * TEMPC1 ) + ( 3.0961E+11 ) ; VALPOI1 = (-2.5E-05 * TEMPC1 ) + ( 0.0715 ) ; VALYIE1 = ( 8.5157E-02 * (TEMPC1 ** 3.)) + (-4.1428E+02 * (TEMPC1 ** 2.)) + ( 4.4811E+04 * TEMPC1 ) + ( 2.2464E+08 ) ; FIN BOUC1 ; EVRHOC = (TT1.'BE_ITER' . 'RHO') * ( TT1.'BE_ITER' . 'C'); * source : MATERIAL DATA for predesign Analysis of In Vessel Components * compiled by E. Zolti The NET TEAM, internal Note, Revised 14.9.90 * valeur moyenne prise cste pour tout T * donnees exprimees en Pascal QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'MOLY' ) ; TT1.'MOLY' = TABLE ; * * QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'TZM' ) ; TT1.'TZM' = TABLE ; * EVRHOC = (TT1.'TZM'.'RHO') * ( TT1.'TZM'.'C'); * QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'TUNGSTEN' ) ; TT1.'TUNGSTEN' = TABLE ; * *Valeurs The NET TEAM, Valeurs de references ITER au dela *Valeurs The NET TEAM, extrapolation lineaire au dela *Valeurs The NET TEAM, extrapolation lineaire au dela EVRHOC = (TT1.'TUNGSTEN'.'RHO') * ( TT1.'TUNGSTEN'.'C'); QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'OFHC' ) ; TT1.'OFHC' = TABLE ; * * 'T' (PROG -500. 20. 200. 300. 400. 600. 2.5E3 ) * 'K'(PROG 387. 387. 365. 351.5 338. 312. 312.) ; * EVRHOC = (TT1.'OFHC' . 'RHO') * ( TT1.'OFHC' . 'C'); QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'OFHCCYCL' ) ; * * Materiau entre le 19 septembre 1995 par R. Mitteau * * designation : Cuivre OFHC, proprietes mecaniques correspondant * aux courbes d'ecrouissage cyclique * * Conductivite, rho, capacite calorifiques * coefficient de Poisson prises identiques a OFHC * * Module d'young, SIGY et H d'apres * * High Temperature Torsional Low Cycle Fatigue of OFHC Copper * Ahmet Aran and Dogan Erdun Gucer, Material Research Division, * Marmara Research Institute... * in Z. Metallkunde * * retravaille suivant CFP ... * * * TT1.'OFHCCYCL' = TABLE ; * EVRHOC = (TT1.'OFHCCYCL' . 'RHO') * ( TT1.'OFHCCYCL' . 'C'); QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'INOX316L' ) ; TT1.'INOX316L' = TABLE ; * EVRHOC = (TT1.'INOX316L' . 'RHO') * ( TT1.'INOX316L' . 'C'); QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'GLIDCOP' ) ; TT1.'GLIDCOP' = TABLE ; * * 'K'(PROG 391. 391. 385. 381. 377. 338. 312.) ; EVRHOC = (TT1.'GLIDCOP' . 'RHO') * ( TT1.'GLIDCOP' . 'C'); * VALeurs prises egales au OFHC a controler QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'OUTOKUMPU' ) ; *********************************************************************** TT1.'OUTOKUMPU' = TABLE ; * * seul valeur connue a 20 deg le reste pris proportionnellement a OFHC *OFHC * 'T' (PROG -500. 20. 200. 300. 400. 600. 2.5E3 ) * 'K'(PROG 387. 387. 365. 351.5 338. 312. 312.) ; QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'CUCRZR' ) ; TT1.'CUCRZR' = TABLE ; * *TITRE 'CUCRZR CONDUCTIVITY' ; EVRHOC = (TT1.'CUCRZR' . 'RHO') * ( TT1.'CUCRZR' . 'C'); * valeurs non connues prises identiques CU dependent de l'etat du metal * QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'CUZR' ) ; TT1.'CUZR' = TABLE ; *valeurs non connues prises -10% au OFHC * valeurs non connues prises identiques au OFHC EVRHOC = (TT1.'CUZR' . 'RHO') * ( TT1.'CUZR' . 'C'); * valeurs non connues prises identiques AU CU * valeurs non connues prises identiques AU CUCRZR QUITTER BLOC1 ; FINSI ; ********************************************************************** SI ( EGA MOT1 'AL25' ) ; TT1.'AL25' = TABLE ; * *TITRE ' AL25 CONDUCTIVITY' ; QUITTER BLOC1 ; FINSI ; ********************************************************************** FIN BLOC1 ; ********************************************************************** * * Fin de la table de materiaux standarts * * Debut de la partie de la procedure qui retourne les donnees * ********************************************************************** SI (EXISTE TABT MOT1 ) ; SI ( EXISTE (TABT. MOT1) MOT2 ) ; EV1 = TABT . MOT1 . MOT2 ; SINON ; SI ( EXISTE TT1 MOT1 ) ; SI ( EXISTE (TT1. MOT1) MOT2 ) ; EV1 = TT1 . MOT1 . MOT2 ; SINON ; MESS '>>> the property ' MOT2 ' of the material ' MOT1 ' is not defined in your data' ' nor is it in satandard' ; ERRE 'MATERIAL' ; FINSI ; SINON ; ERRE ' MATERIAL' ; FINSI ; FINSI ; SINON ; SI ( EXISTE TT1 MOT1 ) ; SI ( EXISTE (TT1. MOT1) MOT2 ) ; EV1 = TT1 . MOT1 . MOT2 ; SINON ; ERRE 'MATERIAL' ; FINSI ; SINON ; ERRE 'MATERIAL' ; FINSI ; FINSI ; SI ( EXISTE VAL1 ) ; FINSI ; SI ( EXISTE CHP1 ) ; FINSI ; * * * Organisation : * -------------- * * La procedure est organisee en deux parties. * * La premiere partie est une table standart contenant les * caracteristiques des materiaux usuels du groupe premiere paroi. * Les donnees sont regroupes dans le bloc BLOC1. * * d'abord : materiaux de surface * puis : materiaux intercalaires * enfin : materiaux de structure * * * Afin de ne pas surcharger la memoire de choses inutiles, un test * permet de ne lire les donnees du materiau que s'il est effectivement * appelle. * Des que le materiau a ete lu, on sort du bloc, car il n'est pas * necessaire de passer par tout les tests qui seront negatifs. * * Les caracteristiques sont definies sous forme d'evolutions. * * La deuxieme partie est la procedure proprement dite. * Elle est organisee sous forme de tests SI-SINON-FINSI. *-------------------------------------------------------------------* FINPROC EV1 ; ******************************************************** * * CETTE PROC. PERMET de reduire les valeurs du chpoint *CHP_1 aux points les plus proche de la droite P_DEB P_FIN * les points sont reperes suivant la distance a P_DEB *la proc. rend une evolution donnant la valeur *en fonction de la distance * * j. schlosser 8 4 92 * ******************************************************** i1 = 0 ; i1 = i1 + 1 ; si ( i1 ega 1 ) ; lbri2 = po1 d 1 po2 ; sinon ; lbri2 = lbri2 d 1 po2 ; finsi ; fin bou4 ; FINPROC EVIT1 ; *EVIT1 = TELIGNSC VBRIQT CHT1 P01 O67 1.E-3 ; **** @FLNORM DEBPROC @FLNORM TAB1*TABLE ; * ************************************************** * Procedure (inspiree de @OMBRAGE) permettant de * * recuperer les valeurs du flux normalise en * * descendant les lignes de champ et en calculant * * leur intersection avec le plan sur lequel la * * valeur du flux normalise est connue. * * Alain MOAL (Fevrier 2001) * ************************************************** * * *--------------- VARIABLES D'ENTREE : MAIL1 = TAB1.LFLUX_EXTE ; MAIL2 = TAB1.<MAILLAGE_FN ; PASB1 = TAB1.<LONGUEUR_PAS_SANS_TEST ; PASB2 = TAB1.<LONGUEUR_PAS_AVEC_TEST ; *------------------------------------ * *---- Champ magnetique sur le maillage "ombre" TAB1.<MAILLAGE_B = MAIL1 ; BR BZ BPHI = @MAGNB TAB1 ; * *---- signe pour descente de la ligne (+ si bz < 0) TAB1.<CHAMP_SIGNE = BZ * (-1.) / (ABS BZ) ; * *---- distance a parcourir sans test d'intersection NBPAS1 = ENTIER ((DMAX1 + (PASB1/1000.))/PASB1) ; * *---- distance a parcourir avec test d'intersection NBPAS2 = ENTIER ((DMAX2 + (PASB2/1000.))/PASB2) ; * *---- distance a parcourir DMAX0 = (NBPAS1 * PASB1) + (NBPAS2 * PASB2) ; * *---- calcul exp(-delta/lambdaQ).ABS(b.n) aux points *---- d'intersection avec une methode analytique TAB1.<NOMBRE_PAS_SANS_TEST = NBPAS1 ; TAB1.<NOMBRE_PAS_AVEC_TEST = NBPAS2 ; TAB1.<DISTANCE_SANS_TEST = DMAX1; TAB1.<DISTANCE_AVEC_TEST = DMAX2 ; * CHFNORM = @ANADES TAB1 ; * *---- Champ magnetique sur les points d'intersection TITRE 'TEST : MAILLAGE INITIAL DEFORME '; * BR BZ BPHI = @MAGNB TAB1 ; * BX = BR * (COS PHI) - (BPHI * (SIN PHI)); BY = BR * (SIN PHI) + (BPHI * (COS PHI)); *AM*11/09/01*BX = BR * (COS PHI) + (BPHI * (SIN PHI)); *AM*11/09/01*BY = BR * (SIN PHI) - (BPHI * (COS PHI)); * *---- Calcul de b.n sur le maillage "ombrant" B_NORM = ((BX*BX) + (BY*BY) + (BZ*BZ))**0.5 ; VBVN = (ABS BZ) / B_NORM ; * *---- calcul de exp (-delta/lambdaQ) VAR1 = CHFNORM / VBVN ; * *---- on retrouve la forme initiale de TAB1.<S_OMBRE TITRE 'TEST : RETOUR FORME INITIALE' ; SI (EGA (TAB1.<LONGUEUR_CONNEXION_MAX) 0.) ; SINON; FINSI; * FINPROC VAR1 ; **** @FLUCRIT DEBPROC @FLUCRIT TAB1*TABLE ; * * --- entrees * CHOIX = TAB1.'CHFCORRELATION'; NIVEAU = TAB1.'NIVEAU' ; * * --- racine * SI (NIVEAU >EG 4 ) ; FINSI ; * Calculs thermohydrauliques et bilans thermiques * en attendant de les passer dans thersch1 * * --- traitement * I1 = 1 ; LOGI1 = EGA ICHOIX 'BOWR' ; LOGI2 = EGA ICHOIX 'TONG' ; LOGI3 = EGA ICHOIX 'CELA' ; LOGITOT1 = LOGI1 OU LOGI2 OU LOGI3 ; SI (NON LOGITOT1) ; FINSI ; * * --- Bowring72 * SI (EGA ICHOIX 'BOWR') ; TIN1 = TAB1.'T_IN' ; PRESS1 = TAB1.'P_IN' ; VITESS1 = TAB1.'V_IN' ; EL = TAB1.'L_HEATED' ; XL1 = TAB1.'WE_HEATED' ; D1 = TAB1.'D_MAQUETTE' ; YTWIST = TAB1.'TWIST_RATIO' ; TTAPE = TAB1.'T_TAPE' ; PI = 3.14159 ; SI ( YTWIST EGA 0. ) ; TAB1.DHC = D1 ; S1 = PI * D1 * D1 / 4. ; TAB1.DH = D1 ; FACV = 1. ; FACS = 1. ; SINON ; SI ( NON ( EXISTE TAB1 'N_CANAUX' )) ; TAB1 . N_CANAUX = 2. ; FINSI ; SS2 = ( ( PI * D1 * D1 / 8.) - ( TTAPE * D1 / 2. ) ) ; S1 = SS2 * TAB1 . N_CANAUX ; QUAS = 4. * SS2 ; PERI = ( ( PI * D1 / 2.) - TTAPE + D1 ) ; TAB1.DH = QUAS / PERI ; FINSI ; TAB1.T_IN = TIN1; TAB1.P_IN = PRESS1; TAB1.V_IN = VITESS1; @BOWRI72 TAB1 ; QCHFW = TAB1.CHF ; FINSI ; * * --- Tong75 * SI (EGA ICHOIX 'TONG') ; @TABEAU TAB1 ; VIN = TAB1.V_IN ; TIN = TAB1.T_IN ; PRES1 = TAB1.P_LOCAL ; D1 = TAB1.D_MAQUETTE ; EL = TAB1.L_HEATED ; XL1 = TAB1.WE_HEATED ; TAB1.V_LOCAL = VIN ; SI ( NON ( EXISTE TAB1 TWIST_RATIO ) ) ; TAB1 . TWIST_RATIO = 0. ; FINSI ; YTWIST = TAB1 . TWIST_RATIO ; SI ( NON ( EXISTE TAB1 T_TAPE ) ) ; TAB1 . T_TAPE = 0. ; FINSI ; TTAPE = TAB1 . T_TAPE ; QSURFE = TAB1.V_FLUMOY1 ; TSAT = @IPOE PRES1 TAB1.EPTSAT ; RHOIN = @IPOE TIN TAB1.ETRHOF ; GIN = RHOIN * VIN ; HIN = @IPOE TIN TAB1.ETHF ; HSAT = @IPOE TSAT TAB1.ETHF ; PI = 3.14159 ; SI ( ( YTWIST EGA 0. ) ET ( EGA TAB1.HYPERVAP FAUX ) ) ; TAB1.DHC = D1 ; S1 = PI * D1 * D1 / 4. ; TAB1.DH = D1 ; FACV = 1. ; FACS = 1. ; * FACF = 1. ; FINSI ; SI ( NON ( EXISTE TAB1 HELI_WIRE ) ) ; TAB1.HELI_WIRE = FAUX ; FINSI ; SI ( NON ( EXISTE TAB1 HYPERVAP ) ) ; TAB1.HYPERVAP = FAUX ; FINSI ; SI ( ( YTWIST EGA 0. ) ET ( EGA TAB1.HELI_WIRE VRAI )) ; S1 = PI * D1 * D1 / 4. ; SM = PI * TAB1.WIRE_D * TAB1.WIRE_D / 4. ; P1 = PI * D1 ; PM = PI * TAB1.WIRE_D ; TAB1.DH = 4. * ( S1 - SM ) / ( P1 + PM ) ; PIS2Y = PI / ( 2 * TAB1.PITCH_WIRE ) ; FACV = ( 1. + ( PIS2Y ** 2 ) ) ** 0.5 ; * FACV = 1. ; FACF = 1. ; FINSI ; * SI ( NON ( EXISTE TAB1 HYPERVAP ) ) ; TAB1.HYPERVAP = FAUX ; FINSI ; SI ( ( YTWIST EGA 0. ) ET ( EGA TAB1.HYPERVAP VRAI ) ) ; SM = ( TAB1 . LARG_CANAL * TAB1 . HMIN_CANAL ) + ( 2. * ( TAB1 . LARG_ESP * TAB1 . HFIN ) ) ; PM = TAB1 . LARG_CANAL + ( 2.* TAB1 . HMAX_CANAL ) + ( 2. * TAB1 . LARG_ESP ) + ( 2. * TAB1 . HFIN ) + TAB1 . LFIN ; TAB1.DH = 4. * SM / PM ; FACV = 1. ; FACF = 1. ; TAB1.HYP_SM = SM ; FINSI ; * SI ( YTWIST > 0. ) ; SI ( NON ( EXISTE TAB1 'N_CANAUX' )) ; TAB1 . N_CANAUX = 2. ; FINSI ; SS2 = ( ( PI * D1 * D1 / 8.) - ( TTAPE * D1 / 2. ) ) ; S1 = SS2 * TAB1 . N_CANAUX ; QUAS = 4. * SS2 ; PERI = ( ( PI * D1 / 2.) - TTAPE + D1 ) ; TAB1.DH = QUAS / PERI ; TAB1.DHC = 4. * ( ( PI * D1 * D1 / 4.) - ( TTAPE * D1 ) ) / ( ( PI * D1 ) - ( TTAPE * 2.) ) ; PIS2Y = PI / ( 2. * YTWIST ) ; FACV = ( 1. + ( PIS2Y ** 2 ) ) ** 0.5 ; FACF = 1.15 ; FACS = 1.67 ; FINSI ; SI ( EGA TAB1.HYPERVAP VRAI ) ; HLOCAL = HIN + ( QSURFE * XL1 * EL / ( GIN * TAB1.HYP_SM ) ) ; SINON ; HLOCAL = HIN + ( QSURFE * XL1 * EL / ( GIN * S1 ) ) ; FINSI ; SI ( HLOCAL < HSAT ) ; SI ( HLOCAL >EG HIN ) ; TLOCAL = @IPOE HLOCAL TAB1.EHFT ; SINON ; ERREUR '>@FLUCRIT> HLOCAL < HIN' ; FINSI ; SINON ; TLOCAL = TSAT ; * HLOCAL = HSAT ; FINSI ; TAB1.'HLOCAL' = HLOCAL ; @TONG75 TAB1 ; QCHFW = TAB1.CHF ; FINSI ; * * --- Celata94 * SI (EGA ICHOIX 'CELA') ; @CELAT94 TAB1 ; QCHFW = TAB1.CHF ; FINSI ; * * --- fin des appels * SI (EGA I1 1) ; SINON ; FINSI ; I1 = I1 + 1 ; FIN BOUC1 ; LIST L_QCHFW ; * * --- sorties * TAB1.'L_QCHFW' = L_QCHFW ; SI (NIVEAU >EG 4 ) ; FINSI ; FINPROC ; **** @FLUXH DEBPROC @FLUXH TAB1*TABLE ; *--------------------------------------------------------------------- * Procedure @FLUXH *--------------------------------------------------------------------- S_TOT1 = TAB1.M_ILLAGE_TOT ; COTETF1 = COSDIR1 ; SITETF1 = COSDIR2; TETF1 = ATG SITETF1 ( COTETF1 + 1.E-12) ; SI (EXISTE TAB1 'VAL_ANGLEI1'); FINSI ; *1 DDDDDDDDDD SI de niveau 1 : cas DIMENSION 2 SI ( V_DIM1 EGA 2) ; VFON1 = TAB1.VPROFIL_W; XFON1 = TAB1.XPROFIL_W; LPAT1 = TAB1.LFLUX_EXTE; LPAT1D = TAB1.LFLUX_EXTE_DESS ; *dess EVV1 ; *dess EVV2 ; TITRE ' INCIDENT GUN FLUX PROFILE ' ; * ajout RM le 27 10 95 FINSI ; * fin locale de l ajout RM le 27 10 95 FACFM1 = SOM1 / XL_LPAT1 ; VPAT1 = VFON2 * SITETF1; TAB1.'WE_HEATED_N'= XL_LPAT1 * (TAB1 . FSYM_X ); TAB1.'WE_HEATED'= XL_LPAT1 * (TAB1 . FSYM_X ); VPUI_1 = FACFM1 * XL_LPAT1; TAB1.'V_FACFM1' = FACFM1; * * --- test puissance incidente * * calcul apres utilisation de l operateur flux ERR_1 = VPUI_2 * 0.05; SI( NON ( EGA VPUI_1 VPUI_2 ERR_1)); ERREUR 'POWER BALANCE'; SINON; FINSI; SI (NON (EXISTE TAB1 'V_SOM1')); TAB1.'V_SOM1' = SOM1; SINON; TAB1.'V_SOM1' = TAB1.'V_SOM1' + SOM1; FINSI; * 1 MMMMMMMM SINON de niveau 1 : cas DIMENSION 3 SINON ; EXFLUX1 = TAB1.E_XPROFIL_W ; EZFLUX1 = TAB1.E_ZPROFIL_W ; SFLUX1 = TAB1.LFLUX_EXTE ; VXFLUX2 = ( @IPOE XSFLUX1 EXFLUX1 FIXE ) ; VZFLUX2 = ( @IPOE ZSFLUX1 EZFLUX1 FIXE ) ; VXZFLUX2 = VXFLUX2 * VZFLUX2 * COSDIR2 ; TAB1.'V_FACFM1'= VMOY1; SI (NON (EXISTE TAB1 'V_SOM1')); TAB1.'V_SOM1' = SOM1; SINON; TAB1.'V_SOM1' = TAB1.'V_SOM1' + SOM1; FINSI; VPAT1 = VXZFLUX2 / VMOY1 ; *1 FFFFFFFFFF FINSI de niveau 1 : fin du test sur la dimension FINSI ; FINPROC VPAT1 ; **** @FLUXQP * Procedure @FLUXQP * *----------------------------------------------------------------------- DEBPROC @FLUXQP TAB1*TABLE; * ****** ATTENTION --> Cette procedure ne tourne pour l'instant qu'en 2D SI ( V_DIM1 EGA 3) ; MESS '@FLUXQP ne tourne pas en 3D'; ERRE 'Dimension'; FINSI; TAC1 = TABLE; TAC1.2 = 'MARQ TRIB '; TAC1.3 = 'MARQ ETOI '; TAC1.4 = 'MARQ LOSA '; TAC1.5 = 'MARQ CROI '; S_TOT1 = TAB1.M_ILLAGE_TOT ; LPAT1 = TAB1.LFLUX_EXTE ; LPAT1D = TAB1.LFLUX_EXTE_DESS ; COTETF1 = COSDIR1; SITETF1 = COSDIR2; TETF1 = ATG SITETF1 ( COTETF1 + 1.E-12) ; SI (EXISTE TAB1 'VAL_ANGLEI1'); SI (EXISTE TAB1 'CENTRE_PLASMA'); ERREUR 'on ne peut avoir VAL_ANGLEI1 et CENTRE_PLASMA ' ; SINON; SINPA1 = COS ( (TETF1 * -1.) + (TAB1.'VAL_ANGLEI1')); SIALPHA1 = ABS ( COS (TAB1.'VAL_ANGLEI1')); COALPHA1 = ABS ( SIN (TAB1.'VAL_ANGLEI1')); XLPAT1 = (XXPAT1*COALPHA1) + (YYPAT1*SIALPHA1); XLPAT3 = XLPAT1; FINSI; SINON; SI (NON (EXISTE TAB1 'CENTRE_PLASMA')); ERREUR 'vous n avez pas donne TAB1.VAL_ANGLEI1'; SINON; SI ( NON LOG1); FINSI; RXY = ((XXPAT1 * XXPAT1)+(YYPAT1 * YYPAT1))** 0.5 ; ALPH1 = ATG XXPAT1 (YYPAT1 + 1.E-6) ; XLPAT1 = RXY - R0 ; SINPA1 = SIN ( ALPH1 + 90. - TETF1 ) ; MASP1 = XXPAT1 MASQUE 'EGSUPE' 0. ; MASM1 = XXPAT1 MASQUE 'INFERIEUR' 0. ; XLPAT3 = (XLPAT1 * MASP1) - (XLPAT1 * MASM1) ; FINSI; FINSI; MLAMB1 = ( TAB1 . 'LAMDAQ' ) * -1. ; ELPAT1 = EXP ( XLPAT1 / MLAMB1 ) ; ; VPAT1 = ELPAT1 * (ABS SINPA1) ; *********** cas LAMBDAQ VPAT1 = exp*sinus TAC1.TITRE = TABLE ; *TITRE 'SIN(teta)' ; *TITRE 'EXP(-DL/LAMB)' ; *TITRE 'SIN(teta)*EXP(-DL/LAMB)' ; TAC1.TITRE.1 = 'SIN(teta)'; TAC1.TITRE.2 = 'EXP(-DL/LAMB)'; TAC1.TITRE.3 = 'SIN(teta)*EXP(-DL/LAMB)' ; *TAC1.4 = 'MARQ LOSA REGU TITR EXP(-DL/LAMB)' ; *TAC1.5 = 'MARQ CROI REGU TITR SIN(teta)*EXP(-DL/LAMB)' ; *TAC1.6 = 'MARQ PLUS REGU TITR SIN(teta)*EXP(-DL/LAMB)' ; TITRE 'SIN,EXP,SIN*EXP' ; TITRE 'EXP(-DL/LAMB) fonction de DL ' ; TITRE 'EXP(-DL/LAMB) fonction de DL '; DESS EV5 LEGE; *********** cas LAMBDAQ VPAT1 = exp*sinus *********** cas LAMBDAQ SOM1 = somme ( exp*sinus) *********** cas LAMBDAQ FACFM1 = SOM1 / largeur FACFM1 = SOM1 / XL_LPAT1; SI (EXISTE TAB1 'LAMDAQ2'); LPAT2 = TAB1.LFLUX_EXT2 ; LPAT2D = TAB1.LFLUX_EXT2 ; COSDIR1 COSDIR2 COSDIR3 = @VNORM3D S_TOT1 LPAT2 TAB1.'NIVEAU'; COTETF2 = COSDIR1 * 1. ; SITETF2 = COSDIR2 * 1. ; COTETF1 = @ET COTETF1 COTETF2 ; SITETF1 = @ET SITETF1 SITETF2 ; TETF2 = ATG SITETF2 ( COTETF2 + 1.E-12) ; SINPA2 = COS ( (TETF2 * -1.) + (TAB1.'VAL_ANGLEI2')); SIALPHA2 = ABS ( COS (TAB1.'VAL_ANGLEI2')) ; COALPHA2 = ABS ( SIN (TAB1.'VAL_ANGLEI2')); XLPAT2 = (XXPAT2*COALPHA2) + (YYPAT2*SIALPHA2); MLAMB2 = ( TAB1 . 'LAMDAQ2' ) * -1.; ELPAT2 = EXP ( XLPAT2 / MLAMB2 ); VPAT2 = ELPAT2 * SINPA2; VPAT1 = VPAT2 + VPAT1; * VPAT1 = VPAT2; TITRE 'SIN(teta)*EXP(-DL/LAMB)'; TAC1 = TABLE ; TAC1.2 = 'MARQ TRIB ' ; TAC1.3 = 'MARQ ETOI ' ; TAC1.4 = 'MARQ LOSA ' ; TITRE 'SIN(teta)'; TITRE 'EXP(-DL/LAMB)' ; TITRE 'SIN(teta)*EXP(-DL/LAMB)'; TITRE 'EXP(-DL/LAMB) fonction de DL, ligne 2 '; TAC1.2 = 'MARQ TRIB TITRE EXP(-DL/LAMB)' ; DESS EV5 LEGE TAC1; XL_LPAT1 = XL_LPAT1 + XL_LPAT2; FACFM1 = SOM1 / XL_LPAT1; FINSI; TAB1.'WE_HEATED_R'= XL_LPAT1 * (TAB1.FSYM_X); TAB1.'WE_HEATED'= XL_LPAT1 * (TAB1.FSYM_X); VPUI_1 = FACFM1 * XL_LPAT1; ERR_1 = VPUI_2 * 0.05; SI( NON ( EGA VPUI_1 VPUI_2 ERR_1)); * ERREUR 'BILAN DES PUISSANCES'; FINSI; SI (NON (EXISTE TAB1 'V_SOM1')); TAB1.'V_SOM1' = SOM1; SINON; TAB1.'V_SOM1' = TAB1.'V_SOM1' + SOM1; FINSI; TAB1.'V_FACFM2'= FACFM1; FINPROC VPAT1; **** @FLUXTOT *----------------------------------------------------------------------- * Procedure @FLUXTOT *----------------------------------------------------------------------- DEBPROC @FLUXTOT TAB1*TABLE; * *********************************************************************** * @FLUXTOT developpee par Nicolas URAGO (avr-sept 1994) * * largement revisitee par Jacques SCHLOSSER et Alain MOAL (aout 1995) * *********************************************************************** ******* ATTENTION --> Cette procedure ne tourne qu'en 3D et ne peut * traiter que des cas de limiteurs plancher car * Z (point tangent) = Z (centre du plasma) * * *-------------------- VARIABLES D'ENTREE LPAT1 = TAB1.LFLUX_EXTE ; GRP1 = TAB1.GRAND_RAYON ; IMESS = TAB1.'NIVEAU' ; PTG = TAB1.'PT_TGPLASMA'; MODEL0 = TAB1.'MODELF' ; LAMBQ = TAB1.LAMDAQ ; LISFLU = TAB1.LIS_FLUX ; OEIL0 = TAB1.VIEW_P ; * SI (EXISTE TAB1 ANGLE_DEC) ; PSI = TAB1.ANGLE_DEC ; SINON; PSI = 0.0 ; FINSI; *--------------------------------------- * *---- On calcule pour chaque point de LPAT1, les coordonnees *---- de son'centre plasma'. GRAYP1 = (XP1**2 + (YP1**2))**0.5 ; XCP1 = XP1 * GRP1 / GRAYP1 ; YCP1 = YP1 * GRP1 / GRAYP1 ; * AUX1 = ((XCP1 - XP1)**2 + ((YCP1 - YP1)**2))**0.5; BETA1 = ATG (AUX1/ZP1) ; ALPHA2 = ATG YCP1 XCP1 ; * *---- le vecteur tangent aux lignes de champ B est orthogonal *---- a V = P1CP1 VX1 = XCP1 - XP1 ; VY1 = YCP1 - YP1 ; VZ1 = ZP1 * -1. ; * *---- B appartient au plan defini par les vecteurs K (0, 0, 1) et U *UX1 = SIN (PSI + ALPHA2) ; *UY1 = (COS (PSI + ALPHA2)) * -1. ; *UZ1 = UX1 * 0. ; * UX1 = SIN (PSI - ALPHA2) ; UY1 = COS (PSI - ALPHA2) ; UZ1 = UX1 * 0. ; * *---- calcul de B BZ = ((VZ1*UX1)**2 + ((VZ1*UY1)**2)) / ((VX1*UX1 + (VY1*UY1))**2) + 1. ; BZ = BZ**(-0.5) * -1.; BY = BZ * (VZ1*UY1) /(VX1*UX1 + (VY1*UY1)) * -1. ; BX = BY * UX1 / UY1 ; * *---- Calcul du produit scalaire : VECTEUR TANGENT . NORMALE COS_BN = ABS ((BX*NX) + (BY*NY) + (BZ*NZ)) ; * *---- Coordonnees du point de tangence * *---- Centre du plasma au dessus du point de tangence XCREF1 = XREF1 * GRP1 / ((XREF1**2 + (YREF1**2))**0.5); YCREF1 = YREF1 * GRP1 / ((XREF1**2 + (YREF1**2))**0.5); * *---- DREF1 est le petit rayon du plasma DREF1 = (((XREF1-XCREF1)**2) + ((YREF1-YCREF1)**2) + (ZREF1**2))**.5; DIST1 = (((XP1 - XCP1)**2) + ((YP1 - YCP1)**2) + (ZP1**2))**.5; * *---- Distance a la DSMF LDEC1 = DIST1 - DREF1 ; * *---- Calcul du profil de flux VPAT1 = COS_BN * (EXP (LDEC1/(-1.*LAMBQ))) ; * *---- Visualisations ARET0 = ARETE LPAT1 ; TITRE '@FLUXTOT : B.N = COSINUS OF THE INCIDENCE ANGLE'; TRAC OEIL0 COS_BN LPAT1 ARET0; TITRE '@FLUXTOT : TANGENT VECTOR TO THE MAGNETIC LINE'; VB = @CVECT BX BY BZ LPAT1 VERT; TRAC OEIL0 VB LPAT1 ; TITRE '@FLUXTOT : DISTANCE TO THE LCFS' ; TRAC OEIL0 LDEC1 LPAT1 ARET0; TITRE '@FLUXTOT : PROFILE OF THE INCIDENT FLUX' ; TRAC OEIL0 VPAT1 LPAT1 ARET0; * *-------------------- VARIABLES EN SORTIE *---- flux moyen et puissance *----------------------------------------- * FINPROC VPAT1 ; **** @FLUXX DEBPROC @FLUXX TAB1*TABLE; *---------------------------------------------------------------------- * Procedure de calcul de flux incident dans differents cas de geometrie * * TAB1.DEPOT_FLUX = MOT 'CANON' : CANON A ELECTRON @FLUXH * MOT 'PLASMAFLUX_2D' : PLASMA ou flux 2D @FLUXQP * MOT 'PLASMA_3D' : PLASMA, 3D @FLUXTOT * MOT 'FLUX_3D' : FLUX 3D directions // @FLUX_3D * MOT 'RIPPLE_SHIFT' : 2D ou 3D avec @TOKAFLU * RIPPLE et SHIFT * de SHAFRANOV * *'PLASMAFLUX_2D' regroupe en fait 3 cas : * plasma en coupe poloidale (petit cercle) * plasma en coupe toroidale (bande) * plasma modelise par des lignes // *js 26/3/96 *js TAB1.LIS_FLUX est une des entrees il faudrait pour plus de clarte *js TAB1.LIS_FLUXM cas du canon a electron *js TAB1.LIS_FLUX = TAB1.LIS_PHI0 cas des PLASMAS *js *js *js il sort de la procedure *js *js TAB1.'VFPAT1'.INT1 chpoint du chargement total *js *js TAB1.'LIS_FLUMOYEN' liste des flux moyens en principe au sens de *js la MESU TAB1.LFLUX_EXTE (mais ce qui n'est pas bon c'est que parfois *js c'est pris sur la largeur de srape off layer intercepte *js *js *js TAB1.'LIS_PUI1' c'est en principe TAB1.'LIS_FLUMOYEN' *(MESUTAB1.LFLUX_EXTE) *js *js il faudrait tjs faire dans cette procedure *js *js FPAT1 = FLUX (TAB1 . 'MODELF') TAB1.'VFPAT1'.INT1 ; *js TAB1.'LIS_PUI1' = TAB1.'LIS_PUI1' ET PROG ((RESU FPAT1)) ; *js TAB1.'LIS_FLUMOYEN' = TAB1.'LIS_PUI1' /(MESU TAB1.LFLUX_EXTE); *js *js une fois ces changements faits proprement *js *js attention aux modif dans TPERM (facile) PPERM *js (complexe mais ca devrait eclaicir) *js et TTRANS PTRANS *js et dans les procedures appelees par FLUXX *js une fois ces modifs faites il est facile de rajouter un flux additionnel *js TAB1.'VFPAT1'.INT1 = TAB1.'VFPAT1'.INT1 + TAB1.FLUX_ADDITIONNEL *js *js *js *MESS 'JS 220296 Attention il faut maintenant concatener'; *MESS 'cat fluxx.procedur fluxh.procedur fluxqp.procedur' ; *MESS ' fluxtot.procedur flux_3d.procedur > fluxx.bidon' ; *MESS 'et utiliser fluxx.bidon a la place de fluxx.procedur'; *MESS 'en cas de pb l ancienne procedure est disponible dans'; *MESS ' ~schlos/fluxx.procedur.220296.old'; * MESS ' '; * * --- entrees * NIVEAU = TAB1.'NIVEAU'; SI (NIVEAU >EG 4) ; FINSI ; *************** * ON TESTE SI IL Y A UN FLUX OU DEUX FLUX A SUPERPOSER. SI (EXISTE TAB1 LIS_FLUXP); BOOL1 = VRAI; TMP = TABLE; SINON; FINSI; SINON; BOOL1 = FAUX; FINSI; ************ * CONSTRUCTION DE VPAT1 : PROFIL DU FLUX INCIDENT * SI (EXISTE TAB1 DEPOT_FLUX); IVERIF = 0 ; SI (EGA TAB1.DEPOT_FLUX 'CANON'); VPAT1 = @FLUXH TAB1; IVERIF = 1 ; FINSI ; SI (EGA TAB1.DEPOT_FLUX 'PLASMAFLUX_2D'); VPAT1 = @FLUXQP TAB1; IVERIF = 1 ; SI BOOL1; TMP = TAB1.LIS_FLUX; TAB1.LIS_FLUX = TAB1.LIS_FLUXP; VPAT2 = @FLUXH TAB1; TAB1.LIS_FLUX = TMP; FINSI; FINSI ; SI (EGA TAB1.DEPOT_FLUX 'FLUX_3D'); VPAT1 = @FLUX_3D TAB1; IVERIF = 1 ; FINSI ; SI (EGA TAB1.DEPOT_FLUX 'PLASMA_3D'); VPAT1 = @FLUXTOT TAB1; IVERIF = 1 ; FINSI ; SI (EGA TAB1.DEPOT_FLUX 'RIPPLE_SHIFT'); VPAT1 = @TOKAFLU TAB1; SI (EXISTE TAB1 <PENETRATION) ; SI (TAB1.<PENETRATION) ; * ---- Prise en compte de la penetration PROFPEN0 = @TOKAPEN TAB1; VPAT1 = VPAT1 + PROFPEN0 ; FINSI; FINSI; SI (EXISTE TAB1 <PUISSANCE_EXTRAITE) ; FINSI ; * ---- pourquoi ne prendre que la derniere valeur de TAB1.LIS_FLUX IVERIF = 1 ; FINSI ; SI (IVERIF EGA 0) ; FINSI ; SINON ; FINSI ; TAB1.V_VPAT1 = VPAT1; *********** * CONSTRUCTION DE VFPAT1 : FLUX INCIDENT * TAB1.'VFPAT1' = TABLE; INT1 = 0; REPETER BOUC1 DIME1; INT1 = INT1 + 1; FIN BOUC1; * AJOUT DU SECOND FLUX SI BESOIN SI BOOL1; INT1 = 0; REPETER BOUC2 DIME1; INT1 = INT1 + 1; FIN BOUC2; FINSI; *********************************** * PRISE EN COMPTE DE LA PENETRATION SI ((NEG TAB1.DEPOT_FLUX 'CANON') ET (EXISTE TAB1 PENETRATION)); @CALPENE TAB1; FINSI; ***************************************** * CALCUL DE LA PUISSANCE ET DU FLUX MOYEN SI (TAB1.PERMANENT); INT2 = 0; SINON; SI (TAB1.TRANSITOIRE); SINON; FINSI; FINSI; SI ((EGA TAB1.DEPOT_FLUX 'CANON') OU BOOL1); SI BOOL1; TAB1.'LIS_FLUMOYEN' = TAB1.LIS_FLUXP * TAB1.V_FACFM1; SINON; TAB1.'LIS_FLUMOYEN' = TAB1.LIS_FLUX * TAB1.V_FACFM1; FINSI; TAB1.'LIS_PUI1' = TAB1.'LIS_FLUMOYEN' * TAB1.L_HEATED * TAB1.WE_HEATED_N; FINSI; SI (NON (EGA TAB1.DEPOT_FLUX 'CANON')); TAB1.'LIS_FLUMOYEN' = TAB1.LIS_FLUX * TAB1.V_FACFM2; SI (EGA TAB1.DEPOT_FLUX 'PLASMAFLUX_2D'); SI (EXISTE TAB1 CENTRE_PLASMA); TAB1.'LIS_PUI1' = TAB1.'LIS_FLUMOYEN' * TAB1.B_HEATED * TAB1.WE_HEATED_R; SINON; TAB1.'LIS_PUI1' = TAB1.'LIS_FLUMOYEN' * TAB1.L_HEATED * TAB1.WE_HEATED_R; FINSI; SI (EXISTE TAB1 PENETRATION); TAB1.'LIS_PUI1' = TAB1.LIS_PUIPENE * TAB1.L_HEATED; FINSI; SINON; SINON ; SI ( EXISTE TAB1 B_HEATED) ; SINON ; FINSI ; FINSI ; FINSI; FINSI; *jsTAB1.'FLU1' = TABLE; *jsTAB1.'PUI1' = TABLE; *jsNB1 = (DIME TAB1.LIS_FLUX) - INT2; *jsREPETER BOUC3 NB1; *js INT2 = INT2 + 1; *js TAB1.'PUI1'.INT2 = 0.; *js SI ((EGA TAB1.DEPOT_FLUX 'CANON') OU BOOL1); *js SI BOOL1; *js FLU1 = (EXTR TAB1.LIS_FLUXP INT2) * TAB1.V_FACFM1; *js SINON; *js FLU1 = (EXTR TAB1.LIS_FLUX INT2) * TAB1.V_FACFM1; *js FINSI; *js TAB1.'FLU1'.INT2 = FLU1; *js TAB1.'PUI1'.INT2 = FLU1 * TAB1.L_HEATED * TAB1.WE_HEATED_N; *js FINSI; *js SI (NON (EGA TAB1.DEPOT_FLUX 'CANON')); *js FLU1 = (EXTR TAB1.LIS_FLUX INT2) * TAB1.V_FACFM2; *js TAB1.'FLU1'.INT2 = FLU1; *js SI (EGA TAB1.DEPOT_FLUX 'PLASMAFLUX_2D'); *js SI (EXISTE TAB1 CENTRE_PLASMA); *js TAB1.'PUI1'.INT2 = TAB1.'PUI1'.INT2 *js + (FLU1 * TAB1.B_HEATED * TAB1.WE_HEATED_R); *js SINON; *js TAB1.'PUI1'.INT2 = TAB1.'PUI1'.INT2 *js + (FLU1 * TAB1.L_HEATED * TAB1.WE_HEATED_R); *js FINSI; *js SI (EXISTE TAB1 PENETRATION); *js TAB1.'PUI1'.INT2 = TAB1.'PUI1'.INT2 *js + (TAB1.PUIPENE.INT2 * TAB1.L_HEATED); *js FINSI; *js SINON; *js TAB1.'PUI1'.INT2 = FLU1 * (MESU TAB1.LFLUX_EXTE); *js FINSI; *js FINSI; *jsFIN BOUC3; SI (NIVEAU >EG 4) ; FINSI ; list TAB1.'LIS_FLUMOYEN'; list TAB1.'LIS_PUI1'; FINPROC; **** @FLUX_3D *-------------------------------------------------------------------- * Procedure @FLUX_3D *-------------------------------------------------------------------- DEBPROC @FLUX_3D TAB1*TABLE; * ****** ATTENTION --> Cette procedure ne tourne qu'en 3D S_TOT1 = TAB1.M_ILLAGE_TOT ; LPAT1 = TAB1.LFLUX_EXTE ; SI ((EXISTE TAB1 VAL_ANGLEI1) ET (EXISTE TAB1 VAL_ANGLEI2)); SI (EXISTE TAB1 CENTRE_PLASMA); ERREUR 'ON NE PEUT PAS AVOIR ANGLEI1 ET LE CENTRE DU PLASMA'; FINSI; SINON; ERR 'CAS NON PREVU POUR L INSTANT'; FINSI; * * CALCUL DES DISTANCES AU POINT DE TANGENCE ******************************************* COSP1 = (COS TAB1.VAL_ANGLEI1) * (COS TAB1.VAL_ANGLEI2); COSP2 = (COS TAB1.VAL_ANGLEI1) * (SIN TAB1.VAL_ANGLEI2); COSP3 = SIN TAB1.VAL_ANGLEI1; A1 = (COSP1*(XPTG - XP1)) + (COSP2*(YPTG - YP1)) + (COSP3*(ZPTG - ZP1)); B1 = (COSP1**2) + (COSP2**2) + (COSP3**2); T1 = A1/B1; XM1 = XPTG - (T1 * COSP1); YM1 = YPTG - (T1 * COSP2); ZM1 = ZPTG - (T1 * COSP3); L1 = (((XM1 - XP1)**2) + ((YM1 - YP1)**2) + ((ZM1 - ZP1)**2))**.5; * * CALCUL DU PRODUIT SCALAIRE FLUX.NORMALE ***************************************** VPAT1 = EXP (-1.*L1/TAB1.LAMDAQ) * SIN1; * * CALCUL DU FLUX MOYEN ET DE LA PUISSANCE ***************************************** FINPROC VPAT1; **** @FRENET ***************************************************************** * PROCEDURE FRENET : CALCUL DU REPERE DE FRENET LE LONG D'UNE LIGNE ***************************************************************** LOG1 = EXISTE MOT1; SI (DIMGEO > 2); IP = 1 ; REPETER BOUC1 (NEL - 1) ; IP = IP + 1 ; * mess 'ip =' ip ; LII = EIP1 ET EIP2 ; SI (IP < NEL); INCR = IP; REPETER BOUC2 ; INCR = INCR + 1 ; * MESS ' INCR = ' INCR; QUITTER BOUC2 ; FINSI ; SI (INCR EGA NEL) ; * MESS 'PERPENDICULAIRE A L AXE X'; QUITTER BOUC2 ; SINON ; * MESS 'PERPENDICULAIRE A L AXE Y'; QUITTER BOUC2 ; FINSI ; FINSI ; FIN BOUC2 ; V4 = V42 ; SINON ; * MESS ' DERNIER VECTEUR '; V4 = BPI; FINSI; FINSI; BPI = V4 * ( 1. / NV4 ) ; SI (EGA IP 2) ; CHB = CHBI ; CHN = CHNI ; CHT = CHTI ; SINON ; CHB = CHB ET CHBI ; CHN = CHN ET CHNI ; CHT = CHT ET CHTI ; FINSI ; FIN BOUC1 ; * MESS 'ELEMENT N0 1' ; RAP12 = (DS1+DS2)/2; RAP23 = (DS2+DS3)/2; RAP34 = (DS3+DS4)/2; PR2 = (R3-R2)/RAP23; PR3 = (R4-R3)/RAP34; PT2 = (T3-T2)/RAP23; PT3 = (T4-T3)/RAP34; RAP = (DS1+(2*DS2)+DS3)/(DS2+(2*DS3)+DS4); PR1 = PR2+((PR2-PR3)*RAP); R1 = R2-(PR1*RAP12); ALPHA1 = -1. * (DS1/R1)* (180. / PI); SI (T2 > 1.E98); BETA1 = 0. ; FINSI ; SI (T3 > 1.E98) ; SI (T2 > 1.E98); BETA1 = 0. ; SINON ; TT1 = (1./T2)*(1. + RAP) ; T1 = 1./TT1 ; BETA1 = (DS1/T1)*180/PI; FINSI ; FINSI ; SI ((T2 < 1.E98) ET (T3 < 1.E98)) ; PT1 = PT2+((PT2-PT3)*RAP); T1 = T2-(PT1*RAP12); BETA1 = (DS1/T1)*180./PI ; FINSI ; VN2 = NXI2 NYI2 NZI2 ; VT2 = TXI2 TYI2 TZI2 ; VB2 = BXI2 BYI2 BZI2 ; CHT = CHT ET CHTI ; CHN = CHN ET CHNI ; CHB = CHB ET CHBI ; * MESS 'ELEMENT N0 NEL' ; RAP12 = (DS1+DS2)/2; RAP23 = (DS2+DS3)/2; RAP34 = (DS3+DS4)/2; PR2 = (R3-R2)/RAP23; PR3 = (R4-R3)/RAP34; PT2 = (T3-T2)/RAP23; PT3 = (T4-T3)/RAP34; RAP = (DS1+(2*DS2)+DS3)/(DS2+(2*DS3)+DS4); PR1 = PR2+((PR2-PR3)*RAP); R1 = R2-(PR1*RAP12); ALPHA1 = (DS1/R1)*180./PI; SI (T2 > 1.E98); BETA1 = 0. ; FINSI ; SI (T3 > 1.E98) ; SI (T2 > 1.E98); BETA1 = 0. ; SINON ; TT1 = (1./T2)*(1. + RAP) ; T1 = 1./TT1 ; BETA1 = -1.*(DS1/T1)*180/PI; FINSI ; FINSI ; SI ((T2 < 1.E98) ET (T3 < 1.E98)) ; PT1 = PT2+((PT2-PT3)*RAP); T1 = T2-(PT1*RAP12); BETA1 = -1.*(DS1/T1)*180/PI ; FINSI ; VN2 = NXI2 NYI2 NZI2 ; VT2 = TXI2 TYI2 TZI2 ; VB2 = BXI2 BYI2 BZI2 ; VB = VB2 ; CHT = CHT ET CHTI ; CHN = CHN ET CHNI ; CHB = CHB ET CHBI ; DL = (((XMAX - XMIN)**2) + ((YMAX -YMIN)**2) + ((ZMAX -ZMIN)**2))**0.5 ; AMP = DL/10. ; SI (LOG1 EGA VRAI); TITRE 'REPERE DE FRENET DE LA LIGNE' ; FINSI; SINON ; O = 0. 0.; IP = 1; REPETER BOUC2 (NEL - 1); IP =IP+1; * MESS ' IP = ' IP; SI (EGA IP 2) ; CHN = CHNI ; CHT = CHTI ; SINON ; CHN = CHN ET CHNI ; CHT = CHT ET CHTI ; FINSI; FIN BOUC2; * MESS 'ELEMENT N0 1' ; RAP12 = (DS1+DS2)/2; RAP23 = (DS2+DS3)/2; RAP34 = (DS3+DS4)/2; PR2 = (R3-R2)/RAP23; PR3 = (R4-R3)/RAP34; RAP = (DS1+(2*DS2)+DS3)/(DS2+(2*DS3)+DS4); PR1 = PR2+((PR2-PR3)*RAP); R1 = R2-(PR1*RAP12); ALPHA1 = -1. * (DS1/R1)* (180. / PI); VN2 = NXI2 NYI2 ; VT2 = TXI2 TYI2 ; VB2 = BXI2 BYI2 ; VB = VB2 ; CHT = CHT ET CHTI ; CHN = CHN ET CHNI ; * MESS 'ELEMENT N0 NEL' ; RAP12 = (DS1+DS2)/2; RAP23 = (DS2+DS3)/2; RAP34 = (DS3+DS4)/2; PR2 = (R3-R2)/RAP23; PR3 = (R4-R3)/RAP34; RAP = (DS1+(2*DS2)+DS3)/(DS2+(2*DS3)+DS4); PR1 = PR2+((PR2-PR3)*RAP); R1 = R2-(PR1*RAP12); ALPHA1 = (DS1/R1)*180./PI; VN2 = NXI2 NYI2 ; VT2 = TXI2 TYI2 ; CHT = CHT ET CHTI ; CHN = CHN ET CHNI ; DL = (((XMAX - XMIN)**2) + ((YMAX -YMIN)**2))**0.5 ; AMP = DL/10. ; SI (LOG1 EGA VRAI); TITRE 'REPERE DE FRENET DE LA LIGNE' ; FINSI; FINSI ; FINPROC CHT CHN CHB ; **** @FRENETT 'DEBPROC' @FRENETT LIGN_1*MAILLAGE ; SI( V1 EGA 2 ) ; * CHT CHN CHB = @FRENET LIGN_1 'TRACE' ; CHPP = CHT ET CHN ; SINON ; * CHT CHN CHB = @FRENET LIGN_1 'TRACE' (0. 0. 1000.); CHPP = CHT ET CHN ET CHB ; FINSI ; 'FINPROC' CHPP; **** FROTTER *--------------------------------------------------------------------- * PROCEDURE FROTTER VERSION DU 15/11/87 * MODIFICATION RECUE LE 22/09/1992 *--------------------------------------------------------------------- * CETTE PROCEDURE SERT A CALCULER LE CONTACT AVEC FROTTEMENT * * SYNTAXE : * ------- * * * SOL RE = FROTTER RIG FOR BLOCAG COEF ; * * RIG : LA RIGIDITE AVEC SES BLOCAGES AUTRES QUE UNILATERAUX * ET DE FROTTEMENT * FOR : LE VECTEUR SECOND MEMBRE * BLOCAG : LES BLOCAGES UNILATERAUX ET DE FROTTEMENT * COEF : LES COEFFICIENTS DE FROTTEMENT * * EN SORTIE : DE : LA SOLUTION * RE : LES REACTIONS D'APPUIS * RIAD * *--------------------------------------------------------------------- * DEBPROC FROTTER ZR*RIGIDITE FFF*CHPOINT BBN*RIGIDITE BBT*RIGIDITE ZCOEF*CHPOINT ZEZE*MAILLAGE IPAPA*ENTIER; * *---------------------------------------------------------------------- * *-------------------- * INITIALISATIONS *-------------------- * MAXIT = 10 ; *----------------------- MILL 16 / 4 /92 *ZPREC1 = 1.E-8; *ZPREC2 = 1.E-4 ; ZPREC1 = 1.E-10; ZPREC2 = 1.E-8 ; *----------------------- BBB = BBN ET BBT ; *MESS ' LES NOEUDS ASSOCIES A BBN ' ;NOBBN =EXTRAI BBN MAIL MULT ; *LIST NOBBN; *MESS ' LES NOEUDS ASSOCIES A BBT ' ;NOBBT =EXTRAI BBT MAIL MULT ; *LIST NOBBT; SI ( EGA SSDIM 3 ) ; OEIL = -1000 -1500 20000 ; FINSI ; * *------------------------------ * CALCUL DU SUPER ELEMENT *------------------------------ * STAT = VRAI ; FFF0= DEPIMP BBB 0.; FA = FFF ET FFF0; *MESS ' VECTEUR FFF EN ENTREE DE FROTTER ' ; *LIST FFF ; *MESS ' VECTEUR F SORTI DE SUPER ' ; LIST F ; DETR FFF0 GEOM ; * *----------------------- * INITIALISATIONS *----------------------- * ITER = 0 ; NCONV = VRAI ; *MESS ' DEPTOT ' ; LIST DEPTOT ; FDEPTO = F ET DEPTOT ; *MESS ' VOICI FDEPTO ' ; LIST FDEPTO ; RITOU = RISUP ET BBB ; * INITIALISER LISEA A UNE VALEUR IMPOSSIBLE FDEPTOT=F ; *MESS ' ON MOYENNE LES FORCES DE FROTTEMENT ' ; * *--------------- * ITERATIONS *--------------- * SAUTER 2 LIGNE ; REPETER BOUCL1 MAXIT ; ITER = ITER + 1 ; DRES = DE ; *MESS ' ON ATTAQUE LA RESOLUTION ' ; *MESS ' VOICI LES FORCES ' ; LIST FDEPTOT ; *MESS ' VOICI LES RAIDEURS ' ; LIST RITOU ; DE=RESOU NOID NOUNIL RITOU FDEPTOT; *MESS ' VOICI LA SOLUTION SORTIE DE RESOU ' ; LIST DE ; * * ICI L'ACCELERATION DE CONVERGENCE * ELLE SEMBLE UN PEU FOIREUSE PAR MOMENTS * * SI ('MULT' ITER 30000) ; SI NCONVT ; SI LENEW; 'DETR' DE ; DE = ZDP1 ; FINSI ; FINSI ; FINSI ; 'SI' (ITER > 1 ) ; ZDEPN2 = ZDEPN1 ; 'FINSI' ; ZDEPN1 = 'COPIER' DE 'GEOM' ; *MESS ' LES DEPLACEMENTS ' ; LIST DE ; *MESS ' FORCES NORMALES ' ; LIST ( REDU DE NOBBN); *MESS ' FORCES TANGENTES' ; LIST ( REDU DE NOBBT); * * PETIT DESSIN * VV =VECTEUR FDEPTOT 0.1 FX FY VERT; *DEF0=DEFOR ZEZE DE 0 BLEU; *DEF1=DEFOR ZEZE DE 10 VV ROSE; *TRAC ( DEF0 ET DEF1 ) ; * OPTI DONN 5 ; *MESS ' ON APPELLE GLISSER ' ; *MESS ' ON IMPRIME BBB ' ; LIST BBB ; *OPTI IMPI 528 ; *OPTI IMPI 530 ; SI ( >EG IPAPA 7); *OPTI IMPI 530 ; * OPTI IMPI 528 ; FINSI; *BLOTO RIAD LISEN FROTB = BBB GLISSER DE DEPTOT FPRES ZCOEF ; *MESS ' ON IMPRIME BLOTO ' ; LIST BLOTO ; *FROT = ( FROTB + FPRES ) / 2. ; *MESS ' LES FORCES DE FROTTEMENT FROT ' ; LIST FROT ; SI ( EGA SSDIM 3 ) ; *$$ON ESSAYE DE TRACER CES FORCES *VV1 =VECTEUR FROTB 0.1 FX FY FZ VERT; *VV2 =VECTEUR FROT 0.1 FX FY FZ ROUG; *VV3 =VECTEUR FPRES 0.1 FX FY FZ JAUN; *DEF10=DEFOR ZEZE DE 0 VV1 BLEU ; *DEF1=DEFOR ZEZE DE 0 VV1 BLEU ; *DEF2=DEFOR ZEZE DE 0 VV2 TURQ ; *DEF3=DEFOR ZEZE DE 0 VV3 ROSE ; *TRAC OEIL ( DEF1 ET DEF2 ET DEF3 ) ; *TRAC OEIL DEF1 ; FINSI ; SI ( EGA SSDIM 2 ) ; *DEF10=DEFOR ZEZE DE 0 BLEU ; *DEF1=DEFOR ZEZE DE VV1 TURQ ; *DEF2=DEFOR ZEZE DE 0 VV2 TURQ ; *DEF3=DEFOR ZEZE DE 0 VV3 ROSE ; *TRAC OEIL ( DEF1 ET DEF2 ET DEF3 ) ; *TRAC ( DEF1 ET DEF10) ; FINSI ; *----------------------------- * TESTS DE CONVERGENCE *----------------------------- * D'ABORD SUR LES CONTACTS *----------------------------- NCONVT = FAUX ; SI (LISEN EGA LISEA) ; MESS ' ON A CONVERGE LES CONTACTS ' ; NCONVT = VRAI ; FINSI; *------------------------------------------------------------- * ENSUITE SUR LES FORCES DE FROTTEMENT ET LES DEPLACEMENTS *------------------------------------------------------------- SI NCONVT; LENEW=FAUX; * * TEST SUR LES FORCES DE FROTTEMENT * *MESS ' La difference sur les forces de frottement'; *list fdiff; SI ( EGA DENOM 0. ) ; SINON ; FINSI ; SI ( KRIT1 < ZPREC1 ) ; LENEW=VRAI; * * TEST SUR LES DEPLACEMENTS * FDIFF = DE - DRES; FDIFF = ENLEVER FDIFF 'LX' ; * MESS ' La difference sur les deplacements'; *list fdiff; SI ( EGA DENOM 0. ) ; SINON ; FINSI ; * SI ( KRIT2 < ZPREC2) ; NCONV = FAUX ; DETR LISEN ; QUITTER BOUCL1 ; FINSI ; FINSI ; FINSI ; * DETRUIRE RITOU; DETRUIRE LISEA; *---------------------- MILL 16/4/92 RITOU = RISUP ET BLOTO ; * RITOU = RISUP ET BLOTO ET RIAD ; *---------------------- BLOTT= BLOTO; LISEA=LISEN; *---------------------- MILL 16/4/92 *MESS ' VOICI FROT ' ; LIST FROT ; *---------------------- * * ON SUPPRIME LA GESTION DES JEUX SUR LES NOEUDS DES BLOCAGES * DE FROTTEMENT *---------------------- MILL 16/4/92 * FDEPTOT= FDEPTO - ( REDU FDEPTO GEOT ) ; *---------------------- * ON REMET LA GESTION DES JEUX SUR LES NOEUDS DES BLOCAGES * DE FROTTEMENT MAIS EN PLUS SUBTIL * DU COUP CA MARCHE POUR LES INCREMENTS DE FORCE NULS, * MAIS CA NE MARCHERA PAS EN CAS DE DEPLACEMENT IMPOSE * ASSOCIE A UNE CONDITION DE BLOCAGE AVEC FROTTEMENT * *---------------------- MILL 18/9/92 *---------------------- FIN BOUCL1; * * ON FAIT UN PEU DE MENAGE * MENAGE; * SI NCONV ; MESS ' IL N Y A PAS DE SOLUTION AU SYSTEME '; RITOU = RISUP ET BBB ; SINON; * * *----------------------------------- * CALCUL SUR TOUTE LA STRUCTURE *----------------------------------- * RIINT = EXTRAI SUP RIGT ; DETRUIRE DE1; DETRUIRE RE1 GEOM; DETRUIRE DPFFF GEOM; * * LES REACTIONS * * FINSI ; * SI ( NEG ITER 1 ) ; DETRUIRE FDEPTOT GEOM ; FINSI ; DETR FA GEOM; * FINPRO DE2 RE2 FROT RIAD; **** HELICE ****************************************************** * PROCEDURE HELICE DE MAILLAGE EN HELICE ****************************************************** DEBPROC HELICE P1/POINT GEO1/MAILLAGE TYP1*MOT P0*POINT V0*POINT PAS*FLOTTANT ALPHA*FLOTTANT NP*ENTIER ; DALPHA = ALPHA / NP ; *------------------------------------------------ * CAS OU LA BASE EST UN POINT *------------------------------------------------ PF1 = P1 ; IB = 0 ; REPETER BOUC1 NP ; IB = IB + 1 ; PI1 = PF1 ; LIG1 = DROIT 1 PI1 PF1 ; SI (EGA IB 1) ; GEO3 = LIG1 ; SINON ; GEO3 = GEO3 ET LIG1 ; FINSI ; FIN BOUC1 ; GEO2 = PF1 ; FINSI ; *------------------------------------------------ * CAS OU LA BASE EST UNE LIGNE *------------------------------------------------ LIGF1 = GEO1 ; IB = 0 ; REPETER BOUC2 NP ; IB = IB + 1 ; LIGI1 = LIGF1 ; * S1 = DALL1 1 LIGI1 LIGF1 ; S1 = LIGI1 REGLER 1 LIGF1 ; SI (EGA IB 1) ; GEO3 = S1 ; SINON ; GEO3 = GEO3 ET S1 ; FINSI ; FIN BOUC2 ; GEO2 = LIGF1 ; FINSI ; *------------------------------------------------ * CAS OU LA BASE EST UNE SURFACE *------------------------------------------------ SUF1 = GEO1 ; IB = 0 ; REPETER BOUC3 NP ; IB = IB + 1 ; SUI1 = SUF1 ; SI (EGA IB 1) ; GEO3 = V1 ; SINON ; GEO3 = GEO3 ET V1 ; FINSI ; FIN BOUC3 ; GEO2 = SUF1 ; FINSI ; FINPROC GEO2 GEO3; **************************************************************** **** @IMPR SI (EXISTE PHRASE); MESS PHRASE; FINSI ; SI (EXISTE NREEL ); MESS NREEL ; FINSI ; SI (EXISTE NENTIER ); MESS NENTIER; FINSI ; FINPROC ; **** @INCI DEBPROC @INCI TAB1*TABLE; * ***************************************************************** * PROCEDURE DE DETERMINATION DE L'ANGLE D'INCIDENCE MAX : ALPHA * ***************************************************************** * MESS 'Calcul de l angle d incidence par le code'; * *--------------- VARIABLES D'ENTREE : MAIL0 = TAB1.<V_OMBRANT_N ; CONT0 = TAB1.<S_OMBRANT_N ; TYPCAL = TAB1.<TYPE_CALCUL ; *------------------------------------ * SI (EGA TYPCAL 'AVEC_SHIFT_AVEC_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'AVEC_SHIFT_SANS_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = FAUX ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_AVEC_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_SANS_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = FAUX ; FINSI ; SI ((NON (EXISTE ISHIFT)) OU (NON (EXISTE IRIPPLE))) ; FINSI ; * * *---- coordonnees dans le repere du maillage ZM = XM * 0. ; SINON ; FINSI ; * *---- coordonnees dans le repere global XG YG ZG = @CRMGC XM YM ZM TAB1 ; MENAGE ; * *---- calcul du champ magnetique dans le repere global BXG BYG BZG FSECU = @CHAMB TAB1 XG YG ZG ISHIFT IRIPPLE ; MENAGE ; * *---- composantes de B dans le repere du maillage BXM BYM BZM = @CBGMV BXG BYG BZG TAB1 ; MENAGE ; * *---- calcul des normales a la surface calculees *---- dans le repere du maillage MESS 'APPEL DE VNORM3D POUR LE MAILLAGE OMBRANT'; NXM NYM NZM = @VNORM3D MAIL0 CONT0 ; MENAGE ; * *---- calcul du produit scalaire et de l'angle d'incidence B_NORM = ((BXM*BXM) + (BYM*BYM) + (BZM*BZM))**0.5 ; VBVN = (ABS ((BXM*NXM) + (BYM*NYM) + (BZM*NZM))) / B_NORM; ANGINCI = ATG ((1.-(VBVN**2))**0.5) VBVN ; * CHALPHA = ABS (90. - ANGINCI) ; FINPROC ALPHA ; debproc @inertid geo1*maillage point1*point point2*point ; * * --- definition d'un modele articifiel pour les mchaml * * * --- definition des champs de coordonnees * * * --- * * * --- * * * --- aa1, bb1 et cc1 sont les coeffcients de l'equation cartesienne * de la droite passant par point1 et point2 * si (ega x1 x2 ) ; si (ega y1 y2) ; sinon ; aa1 = 1. ; bb1 = 0. ; cc1 = -1. * x1 ; finsi ; sinon ; aa1 = 1./(x2 - x1); si (ega y1 y2) ; aa1 = 0. ; bb1 = 1. ; cc1 = -1. * y1 ; sinon ; bb1 = -1./(y2 - y1); cc1 = (x1 * aa1) + (x2 * bb1) * -1.; finsi ; finsi ; den1 = ((aa1*aa1)+(bb1*bb1))**.5 ; * * --- chmd1 est le mchaml qui contient la distance des centres * de gravite des elements de geo1 a la droite passant par * point1 et point2 * chmd1 = (abs((chmx1*aa1) + (chmy1*bb1) + cc2))/den1 ; * * --- intergration du carre du champs * finproc i1 ; debproc @inertie geo1*maillage vec1*point ; * * --- definition d'un modele articifiel pour les mchaml * * * --- definition des champs de coordonnees * * * --- * * * --- * * * --- on calcule la position du centre de gravite de la section * * * --- aa1, bb1 et cc1 sont les coeffcients de l'equation cartesienne * de la droite passant par point1 et point2 * aa1 = y2 ; bb1 = -1. * x2 ; cc1 = x2 * gx1 - (y2 * gx1) ; den1 = ((aa1*aa1)+(bb1*bb1))**.5 ; * * --- chmd1 est le mchaml qui contient la distance des centres * de gravite des elements de geo1 a la droite passant par * le centre de gravite et la direction definie par le vecteur1 * chmd1 = (abs((chmx1*aa1) + (chmy1*bb1) + cc2))/den1 ; * * --- intergration du carre du champs * finproc (gx1 gy1) i1 ; **** @INTERC DEBPROC @INTERC CH_OLD2*CHPOINT CH_NEW2*CHPOINT TOL2*FLOTTANT TAB1*TABLE ; *MESS '---------------------------------> calling @INTERC'; * * +++++++++++++++++++++++++++++++++++ * RECHERCHE DES INTERCECTIONS * +++++++++++++++++++++++++++++++++++ * * METHODE CHOISIE: on boucle sur les facettes et on travaille sur les * champs par points des points remontes. Cette methode est adaptee * a un maillage ombrant reduit et a un maillage ombre volumineux... * * --- CHAMP CONTENANT N POUR LES NEOUDS DE OMBRE INTERSECTES N FOIS *CHINTER2 = manu chpo S_OMBRE4 1 scal 0. 'NATURE' 'DISCRET' ; repe boucel1 nel1; * mess 'facette numero' &boucel1 ; * on extrait les coordonnees du point A de la facette * * * on calcule les vecteurs APn et APn+1 * on extrait les cosinus directeurs de la normale de la facette * on effectue les produits scalaires. ps1 = (apnx1 * nfx1) + (apny1 * nfy1) + (apnz1 * nfz1); ps2 = (apnp1x1 * nfx1) + (apnp1y1 * nfy1) + (apnp1z1 * nfz1); pp1 = ps1*ps2 ; * la je suis dans la facette i et je determine quels sont les segments * PnPn+1 qui traversent le plan de la facette. * si le produit scalaire est nul, c'est que un des noeuds p1 ou p2 est * dans le plan de la facette * segments de part et d'autre de la facette * si Pn+1 appartient au maillage ombrant mail7 = mail3 et mail6 ; si (ega (n_mail7) 0) ; iter boucel1; finsi ; * mail3 est le maillage des noeuds de mail2 pour lesquels le segment incremente * le long de la ligne de champ intersecte (largement)le plan de la facette * en cours... c'est a dire qu'on inclut les cas ou Pn ou Pn+1 sont dans le plan * de la facette * on va calculer le point d'intersection que pour ces points la. ad1 = (dex2 * nfx1) + (dey2 * nfy1) + (dez2 * nfz1) ; * mess 'ad1' ;(list ad1) ; * on exclu avec une tolerence, les segments qui sont paralleles a la facette * => on considere qu'il n'y a pas d'intersection pour ces noeuds la * mess 'nb de segments non // a la facette' n_mail4 ; si (ega n_mail4 0) ; iter boucel1; finsi ; bx1 = (xa1*dex3*nfx1) - ((((chry2-ya1)*dex3)-(chrx2*dey3))*nfy1) - ((((chrz2-za1)*dex3)-(chrx2*dez3))*nfz1); by1 = (ya1*dey3*nfy1) - ((((chrz2-za1)*dey3)-(chry2*dez3))*nfz1) - ((((chrx2-xa1)*dey3)-(chry2*dex3))*nfx1); bz1 = (za1*dez2*nfz1) - ((((chrx2-xa1)*dez3)-(chrz2*dex3))*nfx1) - ((((chry2-ya1)*dez3)-(chrz2*dey3))*nfy1); xm1 = bx1 / ad2 ; ym1 = by1 / ad2 ; zm1 = bz1 / ad2 ; * xm1, ym1 et zm1 sont des champs par points definis sur mail7, * maillage des points de mail2 (ombre) dont les segments incrementes * du pas n interseptent la facette en cours. Ces champs par points * contiennent les coordonnees des intersections entre le segment * du point considere avec le plan de la facette courante. * maintenant, on va chercher les coordonnes barycentriques de M dans * le repere baryentrique forme par les trois sommets de la facette * en cours A, B, C. dxa1 = xm1 - xa1 ; dxb1 = xm1 - xb1 ; dxc1 = xm1 - xc1 ; dya1 = ym1 - ya1 ; dyb1 = ym1 - yb1 ; dyc1 = ym1 - yc1 ; dza1 = zm1 - za1 ; dzb1 = zm1 - zb1 ; dzc1 = zm1 - zc1 ; * denominateur suivant les 3 axes : Dz = (dyc1*dxb1)-(dxc1*dyb1)+(dxa1*dyb1)-(dxa1*dyc1)-(dya1*dxb1) +(dya1*dxc1) ; Dy = (dzc1*dxb1)-(dxc1*dzb1)+(dxa1*dzb1)-(dxa1*dzc1)-(dza1*dxb1) +(dza1*dxc1) ; Dx = (dyc1*dzb1)-(dzc1*dyb1)+(dza1*dyb1)-(dza1*dyc1)-(dya1*dzb1) +(dya1*dzc1) ; * * D1 = Dz ; a1 = (dyc1*dxb1) - (dxc1*dyb1) ; b1 = (dya1*dxc1) - (dxa1*dyc1) ; c1 = (dyb1*dxa1) - (dxb1*dya1) ; sinon ; D1 = Dy ; a1 = (dzc1*dxb1) - (dxc1*dzb1) ; b1 = (dza1*dxc1) - (dxa1*dzc1) ; c1 = (dzb1*dxa1) - (dxb1*dza1) ; sinon ; D1 = Dx ; a1 = (dyc1*dzb1) - (dzc1*dyb1) ; b1 = (dya1*dzc1) - (dza1*dyc1) ; c1 = (dyb1*dza1) - (dzb1*dya1) ; finsi ; finsi ; * calcul de alpha1 alpha1 = a1 / D1 ; * calcul de beta1 beta1 = b1 / D1 ; * * calcul de gamma1 gamma1 = c1 / D1 ; * si alpha et beta et gama sont tous superieurs ou egaux a 0, * le point d'intersection est dans la facette et il y a intersection * CHPO CONTENANT 1 POUR LES NOEUDS INTERSECTES PAR LA FACETTE COURANTE CHINTER1 = (alpha1 masque egsupe 0.) * (beta1 masque egsupe 0.) * (gamma1 masque egsupe 0.) ; * PTPRIS1 = CHINTER1 POIN DIFF 0. ; * mess 'nb noeuds intersectes (pour la facette) =' (nbno PTPRIS1); * maillage de noeuds n'ayant pas deja ete intersectes chinter3 = CHINTER1 - CHINTER2 ; * CHPO CONTENANT N POUR LES NOEUDS INTERSECTES PAR N FACETTES CHINTER2 = CHINTER1 + CHINTER2 ; * PTPRIS2 = CHINTER2 POIN DIFF 0. ; * mess 'nb noeuds intersectes (pour ttes les facettes) =' (nbno PTPRIS2); * on calcule des CHPO reduits aux noeuds intersectes * concatenation des coordonnees des intersections xinter1 = xinter1 et xm1_r ; yinter1 = yinter1 et ym1_r ; zinter1 = zinter1 et zm1_r ; mena ; fin boucel1 ; * -- Fin de la grande boucle sur les facettes intersectantes -- * maillage contenant les noeuds intersectes *** RM diagnostic *mess 'nbno minter1' (nbno minter1) ; *mess 'xinter1' ; *@listmm xinter1 ; *mess 'yinter1' ; *@listmm yinter1 ; *mess 'zinter1' ; *@listmm zinter1 ; *** RM fin diagnostic * difference symetrique (ou l'on impose PAS) * calcul du pas sur tout le maillage s_ombre4 chpas0 = ((dex4 * dex4) + (dey4 * dey4) + (dez4 * dez4)) ** 0.5 ; * distances entre points initiaux et M (uniquement sur noeuds inters) dxmp1 = xp1 - xinter1r ; dymp1 = yp1 - yinter1r ; dzmp1 = zp1 - zinter1r ; chdmp1 = ((dxmp1 * dxmp1) + (dymp1 * dymp1) + (dzmp1 * dzmp1)) ** 0.5 ; * on peut avoit tout intersecte auquel cas on n a pas a mettre le * pas pour les autres chdist8 = chdist1 et chdmp1 ; sinon ; chdist8 = chdmp1 ; finsi ; sinon ; chdist8 = chpas0 ; finsi ; *MESS '---------------------------------> exiting @INTERC'; FINPROC chdist9 minter1 ; debproc inters mail1*maillage p1*maillage p2*maillage ; finproc ; **** @INTSEC DEBPROC @INTSEC CH_OLD2*CHPOINT CH_NEW2*CHPOINT TOL2*FLOTTANT TAB1*TABLE ; * ********************************************** * Procedure (inspiree de @INTERC) calculant * * l'intersection des lignes de champ avec un * * objet constitue de facettes triangulaires * * par une methode analytique exacte. * * Alain MOAL (Fevrier 2001) * ********************************************** * *MESS '---------------------------------> calling @INTSEC'; * * +++++++++++++++++++++++++++++++++++ * RECHERCHE DES INTERCECTIONS * +++++++++++++++++++++++++++++++++++ * * METHODE CHOISIE: on boucle sur les facettes et on travaille sur les * champs par points des points remontes. Cette methode est adaptee * a un maillage ombrant reduit et a un maillage ombre volumineux... * * --- CHAMP CONTENANT N POUR LES NOEUDS DE OMBRE INTERSECTES N FOIS *CHINTER2 = manu chpo S_OMBRE4 1 scal 0. 'NATURE' 'DISCRET' ; repe boucel1 nel1; * mess 'facette numero' &boucel1 ; * on extrait les coordonnees du point A de la facette * * * on extrait le flux normalise en chaque point de la facette * on calcule les vecteurs APn et APn+1 * on extrait les cosinus directeurs de la normale de la facette * on effectue les produits scalaires. ps1 = (apnx1 * nfx1) + (apny1 * nfy1) + (apnz1 * nfz1); ps2 = (apnp1x1 * nfx1) + (apnp1y1 * nfy1) + (apnp1z1 * nfz1); pp1 = ps1*ps2 ; * la je suis dans la facette i et je determine quels sont les segments * PnPn+1 qui traversent le plan de la facette. * si le produit scalaire est nul, c'est que un des noeuds p1 ou p2 est * dans le plan de la facette * segments de part et d'autre de la facette * si Pn+1 appartient au maillage ombrant mail7 = mail3 et mail6 ; si (ega (n_mail7) 0) ; iter boucel1; finsi ; * mail3 est le maillage des noeuds de mail2 pour lesquels le segment incremente * le long de la ligne de champ intersecte (largement)le plan de la facette * en cours... c'est a dire qu'on inclut les cas ou Pn ou Pn+1 sont dans le plan * de la facette * on va calculer le point d'intersection que pour ces points la. ad1 = (dex2 * nfx1) + (dey2 * nfy1) + (dez2 * nfz1) ; * mess 'ad1' ;(list ad1) ; * on exclu avec une tolerence, les segments qui sont paralleles a la facette * => on considere qu'il n'y a pas d'intersection pour ces noeuds la * mess 'nb de segments non // a la facette' n_mail4 ; si (ega n_mail4 0) ; iter boucel1; finsi ; bx1 = (xa1*dex3*nfx1) - ((((chry2-ya1)*dex3)-(chrx2*dey3))*nfy1) - ((((chrz2-za1)*dex3)-(chrx2*dez3))*nfz1); by1 = (ya1*dey3*nfy1) - ((((chrz2-za1)*dey3)-(chry2*dez3))*nfz1) - ((((chrx2-xa1)*dey3)-(chry2*dex3))*nfx1); bz1 = (za1*dez2*nfz1) - ((((chrx2-xa1)*dez3)-(chrz2*dex3))*nfx1) - ((((chry2-ya1)*dez3)-(chrz2*dey3))*nfy1); xm1 = bx1 / ad2 ; ym1 = by1 / ad2 ; zm1 = bz1 / ad2 ; * xm1, ym1 et zm1 sont des champs par points definis sur mail7, * maillage des points de mail2 (ombre) dont les segments incrementes * du pas n interseptent la facette en cours. Ces champs par points * contiennent les coordonnees des intersections entre le segment * du point considere avec le plan de la facette courante. * maintenant, on va chercher les coordonnes barycentriques de M dans * le repere baryentrique forme par les trois sommets de la facette * en cours A, B, C. dxa1 = xm1 - xa1 ; dxb1 = xm1 - xb1 ; dxc1 = xm1 - xc1 ; dya1 = ym1 - ya1 ; dyb1 = ym1 - yb1 ; dyc1 = ym1 - yc1 ; dza1 = zm1 - za1 ; dzb1 = zm1 - zb1 ; dzc1 = zm1 - zc1 ; * denominateur suivant les 3 axes : Dz = (dyc1*dxb1)-(dxc1*dyb1)+(dxa1*dyb1)-(dxa1*dyc1)-(dya1*dxb1) +(dya1*dxc1) ; Dy = (dzc1*dxb1)-(dxc1*dzb1)+(dxa1*dzb1)-(dxa1*dzc1)-(dza1*dxb1) +(dza1*dxc1) ; Dx = (dyc1*dzb1)-(dzc1*dyb1)+(dza1*dyb1)-(dza1*dyc1)-(dya1*dzb1) +(dya1*dzc1) ; * * D1 = Dz ; a1 = (dyc1*dxb1) - (dxc1*dyb1) ; b1 = (dya1*dxc1) - (dxa1*dyc1) ; c1 = (dyb1*dxa1) - (dxb1*dya1) ; sinon ; D1 = Dy ; a1 = (dzc1*dxb1) - (dxc1*dzb1) ; b1 = (dza1*dxc1) - (dxa1*dzc1) ; c1 = (dzb1*dxa1) - (dxb1*dza1) ; sinon ; D1 = Dx ; a1 = (dyc1*dzb1) - (dzc1*dyb1) ; b1 = (dya1*dzc1) - (dza1*dyc1) ; c1 = (dyb1*dza1) - (dzb1*dya1) ; finsi ; finsi ; * calcul de alpha1 alpha1 = a1 / D1 ; * calcul de beta1 beta1 = b1 / D1 ; * * calcul de gamma1 gamma1 = c1 / D1 ; * * flux normalise au point trouve (sur un triangle a 3 noeuds * les fonctions de forme sont les coordonnees barycentriques) fm0 = (alpha1 * f1) + (beta1 * f2) + (gamma1 * f3) ; * si alpha et beta et gama sont tous superieurs ou egaux a 0, * le point d'intersection est dans la facette et il y a intersection * CHPO CONTENANT 1 POUR LES NOEUDS INTERSECTES PAR LA FACETTE COURANTE CHINTER1 = (alpha1 masque egsupe 0.) * (beta1 masque egsupe 0.) * (gamma1 masque egsupe 0.) ; * PTPRIS1 = CHINTER1 POIN DIFF 0. ; * mess 'nb noeuds intersectes (pour la facette) =' (nbno PTPRIS1); * maillage de noeuds n'ayant pas deja ete intersectes chinter3 = CHINTER1 - CHINTER2 ; * CHPO CONTENANT N POUR LES NOEUDS INTERSECTES PAR N FACETTES CHINTER2 = CHINTER1 + CHINTER2 ; * PTPRIS2 = CHINTER2 POIN DIFF 0. ; * mess 'nb noeuds intersectes (pour ttes les facettes) =' (nbno PTPRIS2); * on calcule des CHPO reduits aux noeuds intersectes * concatenation des coordonnees des intersections xinter1 = xinter1 et xm1_r ; yinter1 = yinter1 et ym1_r ; zinter1 = zinter1 et zm1_r ; * concatenation du flux normalise aux points d'intersection finter1 = finter1 et fm0_r ; mena ; fin boucel1 ; * -- Fin de la grande boucle sur les facettes intersectantes -- * maillage contenant les noeuds intersectes * difference symetrique (ou l'on impose PAS) * calcul du pas sur tout le maillage s_ombre4 chpas0 = ((dex4 * dex4) + (dey4 * dey4) + (dez4 * dez4)) ** 0.5 ; * flux normalise initialise sur le maillage s_ombre4 * distances entre points initiaux et M (uniquement sur noeuds inters) dxmp1 = xp1 - xinter1r ; dymp1 = yp1 - yinter1r ; dzmp1 = zp1 - zinter1r ; chdmp1 = ((dxmp1 * dxmp1) + (dymp1 * dymp1) + (dzmp1 * dzmp1)) ** 0.5 ; * champ de deplacement des points interceptes depmp1 = dxmp1 et dymp1 et dzmp1 ; * on peut avoit tout intersecte auquel cas on n a pas a mettre le * pas pour les autres chdist8 = chdist1 et chdmp1 ; chfn8 = chfn1 et finter1r ; sinon ; chdist8 = chdmp1 ; chfn8 = finter1r ; finsi ; sinon ; chdist8 = chpas0 ; chfn8 = chfn0 ; depmp1 = dxmp1 et dymp1 et dzmp1 ; finsi ; *MESS '---------------------------------> exiting @INTSEC'; FINPROC chdist9 minter1 chfn9 depmp1; **** IPOE 'FINPROC' ; **** @IPOE ********************************************************* ****** PROCEDURE @IPOE ****** ********************************************************* * INTERPOLATION EN UTILISANT UNE EVOLUTION *-------------------------------------------------------- *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 SI ( NON (EXISTE MO_1)) ; SINON ; MO_2 = MO_1 ; FINSI ; SI (( EGA MO_2 'LINE' ) OU ( EGA MO_2 'FIXE' )) ; SI ( EXISTE OBJ_11 ) ; OBJ_2 = @ITPLT LRE_1 LRE_2 MO_2 OBJ_11 ; FINSI ; SI ( EXISTE OBJ_12 ) ; OBJ_2 = @ITPLT LRE_1 LRE_2 MO_2 OBJ_12 ; FINSI ; SI ( EXISTE OBJ_13 ) ; OBJ_2 = @ITPLT LRE_1 LRE_2 MO_2 OBJ_13 ; FINSI ; SINON ; SI ( EXISTE OBJ_11 ) ; FINSI ; SI ( EXISTE OBJ_12 ) ; FINSI ; SI ( EXISTE OBJ_13 ) ; FINSI ; FINSI ; FINPROC OBJ_2 ; **** @ITPLT DEBPROC @ITPLT LR_1*LISTREEL LR_2*LISTREEL MO_1*MOT OBJ_11/FLOTTANT OBJ_12/LISTREEL OBJ_13/CHPOINT ; *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 ********************************************************* ****** PROCEDURE @ITPLT ****** ******************************************************************** * INTERPOLATION A PARTIR DE 2 LISTREELS AVEC EXTRAPOLATION POSSIBLE *------------------------------------------------------------------- SI ( NON (( EGA MO_1 'LINE') OU ( EGA MO_1 'FIXE')) ) ; ERREUR 2 ; FINSI ; SI ( EXISTE OBJ_11 ) ; OBJ_1 = OBJ_11 ; VMA_1 = OBJ_1 ; VMI_1 = OBJ_1 ; FINSI ; SI ( EXISTE OBJ_12 ) ; OBJ_1 = OBJ_12 ; FINSI ; SI ( EXISTE OBJ_13 ) ; OBJ_1 = OBJ_13 ; FINSI ; SINON ; LRE_1 = LR_1 ; LRE_2 = LR_2 ; VX_1 = VMA_1 + DVAL ; SI (EGA MO_1 'LINE' ) ; VY_1 = VY_F + ((VY_F - VY_F1) * (VX_1 - VX_F)/(VX_F - VX_F1)) ; SINON ; VY_1 = VY_F ; FINSI ; * MESS '>>1 VAL XMAX YMAX XEXT YEXT' VMA_1 VX_F VY_F VX_1 VY_1 ; FINSI ; VX_1 = VMI_1 - DVAL ; SI (EGA MO_1 'LINE' ) ; VY_1 = VY_I + ((VY_I - VY_I1) * (VX_1 - VX_I)/(VX_I - VX_I1)) ; SINON ; VY_1 = VY_I ; FINSI ; * MESS '>>>@ITPLT>>> extrapolation VAL XMIN YMIN XEXT YEXT'; * MESS VMI_1 VX_I VY_I VX_1 VY_1 ; FINSI ; FINSI ; FINPROC OBJ_2 ; **** @LECTB DEBPROC @LECTB TAB1*TABLE ; * *********************************************************** * Procedure de lecture de la carte de champ magnetique * * et de dpsi dans un fichier issu de PROTEUS. * * Alain MOAL (Fevrier 2001) * *********************************************************** * Modif : * * 08/11/01 (A.MOAL) : lecture et carte de dpsi * *********************************************************** * * *--------------- VARIABLES D'ENTREE : NOM0 = TAB1.<NOM_FICHIER_B ; ANG0 = TAB1.<EXTENSION_TORO ; NBE0 = TAB1.<NBELEM_TORO ; CT0 = TAB1.<CENTRE_TORE ; CT1 = TAB1.<POINT_SUR_AXE_TORE ; *------------------------------------ * OPTI ACQUERIR NOM0 ; *---- lecture du nombre de lignes a lire dans le fichier I = NBR1 * NBZ1 ; MESS '@LECTB IS READING 'I' LINES IN FILE 'NOM0 ; I = NBR1 * NBZ1 ; * ACQU R0*FLOTTANT Z0*FLOTTANT FLUX1*FLOTTANT BR1*FLOTTANT BZ1*FLOTTANT BTOR1*FLOTTANT DPSI1*FLOTTANT; * *---- creation du premier point support du champ *---- tourne de 1 degre pour etre sur d'envelopper *---- le domaine d'etude * *---- creation du chpoint s'appuyant sur ce point * *---- boucle sur les points dans la direction toroidale J = 0 ; REPETER BOUC0 NBE0 ; J = J + 1 ; CHPT = CHPT ET CHP01 ; FIN BOUC0 ; * *---- boucle sur les I-1 autres lignes du tableau REPETER BOUC1 (I-1) ; ACQU R1*FLOTTANT Z1*FLOTTANT FLUX1*FLOTTANT BR1*FLOTTANT BZ1*FLOTTANT BTOR1*FLOTTANT DPSI1*FLOTTANT; CHPT = CHPT ET CHP1 ; J = 0 ; REPETER BOUC2 NBE0 ; J = J + 1 ; CHPT = CHPT ET CHP11 ; FIN BOUC2 ; FIN BOUC1 ; * *---- projection sur un maillage L1 = P0 D (NBR1-1) P10 ; L2 = P10 D (NBZ1-1) P1 ; L3 = P1 D (NBR1-1) P01 ; L4 = P01 D (NBZ1-1) P0 ; * *---- critere d'elimination inferieur a la taille de maille *---- dans le plan (R,Z) SI (DIST1 >EG DIST2) ; DIST0 = DIST2 ; SINON ; DIST0 = DIST1 ; FINSI ; *TITRE ' '; *TRAC (VOL1 ET MAIL1) ; * *---- trace pour verification TITRE 'MAGNETIC FLUX' ; TITRE 'DPSI' ; * *--------------- VARIABLES DE SORTIE : TAB1.<CARTE_B = CHPT ; TAB1.<GRILLE_B = VOL1 ; *------------------------------------ * * FINPROC ; **** @LECTF DEBPROC @LECTF TAB1*TABLE ; * *********************************************************** * Procedure de lecture du flux normalise sur une ligne * * dans un fichier issu de PROTEUS. * * Alain MOAL (Fevrier 2001) * *********************************************************** * * *--------------- VARIABLES D'ENTREE : NOM0 = TAB1.<NOM_FICHIER_F ; ANG0 = TAB1.<EXTENSION_TORO ; NBE0 = TAB1.<NBELEM_TORO ; CT0 = TAB1.<CENTRE_TORE ; CT1 = TAB1.<POINT_SUR_AXE_TORE ; *------------------------------------ * OPTI ACQUERIR NOM0 ; *---- lecture du nombre de lignes a lire dans le fichier MESS '@LECTF IS READING 'I' LINES IN FILE 'NOM0 ; * *---- ligne de titre * ACQU R0*FLOTTANT Z0*FLOTTANT DPSI1*FLOTTANT AEFF10*FLOTTANT DDPSI1*FLOTTANT PLEG1*FLOTTANT Q1*FLOTTANT ; * *---- creation du premier point support du champ *---- tourne de 1 degre pour etre sur d'envelopper *---- le domaine d'etude * *---- creation du chpoint s'appuyant sur ce point * *---- boucle sur les points dans la direction toroidale J = 0 ; REPETER BOUC0 NBE0 ; J = J + 1 ; FLUN0 = FLUN0 ET CHP01 ; FIN BOUC0 ; * *---- boucle sur les I-1 autres lignes du tableau REPETER BOUC1 (I-1) ; ACQU R1*FLOTTANT Z1*FLOTTANT DPSI1*FLOTTANT AEFF10*FLOTTANT DDPSI1*FLOTTANT PLEG1*FLOTTANT Q1*FLOTTANT ; FLUN0 = FLUN0 ET CHP1 ; J = 0 ; REPETER BOUC2 NBE0 ; J = J + 1 ; FLUN0 = FLUN0 ET CHP11 ; FIN BOUC2 ; FIN BOUC1 ; * *---- projection sur un maillage L1 = P0 D (I-1) P1 ; * *---- critere d'elimination inferieur a la taille de maille *---- dans le plan (R,Z) * *---- trace pour verification TITRE 'NORMALISED FLUX' ; DESS EVOL1 ; * *--------------- VARIABLES DE SORTIE : TAB1.<FLUX_NORMALISE = FLUN0 ; TAB1.<MAILLAGE_FN = S1 ; *------------------------------------ * * FINPROC ; **** @LISTMM DEBPROC @LISTMM CHAM1/MCHAML CHP1/CHPOINT; SI (EXISTE CHAM1); CH1 = CHAM1 ; SINON; SI (EXISTE CHP1); CH1 = CHP1; SINON ; ERRE 'IL MANQUE LE CHAMPS'; FINSI ; FINSI ; MESS ' '; SI (DD1 > 1 ); MESS 'BEWARE ! the field has more than one component'; FINSI ; PRE1 = ' '; MESS MES1; FINPROC ; **** LUMIN * @LUMIN LINC2 PENDO1 TAB1 PHIENDO ; *>LINC2 = LINC2; >POI1=PENDO1 ;>PHI1=PHIENDO; DEBPROC @LUMIN >LINC2*MAILLAGE >POI1/POINT TAB1*TABLE >PHI1/FLOTTANT; *CHX1 = COOR 1 TAB1.LFLUX_EXTE_DESS; *EVTEMX = EVOL BLEU CHPO CHX1 SCAL TAB1.LFLUX_EXTE_DESS; *DESS EVTEMX ; *LIX1 = EXTR EVTEMX 'ORDO' ; *LIT1 = EXTR EVTEMI 'ORDO' ; *EVTXI = EVOL MANU LIX1 LIT1 ; *DESS EVTXI; T3 = ATG >Y3 >X3 ; TITRE ' angle des normales a la ligne'; DESS EV3; >Z3 = 0. ; * SINL1 = REDU TAB1.C_SITETF1 >LINC2; * CHPX = EXCO SCAL ( 1. * ( COTETF1 ) ) UX ; * CHPY = EXCO SCAL ( 1. * ( SITETF1 ) ) UY ; * CHPT = (@ET CHPX CHPY ); * VEC22 = @VECADA CHPT ( 1. * 0.01 ) 'ROUGE' ; * TRAC 'CACH' TAB1.NISOV TEMP1 SAIG1 VEC22 (CONT SAIG1); SI( EXISTE >POI1) ; >R1 = >X11 - XCT1 ; >R0 = 2.4 ; >PHI0 = >PHI1 - 15. ; >X1 = >R1 * (COS >PHI1) + XCT1 ; >X0 = >R0 * (COS >PHI0) + XCT1 ; DX0 = >X2 - >X0 ; DZ0 = (>Y2 * 0. ) - (( SIN >PHI0) * >R0 ) ; * RHO est la distance entre le point courant et le centre du champ RHO = ((DX0 ** 2) + (DZ0 ** 2)) ** 0.5 ; * RHO0 est la distance maximale entre un point courant et le centre du champ RHO0 = 0.69 ; * Lint est la longueur d'integration au niveau du point courant Lint =(( RHO * RHO * 0.14 / RHO0/RHO0) + 1.) * 4.77E-3 ; TITRE 'Pas d integration avant correction' >PHI1 ; DESS EVLint ; * ETEND est l'etendue geometrique normalisee a 1 au centre du champ ETEND= RHO * RHO / RHO0 / RHO0 * -0.1 + 1. ; TITRE 'etendue geometrique normalisee' >PHI1; DESS EVEG ; DX1 = >X2 - >X1 ; DY1 = >Y2 - >Y1 ; DZ1 = (>Y2 * 0. ) - (( SIN >PHI1) * ( >X11 - XCT1)) ; TITRE ' DZ1 en tout point de la ligne '; * DESS EV5; TITRE ' DX1 en tout point de la ligne '; * DESS EV5; NDX = ((DX1 ** 2) + (DY1 ** 2) + (DZ1 ** 2)) ** 0.5 ; DX1 = DX1 / NDX; DY1 = DY1 / NDX; DZ1 = DZ1 / NDX; COSL1 = ( (((DY1 * >Z3) - (DZ1 * >Y3)) ** 2 ) + (((DZ1 * >X3) - (DX1 * >Z3)) ** 2 ) + (((DX1 * >Y3) - (DY1 * >X3)) ** 2 )) ** 0.5 ; SINL1 = (((COSL1 ** 2) * -1.) + 1.) ** 0.5 ; ANGL1 = ATG COSL1 SINL1; TITRE ' angle normales - point endoscope ' >PHI1; DESS EV3; * Le COSL1 est la pour tenir compte du fait que la resolution spatiale donnee * par MIGOZZI est une resolution perpendiculaire a l'axe optique (que l'on * projette sur l'aiguille. Lint = Lint / (COS ANGL1) ; TITRE '1/cos de l angle' >PHI1 ; DESS EV3; TITRE 'Pas d integration apres correction' >PHI1; DESS EV3; FINSI ; EMISSIV1 = 1.; PLANKC1 = 3.74E-16 ; PLANKC2 = 1.44E-2 ; PLANKL = 4.E-6 ; PLANKLM5 = PLANKL ** -5 ; PI = 3.14159 ; LUMI1 = ( ((( EXP ((( TEMP2 * PLANKL) ** -1 ) * PLANKC2)) - 1.) * PI) ** -1 ) * EMISSIV1 * PLANKC1 * PLANKLM5 ; * LUMI2 = LUMI1 * SINL1 ; LUMI2 = LUMI1 * ETEND ; TAB3 = TABLE ; * DESS (EVTEML1 ET EVTEML2) MIMA LEGE TAB3 ; * DESS (EVLXI1 ET EVLXI2) MIMA LEGE TAB3; IL = 0 ; IL = IL + 1; >PL1 = >LINC2 POINT IL ; XLINF = XL1 - (>PASL / 2.) ; XLSUP = XL1 + (>PASL / 2.); MASL1 = MASQUE XLINC2 EGINFE XLSUP ; MASL2 = MASQUE XLINC2 EGSUPE XLINF; MASLT = MASL1 * MASL2; LUMI3 = LUMI2 * MASLT ; * DESS (EVLXI3 ) ; IRR = 0; LIL3B = LIL3 ; LIX1B = LIX1; IRANGI1 = ( LIX1 MASQUE INFERIEUR SOMME XLINF) + 1; IRANGI2 = IRANGI1 + 1; VINF = @ITPLT LIX1 LIL2 'FIXE' XLINF ; IRR = 2; FINSI; IRANGS1 = (MASQUE LIX1 INFERIEUR SOMME XLSUP) + 1 + IRR; IRANGS2 = IRANGS1 + 1; VSUP = @ITPLT LIX1 LIL2 'FIXE' XLSUP ; FINSI; * DESS (EVLXI3 ET EVLXI3B) ; SI ( IL EGA 1 ) ; SINON ; FINSI; FIN BLUMI ; TITRE ' Luminescence' >PHI1 ; CHT4 = (((LOG (((CHPM3 * PI) ** -1) * EMISSIV1 * PLANKC1 * PLANKLM5 + 1.)) * PLANKL) ** -1) * PLANKC2 ; TITRE ' Temperatures mesurees' ; TITRE ' Temperatures initiales' ; TAB1.ANGLUMI = ANGL1 ; FINPROC ; **** @MAGNB DEBPROC @MAGNB TAB1*TABLE ; *********************************************************** * Procedure de calcul du champ magnetique en chaque point * * d'un maillage donne. Alain MOAL (Fevrier 2001) * *********************************************************** * * *--------------- VARIABLES D'ENTREE : CHB0 = TAB1.<CARTE_B ; GRILB0 = TAB1.<GRILLE_B ; MAIL1 = TAB1.<MAILLAGE_B ; *------------------------------------ *TRAC (MAIL1 ET GRILB0) ; * FINPROC BR BZ BPHI ; 'DEBPROC' MATHPLAS TABTEM*'TABLE' TEPMAT*'TABLE' ; *-----------------------------------------------------------------* * * * M A T H P L A S * * --------------- * * * * Construction des champs d{finissant un mat{riau pour un * * calcul thermoplastique. Pour chaque {l{ment, les valeurs * * des coefficients YOUN, NU, RHO, ALPH ainsi que la courbe * * de traction seront {tablis en fonction de la carte de * * temp{rature et du r{seau de courbes de traction. * * * * En entr{e : * * * * TABTEM Table contenant : * * indice 'NCHAMP' nombre de champs thermiques (ENTIER) * * indice i carte de temp{rature @ l'instant n\9Bi * * (CHPOINT) * * indice 'PALIER' option : n\9B du champ @ partir duquel * * il y a un palier dans le chargement * * et reste inchang{ apr}s (ENTIER) * * TEPMAT Table contenant : * * indice 'MAILLAGE' le maillage de la structure * * indice 'NBPTRAC' le nombre de points contenus dans * * les courbes de traction (ENTIER) * * indice 'DEFO' la table TABEPS contenant : * * indice i les abscisses de la i-}me normale * * aux courbes de traction (LISTREEL) * * indice 'CONT' la table TABSIG contenant : * * indice i les ordonn{es de la i-}me normale * * aux courbes de traction (LISTREEL) * * Remarque : i varie entre 1 et NBPTRAC * * indice 'LISTEMP' liste des temp{ratures correspondant * * aux courbes de traction (LISTREEL) * * indice 'EVOALPH' ALPHA(T) (EVOLUTION) ou * * indice 'VALALPH' ALPHA (REEL) * * indice 'EVONU' NU(T) (EVOLUTION) ou * * indice 'VALNU' NU (REEL) * * indice 'EVORHO' RHO(T) (EVOLUTION) ou * * indice 'VALRHO' RHO (REEL) * * Remarque : si objet EVOLUTION : 'ALPH' 'NU' ou * * 'RHO' en abscisse et 'T' en ordonn{e * * En sortie : * * * * indice 'MODELE' objet mod}le (MMODEL) * * indice 'MATERIAU' table contenant : * * indice i champ d{finissant le mat{riau au * * i-}me pas de calcul (MCHAML) * * * * Remarques : 1) l'objet mod}le sera obligatoirement du type * * 'MECANIQUE' 'ELASTIQUE' 'PLASTIQUE' 'ISOTROPE' 'typelem' * * et il sera cr{{ une fois pour toutes; * * 2) le module d'Young {tant la pente @ l'origine * * de la courbe de traction, sa donn{e n'est pas n{cessaire. * * * * Denis ROBERT, le 14 f{vrier 1992. * *-----------------------------------------------------------------* * si IMESS = VRAI : impressions des champs d{finissant le mat{riau IMESS = FAUX ; * GEO1 = TEPMAT.'MAILLAGE' ; NBPTRAC = TEPMAT.'NBPTRAC' ; LISTEMP = TEPMAT.'LISTEMP' ; TABMAT = TABLE ; TABMOD = TABLE ; NTHER = TABTEM.'NCHAMP' ; * 'SI' ( 'EXISTE' TABTEM 'PALIER' ) ; NTHER = TABTEM.'PALIER' ; 'FINSI' ; 'SI' ( 'EXISTE' TEPMAT 'VALALPH' ) ; IALPH = 1 ; ALPIEL1 = TEPMAT.'VALALPH' ; 'SINON' ; IALPH = 2 ; 'FINSI' ; 'SI' ( 'EXISTE' TEPMAT 'VALRHO' ) ; IRHO = 1 ; RHOIEL1 = TEPMAT.'VALRHO' ; 'SINON' ; IRHO = 2 ; 'FINSI' ; 'SI' ( 'EXISTE' TEPMAT 'VALNU' ) ; INU = 1 ; NUIEL1 = TEPMAT.'VALNU' ; 'SINON' ; INU = 2 ; 'FINSI' ; 'SI' ( IMESS ) ; 'SAUTER' 1 'LIGNE' ; 'SAUTER' 1 'LIGNE' ; 'FINSI' ; * * Types d'{l{ments-finis du maillage / Nombre de types / Nombre * d'{l{ments d'un type * * * Boucle sur les types d'{l{ments-finis * ITYP1 = 0 ; 'REPETER' BOUTYPEL NBTYP1 ; ITYP1 = ITYP1 + 1 ; NBEL1 = 'EXTRAIRE' NBTYPEL ITYP1 ; NOMEL1 = 'EXTRAIRE' LESTYPS ITYP1 ; * * Boucle sur les {l{ments du maillage * IEL = 0 ; 'REPETER' BOUCELEM NBEL1 ; IEL = IEL + 1 ; 'SI' ( NBTYP1 '>EG' 2 ) ; 'SINON' ; 'FINSI' ; * * Boucle sur la liste de champs de temp{rature * ITHER = 0 ; 'REPETER' BOUCTHER NTHER ; ITHER = ITHER + 1 ; CHTER = TABTEM.ITHER ; TMOY = 0. ; * * Boucle sur les points du i-}me {l{ment * J1 = 0 ; 'REPETER' BOUCPOIN NNIEL1 ; J1 = J1 + 1 ; TMOY = TMOY + TEXTR ; 'FIN' BOUCPOIN ; TMOY = TMOY / NNIEL1 ; 'SI' ( IALPH 'EGA' 2 ) ; 'FINSI' ; 'SI' ( IRHO 'EGA' 2 ) ; 'FINSI' ; 'SI' ( INU 'EGA' 2 ) ; 'FINSI' ; * * Boucle sur le nombre de points des courbes de traction *+* IPTRAC = 0 ; 'REPETER' BOUTRAC NBPTRAC ; IPTRAC = IPTRAC + 1 ; * * Le module d'Young est la pente de la courbe de traction * 'SI' ( IPTRAC 'EGA' 1 ) ; YOUIEL1 = YY / XX ; 'FINSI' ; 'FIN' BOUTRAC ; 'SI' ( IMESS ) ; 'MESS' 'TMOY : ' TMOY ; 'MESS' 'YOUNG : ' YOUIEL1 ; 'MESS' 'ALPHA : ' ALPIEL1 ; 'MESS' 'RHO : ' RHOIEL1 ; 'MESS' 'NU : ' NUIEL1 ; 'LISTE' LSIGIEL1 ;'LISTE' LEPSIEL1 ; 'FINSI' ; 'SI' ( IEL 'EGA' 1 ) ; 'SI' ( ITHER 'EGA' 1 ) ; TABMAT.ITHER = 'MATE' MODTOT 'YOUN' YOUIEL1 'NU' NUIEL1 'RHO' RHOIEL1 'ALPH' ALPIEL1 'ECRO' EVECRO1 ; 'SINON' ; TABMAT.ITHER = 'MATE' MODTOT 'YOUN' YOUIEL1 'NU' NUIEL1 'RHO' RHOIEL1 'ALPH' ALPIEL1 'ECRO' EVECRO1 ; 'FINSI' ; 'SINON' ; 'SI' ( ITHER 'EGA' 1 ) ; MODTOT = MODTOT 'ET' MODIEL1 ; TABMAT.ITHER = TABMAT.ITHER 'ET' MATIEL1 ; 'SINON' ; TABMAT.ITHER = TABMAT.ITHER 'ET' MATIEL1 ; 'FINSI' ; 'FINSI' ; 'FIN' BOUCTHER ; 'FIN' BOUCELEM ; 'FIN' BOUTYPEL ; 'SI' ( 'EXISTE' TABTEM 'PALIER' ) ; NTHERTOT = TABTEM.'NCHAMP' ; INUM = NTHER ; 'REPETER' BOUCPAL (NTHERTOT - NTHER) ; INUM = INUM + 1 ; TABMAT.INUM = TABMAT.NTHER ; 'SI' ( IMESS ) ; 'MESS' 'OPTION PALIER : CREATION DE TABMAT.' INUM ; 'FINSI' ; 'FIN' BOUCPAL ; 'FINSI' ; TEPMAT.'MODELE' = MODTOT ; TEPMAT.'MATERIAU' = TABMAT ; 'SI' ( IMESS ) ; 'SAUTER' 1 'LIGNE' ; 'SAUTER' 1 'LIGNE' ; 'FINSI' ; * 'FINPROC' TEPMAT ; **** @MATLAB DEBPROC @MATLAB EVO1*EVOLUTION ; I1 = 1 ; REPETER BOUC1 N_VALE1 ; I2 = 1 ; REPETER BOUC2 N_COUR1 ; LLIST1 = CHAIN LLIST1 ' ' VALEI2 ; I2 = I2 + 1 ; FIN BOUC2 ; I1 = I1 + 1 ; MESS LLIST1 ; FIN BOUC1 ; FINPROC ; *----------------------------------------------------------------------- *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 * * ********************************************************************* * PROCEDURE FRENET3D : CALCUL DU REPERE DE FRENET LE LONG D'UNE LIGNE * EN 3D ********************************************************************* * CH_T CH_N CH_B = FRENET LIG_1 ; SI (V1 > 2) ; CH_R = A11 ET A12 ET A13 ET A21 ET A22 ET A23 ET A31 ET A32 ET A33 ; SI ( NON ( EXISTE LOG_1 )) ; LOG_1 = FAUX ; FINSI ; SI LOG_1 ; DL = (((XMAX - XMIN)**2) + ((YMAX -YMIN)**2))**0.5 ; AMP = DL/10. ; TITRE 'REPERE DE FRENET DE LA LIGNE ' ; FINSI ; FINSI ; *FINPROC CH_R ; SI (V1 <EG 2) ; CH_R = A11 ET A12 ET A21 ET A22 ; SI LOG_1 ; DL = (((XMAX - XMIN)**2) + ((YMAX -YMIN)**2))**0.5 ; AMP = DL/10. ; TITRE 'REPERE DE FRENET DE LA LIGNE ' ; FINSI ; FINSI ; FINPROC CH_R ; *----------------------------------------------------------------------- * *----------Fin de la procedure FRENET3D * *----------Debut de la procedure INDSCHL * *----------------------------------------------------------------------- *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 ************************************************************************ * Organisation : * -------------- * Une boucle sur les indices de la table entree teste s'ils sont reels * ou pas. Si l'indice est reel, on le stocke a la suite des autres * dans la liste des reels. 'DEBPROC' @INDSCHL TA_1*'TABLE ' ; * I1 = 0 ; I1 = I1 + 1 ; IND_1 = TA_2 . I1 ; SI ( EGA TYP_1 'FLOTTANT') ; SINON ; FINSI ; FIN BO_1 ; FINPROC P_1 ; *----------------------------------------------------------------------- * *----------Fin de la procedure @INDSCHL * *----------Debut de la procedure EPSCHL * *----------------------------------------------------------------------- *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 ************************************************************************ 'DEBPROC' EPSCHL MOD_1*MMODEL SI_13*MCHAML MAT_1/MCHAML TE0*CHPOINT TE1*CHPOINT TAB1/'TABLE ' ; *ENTREES TAB1.ZONE_MAT * .MODL_MAT .TETMAT .TEXTMECA .VIEW_P *SORTIES .MATTOT .VIEW_P * SI (( NON ( EXISTE MAT_1)) ET ( EXISTE TAB1)) ; I1 = 0 ; REPETER BOMA11 ; I1 = I1 + 1 ; SI ( EXISTE (TAB1.ZONE_MAT) I1 ) ; MO1 = TAB1.MODL_MAT. I1 ; NU_1 = CHANGER CHAM NU_1 MO1 'RIGIDITE' ; Y_1 = CHANGER CHAM Y_1 MO1 'RIGIDITE' ; AL_1 = CHANGER CHAM AL_1 MO1 'RIGIDITE' ; TEX1 = TEXTE 'YOUN Y_1 NU NU_1 ALPH AL_1' ; SI ( IMOTM1 EGA 5 ) ; TEX1 = TEXTE TEX1 'SIGY YM_1 ' ; TITRE 'MAT' I1 ' YIELD MODULUS' ; YM_1 = CHANGER CHAM YM_1 MO1 'RIGIDITE' ; TEX1 = TEXTE TEX1 'H H_1 ' ; H_1 = CHANGER CHAM H_1 MO1 'RIGIDITE' ; FINSI ; SINON ; QUITTER BOMA11 ; FINSI ; SI ( I1 EGA 1 ) ; MOD_1 = MO1 ; MAT_2 = MA1 ; SINON ; MOD_1 = MOD_1 ET MO1 ; MAT_2 = MAT_2 ET MA1 ; FINSI ; FIN BOMA11 ; SINON ; MAT_2 = MAT_1 ; FINSI ; TAB1.MATTOT = MAT_2 ; SI_11 = THETA MOD_1 MAT_2 ( TE1 - TE0 ) ; FO1 = BSIGMA MOD_1 SI_11 ; SI_12 = SI_13 + SI_11 ; * ici il faudrait extraire le alpha de mat_2 * multiplier par ( TE1 - TE0 ) et en faire un EPZZ * a rajouter a EPS_1 * MAIL1 = EXTR AL_P1 'MAIL' ; SI ( NON (EXISTE TAB1 VIEW_P )) ; TAB1.VIEW_P = 1.E8 1.E8 1.E8 ; FINSI ; FINSI ; * OPTI TRAC X ; * TRAC CACH TAB1.VIEW_P MAIL1 ; TT_1 = ( AL_P1 * 0.) + TT_1 ; * MAIL2 = EXTR TT_1 'MAIL' ; * TRAC CACH TAB1.VIEW_P MAIL2 ; E_ZZ1 = AL_P1 * TT_1 ; EPS_1 = EPS_1 ET E_ZZ1 ; FINPROC EPS_1 ; *----------------------------------------------------------------------- * *----------Fin de la procedure EPSCHL * *----------Debut de la procedure MECASCH1 * *ENTREES TAB1.ZONE_MAT * .MODL_MAT .TETMAT .TEXTMECA .BLOCAGE * .CHPOTHETA .DEFO_PLANE_GENE * .MAXITERATION .L_BAS *E/S .VIEW_P .LIS_ATRAITER .MAXITERATION * .ITERATION .CHA1 .VIEW_P2 *SORTIES .MATTOT .L_CONTOUR .PLASTIQUE .DEFO_PLANE_GENE * .S_TOTAL .MODTOT .MATTOT * .THERMIQUE .NZ *----------------------------------------------------------------------- *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 ************************************************************************ 'DEBPROC' MECASCH1 TAB1*'TABLE ' ; *OPTI ECHO 0 ; SI ( V1 EGA 2) ; SINON ; FINSI ; SI ( NON (EXISTE TAB1 VIEW_P )) ; TAB1.VIEW_P = 1.E8 1.E8 1.E8 ; FINSI ; FINSI ; *SI ( NON ( EXISTE TAB1 MECANIQUE )) ; * TAB1.MECANIQUE = FAUX ; * MESS ' >>>>>si vous voulez un calcul mecanique ' ; * MESS ' >>>>>faire TAB1.MECANIQUE = VRAI ' ; *FINSI ; *1 *SI ( TAB1.MECANIQUE ) ; * SI ( NON ( EXISTE TAB1 CHPOTHETA )) ; * TAB1.CHPOTHETA = TABLE ; * FINSI ; * XI11 = 0. ; SI ( NON ( EXISTE TAB1 LIS_ATRAITER )) ; TAB1. LIS_ATRAITER = @INDSCHL (TAB1.CHPOTHETA) ; FINSI ; LIS1 = TAB1. LIS_ATRAITER ; * MESS '>>>> cas a traiter ' ; * LIST LIS1 ; * SI ( EXISTE TAB1 CHPT_INI ) ; * TAB1.CHPOTHETA . 0. = TAB1 . CHPT_INI ; * LIS1 = PROG XI11 ; * SINON ; * XI11 = -1. ; * LIS1 = PROG ; * FINSI ; * SI ( EXISTE TAB1 CHPT_FINAL ) ; * SI ( NON ( EXISTE TAB1 CHPT_INI ) ) ; * MESS '>>>> IL FALLAIT DONNER UN CHAMP INITIAL >>>>>' ; * MESS '>>>> CELA VA SE PLANTER >>>>>' ; * FINSI ; * XI11 = XI11 + 1. ; * MESS '>>>>0.1 ' ; * LIS1 = LIS1 ET ( PROG XI11 ) ; * TAB1.CHPOTHETA . XI11 = TAB1 . CHPT_FINAL ; * FINSI ; * SI ( (TAB1 . PERMANENT) EGA VRAI ) ; * I11 = 0 ; * REPETER BOCAP1 ( DIME ( TAB1 . LIS_NO_ATRAITER) ) ; * SI ( EXISTE TAB1 CHPT_FINAL ) ; QUITTER BOCAP1; FINSI ; * XI11 = XI11 + 1. ; * MESS '>>>>0.2 ' ; * I11 = I11 + 1 ; * I1 = EXTR TAB1.LIS_NO_ATRAITER I11 ; * TAB1.CHPOTHETA . XI11 = TAB1.I1 ; * LIS1 = LIS1 ET ( PROG XI11 ) ; * FIN BOCAP1 ; * FINSI ; * SI ( ( ((TAB1 . TRANSITOIRE) EGA VRAI ) ET * (TAB1 . PERMANENT) EGA FAUX ) ) ; * REPETER BOCAT1 ; * SI ( EXISTE TAB1 CHPT_FINAL); QUITTER BOCAT1; FINSI ; * XI11 = XI11 + 1. ; * MESS '>>>>0.3 ' ; * I11 = ENTIER XI11 ; * SI ( NON ( EXISTE TAB1 I11 )); QUITTER BOCAT1; FINSI ; * TAB1.CHPOTHETA . XI11 = TAB1. I11 ; * LIS1 = LIS1 ET ( PROG XI11 ) ; * FIN BOCAT1 ; * FINSI ; * * XF1 = PROG (DIME LIS1) * 1. ; * F1 = FORCE FY 0. ( TAB1 . L_BAS ) ; * CHA1 = CHAR F1 ( EVOL MANU LIS1 XF1 ) ; IPP1 = 0 ; REPETER BOMA10 ; IPP1 = IPP1 + 1 ; SI ( EXISTE (TAB1.ZONE_MAT) IPP1 ) ; SI ( IPP1 EGA 1 ) ; STOT1 = TAB1.ZONE_MAT . IPP1 ; CONTT1 = TFRONT1 (TAB1.ZONE_MAT . IPP1 ) ; SINON ; STOT1 = STOT1 ET (TAB1.ZONE_MAT . IPP1) ; CONTT1 = CONTT1 ET ( TFRONT1 (TAB1.ZONE_MAT. IPP1)) ; FINSI ; SINON ; QUITTER BOMA10 ; FINSI ; FIN BOMA10 ; SI ( EXISTE TAB1 VIEW_P2 ) ; FINSI ; TAB1.L_CONTOUR = CONTT1 ; TAB1.S_TOTAL = STOT1 ; * on calcule une temperature moyenne de l intervalle TAB1.>CHP_TM1 = CHP_TM1 ; @DEFMAT TAB1 ; MOD_1 = TAB1.MODTOT; MAT_1 = TAB1.MATTOT ; SI ( NON (EXISTE TAB1 PLASTIQUE )) ; TAB1.PLASTIQUE = VRAI ; FINSI ; SI ( NON (EXISTE TAB1 DEFO_PLANE_GENE )) ; TAB1.DEFO_PLANE_GENE = FAUX ; FINSI ; SI ( (TAB1.PLASTIQUE ) ET ( NON TAB1.DEFO_PLANE_GENE )) ; * SI ( NON (EXISTE TAB1 PRECISION )) ; * TAB1.PRECISION = 0.01 ; * FINSI ; SI ( NON ( EXISTE TAB1 MAXITERATION ) ) ; TAB1.MAXITERATION = 100 ; FINSI ; * SI ( NON (EXISTE TAB1 ACCELERATION) ) ; * TAB1.ACCELERATION = 20 ; * FINSI ; TAB1.THERMIQUE = VRAI ; TAB1.ITERATION = KSI ; SI (NON (EXISTE TAB1 CHA1)) ; F1 = FORCE FY 0. (TAB1 . L_BAS) ; * TAB1.'CHA1' = CHA1 ; SINON ; CHARG1 = TAB1.'CHA1' ; FINSI ; TAB1.NZ = 0.; * TAB1.LIG1 = TAB1.L_BAS ; * TAB1.TINI = 150. ; *JS 19/10/94 je ne vois pas a quoi sert .TINI * TAB1.TINI = 0. ; * CHAI = CHAR (TAB1 .CHARMECAFI) ( EVOL MANU LIS1 XF1 ) ; RIG10 = RIG_1 et ( TAB1 . BLOCAGE ) ; * CHAI = CHAR (TAB1 .CHARMECAFI) ( EVOL MANU LIS1 XF1 ) ; NONLIN RIG10 MAT_1 CHARG1 LIS1 MOD_1 TAB1 ; FINSI ; FINPROC ; *----------------------------------------------------------------------- * *----------Fin de la procedure MECASCH1 * *----------Debut de la procedure MECASCH2 * *----------------------------------------------------------------------- *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 ************************************************************************ 'DEBPROC' MECASCH2 TAB1*'TABLE ' ; SI ( NON (EXISTE TAB1 LM_SIGCOMP )) ; FINSI ; SI ( NON (EXISTE TAB1 L_CASADEPOU )) ; FINSI ; SI ( NON (EXISTE TAB1 VIEW_P )) ; TAB1.VIEW_P = 1.E8 1.E8 1.E8 ; FINSI ; FINSI ; SI ( V1 EGA 2) ; * modif mitteau * TCACH = TEXT ' ' ; TCACH = ' ' ; SINON ; TCACH = ' CACH ' ; * TCACH = TEXT ' CACH ' ; FINSI ; IPP1 = 0 ; REPETER BOMA10 ; IPP1 = IPP1 + 1 ; SI ( EXISTE (TAB1.ZONE_MAT) IPP1 ) ; SI ( IPP1 EGA 1 ) ; STOT1 = TAB1.ZONE_MAT . IPP1 ; CONTT1 = TFRONT1 (TAB1.ZONE_MAT . IPP1 ) ; MOD_T1 = TAB1.MODL_MAT. IPP1 ; SINON ; STOT1 = STOT1 ET (TAB1.ZONE_MAT . IPP1) ; CONTT1 = CONTT1 ET ( TFRONT1 (TAB1.ZONE_MAT. IPP1)) ; MOD_T1 = MOD_T1 ET TAB1.MODL_MAT. IPP1 ; FINSI ; SINON ; QUITTER BOMA10 ; FINSI ; FIN BOMA10 ; TAB1.L_CONTOUR = CONTT1 ; TAB1.S_TOTAL = STOT1 ; SI ( NON (EXISTE TAB1 S_ADEPOU )) ; CONTT1 = TAB1.L_CONTOUR ; STOT1 = TAB1.S_TOTAL ; MOTOT1 = MOD_T1 ; SINON ; STOT1 = TAB1.S_ADEPOU ; MOTOT1 = TAB1.MO_ADEPOU ; SI ( NON (EXISTE TAB1 C_ADEPOU )) ; CONTT1 = TFRONT1 TAB1.S_ADEPOU ; SINON ; CONTT1 = TAB1.C_ADEPOU ; FINSI ; FINSI ; TAC8 = TABLE ; TAC8.1 = 'NOLI ' ; TAC8.3 = 'MARQ ETOI REGU' ; TAC8.4 = 'MARQ LOSA REGU' ; TAC8.5 = 'MARQ CARR REGU' ; TAC8.7 = 'MARQ TRIB REGU' ; TAC8.9 = 'MARQ ETOI REGU' ; TAC8.10 = 'MARQ CROI REGU' ; SI ( NON (EXISTE TAB1 LM_SIGCOMP )) ; FINSI ; SI ( NON (EXISTE TAB1 L_CASADEPOU )) ; I1 = 0 ; REPETER BINDE1 ; I1 = I1 + 1 ; SI (EXISTE TAB2 I1 ) ; XX2 = TAB2.I1 ; SINON ; QUITTER BINDE1 ; FINSI ; FIN BINDE1 ; FINSI ; FINSI ; MOD_1 = TAB1.MODTOT ; MAT_1 = TAB1.MATTOT ; * *JS 10/94 introduction option TAB1.TRAC_DEFOCONT SI( NON ( EXISTE TAB1 TRAC_DEFOCONT )) ; TAB1.TRAC_DEFOCONT = VRAI ; FINSI ; SI TAB1.TRAC_DEFOCONT ; MONMAIL = CONTT1 ; SINON ; MONMAIL = STOT1 ; FINSI ; SI ( (TAB1.PLASTIQUE ) ET ( NON TAB1.DEFO_PLANE_GENE )) ; I1 = 0 ; I1 = I1 + 1 ; SIRESU1 = ET TAB1.RESUCONT.XIT1 VMI1 ; SIRESUA = ET TAB1.RESUVARI.XIT1 VMI1 ; TITRE 'TIME' XIT1 ' structure temperature' ; DTMI1 = ABS (TMMM1 - TMMI1) ; SI (EXISTE TAB1 TRAC_THERM) ; SI (TAB1.TRAC_THERM EGA VRAI ) ; SI( DTMI1 >EG 0.005 ) ; * modif raph * MC_CHAM MC_MODL MC_MAIL = @CHAQT MOTOT1 TAB1.'CHPOTHETA'.XIT1; * TRAC TCACH TAB1.VIEW_P MC_CHAM MC_MODL MC_MAIL CONTT1; * SI ( EXISTE TAB1 VIEW_P2 ) ; * MC_CHAM MC_MODL MC_MAIL = @CHAQT MOTOT1 TAB1.'CHPOTHETA'.XIT1; * TRAC TCACH TAB1.VIEW_P2 MC_CHAM MC_MODL MC_MAIL CONTT1; * FINSI ; SI ( EXISTE TAB1 VIEW_P2 ) ; FINSI ; FINSI ; FINSI ; FINSI ; TITRE 'TIME' XIT1 ' structure deformation' ; * TRAC TCACH TAB1.VIEW_P (ET DEF0 DEF5 ) ; SI ( EXISTE TAB1 VIEW_P2 ) ; * TRAC TCACH TAB1.VIEW_P2 ( ET DEF0 DEF5 ) ; FINSI ; I2 = 0 ; I2 = I2 + 1 ; TITRE 'TIME' XIT1 MOCOMP ' STRESSES' ; MOCOMP = 'SCAL' ; * SINON ; * MC_CHAM MC_MODL MC_MAIL = * @CHAQT MOTOT1 ( EXCO SIRESUA MOCOMP ); * TRAC CACH TAB1.VIEW_P MOD_1 * MC_CHAM MC_MODL MC_MAIL CONTT1 ; FINSI ; LIST MOCOMP ; SINON ; MC_CHAM MC_MODL MC_MAIL = @CHAQT MOTOT1 CHCONT1 ; @TRASCH TCACH TAB1.VIEW_P MC_CHAM MC_MODL MC_MAIL STOT1 CONTT1 ; FINSI ; SI ( EXISTE TAB1 VIEW_P2 ) ; LIST MOCOMP ; SINON ; MC_CHAM MC_MODL MC_MAIL = @CHAQT MOTOT1 CHCONT1 ; @TRASCH TCACH TAB1.VIEW_P2 MC_CHAM MC_MODL MC_MAIL STOT1 CONTT1 ; FINSI ; FINSI ; FIN BDEPO2 ; FIN BDEPO1 ; I3 = 0 ; I3 = I3 + 1 ; DEPL_1 = TAB1.RESUDEPL.XIT1 ; SI_1 = TAB1.RESUCONT.XIT1 ; * EPS_2 = TAB1.RESUDEFI.XIT1 + (ELAS MOD_1 SI_1 MAT_1) ; * MOD_1 = TAB1.MODTOT ; I4 = 0 ; I4 = I4 + 1 ; TITRE 'TIME' XIT1 MOCOMP ' STRAINS' ; SI ( EGA MOCOMP 'EPSE') ; TITRE 'TIME' XIT1 ' EPSE PLASTIC EQUIVALENT STRAINS '; * SINON ; * MC_CHAM MC_MODL MC_MAIL = * @CHAQT MOTOT1 ( EXCO EPS_2 MOCOMP ); * TRAC CACH TAB1.VIEW_P MOD_1 MC_CHAM MC_MODL MC_MAIL * CONTT1; FINSI ; SI (( EGA MOCOMP 'EPZZ') ET ( V1 EGA 2 )) ; EPS_3 = TAB1.RESUDEFI.XIT1 + (EPSCHL MOD_1 SI_1 (TAB1.CHPOTHETA. 0.) (TAB1.CHPOTHETA.XIT1) TAB1 ); TITRE 'TIME' XIT1 MOCOMP ' STRAINS' ; @TRASCH TCACH TAB1.VIEW_P MC_CHAM MC_MODL MC_MAIL STOT1 CONTT1 ; SI ( EXISTE TAB1 VIEW_P2 ); @TRASCH TCACH TAB1.VIEW_P2 MC_CHAM MC_MODL MC_MAIL STOT1 CONTT1; FINSI ; SINON ; LIST MOCOMP ; SINON ; @TRASCH TCACH TAB1.VIEW_P MC_CHAM MC_MODL MC_MAIL STOT1 CONTT1 ; FINSI ; SI ( EXISTE TAB1 VIEW_P2 ) ; LIST MOCOMP ; SINON ; @TRASCH TCACH TAB1.VIEW_P2 MC_CHAM MC_MODL MC_MAIL STOT1 CONTT1; FINSI ; FINSI ; FINSI ; FIN BDEPO4 ; FIN BDEPO3 ; * DEPOMIMA TAB1 ; FINSI ; FINPROC ; **** @OMBJET DEBPROC @OMBJET TAB1*TABLE ; * *************************************************** * PROGRAMME CASTEM GERANT L'APPEL AUX DIFFERENTES * * PROCEDURES POUR REMONTER LES LIGNES DE CHAMP * * SELON LA METHODE CHOISIE. * * (VERSION DE @OMBRAGE POUR JET) * *************************************************** * Modif : * * 09/11/01 (A.MOAL) : sens de remontee selon le * * signe de dpsi * * 23/11/01 (A.MOAL) : suppression du sens de * * remontee suivant le signe * * de dpsi * * 23/11/01 (A.MOAL) : possibilite d'imposer le * * sens de remontee * *************************************************** * *--- VARIABLES D'ENTREE : MAIL1 = TAB1.<S_OMBRE ; VMAIL1 = TAB1.<V_OMBRE_N; GMAIL1 = TAB1.<S_OMBRE_N; MAIL2 = TAB1.<S_OMBRANT ; VMAIL2 = TAB1.<V_OMBRANT_N; GMAIL2 = TAB1.<S_OMBRANT_N; IMETHOD = TAB1.<METHODE_REMONTEE ; REPO = TAB1.<SAUV_PTS_OMBRANTS ; SINON ; REPO = FAUX ; FINSI ; tab1.<reprise = faux ; finsi ; * --- distance de remontee precedente en cas de reprise si (tab1.<reprise) ; d_prec = tab1.<LONGUEUR_REMONTEE ; sinon ; d_prec = 0. ; finsi ; DMAX2 = TAB1.<DIST_AVEC_TEST ; PASB2 = TAB1.<PAS_AVEC_TEST ; SI REPV ; DMAX1 = TAB1.<DIST_SANS_TEST ; PASB1 = TAB1.<PAS_SANS_TEST ; FINSI ; * * --- Si le calcul est une reprise, on ne re-calcule pas CHSIGN1 * si (non (tab1.<reprise)); * --- VARIABLES D'ENTREE, Valeurs par defaut * @VDEFJET TAB1 ; SENS0 = TAB1.<SENS_REMONTEE ; * * ---- * *---- lecture de la carte de champ magnetique dans un fichier @LECTB TAB1 ; TITRE '@OMBJET : MAGNETIC DOMAIN, STUDIED AND SHADING OBJECT'; *TRAC (TAB1.<GRILLE_B ET MAIL2 ET MAIL1) ; * ---- Calcul du champ dans le repere global * ---- coordonnees dans le repere du maillage SI (DIM0 EGA 2) ; ZM0 = XM0 * 0. ; BNUL = XM0 * 0. ; SINON ; FINSI ; *---- Coordonnees dans le repere global du *---- tore (pas de changement de repere) XG_OLD = XM0 ; YG_OLD = YM0 ; ZG_OLD = ZM0 ; TAB1.<MAILLAGE_B = MAIL1 ; BR BZ BPHI = @MAGNB TAB1 ; *---- composantes de B dans le repere du maillage *AM*11/09/01*BX = BR * (COS PHI) + (BPHI * (SIN PHI)); *AM*11/09/01*BY = BR * (SIN PHI) - (BPHI * (COS PHI)); BXM = BR * (COS PHI) - (BPHI * (SIN PHI)); BYM = BR * (SIN PHI) + (BPHI * (COS PHI)); BZM = BZ ; MENAGE ; * *---- calcul des normales a la surface calculees *---- dans le repere du maillage MESS 'APPEL DE VNORM3D POUR LE MAILLAGE OMBRE'; NXM NYM NZM = @VNORM3D VMAIL1 GMAIL1 ; tab1.<nxm = NXM ; tab1.<nym = NYM ; tab1.<nzm = NZM ; sinon ; NXM = tab1.<nxm ; NYM = tab1.<nym ; NZM = tab1.<nzm ; finsi ; *---- calcul du produit scalaire PVBVN = (BXM*NXM) + (BYM*NYM) + (BZM*NZM); CHSIGN0 = PVBVN / (ABS PVBVN) ; SI (SENS0 NEG 0) ; * ---- possibilite d'imposer le sens de remontee des lignes * ---- sans tenir compte du critere sur b.n CHSIGN0 = (ABS CHSIGN0) * SENS0 ; FINSI ; *---- debut modif (09/11/01 - A.Moal) *---- mise en commentaire des modifs le 23/11/01 - A.Moal * l'idee abandonnee \E9tait : * Si SENS0 = 0 alors on remonte les lignes de champ avec * pour seul critere le sens de la normale sortante. * Si SENS0 = 1, on remonte dans le sens de B lorsque dpsi * est positif et dans le sens de -B lorsque dpsi est * negatif \E0 condition que ce soit dans le sens de * la normale sortante (sinon la ligne n'est pas * remontee pour le point considere). * Si SENS0 = - 1, on remonte dans le sens de B lorsque * dpsi est negatif et dans le sens de -B lorsque * dpsi est positif \E0 condition que ce soit dans le * sens de la normale sortante (sinon la ligne n'est * pas remontee pour le point considere). *SI (SENS0 NEG 0) ; * ---- on definit un sens de remontee en fonction de dpsi * CHDPSI = @DPSI TAB1 ; * SIGDPSI = CHDPSI * SENS0 / (ABS CHDPSI) ; * TITRE '@OMBJET : DPSI ON THE SHADOWED MESH' ; * TRAC CHDPSI MAIL1 ; * TITRE '@OMBJET : SIGN OF DPSI ON THE SHADOWED MESH' ; * TRAC SIGDPSI MAIL1 ; * ----- on ne remonte que les points dont le sens de remontee * ----- impose par <SENS_REMONTEE est le meme qu'avec le critere de * ----- la normale sortante (CHSIGN0 = 0. pour les autres points) * CHSIGN0 = CHSIGN0 * ((CHSIGN0 * SIGDPSI) MASQUE SUPERIEUR 0.); *FINSI ; *VB1 = @CVECT (BXM*CHSIGN0) (BYM*CHSIGN0) (BZM*CHSIGN0) * TAB1.LFLUX_EXTE VERT; *TITRE '@OMBJET : DIRECTION FOR COMING UP THE MAGNETIC LINES' ; *TRAC VB1 MAIL1 ; *---- fin mise en commentaire *---- fin modif *---- PROJECTION SUR LE MAILLAGE FIN INITIAL *---- BOUCLE SUR CHAQUE POINT DU MAILLAGE FIN REPETER BOUPI (NBNFIN - 1) ; I = &BOUPI + 1 ; CHSIGN1 = CHSIGN1 ET CHI ; FIN BOUPI ; *---- Complement de TAB1.<CHSIGN1 sur les noeuds dont on veut remonter *---- les lignes de champ REPETER BOUPTS1 NPTS ; pt1 = tab1 . <remontee . <point . &BOUPTS1 ; CHSIGN1 = CHSIGN1 ET CH1 ; FIN BOUPTS1 ; finsi ; TAB1.<CHSIGN = CHSIGN1 ; finsi ; * === NOMBRE DE PAS MAXIMUM A EFFECTUER PAR LA PROCEDURE * RM310898 ruse pour ne pas avoir de pb avec les parties entieres * apres constat comportement erratique nbpas2 = ENTIER ((DMAX2 + (PASB2/1000.))/PASB2) ; TAB1.<NBPAS2 = NBPAS2 ; DMAX0 = (NBPAS2 * PASB2) + d_prec ; nbpas1 = ENTIER ((DMAX1 + (PASB1/1000.))/PASB1) ; TAB1.<NBPAS1 = NBPAS1 ; DMAX0 = (NBPAS1 * PASB1) + (NBPAS2 * PASB2) + d_prec ; finsi ; * * --- Choix du test d'intersection ANALYTIQUE (par defaut) ou GEOMETRIQUE * TAB1.<METHODE_INTERSECTION = ANALYTIQUE ; FINSI ; * * --- Appel de la procedure utiliant la methode analytique * SI (EGA TAB1.<METHODE_INTERSECTION ANALYTIQUE) ; @ANAJET TAB1 ; * ---- on retrouve la forme initiale FINSI ; * * --- Appel de la procedure utiliant la methode geometrique * SI (EGA TAB1.<METHODE_INTERSECTION GEOMETRIQUE) ; CHDIST0 MAI1TRAV POMB = @TESTGEO TAB1 ; TAB1.<CHDIST = CHDIST0; TAB1.<MAI1TRAV = MAI1TRAV ; FINSI ; SI (EGA (TAB1.<CONNEXION_MAX) 0.) ; MESS ' ' ; MESS ' ' ; SINON; FINSI; SI REPO ; TAB1.<P_OMBRANTS = POMB ; FINSI ; * --------------- VARIABLES DE SORTIE GENERALES : *------------------------------------ * FINPROC ; **** @OMBRAGE DEBPROC @OMBRAGE TAB1*TABLE ; * *************************************************** * PROGRAMME CASTEM GERANT L'APPEL AUX DIFFERENTES * * PROCEDURES POUR REMONTER LES LIGNES DE CHAMP * * SELON LA METHODE CHOISIE * *************************************************** * *--- VARIABLES D'ENTREE : MAIL1 = TAB1.<S_OMBRE ; VMAIL1 = TAB1.<V_OMBRE_N; GMAIL1 = TAB1.<S_OMBRE_N; MAIL2 = TAB1.<S_OMBRANT ; VMAIL2 = TAB1.<V_OMBRANT_N; GMAIL2 = TAB1.<S_OMBRANT_N; IMETHOD = TAB1.<METHODE_REMONTEE ; RP = TAB1.<RP ; HP = TAB1.<HP ; REPO = TAB1.<SAUV_PTS_OMBRANTS ; SINON ; REPO = FAUX ; FINSI ; tab1.<reprise = faux ; finsi ; * forcage du sens de remontee des linges de champ * voir commentaire plus loin ou la notice chsignr1 = tab1.<chsignr1 ; finsi ; * * ------ verification de l'appartenance du maillage ombre --------- * --------------- au domaine de validite de TOKAFLU --------------- xg yg zg = @crmgc xm ym zm tab1 ; rho theta phi = @crgtc xg yg zg rp hp ; * RM 22/12/98 je desactive le test sur les angles *si ((rhomax > 1.1) ou (rhomin < 0.4) ou * (thetamax > 110.) ou (thetamin < -110.)) ; si ((rhomax > 1.1) ou (rhomin < 0.4)) ; finsi ; * --- distance de remontee precedente en cas de reprise si (tab1.<reprise) ; d_prec = tab1.<LONGUEUR_REMONTEE ; sinon ; d_prec = 0. ; finsi ; DMAX2 = TAB1.<DIST_AVEC_TEST ; PASB2 = TAB1.<PAS_AVEC_TEST ; SI REPV ; DMAX1 = TAB1.<DIST_SANS_TEST ; PASB1 = TAB1.<PAS_SANS_TEST ; FINSI ; * * --- Si le calcul est une reprise, on ne re-calcule pas CHSIGN1 * si (non (tab1.<reprise)); * --- VARIABLES D'ENTREE, Valeurs par defaut * @VDEFAUT TAB1 ; * * ---- * * ---- Calcul du champ dans le repere global * ---- coordonnees dans le repere du maillage SI (DIM0 EGA 2) ; ZM0 = XM0 * 0. ; BNUL = XM0 * 0. ; SINON ; FINSI ; *---- Coordonnees dans le repere global du tore XG_OLD YG_OLD ZG_OLD = @CRMGC XM0 YM0 ZM0 TAB1 ; * TYPCAL = TAB1.<TYPE_CALCUL ; SI (EGA TYPCAL 'AVEC_SHIFT_AVEC_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'AVEC_SHIFT_SANS_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = FAUX ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_AVEC_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_SANS_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = FAUX ; FINSI ; SI ((NON (EXISTE ISHIFT)) OU (NON (EXISTE IRIPPLE))) ; FINSI ; BXG BYG BZG FSECU = @CHAMB TAB1 XG_OLD YG_OLD ZG_OLD ISHIFT IRIPPLE ; *---- composantes de B dans le repere du maillage BXM BYM BZM = @CBGMV BXG BYG BZG TAB1 ; * *---- calcul des normales a la surface calculees *---- dans le repere du maillage MESS 'APPEL DE VNORM3D POUR LE MAILLAGE OMBRE'; NXM NYM NZM = @VNORM3D VMAIL1 GMAIL1 ; tab1.<nxm = NXM ; tab1.<nym = NYM ; tab1.<nzm = NZM ; sinon ; NXM = tab1.<nxm ; NYM = tab1.<nym ; NZM = tab1.<nzm ; finsi ; *---- calcul du produit scalaire PVBVN = (BXM*NXM) + (BYM*NYM) + (BZM*NZM); CHSIGN0 = PVBVN / (ABS PVBVN) ; *---- PROJECTION SUR LE MAILLAGE FIN INITIAL *---- BOUCLE SUR CHAQUE POINT DU MAILLAGE FIN REPETER BOUPI (NBNFIN - 1) ; I = &BOUPI + 1 ; CHSIGN1 = CHSIGN1 ET CHI ; FIN BOUPI ; *---- Complement de TAB1.<CHSIGN1 sur les noeuds dont on veut remonter *---- les lignes de champ * ajout R. Mitteau le 13 mars 2001 * possibilite de definir soi-meme le chsign pour les noeuds * dont on veut suivre la trajectoire * on defini un tab1.chsign2, qu'on prend si il existe chsign1 = chsign1 et chsignr1 ; sinon ; REPETER BOUPTS1 NPTS ; pt1 = tab1 . <remontee . <point . &BOUPTS1 ; CHSIGN1 = CHSIGN1 ET CH1 ; FIN BOUPTS1 ; finsi ; TAB1.<CHSIGN = CHSIGN1 ; * === NOMBRE DE PAS MAXIMUM A EFFECTUER PAR LA PROCEDURE * RM310898 ruse pour ne pas avoir de pb avec les parties entieres * apres constat comportement erratique nbpas2 = ENTIER ((DMAX2 + (PASB2/1000.))/PASB2) ; TAB1.<NBPAS2 = NBPAS2 ; DMAX0 = (NBPAS2 * PASB2) + d_prec ; nbpas1 = ENTIER ((DMAX1 + (PASB1/1000.))/PASB1) ; TAB1.<NBPAS1 = NBPAS1 ; DMAX0 = (NBPAS1 * PASB1) + (NBPAS2 * PASB2) + d_prec ; finsi ; * * --- Choix du test d'intersection ANALYTIQUE (par defaut) ou GEOMETRIQUE * TAB1.<METHODE_INTERSECTION = ANALYTIQUE ; FINSI ; * * --- Appel de la procedure utiliant la methode analytique * SI (EGA TAB1.<METHODE_INTERSECTION ANALYTIQUE) ; @ANALY TAB1 ; FINSI ; * * --- Appel de la procedure utiliant la methode geometrique * SI (EGA TAB1.<METHODE_INTERSECTION GEOMETRIQUE) ; CHDIST0 MAI1TRAV POMB = @TESTGEO TAB1 ; TAB1.<CHDIST = CHDIST0; TAB1.<MAI1TRAV = MAI1TRAV ; FINSI ; SI (EGA (TAB1.<CONNEXION_MAX) 0.) ; MESS ' ' ; MESS ' ' ; SINON; FINSI; SI REPO ; TAB1.<P_OMBRANTS = POMB ; FINSI ; * --------------- VARIABLES DE SORTIE GENERALES : *------------------------------------ * FINPROC ; ***** OPIE ********************************************************* ****** PROCEDURE IPOE ****** ********************************************************* * INTERPOLATION EN UTILISANT UNE EVOLUTION *-------------------------------------------------------- *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 IA1 = ( (LR_2B - LR_2A) MASQUE 'EGSUPE' 'SOMME' 0.) ; II1 = ( (LR_2B - LR_2A) MASQUE 'EGINFE' 'SOMME' 0.) ; IS2 = IS1 - 1 ; SI ( IA1 EGA IS2 ) ; LRE_2 = LR_1 ; LRE_1 = LR_2 ; A_1 = 1. ; SINON ; SI ( II1 EGA IS2 ) ; A_1 = -1. ; LRE_2 = LR_1 ; LRE_1 = LR_2 * A_1 ; SINON ; FINSI ; FINSI ; SI ( NON (EXISTE MO_1)) ; SINON ; MO_2 = MO_1 ; FINSI ; SI (( EGA MO_2 'LINE' ) OU ( EGA MO_2 'FIXE' )) ; SI ( EXISTE OBJ_11 ) ; OBJ_2 = ITPLT LRE_1 LRE_2 MO_2 (OBJ_11 * A_1) ; FINSI ; SI ( EXISTE OBJ_12 ) ; OBJ_2 = ITPLT LRE_1 LRE_2 MO_2 (OBJ_12 * A_1) ; FINSI ; SI ( EXISTE OBJ_13 ) ; OBJ_2 = ITPLT LRE_1 LRE_2 MO_2 (OBJ_13 * A_1) ; FINSI ; SINON ; SI ( EXISTE OBJ_11 ) ; FINSI ; SI ( EXISTE OBJ_12 ) ; FINSI ; SI ( EXISTE OBJ_13 ) ; FINSI ; FINSI ; FINPROC OBJ_2 ; *-------------------------------------------------------------------- **** ORTHO1 ******************** * PROCEDURE ORTHO1 * ******************** DEBPROC ORTHO1 GEO1*MAILLAGE LIG1*MAILLAGE CH1*CHPOINT CH2*CHPOINT ALPHA*FLOTTANT LL*LISTREEL TYPEMAT*MOT TYPEELEM*LISTMOTS; NBCOMP = 0; REPETER BOUCLNB NBTYPE; NBCOMP = NBCOMP + 1; SI (NBCOMP EGA 1); MODL1 = MODLNB; SINON; MODL1 = MODL1 ET MODLNB; FINSI; FIN BOUCLNB; SI (DIMGEO EGA 3); REPETER BOUCL1 NEL1; CH1GEO = CH1MAIL; CH2GEO = CH2MAIL; SINON; CH1GEO = CH1GEO ET CH1MAIL; CH2GEO = CH2GEO ET CH2MAIL; FINSI; FIN BOUCL1; CH1 = ((COS ALPHA)*CH1GEO) + ((SIN ALPHA)*CH2GEO); CH2 = (((-1.*(SIN ALPHA))*CH1GEO)) + ((COS ALPHA)*CH2GEO); SINON; REPETER BOUCL1 NEL1; CH1GEO = CH1MAIL; CH2GEO = CH2MAIL; SINON; CH1GEO = CH1GEO ET CH1MAIL; CH2GEO = CH2GEO ET CH2MAIL; FINSI; FIN BOUCL1; CH1 = (CH1GEO*(COS ALPHA)) + (CH2GEO*(SIN ALPHA)); CH2 = ((CH1GEO*(-1.*(SIN ALPHA)))) + (CH2GEO*(COS ALPHA)); FINSI; YOUNGR = ( CHNEUTRE * 0.) + YOUNG11; YOUNGZ = ( CHNEUTRE * 0.) + YOUNG22; YOUNGT = ( CHNEUTRE * 0.) + YOUNG33; NURZ = ( CHNEUTRE * 0.) + NU11; NUZT = ( CHNEUTRE * 0.) + NU22; NURT = ( CHNEUTRE * 0.) + NU33; CISRZ = ( CHNEUTRE * 0.) + CIS11; CISZT = ( CHNEUTRE * 0.) + CIS22; CISRT = ( CHNEUTRE * 0.) + CIS33; ALPH12 = ( CHNEUTRE * 0.) + ALPH11; ALPH22 = ( CHNEUTRE * 0.) + ALPH21; ALPH32 = ( CHNEUTRE * 0.) + ALPH31; RHO1 = ( CHNEUTRE * 0.) + RHO; SI ((EGA TYPEMAT COMI) OU ( EGA TYPEMAT MABIPLAN)); MAT11 = YOUNG1 ET YOUNG2 ET NU1; MAT22 = CIS1; MAT33 = VRX1 et VRY1 et VZX1 et VZY1; MAT44 = ALPH1 ET ALPH2 ET RHO; FINSI; SI ( EGA TYPEMAT COEP); MAT11 = YOUNG1 ET YOUNG2 ET NU1; MAT22 = CIS1 ET CIS2 ET CIS3; MAT33 = VRX1 et VRY1 et VZX1 et VZY1; MAT44 = ALPH1 ET ALPH2 ET RHO; FINSI; SI ( EGA TYPEMAT MABIAXI); MAT11 = YOUNG1 ET YOUNG2 ET YOUNG3 ET NU1 ET NU2 ET NU3; MAT22 = CIS1; MAT33 = VRX1 et VRY1 et VRZ1 et VZX1 et VZY1 et VZZ1; MAT44 = ALPH1 ET ALPH2 ET ALPH3 ET RHO; FINSI ; SI ( EGA TYPEMAT MABIFOU) ; MAT11 = YOUNG1 ET YOUNG2 ET YOUNG3 ET NU1 ET NU2 ET NU3; MAT22 = CIS1 ET CIS2 ET CIS3; MAT33 = VRX1 et VRY1 et VZX1 et VZY1; MAT44 = ALPH1 ET ALPH2 ET ALPH3 ET RHO; FINSI; SI ( EGA TYPEMAT MAS3D); MAT11 = YOUNG1 ET YOUNG2 ET YOUNG3 ET NU1 ET NU2 ET NU3; MAT22 = CIS1 ET CIS2 ET CIS3; MAT33 = VRX1 et VRY1 et VRZ1 et VZX1 et VZY1 et VZZ1; MAT44 = ALPH1 ET ALPH2 ET ALPH3 ET RHO; FINSI; MAT1 = MAT11 ET MAT22 ET MAT33 ET MAT44; FINPROC MATGEO MODL1 ; **** @PDROP DEBPROC @PDROP TAB1*TABLE ; ************************************************************************* * CALCUL CHUTE DE PRESSION * ************************************************************************* *123456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7* MESS ' '; NIVEAU = TAB1 . 'NIVEAU'; * SI (NIVEAU >EG 4) ; FINSI ; * * entrees * DIAM = TAB1 . 'D_MAQUETTE' ; VIT = TAB1 . 'V_IN' ; TEAU = TAB1 . 'T_IN' ; LMAQ = TAB1 . 'L_MAQUETTE' ; LH = TAB1 . 'L_HEATED' ; PIN = TAB1 . 'P_IN' ; TAPE = TAB1 . 'T_TAPE' ; YTW = TAB1 . 'TWIST_RATIO' ; * SI ( NON ( EXISTE TAB1 ORIGIN_LH)) ; TAB1 . ORIGIN_LH = 0. ; SI (NIVEAU >EG 2) ; FINSI ; FINSI ; ZLH = TAB1 . 'ORIGIN_LH' ; PI = 3.14159 ; * *****************TABLE DE L EAU*************************************** *--- RHO de l eau en fonction de la temperature PRHOF = PROG 1022.3 1000.5 994.6 985.5 974.1 960.6 945.3 928.3 909.7 889.0 866.8 842.4 815.7 785.9 752.6 714.3 ; *--- VISCO de l eau en fonction de la temperature PNNU = PROG 1.8E-3 1.E-3 .65E-3 .47E-3 .35E-3 .28E-3 .23E-3 .20E-3 .172E-3 .154E-3 .138E-3 .126E-3 .117E-3 .108E-3 .102E-3 .96E-4 ; ********************************************************************** * SI (YTW EGA 0.) ; * *---CANAL SANS SWIRL DH = DIAM ; VIT1 = VIT ; SI ( EXISTE TAB1 RIP_FLOWS ) ; S1 = ( TAB1 . RIP_FLOWS ) ; FINSI ; SI ( EXISTE TAB1 RIP_WETP ) ; * PERI = ( TAB1 . RIP_WETP ) ; * DH = 4. * S1 / PERI ; DH = DIAM ; FINSI ; SI ( EXISTE TAB1 RIP_TWIST ) ; PIS2Y = PI / ( 2. *( TAB1 . RIP_TWIST ) ) ; FACV2 = ( 1. + ( PIS2Y ** 2 ) ) ** 0.5 ; VIT1 = VIT * FACV2 ; * FACV = MAXI ( PROG FACV FACV2 ) ; FINSI ; RE = VIT1 * DH / ( N_NU / RHO_N ) ; * F_FRICT = TAB1.'LAMBDA' ; * SI ( RE < 2.E4 ) ; * MESS '>@PDROP> F_FRICT = 0.316 * ( RE ** -0.25 )' ; * F_FRICT = 0.316 * ( RE ** -0.25 ) ; * SINON ; * MESS '>@PDROP> F_FRICT = 0.184 * ( RE ** -0.20 )' ; * F_FRICT = 0.184 * ( RE ** -0.20 ) ; * FINSI ; * COEF = F_FRICT * LMAQ / DH ; * PERT = RHO_N * (VIT ** 2.) /2. ; SI ( EXISTE TAB1 'LAMBDA') ; F_FRICT = TAB1.'LAMBDA' ; SINON ; F_FRICT = (1.82*(LOG RE)/(LOG 10.) - 1.64) ** -2. ; FINSI ; DPRES = F_FRICT * LMAQ / DH * RHO_N * (VIT ** 2.) /2. ; SINON ; * *--- CANAL AVEC SWIRL QUASI = ((PI * DIAM * DIAM / 4.) - (TAPE * DIAM)) ; PERII = ((PI * DIAM)+(2.*(DIAM - TAPE))) ; DHI = 4. * QUASI / PERII ; * PYI = PI / (2. * YTW ) ; F1 = (1.+( PYI ** 2. ))**(0.5) ; RE = F1 * VIT * DHI / ( N_NU / RHO_N ) ; KFRIC = 0.3 * ( RE ** -0.25 ) ; * * DPRI = 0.15 * ( DHI ** -1.25 ) * ((N_NU / RHO_N)**0.25) * * ( F1 ** 2.75 ) ; * DPRE = RHO_N * ( VIT ** 1.75 ) ; * DPRES = DPRI * DPRE * LMAQ ; *---facteur correctif * AF = 1.46 ; * BF = 10100 ; * DPRES = (DPRES * AF) + BF ; DPRES = 0.158 * ((N_NU / RHO_N)**0.25) * ( DHI ** -1.25 ) * ( F1 ** 2.84 ) * LMAQ * RHO_N * ( VIT ** 1.84 ) ; * FINSI ; * *---DIFFERENTES PRESSIONS DANS LA MAQUETTE * TAB1 . V_RHO_N = RHO_N ; POUT = PIN - DPRES ; PIN_LC = PIN - (DPRES * ZLH / LMAQ ) ; POUT_LC = PIN - (DPRES * (ZLH + LH) / LMAQ ) ; PRESMOY = (PIN_LC + POUT_LC) / 2. ; * SI (NIVEAU >EG 4) ; FINSI ; FINPROC DPRES PIN_LC POUT_LC POUT ; **** @PPERM DEBPROC @PPERM TAB1*'TABLE' ITE1/'ENTIER'; SI (NON (EXISTE TAB1 NISOV)) ; TAB1.NISOV = 7 ; FINSI ; *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 * NIVEAU = TAB1.'NIVEAU' ; SI (NIVEAU >EG 4) ; FINSI ; MESS ' '; MESS ' '; MESS ' ######################################################### '; MESS ' POST TRAITEMENT DES CALCULS THERMIQUES STATIONAIRES '; MESS ' ######################################################### '; MESS ' '; MESS ' '; * RM 07/03/97 * pb dans les legendes des traces : il faudrait faire le menage * * * * * * *JS 11/1/95 TAB1.V_FACFM1 est utilise pour le calcul de la puissance * donnee en commentaire sur les courbes *le probleme est que dans le cas d un lambdaq TAB1.LIS_FLUX contient * la liste des PHI0 a traiter et non le flux moyen commme dans le * cas canon le plus simple serait peut etre d exiger LIS_PHI0 * et de CREER LIS_FLUMOYEN dans ce cas.... * * si (existe tab1 points) ; finsi ; * * INITIALISATION DES PROG * SI ((NON (EXISTE TAB1 GRAPH1)) OU (NON (EXISTE ITE1 ))); TAB1.GRAPH1 = TABLE; IPP1 = 0 ; si (existe tab1 li_point) ; TAB1.LIS_TEMP = TABLE ; IPP1 = IPP1 + 1 ; FIN BOUPO6; finsi ; si (existe tab1 points) ; TAB1.LIS_TEMP = TABLE ; REPETER BOUPO6 ; sinon ; quitter BOUPO6 ; finsi ; FIN BOUPO6; finsi ; SI ( EXISTE TAB1 EVEXP) ; TAB2 = INDEX (TAB1.EVEXP) ; IPP1 = 0 ; TAB1.LIS_FPAROI = TABLE ; TAB1.LIS_DTPAROI = TABLE ; TAB1.LIS_DTEXP = TABLE ; IPP1 = IPP1 + 1; FIN BOUPO7; FINSI ; FINSI; SI (NON (EXISTE ITE1 )); ITER = 0 ; SINON ; NN1 = 1 ; ITER = ITE1 ; FINSI; SI (NON (EXISTE TAB1 LFLUX_CONV_DESS )); TAB1.LFLUX_CONV_DESS = TAB1.LFLUX_CONV ; FINSI; * * DEBUT DU POST TRAITEMENT : EXTRACTION DES 'T' ET 'H' -> TRACE ISOV. * * COTETF1 = TAB1.C_COTETF1; SITETF1 = TAB1.C_SITETF1; COTETR1 = TAB1.C_COTETR1; SITETR1 = TAB1.C_SITETR1; COTETC1 = TAB1.C_COTETC1; SITETC1 = TAB1.C_SITETC1; S_TOT1 = TAB1.'M_ILLAGE_TOT'; C_ONT1 = TAB1.'M_IL_CONTOUR'; SI (EXISTE TAB1 'MAIL_TOT_DESS' ); S_TOT2 = TAB1.'MAIL_TOT_DESS'; C_ONT2 = TAB1.'MAIL_CONTOUR_DESS'; SINON ; S_TOT2 = TAB1.'M_ILLAGE_TOT'; C_ONT2 = TAB1.'M_IL_CONTOUR'; FINSI ; REPETER BOO1 NN1 ; SI (NON (EXISTE ITE1 )); ITER = ITER + 1 ; FINSI ; MESS ' '; MESS ' '; * FLU1 est le flux moyen SI ( EXISTE TAB1 'LAMDAQ' ); SI ( EXISTE TAB1 'V_FACFM1'); SINON ; FINSI ; * FLU1 = (EXTR TAB1.LIS_FLUX ITER) * TAB1.V_FACFM1; *js15.5.97* SI ( EXISTE TAB1 'CENTRE_PLASMA' ); *js15.5.97* PUI1 = FLU1 * (TAB1 . B_HEATED) * (TAB1.WE_HEATED ); *js15.5.97* SINON; *js15.5.97* PUI1 = FLU1 * (TAB1 . L_HEATED) * (TAB1.WE_HEATED ); *js15.5.97* FINSI; SINON; *js15.5.97* PUI1 = FLU1 * (TAB1 . L_HEATED) * (TAB1.W_HEATED ); TAB1 . WE_HEATED = TAB1 . W_HEATED; FINSI; * MOTITR = TAB1.TITR_MAQ ; *123456789012345678901234567890123456789012345678901234567890123456789012 TE1 = TAB1.ITER; SI ( EXISTE TAB1 LIS_TPER ); SINON; III1 = FLOT ITER; FINSI; *<JS deb SINON ; V_TETA = TAB1.RESUTHER.'VALEUR_TETA'.ITER; FINSI ; *<JS fin * CHTI2 = CHTI0 * 1.E5 ; *<JS deb CHTI1 = CHTI0 - V_TETA ; FLI1 = FLH1 * CHTI1 ; FLI2 = HCONVT1 * CHTI1 ; *<JS fin *<JS>FLI2 = @IPOE CHTI0 TAB1.'EV_FLUX_CONV'.ITER ; *<JS>FLI1 = FLUX (TAB1.'MODELV') (FLI2 * -1.); * CHTIR2 = CHTIR0 * 1.E5 ; *<JS deb CHTIR1 = CHTIR0 - TAB1.TEMP_RAYO; FLIR1 = FLHR1 * CHTIR1; FLIR2 = HCONRT1 * CHTIR1; *<JS fin *<JS>FLIR2 = @IPOE CHTIR0 TAB1.'EV_FLUX_RAYO'.ITER ; *<JS>FLIR1 = FLUX (TAB1.'MODELR') ( FLIR2 * -1. ); SI ( EGA TAB1.HYPERVAP VRAI ) ; AMPLV1 = ( TAB1 . DH ) / (2. * TAB1.MAX_SOFL ) ; SINON ; AMPLV1 = ( TAB1 . D_MAQUETTE ) / (2. * TAB1.MAX_SOFL); FINSI ; CHPT = @ET CHPX CHPY; C3TETR1 = TAB1.C_C3TETR1; CHPT = @ET CHPT CHPZ; FINSI ; TAB1. V_VEC33 = @VECADA CHPT AMPLV1 'ROUGE' ; *>MESS ' MAXI MINI DT RAYO ' ( MAXI CHTIR1) ( MINI CHTIR1) ; *>MESS ' MAXI MINI H RAYO ' ( MAXI HCONRT1) ( MINI HCONRT1); * *--- CREATION DES FLECHES (FLUX) : * CHPT = @ET CHPX CHPY; C3TETC1 = TAB1.C_C3TETC1; CHPT = @ET CHPT CHPZ; FINSI ; TAB1. V_VEC1 = @VECADA CHPT ( 1. * AMPLV1) 'ROUGE' ; CHPT = (@ET CHPX CHPY ); C3TETF1 = TAB1.C_C3TETF1; CHPT = @ET CHPT CHPZ; FINSI ; TAB1. V_VEC22 = @VECADA (-1. * CHPT) ( -1. * AMPLV1 ) 'VERT' ; * * --- TRACE DES ISOVALEURS ET DES FLUX * VEC_00 = TAB1.V_VEC22 ET TAB1.V_VEC1 ET TAB1.V_VEC33 ; SI ( EXISTE TAB1 VIEW_P2 ); FINSI; SI ( NON( EXISTE TAB1 TRAC_GRAD ) ); TAB1.TRAC_GRAD = FAUX; FINSI; SI TAB1.TRAC_GRAD; VEGRA1 = @VECGRAD MO_TOT TAB1.RESUTHER.CONDUCMAT.ITER TE1 AMPLV1 'ROUGE'; TRACER TAB1.VIEW_P CACH TE1 S_TOT1 C_ONT1 VEGRA1 ; FINSI ; * *--- TRACE DES COURBES: 'H' 'TEMP. ET FLUX SUR PAROI' * *>MESS ' COEF ECH SUR LA PAROI ' ; *>MESS ' MAXI MINI ' ( MAXI HCONVT1 ) ( MINI HCONVT1 ) ; TAB1.'FLUPAROI' = FLI2 ; MESS ' '; SI ( NON ( EXISTE TAB1 COEF_ECH_V_ABS ) ) ; TAB1.COEF_ECH_V_ABS = FAUX ; FINSI ; SI ( TAB1.COEF_ECH_V_ABS ) ; *> TITRE ' WALL HEAT TRANSFER COEF. (MAXI : ' ( MAXI HCONVT1 ) ; *> TAB1.EVHS = EVOL VERT 'CHPO' ( HCONVT1 ) SCAL TAB1.LFLUX_CONV_DESS ; *> TAB1.CH_H = REDU HCONVT1 TAB1.LFLUX_CONV ; *> DESSIN TAB1.EVHS YBOR 0. 3.e5 'MARQ CROI REGU' ; FINSI ; * fin jb FINSI ; * --- courbe 1 -> de temperature de la paroi fonction de l'abscisse *TITRE ' TEMP. PAROI ' ; *js EVCHTI21 = EVOL 'CHPO' CHTI2 SCAL TAB1.LFLUX_CONV_DESS ; * --- courbe 2 -> de l'evolution totale tonb *TITRE MOTITR 'WALL FLUX AND TEMP. FLUX: ' FLU1; * --- courbe 3 -> flux a la paroi fonction de l'abscisse *TITRE ' FLUX PAROI ' ; *js EVFLI11 = EVOL 'CHPO' FLI2 SCAL TAB1.LFLUX_CONV_DESS ; EVFPAROI = EVFLI11 ; * --- courbe 4 -> Valeur demi du flux a la paroi *TITRE ' DEMI FLUX PAROI ' ; EVE_PREP = EVCHTI21 ET EVTONB1 ET EVFLI11 ET EVFL1S2 ; EVE_PRJB = EVE_PREP ; * * --- pr\E9paration des l\E9gendes * * les temperatures ont des symboles ouverts * les flux des symboles fermes TAC2 = TABLE; TAC2.TITRE = TABLE ; TAC2.1 = 'MARQ CROI REGU' ; TAC2.TITRE.1 = 'WALL_TEMP' ; TAC2.2 = 'MARQ ETOI REGU' ; TAC2.TITRE.2 = 'TONB' ; TAC2.3 = 'MARQ LOSA REGU' ; TAC2.TITRE.3 = 'WALL_FLUX' ; TAC2.4 = 'MARQ TRIB REGU' ; TAC2.TITRE.4 = 'HALF_FLUX' ; TAC2.5 = 'MARQ CARR REGU' ; TAC2.TITRE.5 = 'TONG75' ; * a ce niveau, t,tonb, Wallflux sont pret a etre traces * traces des diff\E9rents flux critiques demand\E9s I1 = 1 ; VALTI1 = TAB1.M_TONG ; FINSI ; VALTI1 = 'BOWRING72' ; FINSI ; VALTI1 = 'CELATA94' ; FINSI ; I1 = I1 + 1 ; FIN BOUC6 ; SI ( NON ( EXISTE TAB1 M_TONGJB ) ) ; TAB1.M_TONGJB = FAUX ; FINSI ; SI TAB1.M_TONGJB ; FINSI ; TAC2.6 = 'MARQ CARR REGU TITRE 1.67*TONG75' ; TAC2.7 = 'MARQ TRIB REGU TITRE TONG75 CHF' ; DESSIN (EVE_PRJB ET EVCHF2 ET EVCHFJB) LEGE MIMA TAC2 ; SINON ; DESSIN EVE_PREP LEGE MIMA TAC2 ; TAB1.EVE_PREP1 = EVE_PREP ; FINSI ; SI (EXISTE TAB1 LO_FLUI) ; SI TAB1.LO_FLUI; TITRE 'INCIDENT FLUX AND TEMPERATURE ' FLU1; TAC2.1 = 'MARQ CROI REGU TITRE INCIDENT_FLUX' ; TAC2.3 = 'MARQ CARR REGU TITRE L_EXT_TEMP' ; DESSIN (EVFLEX1 ET EVTEX1) LEGE MIMA TAC2 ; FINSI ; FINSI ; * * --- EXTRACTION DES TEMP. AUX PTS DESIRES SI ( EXISTE TAB1 LI_POINT ) ; * * les 10 lignes suivantes sont assez d\E9licates * svp ne pas modifier sans l'avis de RM ou JS * IPP1 = 0; IPP1 = IPP1 + 1; *js cast95 n'accepte plus un text ds EXTR *js donc on lui recree le point * list (T_P1) ; MESS ' TEMPERATURE ................... : ' TMIP1 'EN ' T_P2; FIN BOUPO1; FINSI ; * autre syntaxe pour le meme resultat, RM101098 si (existe tab1 points) ; repe boupo7 ; si (existe ind1 &boupo7) ; nom1 = ind1.&boupo7 ; poa1 = tab1.points.nom1 ; IPP1 = &boupo7 ; MESS ' TEMPERATURE ................... : ' TMIP1 'EN ' nom1; sinon ; quitter boupo7 ; finsi ; fin boupo7; finsi ; MESS ' '; IPP1 = 0; REPETER BOUMA1; IPP1 = IPP1 + 1; SI ( EXISTE (TAB1.ZONE_MAT) IPP1 ) ; *****MESS ' SWIRL TAPE THICKNESS (M) : ' TTAPE; SINON ; QUITTER BOUMA1 ; FINSI ; FIN BOUMA1; MESS ' ' ; MESS ' ' ; *js15.5.97*PRPAT1 = ((RPAT1 * (TAB1.FSYM_X)) * TAB1.L_HEATED); PRPAT1 = RPAT1 ; *js15.5.97*PRLI1 = ((RLI1 * (TAB1.FSYM_X)) * TAB1.L_HEATED); PRLI1 = RLI1 ; ARLI1 = ABS PRLI1; POULI1 = ( ARLI1 /PRPAT1 ) * 100.; *js15.5.97*PRLIR1 = ((RLIR1 *(TAB1.FSYM_X)) * TAB1.L_HEATED); PRLIR1 = RLIR1 ; ARLIR1 = ABS PRLIR1; POULIR1 = ( ARLIR1 /PRPAT1 ) * 100.; ***MESS ' SWIRL TAPE THICKNESS (M) : ' TTAPE; SI ( EXISTE TAB1 'LAMDAQ' ); MESS ' LONGUEUR DE DECROISSANCE : ' TAB1.'LAMDAQ' ; FINSI; MESS ' ' ; MESS ' ' ; MESS ' ' ; MESS ' ' ; MESS ' PUISSANCE INCIDENTE : ' PRPAT1 ; * attention RLIR1 est negatif *js15.5.97*FLU11 = FLU1 + (RLIR1 / TAB1.W_HEATED * TAB1 . FSYM_X); MENAGE; SI ( EXISTE TAB1 EVEXP) ; * TAB2 = INDEX TAB1.EVEXP ; IPP1 = 0 ; IPP1 = IPP1 + 1; * T_P1 = 'TEXT' ('EXTR' IPP1 TAB1.LI_THEB); * T_P4 = EXTR IPP1 TAB1.LI_THEB ; T_P4 = TAB2.IPP1 ; TEXP_TH1 = @IPOE TAB1.EVEXP.T_P4 FLU11 ; SI (TEXP_TH1 < (TAB1.V_TONB + 1.) ) ; QUITTER BOUPO2; SINON; DTEXP_T1 = T_TH1 - TEXP_TH1 ; MESS ' TEMPERATURE experimentale...... : ' TEXP_TH1; XPAROI = OPIE EVTPAROI T_TH1 'FIXE' ; TPAROI = @IPOE EVTPAROI XPAROI 'FIXE' ; DTSATP = TPAROI - TAB1.T_SAT ; DTSATEXP = DTSATP - DTEXP_T1 ; * FPAROI = @IPOE EVFPAROI XPAROI 'FIXE' ; FPAROI = @IPOE TAB1.EVOFE1 TPAROI 'FIXE' ; MESS ' TPAROI FPAROI ..................: ' TPAROI FPAROI; FINSI ; SI ( (DTSATP <EG 0. ) OU (DTSATEXP <EG 0. ) ); QUITTER BOUPO2; SINON; FINSI ; FIN BOUPO2; FINSI ; SI ( NON (EXISTE TAB1 LCAPKPC)); TAB1.LCAPKPC = VRAI; FINSI; SI TAB1.LCAPKPC; SI ( EGA TAB1.HYPERVAP VRAI ) ; ALPF90 PF90 = @CAPKPC EVFLI11 .9 TAB1.DH FLU11 NIVEAU; ALPF80 PF80 = @CAPKPC EVFLI11 .8 TAB1.DH FLU11 NIVEAU; ALPF70 PF70 = @CAPKPC EVFLI11 .7 TAB1.DH FLU11 NIVEAU; SINON ; ALPF90 PF90 = @CAPKPC EVFLI11 .9 TAB1.D_MAQUETTE FLU11 NIVEAU; ALPF80 PF80 = @CAPKPC EVFLI11 .8 TAB1.D_MAQUETTE FLU11 NIVEAU; ALPF70 PF70 = @CAPKPC EVFLI11 .7 TAB1.D_MAQUETTE FLU11 NIVEAU; FINSI ; FINSI ; *jb SI TAB1.M_TONGJB ; FINSI ; *jb SI ( EGA TAB1.HYPERVAP VRAI ) ; FLUEVAL = (FLU11 * (TAB1.W_HEATED) / TAB1.DH ) ; SINON ; FLUEVAL = (FLU11 * (TAB1.W_HEATED) / TAB1.D_MAQUETTE); FINSI ; * FIN BOO1 ; * Traces pour la derniere iteration * *--- TRACE DES COURBES *--- TEMP. DES PTS EN FCT DU FLUX INCIDENT CORRIGE ou reel * * SI ( NON ( EXISTE TAB1 PFLUXNCORR )) ; TAB1 .PFLUXNCORR = VRAI ; * FINSI ; SI ( TAB1 .PFLUXNCORR ) ; LLLFLU = TAB1.GRAPH1.LIFL ; SINON ; LLLFLU = TAB1.GRAPH1.LIFLU ; FINSI ; TITRE 'SECTION TMIN CALCULATION'; TITRE ' WALL TMAX CALCULATION ' ; * * --- Trac\E9s de T en fonction du flux * * * --- boucle sur les points * TAC1 = TABLE ; TAC1.TITRE = TABLE ; IPP1 = 0 ; si (existe TAB1 LI_POINT); IPP1 = IPP1 + 1 ; *jb : 5 10 94 possibilite d'afficher la profondeur des TC SI ( NON ( EXISTE TAB1 DEEPCA )) ; TAB1.DEEPCA = FAUX ; FINSI ; SI TAB1.DEEPCA ; TITR 'C' T_P2 D_TC 'm' ; SINON ; TITR T_P2 'CALCULATION'; FINSI ; * SI ( IPP1 EGA 1 ) ; SINON ; FINSI; * TAC1.IPP1 = CHAIN 'MARQ '(EXTR L_SIGN1 IPP1)' REGU '; FIN BOUPO5 ; finsi ; si (existe TAB1 POINTS); REPETER BOUPO5 ; IPP1 = IPP1 + 1 ; si (existe ind1 &boupo5) ; nom1 = ind1.&boupo5 ; poa1 = tab1.points.nom1 ; IPP1 = &boupo5 ; SI ( NON ( EXISTE TAB1 DEEPCA )) ; TAB1.DEEPCA = FAUX ; FINSI ; SI TAB1.DEEPCA ; TITR 'C' nom1 D_TC 'm' ; SINON ; TITR nom1 'CALCULATION'; FINSI ; * SI ( IPP1 EGA 1 ) ; SINON ; FINSI; TAC1.TITRE.IPP1 = nom1 ; sinon ; quitter BOUPO5 ; finsi ; FIN BOUPO5 ; finsi ; IPP1 = IPP1 + 1; TITR 'CALCUL SECTION TMAX' ; * TAC1.IPP1 = CHAIN 'MARQ '(EXTR L_SIGN1 IPP1) * ' REGU' ; MOTITR = TAB1.TITR_MAQ ; TITRE MOTITR 'T-LOCAL' (TAB1.'T_LOCAL') 'V-LOCAL' (TAB1.'V_LOCAL') 'P-LOCAL' (TAB1.'P_LOCAL'); EVTTTS1 = EVTTTS1 ET EVTMCZ; SI ( EXISTE TAB1 EVOTEST) ; EVTTT = ( EVTTTS1 ET (TAB1 . EVOTEST) ) ; IPP1 = IPP1 + 1; FIN BOUTA1; SINON ; EVTTT = EVTTTS1 ; FINSI ; TAB1.EVORESU = EVTTTS1 ; TAB1.EVTTT1 = EVTTT ; DESSIN EVTTT LEGE MIMA TAC1 ; * * --- autres trac\E9s * TAC1 = TABLE ; TAC1.TITRE = TABLE ; IPP1 = 0 ; SI ( EXISTE TAB1 EVEXP); * TAB2 = INDEX TAB1.EVEXP ; IPP1 = IPP1 + 1 ; * T_P2 = EXTR IPP1 TAB1.LI_THEB; T_P2 = TAB2.IPP1 ; TITRE TAB1.TITR_MAQ 'CORRELATION' TAB1.L_SUBNB ; II1 = 2*IPP1 - 1; TAC1.TITRE.II1 = T_P2 'CALCULATION' ; II1 = 2*IPP1 ; TAC1.TITRE.II1 = T_P2 'EXP.' ; SI ( IPP1 EGA 1 ) ; SINON ; FINSI; FINSI; FIN BOUPO8 ; list EVDTFPA1 ; TITRE ' WALL_FLUX VERSUS DT_SAT' ; DESS EVDTFPA1 LOGX LOGY LEGE MIMA TAC1 ; FINSI ; TAC3 = TABLE; TAC3.2 = 'MARQ ETOI ' ; TAC3.3 = 'MARQ CROI ' ; TITRE 'INC. POWER '; TITRE 'CONVECTIVE POWER'; TITRE 'RADIATIVE POWER'; TITRE 'REPARTITION DES PUISSANCES '; EVPUIS = (EVPUII ET EVPUIC ET EVPUIR) ; DESSIN EVPUIS LEGE MIMA TAC3 ; TITRE 'REPARTITION DES PUISSANCES EN %'; EVPOUIS = (EVPOUIC ET EVPOUIR) ; DESSIN EVPOUIS LEGE MIMA TAC3 ; * SI ( EGA ICHOI 'TONG' ) ; TITRE TAB1. M_TONG ; FINSI ; SI ( EGA ICHOI 'CELA' ) ; TITRE 'CELATA 94' ; FINSI ; *jb SI TAB1.M_TONGJB ; TITRE '1.67*TONG75 CHF '; FINSI ; * TITRE 'TEST CHF '; SI ( EXISTE TAB1 EVOTEST ) ; SI ( EGA TAB1.HYPERVAP VRAI ) ; M_FWESS = M_FIESS * (TAB1.W_HEATED) / TAB1.DH ; SINON ; M_FWESS = M_FIESS * (TAB1.W_HEATED) / TAB1.D_MAQUETTE ; FINSI ; TITRE MOTITR 'T-LOCAL' (TAB1.'T_LOCAL') 'V-LOCAL' (TAB1.'V_LOCAL') 'P-LOCAL' (TAB1.'P_LOCAL'); TAC3.4 = 'MARQ TRIB REGU' ; *jb SI TAB1.M_TONGJB ; TAC3.5 = 'MARQ CARR NOLI' ; DESSIN ( EVFLUPAR ET EVFLUEV ET EVFLJB ET EVFLCRIT ET EVFCESS )LEGE MIMA TAC3 ; *jb TAB1.EVFLUPA1 = EVFLUPAR ; TAB1.EVFLUE1 = EVFLUEV ; TAB1.EVFLJ1 = EVFLJB ; TAB1.EVFLCRI1 = EVFLCRIT ; TAB1.EVFCES1 = EVFCESS ; SINON ; DESSIN (EVFLUPAR ET EVFLUEV ET EVFLCRIT ET EVFCESS) LEGE MIMA TAC3 ; TAB1.EVFLUPA1 = EVFLUPAR ; TAB1.EVFLUE1 = EVFLUEV ; TAB1.EVFLCRI1 = EVFLCRIT ; TAB1.EVFCES1 = EVFCESS ; FINSI ; SINON ; SI TAB1.M_TONGJB ; DESSIN ( EVFLUPAR ET EVFLUEV ET EVFLJB ET EVFLCRIT ET EVFCESS )LEGE MIMA TAC3 ; TAB1.EVFLUPA1 = EVFLUPAR ; TAB1.EVFLUE1 = EVFLUEV ; TAB1.EVFLJ1 = EVFLJB ; TAB1.EVFLCRI1 = EVFLCRIT ; TAB1.EVFCES1 = EVFCESS ; SINON; DESSIN ( EVFLUPAR ET EVFLUEV ET EVFLCRIT ) LEGE MIMA TAC3 ; TAB1.EVFLUPA1 = EVFLUPAR ; TAB1.EVFLUE1 = EVFLUEV ; TAB1.EVFLCRI1 = EVFLCRIT ; TAB1.EVFCES1 = EVFCESS ; FINSI ; FINSI ; TITRE 'W/D P.F.'; TAC3.2 = 'MARQ ETOI ' ; TAC3.3 = 'MARQ CROI ' ; TAC3.5 = 'MARQ TRIB ' ; TITRE 'MAX FE P.F.'; TAB1.FE_PF = EMEFPF ; SI TAB1.LCAPKPC; TITRE '90% FE P.F.'; TITRE '80% FE P.F.'; TITRE '70% FE P.F.'; TITRE MOTITR 'T-LOCAL' (TAB1.'T_LOCAL') 'V-LOCAL' (TAB1.'V_LOCAL') 'P-LOCAL' (TAB1.'P_LOCAL'); DESSIN (E70PF ET E80PF ET E90PF ET EMEFPF ET EGEOPF) LEGE MIMA TAC3; SINON ; DESSIN ( EMEFPF ET EGEOPF) LEGE MIMA TAC3; FINSI ; *jb TAB1.EMEFP1 = EMEFPF ; TAB1.EGEOP1 = EGEOPF ; FINSI ; FINSI ; TAB1.PPRLI1 = PRLI1 ; MENAGE; SI (NIVEAU >EG 4) ; FINSI ; FINPROC; DEBPROC PRINRAPH CONTR1*MCHAML MOD1*MMODEL MAIL1/MAILLAGE ; * modifier de maniere a pouvoir entre en option *- le maillage sur lequel on veut les contraintes principales *- le maillage sur lequel on veut que seffectue le trace * * * test sur la dimension SI (EGA DIM1 2) ; ; SINON ; FINSI; * de toute facon, il faut depouiller objet modele apres objet modele * sinon, plusieurs contraintes principales n'ont pas de sens. CONTR1 = CONTR2 ; * on peut depouiller en modulant la taille du vecteur par * le module de la contrainte principale associee *----------1 * on extrait les composantes de module et de cos directeurs *on transforme les composantes en champs par point *on renomme correctement les composantes *CLSI11_P = CLSI11 * ( CLSI11 MASQUE SUPERIEUR 0. ); *CLSI11_N = CLSI11 * ( CLSI11 MASQUE INFERIEUR 0. ); *CLSI22_P = CLSI22 * ( CLSI22 MASQUE SUPERIEUR 0. ); *CLSI22_N = CLSI22 * ( CLSI22 MASQUE INFERIEUR 0. ); CLSI11_P = CLSI11 MASQUE SUPERIEUR 0. ; CLSI11_N = CLSI11 MASQUE INFERIEUR 0. ; CLSI22_P = CLSI22 MASQUE SUPERIEUR 0. ; CLSI22_N = CLSI22 MASQUE INFERIEUR 0. ; *on multiplie les cosinus directeurs par la norme -1 ou +1 CMCOX1P = CLSI11_P * CLCOX1 ; CMCOY1P = CLSI11_P * CLCOY1 ; CMCOZ1P = CLSI11_P * CLCOZ1 ; CMCOX1N = CLSI11_N * CLCOX1 ; CMCOY1N = CLSI11_N * CLCOY1 ; CMCOZ1N = CLSI11_N * CLCOZ1 ; CMCOX2P = CLSI22_P * CLCOX2 ; CMCOY2P = CLSI22_P * CLCOY2 ; CMCOZ2P = CLSI22_P * CLCOZ2 ; CMCOX2N = CLSI22_N * CLCOX2 ; CMCOY2N = CLSI22_N * CLCOY2 ; CMCOZ2N = CLSI22_N * CLCOZ2 ; * on cree des champs par point contenat toutes les composantes CH1P = CMCOX1P + CMCOY1P + CMCOZ1P ; CH1N = CMCOX1N + CMCOY1N + CMCOZ1N ; CH2P = CMCOX2P + CMCOY2P + CMCOZ2P ; CH2N = CMCOX2N + CMCOY2N + CMCOZ2N ; * on cree le champs de vecteurs COEF1 = 2.E-11 ; COEF1 = .00017 ; SI (EXISTE MAIL1 ) ; SINON ; FINSI ; * maintenant , on peut diminuer la quantite d'information en * ne donnant que les directions *CH1 = CLCOX1 + CLCOY1 + CLCOZ1 ; *CH2 = CLCOX2 + CLCOY2 + CLCOZ2 ; *VVEC1 = VECT CH1 .00015 'UX' 'UY' TURQ ; *VVEC2 = VECT CH2 .00015 'UX' 'UY' TURQ ; *VVEC3 = VECT (-1. * CH1) .00015 'UX' 'UY' TURQ ; *VVEC4 = VECT (-1. * CH2) .00015 'UX' 'UY' TURQ ; *TRAC (VVEC1 ET VVEC2 ET VVEC3 ET VVEC4) CON3 ; *TRAC (VVEC1 ET VVEC3) CON3 ; *TRAC (VVEC2 ET VVEC4) CON3 ; FINPROC ; **** @PTRANS 'DEBPROC' @PTRANS TAB1*'TABLE' ; SI (NON (EXISTE TAB1 NISOV)) ; TAB1.NISOV = 7 ; FINSI ; NIVEAU = TAB1.'NIVEAU' ; SI (NIVEAU >EG 4 ) ; FINSI ; ICORSA1 = 0 ; IVALI1 = 1 ; SI ( NON (EXISTE TAB1 VIEW_P )) ; TAB1.VIEW_P = 1.E8 -1.E8 1.E8 ; FINSI ; FINSI ; C_ONT1 = TAB1.M_IL_CONTOUR ; S_TOT1 = TAB1.M_ILLAGE_TOT ; *VIN = TAB1 . V_IN RM 23.01.96 ; VIN = TAB1.V_LOCAL ; TIN = TAB1 . T_IN ; PIN = TAB1 . P_IN ; TTAPE = TAB1 . T_TAPE ; YTWIST = TAB1 . TWIST_RATIO ; LAMBDA = TAB1 . 'LAMBDA' ; AMPLV1 = ( TAB1 . D_MAQUETTE ) / ( 2. * TAB1.MAX_SOFL ) ; VPAT1 = TAB1.V_VPAT1 ; FLUMOY1 = TAB1.V_FLUMOY1 ; COTETF1 = TAB1.C_COTETF1 ; SITETF1 = TAB1.C_SITETF1 ; COTETR1 = TAB1.C_COTETR1 ; SITETR1 = TAB1.C_SITETR1 ; COTETC1 = TAB1.C_COTETC1 ; SITETC1 = TAB1.C_SITETC1 ; TAC8 = TABLE TAB1.T_TAC8 ; TAC2 = TABLE ; TAC2.1 = 'MARQ CROI REGU TITRE INC_POWER' ; TAC2.3 = 'MARQ LOSA REGU TITRE CONV_POWER' ; *RM011098 si (existe tab1 points) ; finsi ; * on est dans @ptrans ********************************************* SI ( TAB1.TRANSITOIRE ) ; * TEMPS ; * MESS '>>>>> 4.10 >>>>>>' ; SI ( EXISTE TAB1 'LAMDAQ' ) ; SI ( EXISTE TAB1 'CENTRE_PLASMA' ) ; PUI1 = TAB1.V_FLUMOY1 * (TAB1 . B_HEATED) * (TAB1.WE_HEATED ) ; SINON ; PUI1 = TAB1.V_FLUMOY1 * (TAB1 . L_HEATED) * (TAB1.WE_HEATED ) ; FINSI ; SINON ; PUI1 = TAB1.V_FLUMOY1 * (TAB1 . L_HEATED) * (TAB1.W_HEATED ) ; FINSI; * TMOY = TAB1.'TETA' ; IFIG = 0 ; IFIG = IFIG + 1 ; TITRE '-p' IFIG '-BILAN DES PUIS.' PHIZERO ; DESSIN ( ( TAB1.'EFLUI' ) ET ( TAB1.'EFLUR' ) ET ( TAB1.'EFLUC' ) ) LEGE TAC2 ; *tc ajout d'un finsi au pif!!!!!!!!!! 'FINSI'; * * si (existe tab1 LI_POINT) ; TAB1.LIS_TEMP = TABLE ; IPP1 = 0 ; IPP1 = IPP1 + 1 ; FIN BOUPO6; finsi ; si (existe tab1 points) ; TAB1.LIS_TEMP = TABLE ; REPETER BOUPO6 ; sinon ; quitter BOUPO6 ; finsi ; FIN BOUPO6; finsi ; I_0 = -1 ; I_1 = I_0 ; LSORT1 = TAB1 .LI_SORT1 ; LSORT2 = TAB1 .LI_SORT2 ; SI ( NON (EXISTE TAB1 OPT_SORT2) ) ; FINSI ; II2 = 0 ; TAC4 = TABLE ; * TAC4.1 = 'MARQ CROI REGU TITRE ROUGE' ; TAC4.4 = 'MARQ ETOI REGU ' ; TAC4.5 = 'MARQ ETOI REGU ' ; TAC4.6 = 'MARQ CARR REGU ' ; TAC4.7 = 'MARQ CARR REGU ' ; TAC4.8 = 'MARQ LOSA REGU ' ; TAC4.9 = 'MARQ LOSA REGU ' ; TAC4.12 = 'MARQ TRIB REGU ' ; TAC4.13 = 'MARQ TRIB REGU ' ; TAC4.14 = 'MARQ CROI REGU ' ; TAC4.15 = 'MARQ CROI REGU ' ; TAC4.18 = 'MARQ ETOI REGU ' ; TAC4.19 = 'MARQ ETOI REGU ' ; TAC4.20 = 'MARQ CARR REGU ' ; TAC4.21 = 'MARQ CARR REGU ' ; TAC4.22 = 'MARQ LOSA REGU ' ; TAC4.23 = 'MARQ LOSA REGU ' ; TAC4.26 = 'MARQ TRIB REGU ' ; TAC4.27 = 'MARQ TRIB REGU ' ; REPETER BEXP1 ; I_1 = I_1 + 1 ; * MESS ' exploitation pas ' I_1 ; SI ( NON ( EXISTE TAB1 I_1 ) ) ; QUITTER BEXP1 ; FINSI ; * *--- EXTRACTION DES TEMP. AUX PTS DESIRES * * les 10 lignes suivantes sont assez d\E9licates * svp ne pas modifier sans l'avis de RM ou JS TT1 = TAB1. I_1 . 'INSTANT' ; IPP1 = 0 ; SI ( EXISTE TAB1 LI_POINT ) ; IPP1 = IPP1 + 1 ; * rm 10/09/96 T_P1 = TEXT (EXTR IPP1 TAB1.LI_POINT); * list (TYPE (T_P1)) ; SI (EGA T_P1 '_MAX') ; SINON ; FINSI ; FIN BOUPO7 ; FINSI ; * autre syntaxe pour le meme resultat, RM011098 si (existe tab1 points) ; repe boupo7 ; si (existe ind1 &boupo7) ; nom1 = ind1.&boupo7 ; poa1 = tab1.points.nom1 ; si (ega nom1 '_max'); sinon ; finsi ; sinon ; quitter boupo7 ; finsi ; fin boupo7; finsi ; ISORT1 = 0 ; IS1 = 0 ; IS1 = IS1 + 1 ; SI ( TT1 EGA TS1 1.E-3 ) ; ISORT1 = 1 ; QUITTER BEXP2 ; FINSI ; FIN BEXP2 ; ISORT2 = 0 ; IS2 = 0 ; IS2 = IS2 + 1 ; SI ( TT1 EGA TS2 1.E-3 ) ; ISORT2 = 1 ; QUITTER BEXP3 ; FINSI ; FIN BEXP3 ; * SI ( ISORT1 EGA 1 ) ; * CHPT2 = @ET CHPX CHPY ; * changement de couleur possible des fleches du flux a la paroi ROUGE = 'ROUGE'; VEC_22 = @VECADA CHPT2 ( FCOEF * -1. * AMPLV1 ) ROUGE ; TAB1. V_VEC22 = VEC_22 ; SI ( EGA I_1 0 ) ; HCONVT1 = HCON1 ; SINON ; FINSI ; FCNV2 = ( TECA0 - TAB1.'TETA' ) * HCONVT1 ; CHPCT = ( CHPCX @ET CHPCY ) ; VEC_1 = @VECADA CHPCT ( 1. * AMPLV1 ) ROUGE ; TAB1. V_VEC1 = VEC_1 ; * * trace sur le meme graphe des conditions thermohydrauliques a la paroi * FLUX/1.E6, Temperatures/10. * TITRE '-p' IFIG '- TIME AND PHI0 ' TT1 ( PHIZERO * FCOEF ) ; FLUITT1 = TAB1.V_FLUMOY1 * FCOEF ; TAC2 = TABLE ; TAC2.1 = 'MARQ CARR REGU TITRE WALL_FLUX' ; EVETOT1 = EVFLC1 ; I1 = 0 ; REPETER BOUC_CHF NB_FLUX ; I1 = I1 + 1 ; EVETOT1 = EVETOT1 ET EVQCRI1 ; NOM_CORR = TAB1.M_TONG ; FINSI ; NOM_CORR = 'BOWRING72' ; FINSI ; NOM_CORR = 'CELATA94' ; FINSI ; FIN BOUC_CHF ; TAC2.(2 + I1 ) = 'MARQ CROI REGU TITRE WALL_TEMP' ; EVETOT1 = EVETOT1 ET EVTC1 ; TAC2.(3 + I1) = 'MARQ ETOI REGU TITRE TONB' ; EVETOT1 = EVETOT1 ET EVTONB ; DESSIN EVETOT1 LEGE MIMA TAC2 ; SI ( EXISTE TAB1 LFLUX_RAYO ) ; FRAY2 = HRAYOT1 * ( TERA1 - (TAB1 . TEMP_RAYO)) ; CHPRT = ( CHPRX @ET CHPRY ) ; *>>>>>>>> modif bonnefoi du 6/04/93 * VER1 = VECT CHPRT ( AMPLV1 ) UX UY ROUG ; VER1 = @VECADA CHPRT ( AMPLV1 ) ROUG ; TAB1. V_VER1 = VER1 ; TAC2.1 = 'MARQ CROI REGU TITRE RADIATIVE_FLUX' ; *js 050997 TAC2.3 = 'MARQ CARR REGU TITRE L_RAYO_TEMP' ; TAC2.2 = 'MARQ CARR REGU TITRE L_RAYO_TEMP' ; DESSIN (EVFLR1 ET EVTR1 ) LEGE MIMA TAC2 ; FINSI ; * TRACER TAB1.VIEW_P CACH * ( TAB1. I_1 . TEMPERATURE ) S_TOT1 C_ONT1; *>>>>>modif J.F. Salavy le 04/05/95 : ajout de la possibilite de *>>>>>tracer avec echelle constante au cours du temps. Cette echelle *>>>>>TAB1.LECHTR est une prog de 14 valeurs definie dans le jeu de *>>>>>donnees en fonction de Tmin et Tmax SI ( EXISTE TAB1 LECHTR ) ; TRACER TAB1.LECHTR TAB1.VIEW_P CACH ( TAB1. I_1 . TEMPERATURE ) S_TOT1 C_ONT1 ( VEC_1 ET VER1 ET VEC_22 ) ; SINON ; TRACER CACH TAB1.VIEW_P TAB1.NISOV ( TAB1. I_1 . TEMPERATURE ) S_TOT1 C_ONT1 ( VEC_1 ET VER1 ET VEC_22 ) ; FINSI ; SI ( EXISTE TAB1 VIEW_P2 ) ; TRAC CACH TAB1.VIEW_P2 TAB1.NISOV ( TAB1. I_1 . TEMPERATURE ) S_TOT1 C_ONT1 ( VEC_1 ET VER1 ET VEC_22 ) ; FINSI ; FINSI ; SI ( ISORT2 EGA 1 ) ; II2 = II2 + 1 ; *js 050997 II21 = II2 * 2 - 1 + 1 ; II21 = II2 ; * * SI ( EXISTE TAB1 LFLUX_RAYO ) ; EVTTR1 = EVTTR1 ET EVTR1 ; SI ( EXISTE TAC4 II21 ) ; TAC4.II21 = CHAINE TAC4.II21 ' TITRE ' TT1 ; FINSI ; * DESSIN EVTTR1 LEGE MIMA TAC4 ; FINSI ; FINSI ; FIN BEXP1 ; MESS ' end of the loop on the time to process ' ; TTTTT1 ; * DESSIN EVTTR1 (TAB1.OPT_SORT2) LEGE MIMA TAC4 ; * IPP8 = 0 ; *js250796 TAC8 = TABLE ; SI ( EXISTE TAB1 LI_POINT ) ; IPP8 = IPP8 + 1 ; TITRE N_P1 ' TEMP CALCULATION ' ; SI ( IPP8 EGA 1 ) ; TAB1.EVTTT1 = TAB1.EVT1 ; SINON ; TAB1.EVTTT1 = TAB1.EVTTT1 ET TAB1.EVT1 ; FINSI ; FIN BOUPO8 ; * IFIG = IFIG + 1 ; SI ( NON (EXISTE TAB1 OPT_CADPT) ) ; FINSI ; * EVTR2 = EVT1 * 0. ; * EVTTT1 = ( EVTTT1 ET EVTR2 ) ; * DESSIN EVTTT1 LEGE MIMA TAC8 ; TTTTT1 ; FINSI ; si (existe tab1 points) ; repe boupo8 ; si (existe ind1 &boupo8) ; n_p1 = ind1.&boupo8 ; TITRE N_P1 ' TEMP CALCULATION ' ; SI ( &boupo8 EGA 1 ) ; TAB1.EVTTT1 = TAB1.EVT1 ; SINON ; TAB1.EVTTT1 = TAB1.EVTTT1 ET TAB1.EVT1 ; FINSI ; sinon ; quitter boupo8 ; finsi ; fin boupo8 ; IFIG = IFIG + 1 ; SI ( NON (EXISTE TAB1 OPT_CADPT) ) ; FINSI ; TTTTT1 ; finsi ; SI (NIVEAU >EG 4) ; FINSI ; FINPROC ; * calcul de la resultant d'un MCHAML * CONTU2 = CHAN CHPO MOD1 (CHAN NOEUD MOD1 CONTU1) ; * CONTU3 = REDU CONTU2 MAIL1 ; * CONTU4 = CHAN CHAM CONTU2 MAIL1 NOEUD ; * mettre une autre methode passat par REAC et * que je trouve plus propre FINPROC VAL1; **** @RAPACQU DEBPROC @RAPACQU NDON1*ENTIER NABSC1*ENTIER TAB1*TABLE; I1 = 0 ; REPETER BOUC1 NDON1 ; I1 = I1 + 1 ; FIN BOUC1 ; REPETER BOUC2 NABSC1; I2 = 0 ; REPETER BOUC3 NDON1; I2 = I2 + 1 ; FIN BOUC3; FIN BOUC2 ; FINPROC ; 'DEBPROC' RDPGTHPL RIG10*RIGIDITE MAT1*CHAMELEM ASCU0/AFFECTE TE1*CHPOINT TABDEP1*TABLE ; *----------------------------------------------------------------------* * * * R D P G T H P L * * --------------- * * * * RESOLUTION EN DEFORMATION PLANE GENERALISEE D UN * * PB THERMOMECANIQUE * * * * * * RIG10 MATRICE DE RIGIDITE * * MAT1 CHAMELEM DES MATERIAUX * * ( ASCU0 ) OBJET AFFECTE ( ELEMENTS FINIS ) * * TE1 CHPOIN DE TEMPERATURE ( CHARGEMENT ) * * TABDEP TABLE * * INDICE 'NZ' EFFORT LONGITUDINAL IMPOSE * * INDICE 'TINI' TEMPERATURE INITIALE * * INDICE 'LIG1' LIGNE POUR APPLICATION CHARGEMENT BIDON * * INDICE 'MX' MOMENT EN X IMPOSE * * INDICE 'MY' ...A PROGRAMMER SUIV. MOD. MX * * ( INDICE 'PO') CENTRE D'INERTIE DE VOTRE SURFACE * * ( INDICE 'VX') LE VX POUR SFXX = MXX/(IXX/VX) * * * * EN SORTIE * * DE1 CHPOINT DE DEPLACEMENT * * SIG1 CONTRAINTES * * * * CE JEU DE DONNEES A ETE UTILISE TEL QUE ET A SEMBLE DONNER * SATISFACTION * * IL FAUDRAIT EN FAIRE UNE PROCEDURE * * ET LE TESTER CONVENABLEMENT * * * * SCHLOSSER LE 13 9 90 * * * * SCHLOSSER LE 17 7 91 * * * * TABDEP1.'EPSI' CHAMELEM DES DEFORMATIONS * TABDEP1.'RY' RAYON DE COURBURE EN Y * TABDEP1.'EPZM' DEFORMATION MOYENNE EN Z * * ( INDICE 'PO') CENTRE DE L AXE NEUTRE * * ( INDICE 'VX') LE VX POUR SFXX = MXX/(IXX/VX) * *----------------------------------------------------------------------* *23456789012345678901234567890123456789012345678901234567890123456789012 *--------1---------2---------3---------4---------5---------6---------7-* ******* CALCUL DES FORCES DUES AUX TEMPERATURES ************** * SI ( EXISTE ASCU0 ) ; ASCU1 = ASCU0 ; SINON ; TITRE 'ASCU1'; TRACE ASCU1 ; FINSI ; TITRE 'MAIL_1'; TRACE MAIL_1 ; IGENE = 0 ; SI_10 = THETA MAT1 ( TE1 - ( TABDEP1.TINI ) ) ; A_1 = 1.0 ; TOL_1 = 1.E-15 ; TOL_2 = 1.E-18 ; MESS ' VOTRE SURFACE SECTION A VERIFIER' SEC_1 ; SI ( EXISTE TABDEP1 NZ ) ; IGENE = IGENE + 1 ; FINSI ; SI ( EXISTE TABDEP1 MX ) ; IGENE = IGENE + 1 ; * L_Y1 = (( COOR 2 SECC ) - ( COOR 2 PO_1 ) ) ; Y_2 = PRCH Y_1 ASCU1 STRESSES ; L_Y1 = ( Y_1 - Y_PO2 ) ; X_2 = PRCH X_1 ASCU1 STRESSES ; L_X1 = ( X_1 - X_PO2 ) ; PO_2 = ( X_PO2 Y_PO2 ) ; TABDEP1.PO = PO_2 ; TABDEP1.VX = VX_1 ; L_Y = PRCH L_Y1 ASCU1 STRESSES ; MESS ' VOTRE VX ' VX_1 ; MESS ' VOTRE INERTIE IXX A VERIFIER' IXX_1 ; FINSI ; IB = 0 ; TBB1 = TABLE ; TBB1.CHPOTHETA = TABLE ; TBB1.PLASTIQUE = VRAI ; TBB1.THERMIQUE = VRAI ; TBB1.ITERATION = KSI ; *TREFERENCE = 0.; TBB1.CHPOTHETA . 0. = 0. ; VPREC = 0.1 ; TBB1.MAXITERATION = 200 ; TBB1.ACCELERATION = 20 ; F1 = FORCE FY 0. (TABDEP1.LIG1 ) ; REPETER BODEPG 10 ; TBB1 = TABLE ; TBB1.CHPOTHETA = TABLE ; TBB1.PLASTIQUE = VRAI ; TBB1.THERMIQUE = VRAI ; TBB1.ITERATION = KSI ; *TREFERENCE = 0.; TBB1.CHPOTHETA . 0. = 0. ; VPREC = 0.1 ; TBB1.MAXITERATION = 200 ; TBB1.ACCELERATION = 20 ; IB = IB + 1 ; SI_11 = SI_10 - SIERR ; FO1 = BSIGMA SI_11 ; SI ( EXISTE TABDEP1 CHAMP ) ; FO1 = FO1 ET ( TABDEP1 . CHAMP ) ; FINSI ; *MESS ' >>>>>>>fin 1er bsigma ' ; * ******* CALCUL DE LA SOLUTION ************** * DE1 = RESOU RIG10 FO1 ; * SI_12 = SIGMA DE1 MAT1 ; * SI_13 = SI_12 - SI_11 ; TBB1.SIGI= SIERR*(+1.) ; TBB1.PRECISION = VPREC / IB ; NONLIN RIG10 MAT1 CHA1 LIS1 ASCU1 TBB1 ; SI_13 = TBB1.RESUCONT . 1. ; SI ( IB EGA 1 ) ; * MSM1 = MAXI ( ABS SI_13 ) ; SI ( MSM1 <EG 1.E-20 ) ; MSM1 = 1.E-20 ; FINSI ; FINSI ; DDD_1 = 0. ; DDD_2 = 0. ; SI ( EXISTE TABDEP1 NZ ) ; DFZ_1 = ( TABDEP1.NZ ) - FZ_1 ; DSZ_1 = DFZ_1 / SEC_1 ; DRZ_1 = ( ABS DSZ_1 ) / MSM1 ; DDD_1 = DDD_1 + DRZ_1 ; DDD_2 = DDD_2 + ( ABS DSZ_1 ) ; FINSI ; SI ( EXISTE TABDEP1 MX ) ; DMX_1 = ( TABDEP1.MX ) - MX_1 ; DSX_1 = DMX_1 / IXX_1 * VX_1 ; DRX_1 = ( ABS DSX_1 ) / MSM1 ; DDD_1 = DDD_1 + DRX_1 ; DDD_2 = DDD_2 + ( ABS DSX_1 ) ; SIERR = SIERR + ( ( SIONE * L_Y ) * ( A_1 * DMX_1 / IXX_1 )) ; FINSI ; SI ( IGENE EGA 0 ) ; QUITTER BODEPG ; FINSI ; SI ( IB >EG 2 ) ; SI ( DDD_1 <EG TOL_1 ) ; QUITTER BODEPG ; FINSI ; SI ( DDD_2 <EG TOL_2 ) ; QUITTER BODEPG ; FINSI ; FINSI ; FIN BODEPG ; SIG1 = SI_13 ; *ALPH1 = CHAN 'STRESSES' ( EXCO 'ALPH' MAT1 ) ; *EPT = ALPH1 * ( PRCH TE1 ASCU1 'STRESSES' ) ; EPT = PRCH ( TE1 * ALPH1 ) ASCU1 'STRESSES' ; *list EPT ; MESS ' VOTRE EPZ MOYEN : ' EPZM ; EPBZ = EPSZZ - (( EPSZZ ** 0 ) * EPZM ) ; SI ( EXISTE TABDEP1 MX ) ; CHRY = L_Y * ( EPBZ ** -1 ) * -1. ; TABDEP1.'RY' = RY ; FINSI ; TABDEP1.'EPZM' = EPZM ; FINPROC DE1 SIG1 ; **** @REMOJET DEBPROC @REMOJET XG_OLD2*CHPOINT YG_OLD2*CHPOINT ZG_OLD2*CHPOINT PAS0*FLOTTANT CHSIGN2*CHPOINT TAB1*TABLE ; *MESS '---------------------------------> calling @remojet'; * IMETHOD = TAB1.<METHODE_REMONTEE ; * *---- Methode Explicite SI (IMETHOD EGA 1) ; DEPX0 DEPY0 DEPZ0 = @DEXPJET XG_OLD2 YG_OLD2 ZG_OLD2 PAS0 TAB1; SINON ; FINSI ; * *---- On affecte le signe donnant le sens de remontee *---- aux deplacements DEPX0 = CHSIGN2 * DEPX0 ; DEPY0 = CHSIGN2 * DEPY0 ; DEPZ0 = CHSIGN2 * DEPZ0 ; * *---- Calcul analytique des nouvelles coordonnees dans le *---- repere global XG_NEW2 = XG_OLD2 + DEPX0 ; YG_NEW2 = YG_OLD2 + DEPY0 ; ZG_NEW2 = ZG_OLD2 + DEPZ0 ; * *---- actualisation de la position des points de la ligne DEP0 = DEPX0 ET DEPY0 ET DEPZ0 ; * *MESS '---------------------------------> exiting @remojet'; FINPROC XG_NEW2 YG_NEW2 ZG_NEW2 DEP0 ; **** @REMONTE DEBPROC @REMONTE XG_OLD2*CHPOINT YG_OLD2*CHPOINT ZG_OLD2*CHPOINT PAS0*FLOTTANT CHSIGN2*CHPOINT TAB1*TABLE ; *MESS '---------------------------------> calling @remonte'; * IMETHOD = TAB1.<METHODE_REMONTEE ; *---- Appel de la procedure de calcul des deplacements selon methode choisie *---- Methode Explicite SI (IMETHOD EGA 1) ; DEPX0 DEPY0 DEPZ0 = @DEXPLI XG_OLD2 YG_OLD2 ZG_OLD2 PAS0 TAB1; FINSI ; *---- Methode Euler-Cauchy SI (IMETHOD EGA 2) ; DEPX0 DEPY0 DEPZ0 = @DMOYEN XG_OLD2 YG_OLD2 ZG_OLD2 PAS0 CHSIGN2 TAB1; FINSI ; *---- Methode Point Milieu Modifiee SI (IMETHOD EGA 3) ; DEPX0 DEPY0 DEPZ0 =@DMILIEU XG_OLD2 YG_OLD2 ZG_OLD2 PAS0 CHSIGN2 TAB1; FINSI ; *---- Methode de Reprojection SI (IMETHOD EGA 4) ; DEPX0 DEPY0 DEPZ0 =@DREPROJ XG_OLD2 YG_OLD2 ZG_OLD2 PAS0 CHSIGN2 TAB1; FINSI ; *---- On affecte le signe donnant le sens de remontee aux deplacements DEPX0 = CHSIGN2 * DEPX0 ; DEPY0 = CHSIGN2 * DEPY0 ; DEPZ0 = CHSIGN2 * DEPZ0 ; *---- Calcul analytique des nouvelles coordonnees dans le repere global XG_NEW2 = XG_OLD2 + DEPX0 ; YG_NEW2 = YG_OLD2 + DEPY0 ; ZG_NEW2 = ZG_OLD2 + DEPZ0 ; *MESS '---------------------------------> exiting @remonte'; FINPROC XG_NEW2 YG_NEW2 ZG_NEW2 ; **** @repere o1 = 0. 0. 0. ; 32taa1 = table ; 32tab1 = table ; 32tac1 = table ; repe bouc1 10 ; 32taa1.&bouc1 = &bouc1 0. 0. ; 32tab1.&bouc1 = 0. &bouc1 0. ; 32tac1.&bouc1 = 0. 0. &bouc1 ; si (ega &bouc1 1 ) ; sinon ; finsi ; fin bouc1; finproc geo1 ; **** RESDPG *------------------------------------------------- 'DEBPROC' RESDPG RIG10*RIGIDITE MAT1*CHAMELEM ASCU0/AFFECTE TE1*CHPOINT TABDEP1*TABLE ; *----------------------------------------------------------------------* * * * R E S D P G * * --------------- * * * * RESOLUTION EN DEFORMATION PLANE GENERALISEE D UN * * PB THERMOMECANIQUE * * * * * * RIG10 MATRICE DE RIGIDITE * * MAT1 CHAMELEM DES MATERIAUX * * ( ASCU0 ) OBJET AFFECTE ( ELEMENTS FINIS ) * * TE1 CHPOIN DE TEMPERATURE ( CHARGEMENT ) * * TABDEP TABLE * * INDICE 'NZ' EFFORT LONGITUDINAL IMPOSE * * INDICE 'MX' MOMENT EN X IMPOSE * * INDICE 'MY' ...A PROGRAMMER SUIV. MOD. MX * * ( INDICE 'PO') CENTRE D'INERTIE DE VOTRE SURFACE * * ( INDICE 'VX') LE VX POUR SFXX = MXX/(IXX/VX) * * * * EN SORTIE * * DE1 CHPOINT DE DEPLACEMENT * * SIG1 CONTRAINTES * * * * CE JEU DE DONNEES A ETE UTILISE TEL QUE ET A SEMBLE DONNER * SATISFACTION * * IL FAUDRAIT EN FAIRE UNE PROCEDURE * * ET LE TESTER CONVENABLEMENT * * * * SCHLOSSER LE 13 9 90 * * * * SCHLOSSER LE 17 7 91 * * * * TABDEP1.'EPSI' CHAMELEM DES DEFORMATIONS * TABDEP1.'RY' RAYON DE COURBURE EN Y * TABDEP1.'EPZM' DEFORMATION MOYENNE EN Z * * ( INDICE 'PO') CENTRE DE L AXE NEUTRE * * ( INDICE 'VX') LE VX POUR SFXX = MXX/(IXX/VX) * *----------------------------------------------------------------------* * ******* CALCUL DES FORCES DUES AUX TEMPERATURES ************** * SI ( EXISTE ASCU0 ) ; ASCU1 = ASCU0 ; SINON ; FINSI ; IGENE = 0 ; SI_10 = THETA MAT1 TE1 ; A_1 = 1.0 ; TOL_1 = 1.E-15 ; TOL_2 = 1.E-18 ; MESS ' VOTRE SURFACE SECTION A VERIFIER' SEC_1 ; SI ( EXISTE TABDEP1 NZ ) ; IGENE = IGENE + 1 ; FINSI ; SI ( EXISTE TABDEP1 MX ) ; IGENE = IGENE + 1 ; * L_Y1 = (( COOR 2 SECC ) - ( COOR 2 PO_1 ) ) ; Y_2 = PRCH Y_1 ASCU1 STRESSES ; L_Y1 = ( Y_1 - Y_PO2 ) ; X_2 = PRCH X_1 ASCU1 STRESSES ; L_X1 = ( X_1 - X_PO2 ) ; PO_2 = ( X_PO2 Y_PO2 ) ; TABDEP1.PO = PO_2 ; TABDEP1.VX = VX_1 ; L_Y = PRCH L_Y1 ASCU1 STRESSES ; MESS ' VOTRE VX ' VX_1 ; MESS ' VOTRE INERTIE IXX A VERIFIER' IXX_1 ; FINSI ; IB = 0 ; REPETER BODEPG 10 ; IB = IB + 1 ; SI_11 = SI_10 - SIERR ; FO1 = BSIGMA SI_11 ; SI ( EXISTE TABDEP1 CHAMP ) ; FO1 = FO1 ET ( TABDEP1 . CHAMP ) ; FINSI ; *MESS ' >>>>>>>fin 1er bsigma ' ; * ******* CALCUL DE LA SOLUTION ************** * DE1 = RESOU RIG10 FO1 ; SI_12 = SIGMA DE1 MAT1 ; SI_13 = SI_12 - SI_11 ; SI ( IB EGA 1 ) ; * MSM1 = MAXI ( ABS SI_13 ) ; SI ( MSM1 <EG 1.E-20 ) ; MSM1 = 1.E-20 ; FINSI ; FINSI ; DDD_1 = 0. ; DDD_2 = 0. ; SI ( EXISTE TABDEP1 NZ ) ; DFZ_1 = ( TABDEP1.NZ ) - FZ_1 ; DSZ_1 = DFZ_1 / SEC_1 ; DRZ_1 = ( ABS DSZ_1 ) / MSM1 ; DDD_1 = DDD_1 + DRZ_1 ; DDD_2 = DDD_2 + ( ABS DSZ_1 ) ; FINSI ; SI ( EXISTE TABDEP1 MX ) ; DMX_1 = ( TABDEP1.MX ) - MX_1 ; DSX_1 = DMX_1 / IXX_1 * VX_1 ; DRX_1 = ( ABS DSX_1 ) / MSM1 ; DDD_1 = DDD_1 + DRX_1 ; DDD_2 = DDD_2 + ( ABS DSX_1 ) ; SIERR = SIERR + ( ( SIONE * L_Y ) * ( A_1 * DMX_1 / IXX_1 )) ; FINSI ; SI ( IGENE EGA 0 ) ; QUITTER BODEPG ; FINSI ; SI ( IB >EG 2 ) ; SI ( DDD_1 <EG TOL_1 ) ; QUITTER BODEPG ; FINSI ; SI ( DDD_2 <EG TOL_2 ) ; QUITTER BODEPG ; FINSI ; FINSI ; FIN BODEPG ; SIG1 = SI_13 ; *ALPH1 = CHAN 'STRESSES' ( EXCO 'ALPH' MAT1 ) ; *EPT = ALPH1 * ( PRCH TE1 ASCU1 'STRESSES' ) ; EPT = PRCH ( TE1 * ALPH1 ) ASCU1 'STRESSES' ; *list EPT ; MESS ' VOTRE EPZ MOYEN : ' EPZM ; EPBZ = EPSZZ - (( EPSZZ ** 0 ) * EPZM ) ; SI ( EXISTE TABDEP1 MX ) ; CHRY = L_Y * ( EPBZ ** -1 ) * -1. ; TABDEP1.'RY' = RY ; FINSI ; TABDEP1.'EPZM' = EPZM ; FINPROC DE1 SIG1 ; **** @resflux debproc @resflux cht1*chpoint geo1*maillage geo2*maillage lambda1/flottant cara1/mchaml mod1*mmodel ; * * --- calcul du flux * lambda2 = lambda1 ; sinon ; lambda1 = lambda5 ; sinon ; finsi ; finsi ; gradt4 = gradt3 * lambda1 ; * * --- calcul des normales * cosdir1 cosdir2 cosdir3 = @vnorm3d geo2 geo1 ; * * --- produit scalaire * si (ega v1 2) ; sinon ; finsi ; * * --- int\E9gration * puis1 = abs puis1; * * --- affichage et fin * finproc puis1 ; **** RESI ************************************************************* * PROCEDURE RESI : CALCUL D'UNE RESISTANCE ************************************************************* ************************************************************* * MODELE ************************************************************* MOD1 = TABLE ; MAT1 = TABLE ; COND1 = TABLE ; TMAIL = TAB1.MAILLAGE ; TCOND = TAB1.CONDUCT ; TELEC = TAB1.ELECTRO ; I = 0 ; REPETER BOUC1 100 ; I = I + 1 ; SINON ; QUITTER BOUC1 ; FINSI ; FIN BOUC1 ; N1 = I - 1 ; MESS 'NOMBRE DE MATERIAUX DIFFERENTS :' N1 ; *MESS 'CONDUCTIVITES :' ; *LIST COND1 ; **************************************************************** * CONDITIONS AUX LIMITES ***************************************************************** T1 = 1. ; T2 = 0. ; EL1 = TELEC.1 ; EL2 = TELEC.2 ; CL1 = BLOQUE T EL1 ; CL2 = BLOQUE T EL2 ; *************************************************************** * CHARGEMENT *************************************************************** ***************************************************************** * RESOLUTION ***************************************************************** AMP1 = 5.E-3 ; I = 0 ; REPETER BOUC2 N1 ; I = I + 1 ; SI (EGA I 1); CONDT = COND1.1 ; MOD1T = MOD1.I ; SINON ; CONDT = CONDT ET COND1.I ; MOD1T = MOD1T ET MOD1.I ; FINSI ; TCONDT = TCONDT / UNIT ; FIN BOUC2 ; RIG1 = CONDT ET CL1 ET CL2 ; SI (EGA IDIM 2) ; * TRAC TEMP1 GEO (CONT GEO) ; SINON ; OEIL1 = 1.E4 1.E4 1.E4 ; * TRAC OEIL1 TEMP1 GEO (ENVE GEO) ; FINSI ; TAB1.GRADIENT = TABLE ; GRAD1 = TAB1.GRADIENT ; I = 0 ; REPETER BOUC3 N1 ; I = I + 1 ; SI (EGA I 1); MOD1T = MOD1.I ; TMAILT = TMAIL.I ; GRADT = GRAD1.1 ; SINON ; MOD1T = MOD1T ET MOD1.I ; TMAILT = TMAILT ET TMAIL.I ; GRADT = GRADT ET GRAD1.I ; FINSI ; FIN BOUC3 ; *GRADT = (CHAN CHPO MOD1T ( GRAD MOD1T TEMP1 )) * *(-1. * TCOND.I) ; GRADT = GRADT / UNIT ; *************************************************** ******* * CALCUL DU FLUX ***************************************************************** I = 0 ; **CHX = EXCO TCH1 GRADT JX ; **CHY = EXCO TCH2 GRADT JY ; SI (EGA IDIM 3) ; SINON ; MESS ' CALCUL EN AXISYMETRIQUE' ; MESS ' LA DENSITE DE COURANT EST DONNEE PAR RADIAN' ; * CCHR = EXTR CHR COMP ; * LCHR = MOTS CCHR.1 ; * LCHX = MOTS JX ; * LCHY = MOTS JY ; * CHX = PSCA CHX CHR LCHX LCHR ; * CHY = PSCA CHY CHR LCHY LCHR ; * CHX = NOMC JX CHX ; * CHY = NOMC JY CHY ; * J1 = CHX ET CHY ; * J1 = ( ( EXCO TCH1 GRADT JX ) * CHR ) * ET ( ( EXCO TCH2 GRADT JY ) * CHR ) ; SINON ; FINSI ; FINSI ; * SI (EGA IDIM 3) ; * CHZ = EXCO TCH3 GRADT JZ ; * J1 = J1 ET CHZ ; * FINSI ; REPETER BOUC9 N1 ; I = I + 1 ; SI (EGA IDIM 3) ; SINON ; SINON ; FINSI ; FINSI ; FIN BOUC9 ; SI (EGA IDIM 2) ; SINON ; FINSI ; ALPHA = ATG Y1 X1 ; SI (EGA IDIM 2) ; CHN = CHXN + CHYN ; SINON ; R1 = Y1/(SIN ALPHA) ; PHI ATG Z1 R1 ; CHN = CHXN + CHYN + CHZN ; FINSI ; SI (EGA IDIM 2) ; SINON; FINSI ; *LIST LJ1 ; *LIST LCHN ; ***************************************************************** * CALCUL DE LA RESISTANCE ***************************************************************** PI = 3.14159 ; FLUX1 = FLUX1 * (2. * PI) ; FINSI ; RES1 = (T1 - T2) / FLUX1; FINPROC TEMP1 J1 RES1 ; * DEBPROC @RIPPL TAB1*TABLE ; * *********************************************************** * Version amelioree de la procedure RIPPLE * * Alain MOAL (mai 1995) * *********************************************************** * * *--------------- VARIABLES D'ENTREE : RHO0 = TAB1.<RPLASMA ; RPLASMA = TAB1.<RPLASMA ; THETA2 = TAB1.<THETA2 ; THETA1 = TAB1.<THETA1 ; COEF_A1 = TAB1.<COEF_A1 ; COEF_B1 = TAB1.<COEF_B1 ; COEF_C1 = TAB1.<COEF_C1 ; RZERO = TAB1.<R0 ; RREF = TAB1.<RREF ; LSIN2T = TAB1.<CONTFIN ; CONTFIN1 = TAB1.<CONTFIN ; PRHO = TAB1.<PRHO ; POINTTOP = TAB1.<PTOP ; *------------------------------------ *---- nombre de bobines NBOB = 18. ; * *---- l'utilite de ce masque ne m'apparait pas clairement MASC1 = PRHO MASQUE EGSUPE (RPLASMA - 1.E-3) ; * *---- coordonnees polaires dans Rref de l'enveloppe des lignes *---- de champ dans le plan Phi = 0 PRHO2 = ((RPLASMA * MASC1 * (SIN(THETA1)) / (SIN(THETA2))) + ((PRHO - (RPLASMA * MASC1)) / (COS(THETA1 - THETA2)))) ; * *---- demi-excursion radiale dans Rref PDRHO2 = COEF_A1 * (EXP(COEF_B1 *PRHO2)) * (EXP(-1. * COEF_C1 * ((THETA2)**2))) ; * *---- coordonnees polaires dans Rzero de l'enveloppe des lignes *---- de champ dans le plan Phi = 0 PRHO1 = (((((RREF - RZERO)**2) * MASC1) + (2 * (COS(THETA2)) * (RREF - RZERO) * PRHO2) + ((PRHO2)**2))**0.5) ; * *---- demi-excursion radiale dans Rzero PDRHO1 = (PRHO2 + (MASC1 * (COS(THETA2)) * (RREF - RZERO))) / PRHO1 * PDRHO2 ; *---- demi-excursion radiale dans Rzero *TEST*PDRHO1 = (PRHO2 + (MASC1 * (COS(THETA2)) * (RREF - RZERO))) / *TEST* PRHO * PDRHO2 ; * *LIST PRHO1 ; *LIST PDRHO1 ; * *---- coordonnees des noeuds du contour * *---- on doit utiliser un contour constitue de segments a *---- 2 noeuds pour le calcul des abcisses curvilignes * *---- abscisse curviligne pour chaque noeud du contour * *---- creation du champ a partir de la liste de reels * *---- recherche du point extreme en X du contour on suppose *---- qu'il est unique et que tous les X sont positifs * LAM0 = RPLASMA - RHO0 ; I1 = 0 ; * *---- Pour chaque enveloppe de ligne de champ I1 = I1 + 1 ; *TEST* RHO1 = EXTR I1 PRHO ; * MESS 'DRHO1 ' DRHO1 ; * --- Creation de la ligne de champ S1 = 0. (RPLASMA - RHO1) ; S2 = (XEXT + (XEXT/10.)) (RPLASMA - RHO1) ; LSIN1 = S1 D S2 ; * --- ancien calcul : valable si THETA1 est proche de 90 degres * DY1 = -1. * DRHO1 * * (COS(XLS1 * (NBOB / RZERO / 3.14159 * 180.)) - 1.) ; * --- calcul dans le cas general * --- determination iterative de Phi et DY1 * DY1_OLD = -1. * DRHO1 ; * I = 0 ; * IMAX = 50 ; * REPETER BOUCLE IMAX ; * I = I + 1 ; * PHI = ATG (XLS1 / ((RHO1*(COS THETA1))+ RZERO + DY1_OLD)); * DY1_NEW = -1. * DRHO1 * ((COS(PHI * NBOB)) - 1.) ; * SI ((MAXI (ABS((DY1_NEW - DY1_OLD) / DY1_NEW))) <EG 1.E-6); * MESS ' NOMBRE D ITERATIONS DE POINT FIXE : ' I ; * QUITTER BOUCLE ; * FINSI ; * DY1_OLD = DY1_NEW ; * FIN BOUCLE ; * DY1 = DY1_NEW ; * --- PHI = ATG (XLS1 / ((RHO1*(COS THETA1))+ RZERO)) ; DY1 = -1. * DRHO1 * ((COS(PHI * NBOB)) - 1.) ; * --- ligne contenant le contour et le sinus utilisee pour le trace LSIN2T = LSIN2T ET LSIN2 ; * * --------- CALCUL DU POINT D'INTERSECTION * REPETER BOUCP 10 ; P_1OLD = P_1 ; * TRAC (CONTFIN1 ET ((P_11 D 1 P_12) COUL ROUG) ET PL_1 ET LSIN2); SI (P_1OLD EGA P_1 0.3E-3) ; LIST PL_1 ; QUITTER BOUCP ; FINSI ; FIN BOUCP ; * MESS ' ON EST SORTI DE BOUCP ' ; SI ((X_12 - X_11) >EG 0.) ; SINON ; FINSI ; * ---- abscisse curviligne de ce point FIN BOUCL ; * *---- traitement du dernier point du contour * *------ Trace du contour et des lignes de champ TITRE ' ENVELOPPES DES LIGNES DE CHAMP ' ; TRAC LSIN2T ; TITRE 'ABCISSE CURVILIGNE' ; TITRE 'BETA' ; BETA = ATG CHYVE CHXVE ; TITRE 'DISTANCE' ; * *--------------- VARIABLES DE SORTIE : TAB1.<BETA = BETA ; TAB1.<DIST = CHDEL ; *------------------------------------ * FINPROC ; * DEBPROC @RIPPL TAB1*TABLE ; * *********************************************************** * Version amelioree de l'ancienne procedure RIPPLE * * Alain MOAL (mai 1995) * *********************************************************** * * *--------------- VARIABLES D'ENTREE : RHO0 = TAB1.<RPLASMA ; RPLASMA = TAB1.<RPLASMA ; THETA2 = TAB1.<THETA2 ; THETA1 = TAB1.<THETA1 ; COEF_A1 = TAB1.<COEF_A1 ; COEF_B1 = TAB1.<COEF_B1 ; COEF_C1 = TAB1.<COEF_C1 ; RZERO = TAB1.<R0 ; RREF = TAB1.<RREF ; LSIN2T = TAB1.<CONTFIN ; CONTFIN1 = TAB1.<CONTFIN ; PRHO = TAB1.<PRHO ; POINTTOP = TAB1.<PTOP ; *------------------------------------ *---- nombre de bobines NBOB = 18. ; * *---- l'utilite de ce masque ne m'apparait pas clairement MASC1 = PRHO MASQUE EGSUPE (RPLASMA - 1.E-3) ; * *---- coordonnees polaires dans Rref de l'enveloppe des lignes *---- de champ dans le plan Phi = 0 PRHO2 = ((RPLASMA * MASC1 * (SIN(THETA1)) / (SIN(THETA2))) + ((PRHO - (RPLASMA * MASC1)) / (COS(THETA1 - THETA2)))) ; * *---- demi-excursion radiale dans Rref PDRHO2 = COEF_A1 * (EXP(COEF_B1 *PRHO2)) * (EXP(-1. * COEF_C1 * ((THETA2)**2))) ; * *---- coordonnees polaires dans Rzero de l'enveloppe des lignes *---- de champ dans le plan Phi = 0 PRHO1 = (((((RREF - RZERO)**2) * MASC1) + (2 * (COS(THETA2)) * (RREF - RZERO) * PRHO2) + ((PRHO2)**2))**0.5) ; * *---- demi-excursion radiale dans Rzero PDRHO1 = (PRHO2 + (MASC1 * (COS(THETA2)) * (RREF - RZERO))) / PRHO1 * PDRHO2 ; *---- demi-excursion radiale dans Rzero *TEST*PDRHO1 = (PRHO2 + (MASC1 * (COS(THETA2)) * (RREF - RZERO))) / *TEST* PRHO * PDRHO2 ; * *LIST PRHO1 ; *LIST PDRHO1 ; * *---- coordonnees des noeuds du contour * *---- on doit utiliser un contour constitue de segments a *---- 2 noeuds pour le calcul des abcisses curvilignes * *---- abscisse curviligne pour chaque noeud du contour * *---- creation du champ a partir de la liste de reels * *---- recherche du point extreme en X du contour on suppose *---- qu'il est unique et que tous les X sont positifs * LAM0 = RPLASMA - RHO0 ; I1 = 0 ; * *---- Pour chaque enveloppe de ligne de champ I1 = I1 + 1 ; *TEST* RHO1 = EXTR I1 PRHO ; * MESS 'DRHO1 ' DRHO1 ; * --- Creation de la ligne de champ S1 = 0. (RPLASMA - RHO1) ; S2 = (XEXT + (XEXT/10.)) (RPLASMA - RHO1) ; LSIN1 = S1 D S2 ; * --- ancien calcul : valable si THETA1 est proche de 90 degres * DY1 = -1. * DRHO1 * * (COS(XLS1 * (NBOB / RZERO / 3.14159 * 180.)) - 1.) ; * --- calcul dans le cas general * --- determination iterative de Phi et DY1 * DY1_OLD = -1. * DRHO1 ; * I = 0 ; * IMAX = 50 ; * REPETER BOUCLE IMAX ; * I = I + 1 ; * PHI = ATG (XLS1 / ((RHO1*(COS THETA1))+ RZERO + DY1_OLD)); * DY1_NEW = -1. * DRHO1 * ((COS(PHI * NBOB)) - 1.) ; * SI ((MAXI (ABS((DY1_NEW - DY1_OLD) / DY1_NEW))) <EG 1.E-6); * MESS ' NOMBRE D ITERATIONS DE POINT FIXE : ' I ; * QUITTER BOUCLE ; * FINSI ; * DY1_OLD = DY1_NEW ; * FIN BOUCLE ; * DY1 = DY1_NEW ; * --- PHI = ATG (XLS1 / ((RHO1*(COS THETA1))+ RZERO)) ; DY1 = -1. * DRHO1 * ((COS(PHI * NBOB)) - 1.) ; * --- ligne contenant le contour et le sinus utilisee pour le trace LSIN2T = LSIN2T ET LSIN2 ; * * --------- CALCUL DU POINT D'INTERSECTION * REPETER BOUCP 10 ; P_1OLD = P_1 ; * TRAC (CONTFIN1 ET ((P_11 D 1 P_12) COUL ROUG) ET PL_1 ET LSIN2); SI (P_1OLD EGA P_1 0.3E-3) ; LIST PL_1 ; QUITTER BOUCP ; FINSI ; FIN BOUCP ; * MESS ' ON EST SORTI DE BOUCP ' ; SI ((X_12 - X_11) >EG 0.) ; SINON ; FINSI ; * ---- abscisse curviligne de ce point FIN BOUCL ; * *---- traitement du dernier point du contour * *------ Trace du contour et des lignes de champ TITRE ' ENVELOPPES DES LIGNES DE CHAMP ' ; TRAC LSIN2T ; TITRE 'ABCISSE CURVILIGNE' ; TITRE 'BETA' ; BETA = ATG CHYVE CHXVE ; TITRE 'DISTANCE' ; * *--------------- VARIABLES DE SORTIE : TAB1.<BETA = BETA ; TAB1.<DIST = CHDEL ; *------------------------------------ * FINPROC ; debproc @RMCOOR tab1*table ; * * R. Mitteau etude interseption * 25/08/1998 * * * --- variables d entree : * mail1 = tab1.<maillage ; * RM25/08/98 la il faudrait mettre un test pour verfier qu'on * entre bien un maillage surfacique compose uniquement de tri3 *chpo des coordonnee des noeuds *cham des coordonnees des noeuds * initialisation repe boucel1 nel1 ; * mess &boucel1 ; fin boucel1 ; * * --- variables de sortie * tab1.<chamx1 = chamx1 ; tab1.<chamy1 = chamy1 ; tab1.<chamz1 = chamz1 ; tab1.<chamx2 = chamx2 ; tab1.<chamy2 = chamy2 ; tab1.<chamz2 = chamz2 ; tab1.<chamx3 = chamx3 ; tab1.<chamy3 = chamy3 ; tab1.<chamz3 = chamz3 ; finproc ; **** @RMCOORO debproc @RMCOORO tab1*table ; * * R. Mitteau etude interseption * 25/08/1998 * * * --- variables d entree : * mail1 = tab1.<maillage ; * RM25/08/98 la il faudrait mettre un test pour verifier qu'on * entre bien un maillage surfacique compose uniquement de tri3 * chpo des coordonnee des noeuds dans le repere du maillage * passage au repere global chxg1 chyg1 chzg1 = @crmgc chxm1 chym1 chzm1 tab1; * cham des coordonnees des noeuds * initialisation repe boucel1 nel1 ; fin boucel1 ; * * --- variables de sortie * tab1.<chamx1 = chamx1 ; tab1.<chamy1 = chamy1 ; tab1.<chamz1 = chamz1 ; tab1.<chamx2 = chamx2 ; tab1.<chamy2 = chamy2 ; tab1.<chamz2 = chamz2 ; tab1.<chamx3 = chamx3 ; tab1.<chamy3 = chamy3 ; tab1.<chamz3 = chamz3 ; finproc ; **** @RMFLUN debproc @RMFLUN tab1*table ; ************************************************************ * Procedure de calcul du flux normalise en chaque noeud de * * chaque facette triangulaire d'un maillage (methode * * inspiree de @RMCOORO). Alain MOAL (Fevrier 2001) * ************************************************************ * * --- variables d entree : FLUN0 = TAB1.<FLUX_NORMALISE ; MAIL1 = TAB1.<MAILLAGE ; * ------------------------ * --- cham du flux normalise * initialisation repe boucel1 nel1 ; fin boucel1 ; * * --- variables de sortie tab1.<chamf1 = chamf1 ; tab1.<chamf2 = chamf2 ; tab1.<chamf3 = chamf3 ; * finproc ; **** @RMNORM debproc @RMNORM tab1*table ; * * --- variables d entree : * si (non (existe tab1 <chamx1)) ; @rmcoor tab1; finsi ; * calcul des normales * (on pourrait peut etre utiliser VNORM3D. Mais il faut noter * qu on veut ici les normales au centre des facettes et non aux noeuds. * On profite du fait qu on a ici que des triangles pour utiliser * le produit vectoriel de deux cotes du triangle) abx1 = (tab1.<chamx2) - (tab1.<chamx1) ; acx1 = (tab1.<chamx3) - (tab1.<chamx1) ; aby1 = (tab1.<chamy2) - (tab1.<chamy1) ; acy1 = (tab1.<chamy3) - (tab1.<chamy1) ; abz1 = (tab1.<chamz2) - (tab1.<chamz1) ; acz1 = (tab1.<chamz3) - (tab1.<chamz1) ; nx1 = (aby1*acz1) - (abz1*acy1) ; ny1 = (abz1*acx1) - (abx1*acz1) ; nz1 = (abx1*acy1) - (aby1*acx1) ; * normalisation nor1 = ((nx1 * nx1) + (ny1 * ny1) + (nz1 * nz1)) ** .5 ; finsi ; nx2 = nx1 * (nor1 ** -1) ; ny2 = ny1 * (nor1 ** -1) ; nz2 = nz1 * (nor1 ** -1) ; * * --- variables de sortie * tab1.<cosx = nx2 ; tab1.<cosy = ny2 ; tab1.<cosz = nz2 ; finproc ; **** @RPOI DEBPROC @RPOI LPOINT*MAILLAGE NPOIN*LISTMOTS LSHAF1*MAILLAGE CPLASMA*POINT >PTG*POINT TAB1*TABLE ; LSHAF0 = LSHAF1 ET >PTG ; ZM = XM * 0. ; XG YG ZG = @CRMGC XM YM ZM TAB1 ; RHOP THETAP PHIP = @CRGTC XG YG ZG TAB1.<RP TAB1.<HP; GRAY PRAY THERAY = @CSHIFT RHOP THETAP PHIP 1 TAB1; LIGRAY0 = CPLASMA D 1 >PTG ; * MESS 'POINT : >PTG' ; LINC10 = >PTG ; I = 0 ; CP1 = CPLASMA ; TAN1 = >PTG; POI1 = >PTG; REPETER BOUC21 10; TAN1 = TAN1 D 1 POI1; FIN BOUC21 ; POI1 = >PTG; REPETER BOUC31 10; TAN1 = TAN1 D 1 POI1; FIN BOUC31 ; I = I + 1 ; * MESS 'POINT :' NOMP; I1 = I - (I / 7 * 7) ; * ---- centre du cercle dans le repere du maillage LIGRAY0 = LIGRAY0 ET LIGRAY1 ; MESS 'POINT ' NOMP ' PRAY1 ' PRAY1 'GRAY1' GRAY1 ; * POINT1 = POINT0; TAN1 = POINT0 ; POI1 = POINT0 ; REPETER BOUC2 10; TAN1 = TAN1 D 1 POI2; POI1 = POI2 ; FIN BOUC2 ; * POINT1 = POINT0; POI1 = POINT0 ; REPETER BOUC3 10; TAN1 = TAN1 D 1 POI2; POI1 = POI2 ; FIN BOUC3 ; TAN3 = TAN3 ET TAN2; FIN BOUCLE1; list LNOM ; list LPR1 ; list LGR1 ; *NTAB CHPR1; *NTAB CHGR1; FINPROC TAN3 LIGRAY0 ; **** @SCHINTE DEBPROC @SCHINTE LSIN2*MAILLAGE LPA21*MAILLAGE EPS3*FLOTTANT PP_1/POINT ; SI ( NON (EXISTE PP_1 )) ; SINON ; FINSI ; I__1 = 0 ; REPETER BOUCP 10 ; I__1 = I__1 + 1 ; EPS2 = EPS3 ; * trac ( LPA21 ET ( P_11 D P_12 )) ; I__2 = 0 ; REPETER BOUCI 10 ; I__2 = I__2 + 1 ; SI (NBP1 >EG 3 ) ; EPS2 = EPS2 / 1.7 ; * EPS2 = EPS2 / 1.9 ; SINON ; QUITTER BOUCI ; FINSI ; FIN BOUCI ; P_1OLD = P_1 ; SI ( P_1OLD EGA P_1 0.3E-3 ) ; LIST PL_1 ; QUITTER BOUCP ; FINSI ; FIN BOUCP ; * P_12 MOIN P_11 EST LA TANGENTE ; SI ( (X_12 - X_11) >EG 0. ) ; SINON ; FINSI ; FINPROC PL_1 VEC_1 ; DEBPROC @SHIFT RHO*CHPOINT THETA*CHPOINT PHI*CHPOINT TAB1*TABLE ; * ************************************************************** * Procedure de calcul des grand et petit rayons du "cercle * * de Shafranov" en chaque point defini dans le repere centre * * sur le plasma. Alain MOAL (juin 1995) * ************************************************************** * * *--------------- VARIABLES D'ENTREE : RP = TAB1.<RP ; RHO0 = TAB1.<RHO0 ; LAMB = TAB1.<LAMB ; *------------------------------------ * *---- on se ramene a la resolution d'une equation du 2nd degre *---- variables auxiliaires AUX1 = 1. + LAMB ; AUX2 = RHO * (COS THETA) + RP ; AUX3 = RHO * (SIN THETA) ; DELTA = ((AUX2**2) * (AUX1**2)) - ((AUX1 + 1.) * ( ((AUX2**2) + (AUX3**2)) * AUX1 - (RP**2) - ((RHO0**2) * AUX1))) ; * *---- deux cercles possibles GRANDR1 = ((AUX2 * AUX1) + (DELTA**0.5))/(AUX1 + 1.) ; GRANDR2 = ((AUX2 * AUX1) - (DELTA**0.5))/(AUX1 + 1.) ; * *---- choix du bon cercle SI ((COS THETA) >EG 0.) ; GRANDR = GRANDR2 ; SINON ; GRANDR = GRANDR1 ; FINSI ; * *---- calcul du petit rayon PETITR = ((AUX2 - GRANDR)**2 + (AUX3**2))**0.5 ; * *---- calcul de theta dans le repere centre sur le cercle calcule THETAR = ATG AUX3 (AUX2 - GRANDR) ; * FINPROC GRANDR PETITR THETAR; **** @TABEAU ********************************************************* ****** PROCEDURE @TABEAU ****** ********************************************************* * CARACTERISTIQUES DE L EAU *-------------------------------------------------------- DEBPROC @TABEAU L_TRAC/LOGIQUE TAB_1*TABLE ; SI ( NON ( EXISTE L_TRAC )) ; L_TRAC = FAUX ; FINSI ; * * *--- PARAMETRES * * ORIGINE : Properties of Water and Steam in SI-Units * prepared by Ernst Schmidt ( 0-800C / 0-1000 bar) * edited by Ulrich Grigull 1979 * *--- TSAT (C) EN FONCTION DE LA PRESSION (Pa) * PPSAT = PROG 1.E5 3.E5 6.E5 8.E5 10.E5 15.5E5 19.8E5 24.E5 28.E5 30.E5 32.E5 34.E5 36.E5 40.E5 60.E5 ; PTSAT = PROG 99.6 133.5 158.8 170.4 179.9 199.8 212. 221.8 230. 233.8 237.4 240.9 244.1 250.3 275.5 ; * *--- LISTE DES TEMPERATURES DE SATURATION (C) * * *--- LISTE DES TEMPERATURES (C) * * *--- RHO DE L'EAU (kg/m3) EN FONCTION DE LA TEMPERATURE * PRHOF = PROG 999.8 998.3 992.3 983.2 971.6 958.1 942.9 925.8 907.3 886.9 864.7 840.3 813.6 783.9 750.5 712.2 ; * *--- RHO DE LA VAPEUR(kg/m3) A TSAT PSAT EN FONCTION DE TSAT * PRHOG = PROG 0.005 0.017 0.05 0.13 0.29 0.60 1.12 1.97 3.26 5.16 7.86 11.62 16.76 23.73 33.19 46.19 ; * *--- ENTHALPIE DE L'EAU (J/kg) EN FONCTION DE LA TEMPERATURE * PHF = PROG 0. 83.86E3 167.45E3 251.09E3 334.92E3 419.06E3 503.72E3 589.1E3 675.5E3 763.1E3 852.4E3 943.7E3 1037.6E3 1134.9E3 1236.8E3 1345.E3 ; * *--- CHALEUR LATENTE DE VAP. DE L'EAU (J/kg) EN FONCTION DE LA TEMP. * ; PHFG = PROG 250.2E4 245.4E4 240.7E4 235.9E4 230.9E4 225.7E4 220.2E4 214.4E4 208.1E4 201.3E4 193.9E4 185.6E4 176.5E4 166.1E4 154.4E4 140.6E4; * *--- ENTHALPIE DE LA VAPEUR (J/kg) A TSAT PSAT EN FONCTION DE TSAT * PHG = PHFG + PHF ; * *--- TENSION SURFACIQUE (kg/m2s2) EN FONCTION DE LA TEMPERATURE * PSIGM = PROG 75.64E-3 72.75E-3 69.60E-3 66.24E-3 62.67E-3 58.91E-3 54.96E-3 50.85E-3 46.58E-3 42.19E-3 37.69E-3 33.10E-3 28.42E-3 23.67E-3 18.94E-3 14.3E-3; * * ORIGINE : Heat Transfer Physical Properties * from E.R.G. Eckert and R.M. Drake * Analysis of Heat Mass Transfer McGraw-Hill New-York 1972 * *--- LISTE DES TEMPERATURES (C) * * *--- PRANDTL DE L'EAU EN FONCTION DE LA TEMPERATURE * PPRAF = PROG 13.6 7.02 4.34 3.02 2.22 1.74 1.446 1.241 1.099 1.004 0.937 0.891 0.871 0.874 0.910 1.019 ; * *--- VISCOSITE DE L'EAU (kg/ms) EN FONCTION DE LA TEMPERATURE * PNNU = PROG 1.8E-3 1.E-3 .65E-3 .47E-3 .35E-3 .28E-3 .23E-3 .20E-3 .172E-3 .154E-3 .138E-3 .126E-3 .117E-3 .108E-3 .102E-3 .96E-4 ; * *--- LAMBDA DE L EAU (W/mK) EN FONCTION DE LA TEMPERATURE * * *--- Cp DE L EAU (J/kg.C) EN FONCTION DE LA TEMPERATURE * PCPF = PROG 4217.8 4181.8 4178.4 4184.3 4196.4 4216.1 4250 4283 4342 4417 4505 4610 4756 4949 5208 5728 ; * * ORIGINE : Handbook of Heat Transfer ( McGraw-Hill) * Rohsenow and Hartnett ( p 7-5 ) * Diagramme de Moody * *--- COEF DE FROTTEMENT EN FONCTION DU NOMBRE DE REYNOLDS *--- POUR UNE PAROI LISSE * * SI L_TRAC ; DESSIN TAB_1.EPTSAT ; DESSIN TAB_1.ETRHOF ; DESSIN TAB_1.ETRHOG ; DESSIN TAB_1.ETPRAF ; DESSIN TAB_1.ETNNU ; DESSIN ( TAB_1.ETHF ET TAB_1.ETHG ) ; DESSIN ( TAB_1.ETHFG ) ; DESSIN TAB_1.ETLLA ; DESSIN TAB_1.ETF ; FINSI ; FINPROC ; **** @TESTGEO DEBPROC @TESTGEO TAB1*TABLE ; MESS 'METHODE GEOMETRIQUE' ; * *--------------- VARIABLES D'ENTREE : * MAIL1 = TAB1.<S_OMBRE ; OMB0 = TAB1.<S_OMBRANT ; IMETHOD = TAB1.<METHODE_REMONTEE ; chsign1 = tab1.<chsign ; TYPCAL = TAB1.<TYPE_CALCUL ; RP = TAB1.<RP ; RHO0 = TAB1.<RHO0 ; RR = TAB1.<RR ; HP = TAB1.<HP ; EPS0 = TAB1.<EPS ; COEFA = TAB1.<COEFA ; COEFB = TAB1.<COEFB ; COEFC = TAB1.<COEFC ; NBOB = TAB1.<NBOB ; PASB2 = TAB1.<PAS_AVEC_TEST ; DMAX2 = TAB1.<DIST_AVEC_TEST ; NBPAS2 = TAB1.<NBPAS2 ; PASB1 = TAB1.<PAS_SANS_TEST ; DMAX1 = TAB1.<DIST_SANS_TEST ; NBPAS1 = TAB1.<NBPAS1 ; FINSI ; IPLAN = TAB1.<PLAN ; FINSI ; REPO = TAB1.<SAUV_PTS_OMBRANTS ; SINON; REPO = FAUX; FINSI ; * * --- * SI (EGA TYPCAL 'AVEC_SHIFT_AVEC_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'AVEC_SHIFT_SANS_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = FAUX ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_AVEC_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_SANS_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = FAUX ; FINSI ; SI ((NON (EXISTE ISHIFT)) OU (NON (EXISTE IRIPPLE))) ; FINSI ; *xm ym zm = coor omb0 ; *xg yg zg = @crmgc xm ym zm tab1 ; *rho theta phi = @crgtc xg yg zg rp hp ; *rhomax = maxi rho ; *rhomin = mini rho ; *thetamax = maxi theta ; *thetamin = mini theta ; *RM22/12/98 le test d'appartenance au domaine de validite du * modele de ripple est fait dans ombrage * * ------------------------------------------------------------- * * --- calcul de l'angle d'incidence maximal s'il n'a pas ete * defini par l'utilisateur * ALPHA = TAB1.<INCIDENCE_MAXIMALE ; SINON ; ALPHA = @INCI TAB1 ; TAB1.<INCIDENCE_MAXIMALE = ALPHA ; FINSI ; * * --- calcul du critere d'intersection s'il n'a pas ete * defini par l'utilisateur * DELIM = TAB1.<DELIM ; SINON ; FINSI ; * * ------------------------------------------------------------- * * --- DUPLICATION DU MAILLAGE OMBRE NON DEFORME VNUL = 0. 0. 0. ; SINON ; VNUL = 0. 0. ; FINSI ; * --- MAILLAGE DE TRAVAIL => FORM * * --- PROJECTION DU CHAMP DE SIGNES SUR LE MAILLAGE DE TRAVAIL * --- BOUCLE SUR CHAQUE POINT DU MAILLAGE DE TRAVAIL REPETER BOUPI (NBM1 - 1) ; I = &BOUPI + 1 ; CHSIGTRA = CHSIGTRA ET CHI ; FIN BOUPI ; *BR 01/10/98 TAB1.<CHSIGN = CHSIGN ; * * ####################################################### * *--- INITIALISATION DES PARAMETRES DE LA BOUCLE * * ####################################################### * I1 = 0 ; MASQ1 = CHELIM ; * ---- VARIABLE POUR SAVOIR SI ON EFFECTUE LE VISAVIS OU NON TVISA = VRAI ; * ---- coordonnees dans le repere du maillage SI (DIM0 EGA 2) ; ZM0 = XM0 * 0. ; DNUL = XM0 * 0. ; PHINUL = DNUL ; THENUL = DNUL ; VNUL = 0. 0. ; SINON ; VNUL = 0. 0. 0. ; FINSI ; *---- Coordonnees dans le repere global du tore XG_OLD YG_OLD ZG_OLD = @CRMGC XM0 YM0 ZM0 TAB1 ; *---- CONSTRUCTION D'UN POINT REPONDANT AU CRITERE DE VISAVIS *---- Repere pour le trace SI (DIM0 EGA 3) ; FINSI ; *---- initialisation des distances LCOURAN1 = 0. ; LMAX1 = 0. ; * * --- Rappel des parametres de la procedure * MESS ' '; MESS '##################################################'; MESS ' '; MESS ' '; SI (IMETHOD EGA 1) ; FINSI ; SI (IMETHOD EGA 2) ; FINSI ; SI (IMETHOD EGA 3) ; FINSI ; SI (IMETHOD EGA 4) ; FINSI ; MESS ' '; MESS 'Calcul en deux parties :'; MESS ' '; MESS 'SANS TEST'; MESS 'Distance remontee :' DMAX1 ; MESS 'Pas pour la remontee :' PASB1 ; MESS 'Nombre d iterations :' NBPAS1 ; MESS ' '; MESS 'AVEC TEST'; MESS 'Distance remontee :' DMAX2 ; MESS 'Pas pour la remontee :' PASB2 ; MESS 'Nombre d iterations :' NBPAS2 ; SINON ; MESS 'Calcul avec test systematique :'; MESS 'Distance remontee :' DMAX2 ; MESS 'Pas de remontee :' PASB2 ; MESS 'Nombre d iterations :' NBPAS2 ; FINSI ; MESS ' ' ; MESS 'Critere d interception pour VISAVIS :' DELIM ; MESS 'Incidence maximale sur OMBRE en degres :' ALPHA ; FINSI ; SI TAB1.<SAUV_PTS_OMBRANTS ; MESS 'Sauvegarde des points ombrants'; SINON ; MESS 'pas de sauvegarde des points ombrants'; FINSI ; SINON ; MESS 'pas de sauvegarde des points ombrants'; FINSI ; SI ISHIFT ; MESS 'Calcul avec shift de Safranov' ; SINON ; MESS 'Calcul sans shift de Safranov'; FINSI ; SI IRIPPLE ; MESS 'Calcul avec ripple du champ toroidal' ; SINON ; MESS 'Calcul sans ripple du champ toroidal' ; FINSI ; MESS ' '; MESS '##################################################'; MESS ' '; PAR2 = FAUX ; TVISA = FAUX ; MESS 'PREMIERE PARTIE DU CALCUL, SANS VISAVIS'; NBPAS0 = NBPAS1 + NBPAS2 ; SINON ; NBPAS0 = NBPAS2 ; FINSI ; * *-------------------------------------------------------------- * * DEBUT DE LA BOUCLE DE REMONTEE ITERATIVE DES LIGNES DE CHAMP * *-------------------------------------------------------------- * MESS ' '; MESS '##################################################'; MESS ' '; * ------------------ Boucle 1 on remonte sans test ------------------- PASB0 = PASB1 ; * increment de la distance de connexion (= PAS tant qu'il n'y a pas * d'intersection) MESS 'PREMIERE PARTIE DU CALCUL, SANS TEST D INTERSECTION'; REPETER BOUCLE1 NBPAS1 ; I1 = I1 + 1 ; LCOURAN1 = LCOURAN1 + PASB0 ; MESS ' '; MESS 'ITERATION : ' I1 'distance remontee' LCOURAN1 ; * ---- Appel de la procedure de calcul des deplacements selon methode choisie * ---- Methode Explicite SI (IMETHOD EGA 1) ; DEPX0 DEPY0 DEPZ0 = @DEXPLI XG_OLD YG_OLD ZG_OLD PASB0 TAB1; FINSI ; * ---- Methode Euler-Cauchy SI (IMETHOD EGA 2) ; DEPX0 DEPY0 DEPZ0 = @DMOYEN XG_OLD YG_OLD ZG_OLD PASB0 CHSIGTRA TAB1; FINSI ; * ---- Methode Point Milieu Modifiee SI (IMETHOD EGA 3) ; DEPX0 DEPY0 DEPZ0 =@DMILIEU XG_OLD YG_OLD ZG_OLD PASB0 CHSIGTRA TAB1; FINSI ; * ---- Methode de Reprojection SI (IMETHOD EGA 4) ; DEPX0 DEPY0 DEPZ0 =@DREPROJ XG_OLD YG_OLD ZG_OLD PASB0 CHSIGTRA TAB1; FINSI ; * ---- On affecte le signe donnant le sens de remontee aux deplacements DEPX0 = CHSIGTRA * DEPX0 ; DEPY0 = CHSIGTRA * DEPY0 ; DEPZ0 = CHSIGTRA * DEPZ0 ; * ---- Calcul du deplacement projete selon le cas SI (DIM0 EGA 2) ; * ---- Calcul de TETA et PHI par @CRGTC RHO THETA PHI = @CRGTC XG_OLD YG_OLD ZG_OLD RP HP ; * ---- Projection par un double changement de base SI (EGA IPLAN 'PHICONS') ; DRO DTETA DPHI = @CBGTV DEPX0 DEPY0 DEPZ0 THETA PHI ; PHINUL = DNUL ; DEPXP DEPYP DEPZP = @CBTGV DRO DTETA DNUL THETA PHINUL; SINON ; DRO DTETA DPHI = @CBGTV DEPX0 DEPY0 DEPZ0 THETA PHI ; THENUL = DNUL ; DEPXP DEPYP DEPZP = @CBTGV DRO DNUL DPHI THENUL PHI ; FINSI ; FINSI ; * ---- Cas 3D : Dprojete = D SI (DIM0 EGA 3) ; DEPXP DEPYP DEPZP = DEPX0 DEPY0 DEPZ0 ; FINSI ; * ---- On calcule les deplacements (projetes si 2D) * ---- dans le repere du maillage pour le FORM * ---- avec la procedure de changement de base DX DY DZ = @CBGMV DEPXP DEPYP DEPZP TAB1 ; DEP1 = DEPX1 ET DEPY1 ET DEPZ1 ; FORM DEP1 ; * ---- Calcul analytique des nouvelles coordonnees dans le repere global * (deplacements non projetes meme en 2D) XG_NEW = XG_OLD + DEPX0 ; YG_NEW = YG_OLD + DEPY0 ; ZG_NEW = ZG_OLD + DEPZ0 ; XG_OLD = XG_NEW ; YG_OLD = YG_NEW ; ZG_OLD = ZG_NEW ; *--- CHPOINT CONTENANT LES DISTANCES PARCOURUES AVANT INTERCEPTION chdist = chdist + CHDIST9 ; * --- actualisation des champs de coordonnees pour iteration suivante XG_OLD = XG_NEW ; YG_OLD = YG_NEW ; ZG_OLD = ZG_NEW ; FIN BOUCLE1 ; * ------------------------ Fin de la boucle 1 ------------------------ finsi ; MESS ' '; MESS '##################################################'; MESS ' '; MESS 'CALCUL AVEC TEST D INTERSECTION'; * ------------------ Boucle 2 on remonte avec test ------------------- PASB0 = PASB2 ; REPETER BOUCLE2 NBPAS2 ; I1 = I1 + 1 ; LCOURAN1 = LCOURAN1 + PASB0 ; MESS ' '; MESS 'ITERATION : ' I1 'distance remontee' LCOURAN1 ; *---- Appel de la procedure de calcul des deplacements selon methode choisie *---- Methode Explicite SI (IMETHOD EGA 1) ; DEPX0 DEPY0 DEPZ0 = @DEXPLI XG_OLD YG_OLD ZG_OLD PASB0 TAB1; FINSI ; *---- Methode Euler-Cauchy SI (IMETHOD EGA 2) ; DEPX0 DEPY0 DEPZ0 = @DMOYEN XG_OLD YG_OLD ZG_OLD PASB0 CHSIGTRA TAB1; FINSI ; *---- Methode Point Milieu Modifiee SI (IMETHOD EGA 3) ; DEPX0 DEPY0 DEPZ0 = @DMILIEU XG_OLD YG_OLD ZG_OLD PASB0 CHSIGTRA TAB1; FINSI ; *---- Methode de Reprojection SI (IMETHOD EGA 4) ; DEPX0 DEPY0 DEPZ0 = @DREPROJ XG_OLD YG_OLD ZG_OLD PASB0 CHSIGTRA TAB1; FINSI ; *---- On affecte le signe donnant le sens de remontee aux deplacements DEPX0 = CHSIGTRA * DEPX0 ; DEPY0 = CHSIGTRA * DEPY0 ; DEPZ0 = CHSIGTRA * DEPZ0 ; *---- Calcul du deplacement projete selon le cas SI (DIM0 EGA 2) ; *---- Calcul de TETA et PHI par @CRGTC RHO THETA PHI = @CRGTC XG_OLD YG_OLD ZG_OLD RP HP ; *---- Projection par un double changement de base SI (EGA IPLAN 'PHICONS') ; DRO DTETA DPHI = @CBGTV DEPX0 DEPY0 DEPZ0 THETA PHI ; PHINUL = DNUL ; DEPXP DEPYP DEPZP = @CBTGV DRO DTETA DNUL THETA PHINUL; SINON ; DRO DTETA DPHI = @CBGTV DEPX0 DEPY0 DEPZ0 THETA PHI ; THENUL = DNUL ; DEPXP DEPYP DEPZP = @CBTGV DRO DNUL DPHI THENUL PHI ; FINSI ; FINSI ; *---- Cas 3D : Dprojete = D SI (DIM0 EGA 3) ; DEPXP DEPYP DEPZP = DEPX0 DEPY0 DEPZ0 ; FINSI ; * ---- On calcule les deplacements (projetes si 2D) * ---- dans le repere du maillage pour le FORM * ---- avec la procedure de changement de base DX DY DZ = @CBGMV DEPXP DEPYP DEPZP TAB1 ; DEP1 = DEPX1 ET DEPY1 ET DEPZ1 ; FORM DEP1 ; *---- Calcul analytique des nouvelles coordonnees dans le repere global * (deplacements non projetes meme en 2D) XG_NEW = XG_OLD + DEPX0 ; YG_NEW = YG_OLD + DEPY0 ; ZG_NEW = ZG_OLD + DEPZ0 ; XG_OLD = XG_NEW ; YG_OLD = YG_NEW ; ZG_OLD = ZG_NEW ; *---- test sur les eventuels noeuds interceptes *---- SEULEMENT SI NECESSAIRE (D'APRES DEMANDE UTILISATEUR) ptest pt2 = visavis (MAI1TRAV et pvisa) omb0 delim; pt1 pt2 = visavis MAI1TRAV omb0 delim; LMAX1 = LCOURAN1 ; * *--- SAUVEGARDE DES POINTS OMBRANTS CONDITIONEL CAR PREND DU TEMPS CPU SI REPO ; POMB = POMB ET PT2 ; SINON ; POMB = PT2 ; FINSI ; FINSI ; * *---- construction du champ contenant 1 aux noeuds *---- interceptes a l'iteration courante *---- construction du champ contenant n aux noeuds *---- interceptes n fois chelim = chelim et chelim1 ; *---- CHPOINT CONTENANT DES 1 POUR LES NOEUDS *---- INTERCEPTES AU MOINS UNE FOIS * ---- nombre de points interceptes depuis le debut * ---- du calcul : * ---- on quitte la boucle si tous les noeuds ont * ---- ete interceptes QUITER BOUCLE1 ; FINSI ; FINSI ; *---- fin du test d'interception *--- CHPOINT CONTENANT LES DISTANCES PARCOURUES AVANT INTERCEPTION chdisti = PASB0 * (CHP1 - MASQ1) ; chdist = chdist et chdisti ; * mess 'mini maxi dist connection en m' * (mini chdist) (maxi chdist); *--- Traces intermediaires si TAB1.<NTRAC specifie NSORT = NBPAS0 / TAB1.<NTRAC ; SI (NSORT EGA 0) ; NSORT = 1 ; FINSI ; OUT = (I1 - (NSORT*(I1/NSORT))); SI ( OUT EGA 0); *---- CAS 3D SI (DIM0 EGA 3) ; SI TVISA ; SINON ; titre 'pas='i1' pas de noeud verifiant le critere'; FINSI ; SINON ; titre 'pas='i1' pas de test effectue'; FINSI ; *---- CAS 2D ==> TRACE DANS LE PLAN SINON ; SINON ; titre 'pas='i1' pas de noeud verifiant le critere'; FINSI ; FINSI ; FINSI; FINSI; MENAGE ; FIN BOUCLE2 ; * --------------------- Fin de la boucle 2 ---------------------- *---- PASSAGE DU SUPPORT MAILLAGE DEFORME *---- AU SUPPORT MAILLAGE INITIAL POUR CHDIST * CREATION DE LA LISTE DES DISTANCES CONTENUES DANS CHDIST * I = 1 ; REPETER BOULISTE (NDIST - 1) ; I = I + 1 ; FIN BOULISTE ; * CONSTRUCTION DU CHAMP DES DISTANCES SUR LE MAILLAGE NON DEFORME * *--- Sorties dans TAB1 TAB1.<DELIM = DELIM ; TAB1.<CONNEXION_MAX = LMAX1 ; TAB1.<LONGUEUR_REMONTEE = LCOURAN1 ; FINPROC CHDIST0 MAI1TRAV POMB ; **** @THERSC0 'DEBPROC' @THERSC0 TAB1*'TABLE ' ; MESS ' ' ; NIVEAU = TAB1.'NIVEAU' ; SI ((EXISTE TAB1 'VITESSE') OU (EXISTE TAB1 'PRESS_IN') OU (EXISTE TAB1 'TEMPE_IN')); MESS ' ' ; MESS ' ' ; MESS ' ' ; MESS '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ' ; MESS ' ' ; MESS ' ' ; MESS '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ' ; MESS ' ' ; MESS ' ' ; MESS ' ' ; MESS ' ' ; FINSI; SI (NIVEAU >EG 4 ) ; FINSI ; * * --- procedure d'initialisation thermique standard groupe CFP * TAC8 = TABLE ; TAC8.1 = 'MARQ CROI REGU' ; TAC8.3 = 'MARQ ETOI REGU' ; TAC8.4 = 'MARQ LOSA REGU' ; TAC8.5 = 'MARQ CARR REGU' ; TAC8.7 = 'MARQ TRIB REGU' ; TAC8.9 = 'MARQ ETOI REGU' ; TAC8.10 = 'MARQ CROI REGU' ; TAC8.11 = 'MARQ LOSA REGU' ; TAC8.12 = 'MARQ CARR REGU' ; TAC8.14 = 'MARQ TRIB REGU' ; TAC8.15 = 'MARQ ETOI REGU' ; TAC8.16 = 'MARQ CROI REGU' ; TAC8.18 = 'MARQ CARR REGU' ; TAC8.19 = 'MARQ CARR REGU' ; TAC8.21 = 'MARQ TRIB REGU' ; TAC8.22 = 'MARQ CROI REGU' ; TAC8.24 = 'MARQ ETOI REGU' ; TAC8.25 = 'MARQ CROI REGU' ; TAC8.27 = 'MARQ ETOI REGU' ; TAC8.28 = 'MARQ CROI REGU' ; * FINSI ; SI ( NON (EXISTE TAB1 VIEW_P )) ; TAB1.VIEW_P = 1.E8 -1.E8 1.E8 ; FINSI ; FINSI ; * * list V_DIM1 ; * list TAB1.LFLUX_EXTE; SI ( V_DIM1 EGA 2) ; SI ( NON ( EXISTE TAB1 LFLUX_EXTE_DESS)); TAB1.LFLUX_EXTE_DESS = TAB1.LFLUX_EXTE ; FINSI ; SI ( NON ( EXISTE TAB1 LFLUX_CONV_DESS)); TAB1.LFLUX_CONV_DESS = TAB1.LFLUX_CONV ; FINSI ; SI ( NON ( EXISTE TAB1 LFLUX_RAYO_DESS)); TAB1.LFLUX_RAYO_DESS = TAB1.LFLUX_RAYO ; FINSI ; SINON ; FINSI ; SI ( NON ( EXISTE TAB1 TITR_MAQ )) ; TAB1.TITR_MAQ = ' ' ; SI (NIVEAU >EG 2) ; FINSI ; FINSI ; SI ( NON ( EXISTE TAB1 T_TAPE )) ; TAB1.T_TAPE = 0. ; SI (NIVEAU >EG 2) ; FINSI ; FINSI ; SI ( NON ( EXISTE TAB1 TWIST_RATIO )) ; TAB1.TWIST_RATIO = 0. ; SI (NIVEAU >EG 2) ; FINSI ; FINSI ; SI ( NON ( EXISTE TAB1 L_TRAC_FLUXI )) ; TAB1.L_TRAC_FLUXI = FAUX ; SI (NIVEAU >EG 2) ; FINSI ; FINSI ; SI (NON (EXISTE TAB1 CHFCORRELATION)); SI (NIVEAU >EG 2) ; FINSI ; FINSI ; SI (NON (EXISTE TAB1 X_LOCAL)); TAB1.'X_LOCAL' = 1. ; SI (NIVEAU >EG 2) ; FINSI ; FINSI ; * *--- CARACT . DE L'ECOULEMENT * PI = 3.14159 ; * VIN = TAB1 . V_IN ; TAB1.V_LOCAL = VIN ; TIN = TAB1 . T_IN ; LMAQ = TAB1 . L_MAQUETTE ; DIAM1 = TAB1 . D_MAQUETTE ; PIN = TAB1 . P_IN ; TTAPE = TAB1 . T_TAPE ; YTWIST = TAB1 . TWIST_RATIO ; LAMBDA = TAB1 . 'LAMBDA' ; LPAT1 = TAB1 . LFLUX_EXTE ; * *--- CALCUL CHUTE DE PRESSION * *js tous ces XLPAT1 XL_LPAT1 TAB1 . W_HEATED n'ont rien a faire ici *js c est le pb CFLUX SI ( NON ( EXISTE TAB1 W_HEATED )) ; TAB1 . W_HEATED = XL_LPAT1 * (TAB1 . FSYM_X ) ; SINON ; XL_HEATE = ((TAB1 . W_HEATED ) / (TAB1 . FSYM_X )) ; FINSI ; SI (NIVEAU >EG 3 ) ; FINSI ; SI ( NON ( EXISTE TAB1 HYPERVAP ) ) ; TAB1.HYPERVAP = FAUX ; FINSI ; *js TAB1.P_LOCAL doit etre calculer par @PDROP SI ( EGA TAB1.HYPERVAP VRAI ) ; TAB1 . P_LOCAL = PIN ; SINON ; SI (NON (EXISTE TAB1 P_LOCAL)) ; DPRES PIN_LH POU_H POUT = @PDROP TAB1 ; TAB1.P_LOCAL = PIN_LH + ((POU_H - PIN_LH) * TAB1.'X_LOCAL') ; FINSI ; FINSI ; * * *js CPF = @IPOE TIN TAB1.ETCPF ; *js *js RHOIN = @IPOE TIN TAB1.ETRHOF ; * *js NNUIN = @IPOE TIN TAB1.ETNNU ; *js GIN = RHOIN * VIN ; *js SI ( EXISTE TAB1 RIP_FLOWS ) ; *js EMDOTI = GIN * ( TAB1 . RIP_FLOWS ) ; *js SINON ; *js SI ( EGA TAB1.HYPERVAP VRAI ) ; *js TAB1.HYP_SM = ( TAB1.LARG_CANAL * TAB1.HMIN_CANAL ) + *js ( 2. * ( TAB1.LARG_ESP * TAB1.HFIN ) ) ; *js EMDOTI = GIN * TAB1.HYP_SM ; *js SINON ; *js EMDOTI = GIN * ( ( PI * DIAM1 * DIAM1 / 4. ) - ( DIAM1 * TTAPE) ) ; *js FINSI ; *js FINSI ; * Parametre servant au calcul de Tout grace au flux, * au Cp et a Tin *js TAB1.V_EMDOTI = EMDOTI ; * *--- DONNEES POUR 'H' DANS LA BOUCLE * SI (NIVEAU >EG 2 ) ; FINSI ; SI ( NON ( EXISTE TAB1 TRANSITOIRE )) ; TAB1.TRANSITOIRE = FAUX ; FINSI ; SI ( NON ( EXISTE TAB1 PERMANENT )) ; TAB1.PERMANENT = FAUX ; FINSI ; SI ( NON ( EXISTE TAB1 MAX_SOFL )) ; TAB1.MAX_SOFL = 50.E6 ; FINSI ; SI ( NON ( EXISTE TAB1 OLD )) ; TAB1.OLD = VRAI ; FINSI ; SI TAB1.OLD ; EVMA1 EVCA1 TACC1 = @DEMATH1 TAB1 ; SINON ; EVMA1 EVCA1 TACC1 = @DEMATH2 TAB1 ; FINSI ; *js3.95 ici il faudrait faire une proc de controle du maillage @CTMAIL SI (NIVEAU >EG 2 ) ; FINSI ; IPP1 = 0 ; REPETER BOUCMA8 ; IPP1 = IPP1 + 1 ; SI ( EXISTE (TAB1.ZONE_MAT) IPP1 ) ; SI ( IPP1 EGA 1 ) ; S_TOT1 = TAB1.ZONE_MAT . IPP1 ; C_ONT1 = TFRONT1 (TAB1.ZONE_MAT . IPP1 ) ; SINON ; S_TOT1 = S_TOT1 ET (TAB1.ZONE_MAT . IPP1) ; C_ONT1 = C_ONT1 ET ( TFRONT1 (TAB1.ZONE_MAT. IPP1)) ; FINSI ; SINON ; QUITTER BOUCMA8 ; FINSI ; FIN BOUCMA8 ; TAB1.'M_ILLAGE_TOT' = S_TOT1 ; TAB1.'<MAILLAGE' = S_TOT1 ; TAB1.'M_IL_CONTOUR' = C_ONT1 ; IPP1 = 0 ; SI ( EXISTE TAB1 V_SOURCE ) ; FSOU1 = SOURCE MO_TOT 0. S_TOT1 ; FINSI ; REPETER BOUCMA9 ; IPP1 = IPP1 + 1 ; SI ( EXISTE (TAB1.ZONE_MAT) IPP1 ) ; SI ( EXISTE TAB1 V_SOURCE ) ; *jfs,le 18/07/95: ajout de la possibilite d'utiliser des sources * variables dans les materiaux (chpoints) SI ( EXISTE (TAB1.V_SOURCE) CHSO ) ; SI ( EXISTE (TAB1.V_SOURCE.CHSO) IPP1 ) ; MO_1 = TAB1.DEF_MO.IPP1 ; FSOU1 = FSOU1 ET ( SOURCE MO_1 TAB1.V_SOURCE.CHSO.IPP1 ) ; FINSI ; SINON ; SI ( EXISTE (TAB1.V_SOURCE) IPP1 ) ; * MO_1 = MODE TAB1.ZONE_MAT.IPP1 'THERMIQUE' 'ISOTROPE' ; MO_1 = TAB1.DEF_MO.IPP1 ; FSOU1 = FSOU1 ET ( SOURCE MO_1 TAB1.V_SOURCE.IPP1 TAB1.ZONE_MAT.IPP1 ) ; FINSI ; FINSI ; FINSI ; SINON ; QUITTER BOUCMA9 ; FINSI ; FIN BOUCMA9 ; TAB1.'FSOU1' = FSOU1 ; * SI (NIVEAU >EG 2 ) ; FINSI ; SI ( EXISTE TAB1 VIEW_P2 ) ; FINSI ; * TEX1 = TEXTE TAB1.NOM_MAT.1 '_MAT_1_CONDUCTIVITY' ; SI ( NON ( EXISTE TAB1 V_XBORMA)); TAB1.V_XBORMA = 1500. ; FINSI ; TAC1 = TABLE ; * TAC1.1 = TEXTE 'MARQ TRIA TITRE ' TEX1 ; DESSIN EVMA1 XBOR 0. TAB1.V_XBORMA YBOR 0. 500. MIMA LEGE TACC1; SI ( TAB1.TRANSITOIRE ) ; TAC1 = TABLE ; SI (EXISTE (TAB1.ZONE_MAT) 1); FINSI; SI (EXISTE (TAB1.ZONE_MAT) 2); TAC1.2 = ET 'MARQ TRIB TITRE ' TAB1.NOM_MAT.2; FINSI; SI (EXISTE (TAB1.ZONE_MAT) 3); TAC1.3 = ET 'MARQ ETOI TITRE 'TAB1.NOM_MAT.3; FINSI; SI (EXISTE (TAB1.ZONE_MAT) 4); TAC1.4 = ET 'MARQ LOSA TITRE 'TAB1.NOM_MAT.4; FINSI; DESSIN EVCA1 XBOR 0. TAB1.V_XBORMA MIMA LEGE TAC1 ; FINSI ; *js3.95 ici proc pour calcul des cos directeurs *** modele necessaire pour le calcul des cosinus directeurs * * * *--- PERPENDICULAIRE A LA LIGNE DE RAYONNEMENT * SI ( NON ( EXISTE TAB1 LFLUX_RAYO_DESS)); TAB1.LFLUX_RAYO_DESS = TAB1.LFLUX_RAYO ; FINSI ; *> SI ( NON ( EXISTE TAB1 LFLUX_RAY2 )) ; *> TAB1.LFLUX_RAY2 = TAB1.LFLUX_RAYO ; *> TAB1.LFLUX_RAY2_DESS = TAB1.LFLUX_RAYO_DESS ; *> FINSI ; ** LRAYON1 = TAB1.LFLUX_RAYO ; * *--- PERPENDICULAIRE A LA LIGNE DE CONVECTION * * LINT1 = TAB1.LFLUX_CONV ; C_CONV = TAB1.MO_CONTOUR S_CONV ; SI ( N_E1 NEG N_E2 ) ; FINSI ; *SI (EXISTE TAB1 STUB1 ) ; * COTETC1 SITETC1 C3TETC1 = @VNORM3D * TAB1.STUB1 TAB1.LFLUX_CONV NIVEAU; *SINON ; COTETC1 SITETC1 C3TETC1 = @VNORM3D S_CONV (TAB1.LFLUX_CONV) NIVEAU; *FINSI ; * *--- PERPENDICULAIRE A LA LIGNE DE FLUX INCIDENT * SI ( EXISTE TAB1 'LAMDAQ2' ) ; COTETF1 SITETF1 C3TETF1 = @VNORM3D ( EXTR TAB1.'MODELF' 'MAIL') (TAB1.LFLUX_EXTE ET TAB1.LFLUX_EXT2) NIVEAU; SINON; FINSI ; TAB1.C_COTETF1 = COTETF1 ; TAB1.C_SITETF1 = SITETF1 ; *---- A.MOAL : on a besoin du 3eme cos directeur pour la visu 3D TAB1.C_COS3F1 = C3TETF1 ; TAB1.C_C3TETF1 = C3TETF1 ; *---- TAB1.C_COTETR1 = COTETR1 ; TAB1.C_SITETR1 = SITETR1 ; TAB1.C_C3TETR1 = C3TETR1 ; TAB1.C_COTETC1 = COTETC1 ; TAB1.C_SITETC1 = SITETC1 ; TAB1.C_C3TETC1 = C3TETC1 ; **>> TETF1 = ATG SITETF1 ( COTETF1 + 1.E-12) ; *mess 'cotetft et sitetf1 ' ; list COTETF1 ; list SITETF1; *js 3 11 94 *TAB1.LIS_TEMP = TABLE ; * IPP1 = 0; * REPETER BOUPO2 (DIME TAB1.LI_POINT); * IPP1 = IPP1 + 1; * TAB1.LIS_TEMP . IPP1 = PROG; * FIN BOUPO2; * * ca ce devrait etre ds le controle du maillage SI ( NB_1 NEG NB_2 ) ; TRACER 'CACH' TAB1.VIEW_P ( TAB1.LFLUX_EXTE ET C_ONT1 ) ; ERRE ' REVOIR VOTRE LFLUX_EXTE ' ; FINSI ; * TAB1.CHPOTHETA = TABLE ; TAB1.CHPOHCONV = TABLE ; SI (NIVEAU >EG 2 ) ; FINSI ; FINPROC ; *-------------------------------------------------------------------- * *----------Fin de la procedure @THERSC0 **** @THERSC1 'DEBPROC' @THERSC1 TAB1*'TABLE ' ; SI (NON (EXISTE TAB1 NIVEAU)); TAB1.'NIVEAU' = 1 ; FINSI ; SI (TAB1.'NIVEAU' >EG 4) ; FINSI ; * *--- PARAMETRES * @TABEAU TAB1 ; @THERSC0 TAB1 ; @FLUXX TAB1 ; MENAGE ; @TPERM TAB1 ; @TTRANS TAB1 ; *TAB1.I_FPAT1 = FPAT1; TAB1.T_TAC8 = TABLE TAC8; SI (TAB1.PERMANENT EGA VRAI); FINSI; SI (TAB1.'NIVEAU' >EG 4 ); FINSI ; FINPROC; *-------------------------------------------------------------------- * *----------Fin de la procedure @THERSC1 * **** @TOKAFLU DEBPROC @TOKAFLU TAB1*TABLE ; * *123456789012345678901234567890123456789012345678901234567890123456789012 ************************************************************** * Procedure de calcul du profil du depot de puissance sur un * * objet en tenant compte du ripple et du shift de Shafranov. * * Alain MOAL (aout 1995-janvier 1996) * ************************************************************** * * *---- Valeurs par defaut, verification des indices de la table @VDEFAUT TAB1 ; * *--------------- VARIABLES D'ENTREE : MAIL0 = TAB1.<MAILLAGE ; CONT0 = TAB1.LFLUX_EXTE ; LAMBQREF = TAB1.<LAMBQREF ; THETA0 = TAB1.<THETA0 ; RHO0 = TAB1.<RHO0 ; RP = TAB1.<RP ; IMESS = TAB1.<IMESS ; MMAIL0 = TAB1.MODELF ; TYPCAL = TAB1.<TYPE_CALCUL ; ITRAC = TAB1.<ITRAC ; SI (NON (EXISTE TAB1 <NXM)) ; ICALNORM = VRAI ; SINON ; ICALNORM = FAUX ; NXM = TAB1.<NXM ; NYM = TAB1.<NYM ; NZM = TAB1.<NZM ; FINSI ; OEIL0 = TAB1.VIEW_P ; SINON ; CONTDES0 = TAB1.LFLUX_EXTE_DESS ; FINSI ; *------------------------------------ * SI (EGA TYPCAL 'AVEC_SHIFT_AVEC_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'AVEC_SHIFT_SANS_RIPPLE') ; ISHIFT = VRAI ; IRIPPLE = FAUX ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_AVEC_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = VRAI ; FINSI ; SI (EGA TYPCAL 'SANS_SHIFT_SANS_RIPPLE') ; ISHIFT = FAUX ; IRIPPLE = FAUX ; FINSI ; SI ((NON (EXISTE ISHIFT)) OU (NON (EXISTE IRIPPLE))) ; FINSI ; SI (EGA TYPDEP 'PARALLELE'); ITYPDEP = VRAI ; SINON ; ITYPDEP = FAUX ; FINSI ; * *---- coordonnees dans le repere du maillage ZM = XM * 0. ; SINON ; FINSI ; * *---- coordonnees dans le repere global XG YG ZG = @CRMGC XM YM ZM TAB1 ; MENAGE ; * *---- calcul du champ magnetique dans le repere global BXG BYG BZG FSECU = @CHAMB TAB1 XG YG ZG ISHIFT IRIPPLE ; MENAGE ; * *---- composantes de B dans le repere du maillage BXM BYM BZM = @CBGMV BXG BYG BZG TAB1 ; MENAGE ; * *---- calcul des normales a la surface calculees *---- dans le repere du maillage SI (ICALNORM) ; NXM NYM NZM = @VNORM3D MAIL0 CONT0 ; TAB1.<NXM = NXM ; TAB1.<NYM = NYM ; TAB1.<NZM = NZM ; FINSI; MENAGE ; * *---- calcul du produit scalaire et de l'angle d'incidence B_NORM = ((BXM*BXM) + (BYM*BYM) + (BZM*BZM))**0.5 ; VBVN = (ABS ((BXM*NXM) + (BYM*NYM) + (BZM*NZM))) / B_NORM; ANGINCI = ATG ((1.-(VBVN**2))**0.5) VBVN ; * *---- dans le plan xy du repere du maillage BETA2DXY = ATG (BYM*-1.) (BXM*-1.) ; *---- dans le plan xz du repere du maillage BETA2DXZ = ATG (BZM*-1.) (BXM*-1.) ; * *---- calcul de Lambdaq et des facteurs de compression LAMBQ HS HR DELTA = @CLAMQ TAB1 XG YG ZG ISHIFT IRIPPLE ; MENAGE ; * *---- calcul de la densite de puissance recue par chaque point VAR1 = EXP (DELTA * -1. / LAMBQ) ; * *---- profil du flux modif RM le 08/12/1998 SI ITYPDEP ; PROFIL0 = VAR1 * VBVN ; SINON ; PROFIL0 = VAR1 * ((1. - (VBVN*VBVN)) ** .5) ; FINSI ; * *---- integration du profil de flux sur la surface * *---- calcul du profil moyen * SI (IMESS >EG 2) ; FINSI ; SI (IMESS >EG 3) ; FINSI ; * *---- visualisations des resultats en 2D et en 3D * MENAGE ; *---- vecteur champ magnetique et vecteur normal dans le repere *---- du maillage en vue de la visualisation VB1 = @CVECT BXM BYM BZM CONT0 VERT; VN1 = @CVECT NXM NYM NZM CONT0 BLEU; * *---- profil de flux visualise dans la direction de la normale rentrante DNORMX = PROFIL0 * NXM * -1. ; DNORMY = PROFIL0 * NYM * -1. ; DNORMZ = PROFIL0 * NZM * -1. ; VECT1 = @CVECT DNORMX DNORMY DNORMZ CONT0 JAUN ; * *---- profil de flux integre visualise dans la direction de la normale rentrante FNORMX = PROCONT0 * NXM * -1. ; FNORMY = PROCONT0 * NYM * -1. ; FNORMZ = PROCONT0 * NZM * -1. ; VECT2 = @CVECT FNORMX FNORMY FNORMZ CONT0 JAUN ; * *---- traces en 2D TITRE '@TOKAFLU : NORMAL AND MAGNETIC VECTOR' ; TRACE (VN1 ET VB1) CONT0 ; * TRACE VB1 CONT0 ; * * ---- trace de courbes TITRE '@TOKAFLU : DISTANCE TO THE LCFS (m)'; TAB1.1 = 'TIRR'; * TITRE '@TOKAFLU : SAFETY FACTOR Q = (a.Btor/R.Bpol)'; * TITRE '@TOKAFLU : COSINUS OF THE ANGLE BETWEEN b AND n' ; * TITRE '@TOKAFLU : angle = arctg (Bz/Bx)' ; ANGLE0 = ATG (ABS BZG) (ABS BXG) ; * * TITRE 'BETA2D : ANGLE BETWEEN B AND X AXIS (assuming Bz = 0)'; * BETA2D1 = NOMC SCAL BETA2DXY ; * DESSIN (EVOL JAUN CHPO BETA2D1 SCAL CONTDES0) MIMA ; * TITRE 'BETA2D : ANGLE BETWEEN B AND X AXIS (assuming By = 0)'; * BETA2D2 = NOMC SCAL BETA2DXZ ; * DESSIN (EVOL JAUN CHPO BETA2D2 SCAL CONTDES0) MIMA ; * TITRE '@TOKAFLU : COMPRESSION FACTORS HS (shift) AND HR (ripple)'; TAB1.1 = 'TIRR'; * TITRE '@TOKAFLU : LAMBDAQ (m)' ; * TITRE '@TOKAFLU : EXP (-DELTA / LAMDAQ) '; *AM DESSIN (EVOL JAUN CHPO VAR11 SCAL CONTDES0) MIMA ; * TITRE '@TOKAFLU : PROFILE OF THE INCIDENT FLUX' ; * TITRE '@TOKAFLU : PROFILE OF THE INCIDENT FLUX' ; TRACE VECT1 CONT0 ; TITRE '@TOKAFLU : PROFILE OF THE INTEGRATED INCIDENT FLUX' ; TRACE VECT2 CONT0 ; FINSI ; * *---- traces en 3D * ARET1 = ARETE CONT0 ; SINON ; ARET1 = ARETE CONT0 40. ; FINSI ; TITRE '@TOKAFLU : MAGNETIC FIELD AND NORMAL VECTOR' ; TRACE CACH OEIL0 (VB1 ET VN1) MAIL0 ; TITRE '@TOKAFLU : COSINUS OF THE ANGLE BETWEEN b AND n' ; TRACE CACH OEIL0 7 VBVN CONT0 ARET1; * RM 11/06/1997 je commente les deux lignes suivantes, * car je prefere lui faire tracer 90. - angleinci * TITRE '@TOKAFLU : ANGLE BETWEEN VECTORS b AND n (DEGREE)' ; * TRACE CACH OEIL0 7 ANGINCI CONT0 ARET1; TITRE '@TOKAFLU : ANGLE BETWEEN VECTORS B AND SURFACE (DEGREE)' ; TRACE CACH OEIL0 7 (90. - ANGINCI) CONT0 ARET1; * TITRE '@TOKAFLU : BETA2DXZ' ; * TRACE CACH OEIL0 7 BETA2DXZ CONT0 ARET1; * TITRE '@TOKAFLU : BETA2DXY' ; * TRACE CACH OEIL0 7 BETA2DXY CONT0 ARET1 ; TRACE CACH OEIL0 7 B_NORM CONT0 ARET1 ; TITRE '@TOKAFLU : SAFETY FACTOR Q = (a.Btor/R.Bpol)' ; TRACE CACH OEIL0 7 FSECU CONT0 ARET1 ; TITRE '@TOKAFLU : ISOVALUES OF LAMBDAQ (M)' ; TRACE CACH OEIL0 7 LAMBQ CONT0 ARET1; SINON ; FINSI ; TITRE '@TOKAFLU : DISTANCE TO THE LCFS (M)' ; TRACE CACH OEIL0 7 DELTA CONT0 ARET1; TITRE '@TOKAFLU : exp (- delta / lamdaq)' ; TRACE CACH OEIL0 7 VAR1 CONT0 ARET1; TITRE '@TOKAFLU : PROFILE OF THE INCIDENT HEAT FLUX' ; * TRACE OEIL0 VECT1 CONT0 ; TRACE CACH OEIL0 7 PROFIL0 CONT0 ARET1 ; * TITRE '@TOKAFLU : PROFILE OF THE INTEGRATED INCIDENT FLUX'; * TRACE OEIL0 VECT2 CONT0 ; FINSI ; * *--------------- VARIABLES DE SORTIE : TAB1.V_FACFM2 = PROMOY ; TAB1.<ANGINCI = ANGINCI ; TAB1.<VBVN = VBVN ; TAB1.<LONG_DECROIS = LAMBQ ; TAB1.<DIST_DSMF = DELTA ; TAB1.<FSECU = FSECU ; *------------------------------------- FINPROC PROFIL0 ; **** @TOKAPEN DEBPROC @TOKAPEN TAB1*TABLE ; * ******************************************************************* * Procedure de prise en compte sommaire de la penetration. * * Pour cela, on calcule un profil de flux supplementaire que l'on * * ajoutera au profil calcule par @TOKAFLU sur une surface donnee. * * Alain MOAL (decembre 1995) * ******************************************************************* * * *--------------- VARIABLES D'ENTREE : SURF0 = TAB1.LFLUX_EXTE ; SURF1 = TAB1.<LFLUX_PENE ; DELTA = TAB1.<DIST_DSMF ; LAMBQ = TAB1.<LONG_DECROIS ; VBVN = TAB1.<VBVN ; COEF0 = TAB1.<COEFCONS ; OEIL0 = TAB1.VIEW_P ; FINSI ; *------------------------------------ * *---- Creation d'un masque sur SURF0 MASQ1 = DELTA * 0. ; *---- Creation d'un masque sur SURF1 MASQ2 = X0 * 0. + 1. ; * MASQ0 = MASQ1 + MASQ2 ; PROFIL0 = (EXP (-1.*DELTA/LAMBQ)) * VBVN * COEF0; PROFPEN0 = MASQ0 * (EXP (-1.*DELTA/LAMBQ)) * VBVN * COEF0; PROFTOT0 = PROFIL0 + PROFPEN0 ; ARET1 = ARETE SURF0 ; TITRE '@TOKAPEN : PROFILE OF THE INCIDENT HEAT FLUX'; TRACE CACH OEIL0 7 PROFTOT0 SURF0 ARET1 ; FINSI ; FINPROC PROFPEN0 ; debproc @tokpltg geo1*maillage tab1*table delt_phi*flottant delt_the*flottant; * R. Mitteau 23.06.1997 * cette proc\E9dure calcule le plan tangent aux surfaces magnetiques * avec shift et avec ripple * elle utilise les notations de tokaflu * * geo1 est suppose defini dans le repere du ripple * elle ne marche qu'en 3 D * ******************************************************* * * --- recuperatiion donn\E9es * COEFA = TAB1.<COEFA ; COEFB = TAB1.<COEFB ; COEFC = TAB1.<COEFC ; ANGPHI0 = TAB1.<ANGPHI0 ; NBOB = TAB1.<NBOB ; EPS = TAB1.<EPS ; NBOB = TAB1.<NBOB ; rho0 = TAB1.<RHO0 ; g_lamb1 = TAB1.<LAMB ; RP1 = TAB1.<RP ; * * --- calcul des coordonnees de geo1 dans le repere du ripple * rho_ar theta_ar phi_ar = @crgtc xg yg zg 2.2 0.; * * --- calcul du rhomer, ligne de code pique a @chamb * RHO_OLD = RHO_aR ; KAUX = (EXP(THETA_aR**2 * -1. * COEFC)) * ((COS((PHI_aR + ANGPHI0) * NBOB)) * -1. + 1.) * COEFA ; I = 0 ; IMAX = 50 ; REPETER BOUCLE IMAX ; I = I + 1; RHO_NEW = RHO_aR + (KAUX * (EXP(RHO_OLD * COEFB))) ; QUITTER BOUCLE ; FINSI ; RHO_OLD = RHO_NEW ; FIN BOUCLE ; SI (I >EG IMAX) ; FINSI ; RHOMER = RHO_NEW ; * * --- calcul du premier vecteur tangent a la surface magnetique par * variation de phi - l'effet dont il faut * tenir compte est le ripple du champ magnetique * * - _app signifie a plus phi, point cote plus dans le sens toroidal * the_app = theta_ar ; phi_app = phi_ar + delt_phi ; rho_app = RHOMER + (COEFA * (exp((COEFB * RHOMER)-(coefc * the_app * the_app))) * ((cos (nbob * phi_app)) - 1.)); * - _app signifie a moins phi, point cote moins dans le sens toroidal the_amp = theta_ar ; phi_amp = phi_ar - delt_phi ; rho_amp = RHOMER + (COEFA * (exp((COEFB * RHOMER)- (coefc * the_amp * the_amp))) * ((cos (nbob * phi_amp)) - 1.)); * on repasse dans la base globale ppx1 ppy1 ppz1 = @crtgc rho_app the_app phi_app 2.2 0. ; pmx1 pmy1 pmz1 = @crtgc rho_amp the_amp phi_amp 2.2 0. ; * par difference, on calcule les coordonnee du premier vecteur tangent v1gx = ppx1 - pmx1; v1gy = ppy1 - pmy1 ; v1gz = ppz1 - pmz1 ; ; * on repasse dans la base du maillage v9mx v9my v9mz = @cbgmv v1gx v1gy v1gz tab1 ; * on le normalise norm1 =(( v9mx*v9mx)+(v9my*v9my)+(v9mz*v9mz)) ** .5 ; v1mx = v9mx / norm1 ; v1my = v9my / norm1 ; v1mz = v9mz / norm1 ; * * --- calcul du deuxieme vecteur tangent a la surface magnetique par * variation de theta - l'effet principal dont il faut * tenir compte est le shift de Shafranov * * calcul du petit rayon "sous les bobines" de la surface magnetique * passant par A rho_abob = RHOMER + (COEFA * (exp((COEFB * RHOMER)-(coefc * the_app * the_app))) * ( -2.)); * calcul du decentrement de ces surfaces par la formule de Safranov terme1 = log (rho_abob / rho0 ) ; facteu1 = g_lamb1 + .5 ; facteu2 = 1. - ((rho_abob/ rho0) ** -2) ; terme2 = terme1 + (facteu1 * facteu2) ; * delt1 est le decentrement delt1 = (rho_abob ** 2) * terme2 / (2. * RP1) ; rp2 = RP1 - delt1 ; * calcul du petit rayon de la surface magnetique de A * (relation dans le triangle) pr2 = ((rho_abob * rho_abob) + ((rp2 - 2.2) * (rp2 - 2.2)) - (2. * rho_ar * (rp2 - 2.2) *( cos (theta_ar)))) ** .5 ; * calcul de l'angle theta des points de geo1 dans le repere * pseudotoroidal de grand rayon le centre de la surface magnetique coth2 = ((pr2 * pr2) + ((rp2 - 2.2) * (rp2 - 2.2)) - (rho_abob * rho_abob)) / (-2. * pr2 * (rp2 - 2.2)); sith2 = (1. - (coth2 * coth2)) ** .5 ; theta_ap = atg sith2 coth2 ; * les masques servent a bien avoir un theta entre -180 et +180, * parce que le sinus calcule par la formule 1 - cos carre * est forcement positif, ce qui me donne un theta compris entre * 0 et 180. theta_as = (masq_p * theta_ap) - ( theta_ap * masq_m ); * _apt signifie a plus theta * _amt signifie a moins theta the_apt = theta_as + delt_the ; the_amt = theta_as - delt_the ; * on repasse dans le repere du ripple ! * calcul des petits rayon des points dans le repere du ripple * (toujours la formule du triangle, faire le dessin pour * comprendre le cos (180. - the_apt) que je n'ai pas remplace par * - cos the_apt pour la lisibilite de la procedure. pr3_apt = ((pr2 * pr2) + ((rp2 - 2.2) * (rp2 - 2.2)) - (2. * pr2 * (rp2 - 2.2) *( cos (180. - the_apt)))) ** .5 ; pr3_amt = ((pr2 * pr2) + ((rp2 - 2.2) * (rp2 - 2.2)) - (2. * pr2 * (rp2 - 2.2) *( cos (180. - the_amt)))) ** .5 ; * calcul des theta dans le repere du ripple coth2apt = ((pr3_apt * pr3_apt) + ((rp2 - 2.2) * (rp2 - 2.2)) - (pr2 * pr2)) / (2. * pr3_apt * (rp2 - 2.2)); coth2amt = ((pr3_amt * pr3_amt) + ((rp2 - 2.2) * (rp2 - 2.2)) - (pr2 * pr2)) / (2. * pr3_amt * (rp2 - 2.2)); sith2apt = (1. - (coth2apt * coth2apt)) ** .5 ; sith2amt = (1. - (coth2amt * coth2amt)) ** .5 ; thetaapt = atg sith2apt coth2apt ; thetaamt = atg sith2amt coth2amt ; the_apt = (masq_p * thetaapt) - ( thetaapt * masq_m ); the_amt = (masq_p * thetaamt) - ( thetaamt * masq_m ); * par la methode du point fixe, je peux calculer leur rho meridien * pr4 est le prefixe pour des valeurs de rho meridien RHO_OLD = pr3_apt ; KAUX = (EXP(the_apt**2 * -1. * COEFC)) * 2. * COEFA ; I = 0 ; IMAX = 50 ; REPETER BOUCLE IMAX ; I = I + 1; RHO_NEW = pr3_apt + (KAUX * (EXP(RHO_OLD * COEFB))) ; QUITTER BOUCLE ; FINSI ; RHO_OLD = RHO_NEW ; FIN BOUCLE ; SI (I >EG IMAX) ; FINSI ; pr4_apt = RHO_NEW ; RHO_OLD = pr3_amt ; KAUX = (EXP(the_amt**2 * -1. * COEFC)) * 2. * COEFA ; I = 0 ; IMAX = 50 ; REPETER BOUCLE IMAX ; I = I + 1; RHO_NEW = pr3_amt + (KAUX * (EXP(RHO_OLD * COEFB))) ; QUITTER BOUCLE ; FINSI ; RHO_OLD = RHO_NEW ; FIN BOUCLE ; SI (I >EG IMAX) ; FINSI ; pr4_amt = RHO_NEW ; * il n y a plus qu'a calculer le rho de ces points au bon phi par la * formule de ripple pr5_apt = COEFA * (exp((COEFB * pr4_apt)-(coefc * the_apt * the_apt))) * ((cos (nbob * phi_ar)) - 1.); pr5_amt = COEFA * (exp((COEFB * pr4_amt)-(coefc * the_amt * the_amt))) * ((cos (nbob * phi_ar)) - 1.); * on a maintenant les coordonnee des tous les points dans le repere * du ripple pr5_apt; the_apt , phi_ar et pr5_amt; the_amt , phi_ar * on repasse dans la base globale p1gx p1gy p1gz = @cbtgv pr5_apt the_apt phi_ar the_apt phi_ar ; p2gx p2gy p2gz = @cbtgv pr5_amt the_amt phi_ar the_amt phi_ar; * on calcule par difference les vecteurs dan le repere global v2gx = p1gx - p2gx ; v2gy = p1gy - p2gy ; v2gz = p1gz - p2gz ; * on repasse dans la base du maillage v9mx v9my v9mz = @cbgmv v2gx v2gy v2gz tab1 ; * on le normalise norm1 =(( v9mx*v9mx)+(v9my*v9my)+(v9mz*v9mz)) ** .5 ; v2mx = v9mx / norm1 ; v2my = v9my / norm1 ; v2mz = v9mz / norm1 ; * --- le produit vectoriel des deux vecteurs tangent a la surface * donne la normale aux surfaces magnetiques * v3mx = (v1my * v2mz) - (v1mz * v2my); v3my = (v1mz * v2mx) - (v1mx * v2mz) ; v3mz = (v1mx * v2my) - (v1my * v2mx) ; *norm1 =(( v3mx*v3mx)+(v3my*v3my)+(v3mz*v3mz)) ** .5 ; *list norm1 ; finproc v3mx v3my v3mz; **** @TONG75 DEBPROC @TONG75 TAB_1*TABLE ; MESS ' '; *23456789012345678901234567890123456789012345678901234567890123456789012 * 1 2 3 4 5 6 7 ****** PROCEDURE @TONG75 ****** ******************************************************************** * CALCUL DU FLUX CRITIQUE SUIVANT LA CORRELATION DE TONG 75 *------------------------------------------------------------------- * * * TIN = TAB_1.'T_IN' ; VIN = TAB_1.'V_LOCAL' ; TLOCAL = TAB_1.'T_LOCAL' ; POUT = TAB_1.'P_LOCAL' ; D1 = TAB_1.'D_MAQUETTE' ; EL = TAB_1.'L_HEATED' ; XL1 = TAB_1.'WE_HEATED' ; NIVEAU = TAB_1.'NIVEAU' ; HLOCAL = TAB_1.'HLOCAL' ; * SI (NIVEAU >EG 4) ; FINSI ; SI ( NON ( EXISTE TAB_1 TWIST_RATIO ) ) ; TAB_1 . TWIST_RATIO = 0. ; FINSI ; YTWIST = TAB_1 . TWIST_RATIO ; SI ( NON ( EXISTE TAB_1 T_TAPE ) ) ; TAB_1 . T_TAPE = 0. ; FINSI ; TTAPE = TAB_1 . T_TAPE ; SI ( NON ( EXISTE TAB_1 I_CORR_SANDIA ) ) ; TAB_1 . I_CORR_SANDIA = 0. ; FINSI ; ICORSA = TAB_1 . I_CORR_SANDIA ; SI( NON ( EXISTE TAB1 I_RANGE )) ; TAB1 . I_RANGE = 1 ; FINSI ; IVALI = TAB_1 . I_RANGE ; SI( NON ( EXISTE TAB1 I_NIV_TONG75 )) ; TAB1 . I_NIV_TONG75 = 1 ; FINSI ; INIVEAU = TAB_1 . I_NIV_TONG75 ; SI ( NON ( EXISTE TAB_1 HELI_WIRE ) ) ; TAB_1.HELI_WIRE = FAUX ; FINSI ; SI ( NON ( EXISTE TAB_1 HYPERVAP ) ) ; TAB_1.HYPERVAP = FAUX ; FINSI ; SI ( NON ( EXISTE TAB_1 FRICT_FAC ) ) ; TAB_1.FRICT_FAC = FAUX ; FINSI ; MESS ' ' ; SI ( NON ( EXISTE TAB_1 DESACT_RANGE ) ) ; DESACT1 = FAUX ; SINON; DESACT1 = VRAI ; FINSI ; MESS ' ' ; SI (NON DESACT1 ) ; * Test sur les entrees pour s'assurer que les conditions d'entree * ne s'ecartent pas trop du domaine de definition de TONG75 * - test sur la vitesse de l'eau SI ((VIN < 2.) OU (VIN > 20.)) ; FINSI ; * - test sur le diametre SI ( EGA TAB_1.HYPERVAP FAUX ) ; SI ((D1 < 5.E-3) OU (D1 > 20.E-3)) ; FINSI ; FINSI ; * - test sur la Pression SI ((POUT < 5.E5) OU (POUT > 42.E5)) ; FINSI ; * - test sur la temperature TSAT = @IPOE POUT TAB_1.EPTSAT ; DT1 = TSAT - TLOCAL ; SI ((DT1 < 0.) OU (DT1 > 250.)) ; FINSI ; FINSI ; SI ( IVALI EGA 1 ) ; ISAUT = 0 ; SI ( ( POUT < 2.E5 ) OU ( POUT > 190.E5 ) ) ; ISAUT = 1 ; FINSI ; SI ( EGA TAB_1.HYPERVAP FAUX ) ; SI ( ( D1 < 2.E-3 ) OU ( D1 > 45.E-3 ) ) ; ISAUT = 1 ; FINSI ; FINSI ; SI ( ( EL < 0.15 ) OU ( EL > 3.7 ) ) ; ISAUT = 1 ; FINSI ; FINSI ; * Fin des tests sur les entrees de @TONG75 PI = 3.14159 ; * SI ( ( YTWIST EGA 0. ) ET ( EGA TAB_1.HYPERVAP FAUX ) ) ; TAB_1.DHC = D1 ; S1 = PI * D1 * D1 / 4. ; TAB_1.DH = D1 ; FACV = 1. ; FACS = 1.25 ; FINSI ; SI ( ( YTWIST EGA 0. ) ET ( EGA TAB_1.HELI_WIRE VRAI ) ) ; S1 = PI * D1 * D1 / 4. ; SM = PI * TAB_1.WIRE_D * TAB_1.WIRE_D / 4. ; P1 = PI * D1 ; PM = PI * TAB_1.WIRE_D ; TAB_1.DH = 4. * ( S1 - SM ) / ( P1 + PM ) ; PIS2Y = PI / ( 2 * TAB_1.PITCH_WIRE ) ; FACV = ( 1. + ( PIS2Y ** 2 ) ) ** 0.5 ; * FACV = 1. ; FACF = 1. ; FINSI ; * SI ( ( TAB_1.TWIST_RATIO EGA 0. 1.E-6 ) ET ( EGA TAB_1.HYPERVAP VRAI ) ) ; SM = ( TAB_1 . LARG_CANAL * TAB_1 . HMIN_CANAL ) + ( 2. * ( TAB_1 . LARG_ESP * TAB_1 . HFIN ) ) ; PM = TAB_1 . LARG_CANAL + ( 2.* TAB_1 . HMAX_CANAL ) + ( 2. * TAB_1 . LARG_ESP ) + ( 2. * TAB_1 . HFIN ) + TAB_1 . LFIN ; TAB_1.DH = 4. * SM / PM ; FACV = 1. ; FACF = 1. ; TAB_1.HYP_SM = SM ; FACS = 1. ; FINSI ; * SI ( YTWIST > 0. ) ; SI ( NON ( EXISTE TAB_1 'N_CANAUX' )) ; TAB_1 . N_CANAUX = 2. ; FINSI ; SS2 = ( ( PI * D1 * D1 / 8.) - ( TTAPE * D1 / 2. ) ) ; S1 = SS2 * TAB_1 . N_CANAUX ; QUAS = 4. * SS2 ; PERI = ( ( PI * D1 / 2.) - TTAPE + D1 ) ; TAB_1.DH = QUAS / PERI ; TAB_1.DHC = 4. * ( ( PI * D1 * D1 / 4.) - ( TTAPE * D1 ) ) / ( ( PI * D1 ) - ( TTAPE * 2.) ) ; PIS2Y = PI / ( 2. * YTWIST ) ; FACV = ( 1. + ( PIS2Y ** 2 ) ) ** 0.5 ; * FACF = 1.15 ; FACS = 1.67 ; FINSI ; *----------------- VP = VIN * FACV ; *----------------- SI (( YTWIST > 0. ) ET ( ICORSA EGA 1 ) ) ; CORR = SCALE * 2.75 * ( YTWIST ** ( -0.406 ) ) ; SI ( CORR <EG 1. ) ; CORR = 1. ; FINSI ; SINON ; CORR = 1. ; FINSI ; RHOIN = @IPOE TIN TAB1.ETRHOF ; HSAT = @IPOE TSAT TAB_1.ETHF ; RHOGSAT = @IPOE TSAT TAB_1.ETRHOG ; GIN = RHOIN * VIN ; NNU = @IPOE TLOCAL TAB_1.ETNNU ; PR = @IPOE TLOCAL TAB_1.ETPRAF ; *HFG = @IPOE TLOCAL TAB_1.ETHFG ; HFG = @IPOE TSAT TAB_1.ETHFG ; * RHOF rho de l eau a TLOCAL PTRHO PRHOF RHOF = @IPOE TLOCAL TAB_1.ETRHOF ; RHOFSAT = @IPOE TSAT TAB_1.ETRHOF ; DTSUBC = TSAT - TLOCAL ; *Reynolds number based on inlet velocity used in QCHFW1 and QCHFW3 REF = ( RHOF * VIN * TAB_1.DH ) / NNU ; * Friction factor calculation SI ( EGA TAB_1.FRICT_FAC VRAI ) ; FA = 4. * 1.375E-3 * (( 1. + ( 21.544 * ( 0.00375 /( TAB_1.DH * 1000. / 2. ))) + ( 100. / REF )) ** ( 1. / 3. )) ; TAB_1.SSIGM = @IPOE TSAT TAB_1.ETSIGM ; RHOFSAT = @IPOE TSAT TAB_1.ETRHOF ; REPETER BOUCFA 100 ; RADEFF = 1.14 - ( 2. * ( LOG ((( 0.72 * SIGM * RHOFSAT ) / ( FA * TAB_1.DH * ( GIN**2 ))) + ( 9.35 / ( REF *( FA **( 1. / 2. ))))))/( LOG 10 )) ; DIF1 = ( RADEFF ** (-2))- FA ; DELTAF = ABS (DIF1) ; FA = RADEFF**(-2) ; TAB_1.FFA = FA ; SI (DELTAF <EG 1.E-6) ; QUITTER BOUCFA ; FINSI ; FIN BOUCFA ; QCHFW1 = TAB_1.FFA ; SINON ; *Reference diameter (0.5 inch) used for friction factor coefficient DOM = 12.7E-3 ; DRATIO = TAB_1.DH / DOM ; QCHFW1 = 8. * ( REF ** ( -.6 ) ) * ( DRATIO ** .32 ) ; FINSI ; *Water critical pressure PCRIT = 22.09E6 ; PRATIO = POUT / PCRIT ; XOUT = -1. * ( HSAT - HLOCAL ) / HFG ; *>> 30.8.93 correction erreur sur JA *JA = -1. * XOUT * ( RHOFSAT / RHOGSAT ) ; JA = -1. * XOUT * ( RHOF / RHOGSAT ) ; QCHFW3 = 1. + ( .00216 * ( PRATIO ** 1.8 ) * ( REF ** .5 ) * JA ) ; QCHFW2 = 0.23 * GIN * HFG ; QCHFW = FACS * CORR * QCHFW1 * QCHFW2 * QCHFW3 ; *Expression using REV *Reynolds number based on swirl velocity REV = ( RHOF * VP * TAB_1.DH ) / NNU ; *QCHFW3 = 1. + ( .00216 * ( PRATIO ** 1.8 ) * ( REV ** .5 ) * JA ) ; *QCHFW1 = 8. * ( REV ** ( -.6 ) ) * ( DRATIO ** .32 ) ; *QCHFW = FACS * CORR * QCHFW1 * QCHFW2 * QCHFW3 ; *QCHFW = ( 0.9 * QCHFW ) + ( 0.1 * QOLD ) ; *QSURFE = QCHFW * KQ ; *QSURFI = QSURFE * XL1 / PERCH ; *DQSQ = ( QCHFW - QOLD ) / QCHFW ; *NUS = 0.023 * ( REV ** 0.8 ) * ( PR ** 0.4 ) ; *NUS = NUS * FACV * FACF ; *FACD = ( D1 / DH ) ** 0.2 ; *FACT = FACV * FACD * FACF ; SI ( INIVEAU >EG 1 ) ; MESS ' ' ; MESS ' ' ; * MESS '>@TONG75> INLET MASS FLOW RATE (kg/s) : ' * (VIN * S1 * RHOIN) ; * MESS '>@TONG75> FLUID INLET TEMPERATURE (C) : ' TIN ; MESS ' ' ; MESS ' ' ; * MESS '>@TONG75> TUBE HEATED EQU. DIAMETER (m) : ' TAB_1.DHC ; SI ( INIVEAU >EG 2 ) ; SI ( INIVEAU >EG 3 ) ; FINSI ; FINSI ; MESS ' ' ; MESS ' ' ; FINSI ; SCALE = 0.8 ; SI (QCHFW < 0) ; MESS ' ' ; MESS ' ' ; MESS 'ATTENTION execution incorrecte de @TONG75' ; MESS ' ' ; ERRE ' On arrete le calcul' ; FINSI ; FINSI ; *sorties ; TAB1.CHF = QCHFW ; FINPROC ; **** TORO DEBPROC TORO TAGEO*TABLE TABOB*TABLE ; * * Developpement et test de la procedure TORO * Projet DRFC/TO_PO Contrat n 30422676 * ********************************************************************** * * * T O R O * * ------- * * * * Objet: * * ----- * * * * Calcul de l'induction magnetique creee par un ensemble * * de bobines circulaires ou en 'D', reparties regulierement * * autour de l'axe Oz, en l'absence de fer. * * * * Syntaxe: * * ------- * * * * TABCHB TAB2 = TORO TAGEO1 TABOB1 ; * * * * En entree : * * * * * * TAGEO1 table des domaines de calcul du champ * * TAGEO1.i geometrie ou le champ est calcule (type TABLE) * * TAGEO1.i.'mail' : maillage de la geometrie (type MAILLAGE) * * * * TABOB table a deux indices contenant les donnees * * relatives aux bobines (type TABLE) * * .GENE table * * .1 nbob: nombre de bobines (type ENTIER) * * .2 b: largeur des bobines (type FLOTTANT) * * .3 h: hauteur des bobines (type FLOTTANT) * * .4 cbob: centre de la bobine (type POINT) * * .5 vn: vecteur normal au plan de la bobine (type POINT)* * .6 tsol: table des solenations des bobines * * .i solenation (courant * nombre de spires) * * de la bobine i (type FLOTTANT) * * .7 rt: rayon du tore (type FLOTTANT) * * .8 ri: nombre de bobines (type FLOTTANT) * * .TYPE 'c' pour une bobine circulaire * * 'd' pour une bobine en 'D' * * .TRAC1 si oui : trace du maillage des bobines (type LOGIQUE) * * .CBIOT si oui : calcul de l'induction magnetique * * .D = troncon : table des troncons: * * troncon.j = troncj : table du troncon j: * * troncj.'l' longueur du troncon si rectiligne, * * .'r' rayon de courbure et * * .'alpha' angle de courbure si courbe * * * * En sortie : * * * * * * TABCHB table contenant (type TABLE) * * i champ de Biot et Savart relatif au i-eme * * maillage GEO1 (type CHPOINT) * * * * TAB2 table contenant (type TABLE) * * BOBMAI.i maillage de chaque bobine (type MAILLAGE) * * CONT.j ensemble des coupes sur le plan j * * (type MAILLAGE) * * * * Remarques: * * --------- * * * * Les grandeurs suivantes sont "en dur" dans la procedure : * * * * NELE nombre d'elements generes lors des rotations * * et des translations effectuees pendant la * * creation du maillage des bobines. * * * * COEF1 coefficient etablissant la distance critique * * de selection des points lors de la recherche * * de contour. * * * ********************************************************************** isym = 0 ; * * Valeurs de quelques constantes * pi = 3.1415926 ; mu0 = 4.e-7 * pi ; eps = 1.e-3 ; nele = 4 ; alpha = 90. ; oeil = 100. 20. 10. ; * * creation du maillage * tab2 = table ; tabmai = table ; tab2.bobmai = tabmai ; ibob = 1 ; repeter proc 1 ; sauter 1 ligne ; sauter 1 ligne ; si (ega ngeo 0) ; *tc il ajout d' une quote en fin de la ligne suivante sinon ; si (ega ngeo 1) ; sinon ; *tc idem ci dessus finsi ; finsi ; sinon ; quitter proc ; finsi ; tcara = table ; si (existe tcara 1) ; nbob*entier = tcara.1 ; sinon ; quitter proc ; finsi ; si (existe tcara 2) ; b*flottant = tcara.2 ; sinon ; quitter proc ; finsi ; si (existe tcara 3) ; h*flottant = tcara.3 ; sinon ; quitter proc ; finsi ; si (existe tcara 4) ; cbob*point = tcara.4 ; sinon ; quitter proc ; finsi ; si (existe tcara 5) ; v*point = tcara.5 ; sinon ; quitter proc ; finsi ; si (existe tcara 6) ; tabsol = table ; tabsol = tcara.6 ; sinon ; quitter proc ; finsi ; si (existe tcara 7) ; rt*flottant = tcara.7 ; sinon ; quitter proc ; finsi ; si (existe tcara 8) ; ri*flottant = tcara.8 ; sinon ; quitter proc ; finsi ; sinon ; finsi ; * si (ega typbob 'c') ; sauter 1 ligne ; sinon; si (ega typbob 'd') ; si (existe tabob 'd') ; sauter 1 ligne ; sauter 1 ligne ; sinon; mess ' erreur bobine D : indice d inexistant' ; finsi; sinon; quitter proc ; finsi; finsi ; *----------------------------------------------------------------- * fin de l'analyse syntaxique *----------------------------------------------------------------- * * calcul du vecteur norme vnor normal au plan de la bobine * * vn = ( (v1**2) + (v2**2) + (v3**2) )**0.5 ; si (vn ega 0.); quitter proc ; finsi ; vn1 = v1/vn ; vn2 = v2/vn ; vn3 = v3/vn ; vnor = vn1 vn2 vn3 ; * * calcul du vecteur norme wn normal a vnor (dans le plan de la bobine * et dans le plan xOy) et du vecteur t tangent au troncon * si (vn3 ega 0.); t0 = 0. 0. 1. ; sinon ; si ( (non (ega vn1 0.)) ou (non (ega vn2 0.)) ) ; sinon ; wn = 0. 1. 0. ; t0 = 1. 0. 0. ; finsi ; finsi ; *----------------------------------------------------------- * test sur le domaine de calcul *----------------------------------------------------------- itest = table ; igeo1 = 0 ; repeter bgeo1 ngeo ; igeo1 = igeo1 + 1 ; si (existe tageo1 igeo1) ; imot = 0 ; repeter boutyp nmot ; imot = imot + 1 ; sauter 1 ligne ; * domaine plan si ( (ega mot1 'TRI3') ou (ega mot1 'QUA4') ou (ega mot1 'TRI6') ou (ega mot1 'QUA8') ) ; phori = (ega zpel1 zpel2 1.E-5) et (ega zpel1 zpel3 1.E-5) ; si (phori) ; (tageo1.igeo1).'ZP' = zpel1 ; (tageo1.igeo1).'PP' = pel1 ; (tageo1.igeo1).'VP' = 0. 0. 1. ; pequa = phori et (ega zpel1 0.) ; si (pequa et (ega v3 0.)) ; itest.igeo1 = 0 ; isym = 1 ; sinon ; si ((ega typbob 'c') et (ega v3 0.)) ; * calcul analytique pour une bobine circulaire verticale itest.igeo1 = 1 ; sinon ; * calcul d'intersection de Denis itest.igeo1 = 2 ; finsi ; finsi ; sinon ; itest.igeo1 = -2 ; finsi ; quitter boutyp ; sinon ; * domaine volumique itest.igeo1 = -1 ; finsi ; fin boutyp ; * sauter 1 ligne ; * mess ' ****** itest =' itest.igeo1 ; * sauter 1 ligne ; sinon ; quitter bgeo1 ; finsi ; fin bgeo1 ; *-------------------------------------------------------------- * construction des points de la section initiale de la bobine *-------------------------------------------------------------- re = ri + b ; p11 = c1 + (ri*wn1) - ((h/2.)*vn1) ; p12 = c2 + (ri*wn2) - ((h/2.)*vn2) ; p13 = c3 + (ri*wn3) - ((h/2.)*vn3) ; p21 = c1 + (re*wn1) - ((h/2.)*vn1) ; p22 = c2 + (re*wn2) - ((h/2.)*vn2) ; p23 = c3 + (re*wn3) - ((h/2.)*vn3) ; p31 = c1 + (re*wn1) + ((h/2.)*vn1) ; p32 = c2 + (re*wn2) + ((h/2.)*vn2) ; p33 = c3 + (re*wn3) + ((h/2.)*vn3) ; p41 = c1 + (ri*wn1) + ((h/2.)*vn1) ; p42 = c2 + (ri*wn2) + ((h/2.)*vn2) ; p43 = c3 + (ri*wn3) + ((h/2.)*vn3) ; * * points de la base * p1 = p11 p12 p13 ; p2 = p21 p22 p23 ; p3 = p31 p32 p33 ; p4 = p41 p42 p43 ; * barycentre de la base: pp11 = (p11 + p21 + p31 + p41)/4. ; pp12 = (p12 + p22 + p32 + p42)/4. ; pp13 = (p13 + p23 + p33 + p43)/4. ; pp1 = pp11 pp12 pp13 ; * * segments de la base * cont1 = p1 d 1 p2 d 1 p3 d 1 p4 d 1 p1 ; * *----------------------------------------- * construction des surfaces laterales *----------------------------------------- si (ega typbob 'c') ; tquart = table ; * * surfbo1 = surf1 et surf2 et surf3 et surf4 ; tquart.1 = surfbo1 ; xn1 = (vn2*wn3) - (vn3*wn2) ; xn2 = (vn3*wn1) - (vn1*wn3) ; xn3 = (vn1*wn2) - (vn2*wn1) ; p51 = c1 + (ri*xn1) - ((h/2.)*vn1) ; p52 = c2 + (ri*xn2) - ((h/2.)*vn2) ; p53 = c3 + (ri*xn3) - ((h/2.)*vn3) ; p61 = c1 + (re*xn1) + ((h/2.)*vn1) ; p62 = c2 + (re*xn2) + ((h/2.)*vn2) ; p63 = c3 + (re*xn3) + ((h/2.)*vn3) ; p5 = p51 p52 p53 ; p6 = p61 p62 p63 ; * tquart.2 = surfbo2 ; demisurf = (surfbo1 et surfbo2) ; finsi ; *------------------------------------------------- si (ega typbob 'd') ; troncon = table ; troncon = tabob.'d' ; * mess ' ****************** Il y a' ntron 'troncons' ; itron = 1 ; troncj = table ; repeter btron ntron ; troncj = troncon.itron ; si ( (existe troncj 'l') et (non (existe troncj 'r')) et (non (existe troncj 'alpha')) ) ; lj = troncj.'l' ; si (itron ega 1) ; vdir = (xt0*lj) (yt0*lj) (zt0*lj) ; sinon ; pp1 = xpp2 ypp2 zpp2 ; xg = xt*lj ; yg = yt1*lj ; zg = zt1*lj ; vdir = xg yg zg ; finsi ; surfboj = surf1 et surf2 et surf3 et surf4 ; * * conservation des points definissant le troncon rectiligne * troncj.'pp1' = pp1 ; troncj.'pp2' = pp2 ; troncj.'pp3' = cbob ; sinon ; si ( (existe troncj 'r') et (existe troncj 'alpha') et (non (existe troncj 'l')) ) ; rj = troncj.'r' ; alphaj = troncj.'alpha' ; si (itron ega 1) ; si (dbob > 0.) ; sinon ; finsi ; sinon ; pp1 = xpp2 ypp2 zpp2 ; * vecteur norme vr perpendiculaire a vnor et t si (alphaj > 0.) ; sinon ; finsi ; xcrj = xpp2 + ((rj+(b/2.))*xvr) ; ycrj = ypp2 + ((rj+(b/2.))*yvr) ; zcrj = zpp2 + ((rj+(b/2.))*zvr) ; crj = xcrj ycrj zcrj ; finsi ; surfboj = surf1 et surf2 et surf3 et surf4 ; * * barycentre de la section finale * * conservation du point definissant le centre du troncon courbe troncj.'crj' = crj ; * * construction du nouveau vecteur tangent t (par rotation de alphaj) * troncj.'pp1' = pp1 ; troncj.'pp2' = pp2 ; sinon ; mess ' erreur : troncon mal defini ' ; quitter proc ; finsi ; finsi ; troncj.'mail' = surfboj ; si (itron ega 1) ; demisurf = surfboj ; sinon ; demisurf = demisurf et surfboj ; finsi ; troncon.itron = troncj ; itron = itron + 1 ; fin btron ; cont2 = d1 et d2 et d3 et d4 ; *--------------------------------------------------------- * construction des troncons inferieurs par symetrie / xOy *--------------------------------------------------------- si (ega isym 0); itron = 1 ; repeter btron2 ntron ; troncj = troncon.itron ; itron2 = (2*ntron) - itron + 1 ; troncj2 = table ; si ( (existe troncj 'r') et (existe troncj 'alpha') et (non (existe troncj 'l')) ) ; troncj2.'crj' = crj ; troncj2.'pp1' = pp1 ; troncj2.'pp2' = pp2 ; troncj2.'r' = troncj.'r' ; troncj2.'alpha' = troncj.'alpha' ; finsi ; si ( (existe troncj 'l') et (non (existe troncj 'r')) et (non (existe troncj 'alpha')) ) ; troncj2.'pp1' = pp1 ; troncj2.'pp2' = pp2 ; troncj2.'pp3' = cbob ; troncj2.'l' = troncj.'l' ; finsi ; troncon.itron2 = troncj2 ; itron = itron + 1 ; fin btron2 ; finsi ; finsi ; *---------------------------------------------------------------------- * construction du symetrique du maillage de la bobine par rapport a xOy *---------------------------------------------------------------------- elim eps surfbob ; mess 'construction de la premiere bobine effectuee' ; *----------------------------------------------------------- * construction des autres bobines par rotation autour de Oz *----------------------------------------------------------- ibob = 1 ; tabmai.ibob = surfbob ; surftot = surfbob ; si (nbob > 1) ; repeter bbob (nbob-1) ; ibob = ibob + 1 ; angln = (ibob-1)*360./nbob ; tabmai.ibob = surfbobn ; surftot = surftot et tabmai.ibob ; mess 'construction de la bobine' ibob 'effectuee' ; fin bbob ; finsi ; * * construction des axes * x1 = (2.*rt) 0. 0. ; y1 = 0. (2.*rt) 0. ; z1 = 0. 0. (2.*rt) ; axes = (o1 d 1 x1) et (o1 d 1 y1) et (o1 d 1 z1) ; si (ega tabob.trac1 'oui') ; finsi ; fin proc ; **************************************** * calcul des champs de biot et savart * **************************************** tabchb = table ; re = ri + b ; igeo1 = 0 ; si (ega tabob.cbiot 'oui') ; repeter bogeo1 ngeo ; igeo1 = igeo1 + 1 ; si (itest.igeo1 > -1) ; tabcon = table ; finsi ; si (existe tageo1 igeo1) ; geo1 = (tageo1.igeo1).'mail' ; ibob = 0 ; repeter bbob2 nbob ; ibob = ibob + 1 ; si (existe tabsol ibob) ; sol = tabsol.ibob ; finsi ; si (ega typbob 'c') ; mess 'dont la solenation est' sol ; sauter 1 ligne ; si (ega ibob 1) ; sinon ; anglj = 360./nbob ; finsi ; sinon ; sauter 1 ligne ; mess 'dont la solenation est' sol ; sauter 1 ligne ; itron = 0 ; repeter bbob3 ntron ; itron = itron + 1 ; troncj = troncon.itron ; * * troncon courbe * si ( (existe troncj 'r') et (existe troncj 'alpha') ) ; * mess ' troncon numero' itron; ri = troncj.'r' ; re = ri + b ; crj = troncj.'crj' ; pp1 = troncj.'pp1' ; pp2 = troncj.'pp2' ; * mess '** ri' ri ; * list crj ; * list pp1 ; * list pp2 ; si ( (ega ibob 1) et (ega itron 1) ) ; sinon ; si (ibob > 1) ; teta = (ibob - 1)*360./nbob ; chb1 = chb1 et chb1j ; sinon ; chb1 = chb1 et chb1j ; finsi ; finsi ; finsi ; * * troncon rectiligne * si (existe troncj 'l') ; * mess ' troncon numero' itron; pp1 = troncj.'pp1' ; pp2 = troncj.'pp2' ; pp3 = troncj.'pp3' ; * list pp1 ; * list pp2 ; * list pp3 ; si ((ega ibob 1) et (ega itron 1)); sinon ; si (ibob > 1) ; teta = (ibob - 1)*360./nbob ; chb1 = chb1 et chb1j ; sinon ; chb1 = chb1 et chb1j ; finsi ; finsi ; finsi ; si (ega isym 1) ; si ( (ega ibob 1) et (ega itron 1) ) ; chb2z = chb1z*(-1.) ; chb2 = chb1x et chb1y et chb2z ; chb1 = chb1 et chb2 ; sinon ; chb2z = chb1z*(-1.) ; chb2 = chb1x et chb1y et chb2z ; chb1 = chb1 et chb2 ; finsi ; finsi ; fin bbob3 ; finsi ; fin bbob2 ; tabchb.igeo1 = chb1 ; *---------------------------------------------------- * calcul des intersections pour le plan igeo1 *---------------------------------------------------- si (ega itest.igeo1 0) ; tabcon.1 = cont1 et cont2 ; finsi ; si (ega itest.igeo1 1) ; *---------------------------------------------------------------- * calcul analytique de l'intersection d'une bobine circulaire * verticale avec un plan *---------------------------------------------------------------- sauter 1 ligne ; zp = (tageo1.igeo1).'ZP' ; x1 = h/2.; cbob*point = tcara.4 ; si (zp < ri) ; cos1 = ((ri**2.) - (zp**2.) )**0.5 ; beta1 = atg zp cos1 ; y1 = ri*(cos beta1) ; * cos2 = ((re**2.) - (zp**2.) )**0.5 ; beta2 = atg zp cos2 ; y2 = re*(cos beta2) ; * cont1 = pc1 d 1 pc2 d 1 pc4 d 1 pc3 d 1 pc1 ; sinon ; si (zp < re) ; cos2 = ((re**2.)- (zp**2.) )**0.5 ; beta2 = atg zp cos2 ; y2 = re*(cos beta2) ; cont1 = pc1 d 1 pc2 d 1 pc3 d 1 pc4 d 1 pc1 ; tabcon.1 = cont1 ; sinon ; finsi ; finsi ; si (non (ega vn2 0.)) ; gama1 = atg vn2 vn1 ; finsi ; finsi ; si (ega itest.igeo1 2) ; * mess 'Algorithme Denis Robert' ; *------------------------------------------------------------------ * Algorithme de recherche des contours des bobines *------------------------------------------------------------------ repeter bouci 1 ; 'SAUTER' 1 'LIGNE' ; TABLIG = TABLE ; TAB2.LIG = TABLIG ; COUP1 = tageo1.igeo1 ; IRECUP = 0 ; 'SI' ( 'EXISTE' COUP1 'PP' ) ; PP*'POINT' = COUP1.'PP' ; 'SINON' ; 'SAUTER' 1 'LIGNE' ; 'MESS' 'Erreur : il manque PP pour le plan ' igeo1 ; 'SAUTER' 1 'LIGNE' ; IERR = 1 ; 'QUITTER' BOUCI; 'FINSI' ; 'SI' ( 'EXISTE' COUP1 'VP' ) ; VP*'POINT' = COUP1.'VP' ; 'SINON' ; 'SAUTER' 1 'LIGNE' ; 'MESS' 'Erreur : il manque VP pour le plan ' igeo1 ; 'SAUTER' 1 'LIGNE' ; IERR = 1 ; 'QUITTER' BOUCI ; 'FINSI' ; * * Trois points vont definir ce plan : PP PP2 et PP3 * PP11 PP12 PP13 = COORD PP ; VP1 VP2 VP3 = COORD VP ; * * Vecteur WN tq : VP1 WN1 + VP2 WN2 + VP3 WN3 = 0 * VPN1 = ( (VP1**2) + (VP2**2) + (VP3**2) ) ** 0.5 ; 'SI' ( VPN1 'EGA' 0. ) ; 'SAUTER' 1 'LIGNE' ; 'MESS' 'ERREUR : plan ' igeo1 ' le vecteur VP est nul' ; 'SAUTER' 1 'LIGNE' ; IERR = 1 ; 'QUITTER' BOUCI ; 'FINSI' ; VN1 = VP1 / VPN1 ; VN2 = VP2 / VPN1 ; VN3 = VP3 / VPN1 ; VPN = VN1 VN2 VN3 ; 'SI' ( VN1 'NEG' 0. ) ; 'SI' ( VN2 'NEG' 0. ) ; 'SI' ( VN3 'NEG' 0. ) ; W2 = VN3 / VN2 ; W3 = -1 ; WN = ( (W2**2) + (W3**2) ) ** 0.5 ; WN1 = 0. ; WN2 = W2 / WN ; WN3 = W3 / WN ; 'SINON' ; WN1 = 0. ; WN2 = 0. ; WN3 = 1. ; 'FINSI' ; 'SINON' ; 'SI' ( VN3 'NEG' 0. ) ; WN1 = 0. ; WN2 = 1. ; WN3 = 0. ; 'SINON' ; WN1 = 0. ; WN2 = 0. ; WN3 = 1. ; 'FINSI' ; 'FINSI' ; 'SINON' ; WN1 = 1. ; WN2 = 0. ; WN3 = 0. ; 'FINSI' ; * XN1 = (VN2 * WN3) - (VN3 * WN2) ; XN2 = (VN3 * WN1) - (VN1 * WN3) ; XN3 = (VN1 * WN2) - (VN2 * WN1) ; * * WN et XN forment une base du plan de coupe * PP21 = PP11 + WN1 ; PP22 = PP12 + WN2 ; PP23 = PP13 + WN3 ; PP31 = PP11 + XN1 ; PP32 = PP12 + XN2 ; PP33 = PP13 + XN3 ; PP2 = PP21 PP22 PP23 ; PP3 = PP31 PP32 PP33 ; * * Intersection de ce plan avec la bobine IBO * IINTER = 0 ; * * On traite separement chaque troncon * IINTEI = 0 ; itron = 0 ; si (ega typbob 'd') ; sinon ; ntron = 4 ; finsi ; 'REPETER' boutron ntron ; itron = itron + 1 ; si (ega typbob 'd') ; MAI0 = (tabtron.itron).'mail' ; sinon ; MAI0 = tquart.itron ; finsi ; MAI1 = 'CHANGER' 'POI1' MAI0 ; IP1 = 1 ; IDESSOUS = 0 ; IDESSUS = 0 ; IDEDANS = 0 ; DMOY = 0. ; 'REPETER' BOUCPOI1 NBP1 ; POX1 POY1 POZ1 = 'COORD' PO1 ; MX1 = POX1 - PP11 ; MY1 = POY1 - PP12 ; MZ1 = POZ1 - PP13 ; M1 = MX1 MY1 MZ1 ; PDT1 = M1 'PSCAL' VPN ; DMOY = DMOY + ('ABS' (PDT1)) ; 'SI' ( ( 'ABS' PDT1 ) < 0.001 ) ; IDEDANS = IDEDANS + 1 ; 'FINSI' ; 'SI' ( PDT1 '<EG' -0.001 ) ; IDESSOUS = IDESSOUS + 1 ; 'FINSI' ; 'SI' ( PDT1 '>EG' 0.001 ) ; IDESSUS = IDESSUS + 1 ; 'FINSI' ; 'SI' ( IP1 'EGA' 1 ) ; 'SINON' ; 'FINSI' ; IP1 = IP1 + 1 ; 'FIN' BOUCPOI1 ; *+* *+* Distance de selection des points a projeter *+* on divise DMOY par 2 si NELE = 4 *+* 3 8 COEF1 = 2. ; DMOY = DMOY / NBP1 ; DCRIT = DMOY / COEF1 ; * * tests sur la repartition des points / plan de coupe * 'SI' ( IDEDANS '>EG' 4 ) ; ICAS = 1 ; 'SINON' ; 'SI' ( IDESSUS > IDESSOUS ) ; ICAS = 2 ; 'SINON' ; ICAS = 3 ; 'FINSI' ; 'FINSI' ; * 'SI' ((( IDESSOUS '>EG' 1 ) 'ET' ( IDESSUS '>EG' 1 )) 'OU' ( IDEDANS '>EG' 1 )) ; IINTER = IINTER + 1 ; IINTEI = IINTEI + 1 ; 'MESS' 'Il y a une intersection ...' ; * * On ne retient que les points les plus proches du * plan de coupe Pc * IREC = 0 ; 'REPETER' BOUCREC 7 ; IREC = IREC + 1 ; IP2 = 1 ; IOK = 0 ; 'REPETER' BOUCTRI NBP1 ; VAL1 = 'EXTRAIRE' LISPDT IP2 ; 'SI' ( ( ICAS 'EGA' 1 ) et (('ABS' VAL1 ) '<EG' 0.001) ); IOK = IOK + 1 ; 'SI' ( IOK 'EGA' 1 ) ; 'SINON' ; 'FINSI' ; 'FINSI ' ; 'SI' ( ( ICAS 'EGA' 2 ) et ((('ABS' VAL1 ) '<EG' DCRIT ) 'ET' ( VAL1 '>EG' 0.001)) ); IOK = IOK + 1 ; 'SI' ( IOK 'EGA' 1 ) ; 'SINON' ; 'FINSI' ; 'FINSI' ; 'SI' ( (ICAS 'EGA' 3 ) et ((('ABS' VAL1 ) '<EG' DCRIT ) 'ET' (VAL1 < -0.001)) ); IOK = IOK + 1 ; 'SI' ( IOK 'EGA' 1 ) ; 'SINON' ; 'FINSI' ; 'FINSI' ; IP2 = IP2 + 1 ; 'FIN' BOUCTRI ; list iok ; si (iok > 1) ; sinon ; NBP2 = 1 ; finsi ; 'SI' ( NBP2 < 4 ) ; 'SI' ( IREC '<EG' 6 ) ; 'MESS' 'Pas assez de points selectionnes' ; 'MESS' 'essai nouvelle distance critique' ; DCRIT = DCRIT * 1.25 ; 'SINON' ; 'MESS' 'Mauvaise selection des points : ' ; 'MESS' 'contour introuvable !' ; IERR = 1 ; 'QUITTER' BOUCREC ; 'FINSI' ; 'SINON' ; 'QUITTER' BOUCREC ; 'FINSI' ; 'FIN' BOUCREC ; si (ega iok 1) ; iterer boutron ; finsi ; * * Construction de LIGi * * * recherche de WMIN, XWMIN et d'un point oppose * II1 = 1 ; 'REPETER' BOUCP1 NBP1 ; PEX1 PEY1 PEZ1 = 'COORD' PE1 ; VV1 = PEX1 - PP11 ; VV2 = PEY1 - PP12 ; VV3 = PEZ1 - PP13 ; PEW1 = (VV1 * WN1) + (VV2 * WN2) + (VV3 * WN3) ; PEX1 = (VV1 * XN1) + (VV2 * XN2) + (VV3 * XN3) ; 'SI' ( II1 'EGA' 1 ) ; WMIN = PEW1 ; XWMIN = PEX1 ; IIMIN = 1 ; 'SINON' ; 'SI' ( PEW1 < WMIN ) ; WMIN = PEW1 ; XWMIN = PEX1 ; IIMIN = II1 ; 'FINSI' ; 'FINSI' ; II1 = II1 + 1 ; 'FIN' BOUCP1 ; * II2 = 1 ; DIAG0 = 0. ; 'REPETER' BOUCP2 NBP1 ; LW1 = 'EXTRAIRE' LW II2 ; LX1 = 'EXTRAIRE' LX II2 ; DIAG1 = ( ((LW1 - WMIN) ** 2) + ((LX1 - XWMIN) ** 2) ) ** 0.5 ; 'SI' ( DIAG1 > DIAG0 ) ; DIAG0 = DIAG1 ; IIMAX = II2 ; 'FINSI' ; II2 = II2 + 1 ; 'FIN' BOUCP2 ; PCX1 PCY1 PCZ1 = 'COORD' PC1 ; PCX2 PCY2 PCZ2 = 'COORD' PC2 ; * * PQ = PC2 - PC1 * PQX1 = PCX2 - PCX1; PQY1 = PCY2 - PCY1; PQZ1 = PCZ2 - PCZ1; PQ = PQX1 PQY1 PQZ1 ; * * PN = PQ ^ VN * PNX1 = (PQY1 * VN3) - (PQZ1 * VN2) ; PNY1 = (PQZ1 * VN1) - (PQX1 * VN3) ; PNZ1 = (PQX1 * VN2) - (PQY1 * VN1) ; PN = PNX1 PNY1 PNZ1 ; * * Recherche des deux autres points -> PC3 et PC4 * II3 = 1 ; PSCAMAX = 0. ; PSCAMIN = 0. ; 'REPETER' BOUCP3 NBP1 ; PEX1 PEY1 PEZ1 = 'COORD' PE1 ; VV1 = PEX1 - PCX1 ; VV2 = PEY1 - PCY1 ; VV3 = PEZ1 - PCZ1 ; PSC1 = (VV1 * PNX1) + (VV2 * PNY1) + (VV3 * PNZ1) ; 'SI' ( PSC1 > PSCAMAX ) ; PSCAMAX = PSC1 ; IIMAX = II3 ; 'FINSI' ; 'SI' ( PSC1 < PSCAMIN ) ; PSCAMIN = PSC1 ; IIMIN = II3 ; 'FINSI' ; II3 = II3 + 1 ; 'FIN' BOUCP3 ; L1 = 'DROITE' 1 PC1 PC3 ; L2 = 'DROITE' 1 PC3 PC2 ; L3 = 'DROITE' 1 PC2 PC4 ; L4 = 'DROITE' 1 PC4 PC1 ; LIG1 = L1 'ET' L2 'ET' L3 'ET' L4 ; 'SI' (IINTER 'EGA' 1) ; LB = LIG1 ; 'SINON' ; LB = LB 'ET' LIG1 ; 'FINSI' ; 'SINON' ; 'FINSI' ; * IMAI = IMAI + 1 ; 'FIN' boutron ; 'SI' ( IINTEI '>EG' 1 ) ; sinon ; 'FINSI' ; 'FIN' BOUCI ; * * Archivage de l'intersection dans TAB2.LIG.j * 'SI' (( IINTER '>EG' 1 ) 'OU' ( IRECUP 'EGA' 1 )) ; tabcon.1 = LB ; 'FINSI' ; sauter 1 ligne ; finsi ; sinon ; iterer bogeo1 ; finsi ; si (ega itest.igeo1 -2) ; finsi ; *------------------------------------------------------------------------- * * construction des contours des autres bobines par rotation autour de Oz * *------------------------------------------------------------------------- si ((itest.igeo1) > -1) ; si (existe tabcon 1) ; si (nbob > 1) ; ibob = 1 ; contot = tabcon.ibob ; repeter bbob2 (nbob-1) ; ibob = ibob + 1 ; angln = (ibob-1)*360./nbob ; contot = contot et tabcon.ibob ; fin bbob2 ; finsi ; finsi ; sinon ; finsi ; fin bogeo1 ; finsi ; sauter 1 ligne ; sauter 1 ligne ; finproc tabchb tab2 ; **** TOTAL **************************************************** ****** PROCEDURE TOTAL ****** *------------------------------------------------- *MESS 'RESULTANTE DE LA COMPOSANTE ' COMP1 ; *LIST TOT1 ; FINPROC TOT1 ; *------------------------------------------------- **** @TPERM 'DEBPROC' @TPERM TAB1*'TABLE ' ; SI ( TAB1.PERMANENT ) ; COTETF1 = TAB1.C_COTETF1 ; SITETF1 = TAB1.C_SITETF1 ; COTETR1 = TAB1.C_COTETR1 ; SITETR1 = TAB1.C_SITETR1 ; COTETC1 = TAB1.C_COTETC1 ; SITETC1 = TAB1.C_SITETC1 ; TAC2 = TABLE; TAB1.I_FPAT1 = TABLE; TAB1.FLUX_CRITIQUE = TABLE; TAB1.EV_FLUX_CONV = TABLE; TAB1.EV_FLUX_RAYO = TABLE; TAB1.FLJB_CRI_TONG = TABLE; TAB1.RESUTHER = TABLE; TAB1.RESUTHER.COEFECHANGE = TABLE; TAB1.RESUTHER.VALEUR_TETA = TABLE; TAB1.RESUTHER.COEFRAYONNE = TABLE; TAB1.RESUTHER.CONDUCMAT = TABLE; * *======== DEBUT BOUCLE : DIFFERENTES VALEURS DE FLUX INCIDENT * I_11 = 0; I_11 = I_11 + 1; TAB1.'ITER'= I_11; *********** cas LAMBDAQ VPAT1 = exp*sinus *********** cas LAMBDAQ SOM1 = somme ( exp*sinus) *********** cas LAMBDAQ FACFM1 = SOM1 / largeur (v. moyenne du profil) *********** cas LAMBDAQ FLU1 = FACFM1 * VFLUXIMPOSE ( =PHI0) *********** cas LAMBDAQ VFPAT1 = exp*sinus*phi0 * SOM1 = somme de l'integrale de forme * FACFM1 cette designation vient de FACTEUR de FORME 1 * ces valeurs proviennent de CFLUXX SAUTER 1 LIGNE ; MESS ' ' ; * 'TRAC_GRAPHE' indice pour ne tracer les graphes qu'a l'iteration 1 SI (EGA I_11 1) ; TAB1.'TRAC_GRAPHE' = VRAI ; SINON ; TAB1.'TRAC_GRAPHE' = FAUX ; FINSI ; *jsFLU1 = TAB1.'FLU1'.I_11; *jsPUI1 = TAB1.'PUI1'.I_11; *jsTAB1.V_FLUMOY1 = TAB1.'FLU1'.I_11; VFPAT1 = TAB1.'VFPAT1'.I_11; @CALOR TAB1 PUI1 ; *js 15/6/95T_LOCAL = TAB1.'T_LOCAL' ; * *--- CARACT. EAU A TMOY non a t_local * *--- AUTRE METHODE DE CALCUL DE H CONVECTION * SI ( NON ( EXISTE TAB1 PFIXTONB ) ) ; TAB1 . PFIXTONB = FAUX ; FINSI ; * *--- CALCUL DU COEFFICIENT D'ECHANGE * @CALHCON TAB1 ; TAB1.'EV_FLUX_CONV'.I_11 = TAB1.EVOFT1 ; * *--- CALCUL DU FLUX CRITIQUE * @FLUCRIT TAB1 ; TAB1.'FLUX_CRITIQUE'.I_11 = TAB1.L_QCHFW ; * *---- modif Jean BOSCARY 05 10 94 * faire apparaitre la vraie valeur de TONG75 * i.e. QCRI1 non multiplie par 1.67 SI ( NON ( EXISTE TAB1 M_TONGJB ) ) ; TAB1.M_TONGJB = FAUX ; FINSI ; SI TAB1.M_TONGJB ; QCRI2 HOU1 TOU1 DTSUB1 XOU1 = TONG75JB TAB1 ; TAB1.'FLJB_CRI_TONG'.I_11 = QCRI2 ; FINSI ; * * *--- APPEL PROCEDURE CALCUL DE 'H RAYONNEMENT' * ERAYON1 = @CALHRAY TAB1 ; TAB1.'EV_FLUX_RAYO'.I_11 = TAB1.EVORAYT1 ; * @TRFLI VFPAT1 FPAT1 TAB1 ; *--- INIT DES TABLES *---(DONNEES A ENVOYER DANS PROCEDUR TRANSIT1) * SI ( EXISTE TAB1 TEMPERATURE ) ; MENAGE ; FINSI ; SI ( TAB1.OLD ) ; TAB1.'SOUSTYPE' = THERMIQUE ; SI ( EXISTE TAB1 LFLUX_CONV ) ; TAB1.'MAILLAGV' = TAB1.LFLUX_CONV ; TAB1.'EVOCONV' = TAB1.ECONVEC1 ; FINSI ; SI ( EXISTE TAB1 LFLUX_RAYO ) ; TAB1.'MAILLAGR' = TAB1.LFLUX_RAYO ; TAB1.'TETR' = TAB1.TEMP_RAYO ; TAB1.'EVOCONR' = ERAYON1 ; FINSI ; FPAT2 = FPAT1 ; SI ( EXISTE TAB1 V_SOURCE ) ; FPAT2 = FPAT1 ET TAB1.'FSOU1' ; FINSI ; FPAT3 = FPAT2 ; SI ( EXISTE TAB1 'FLUX_IMP' ) ; FPAT3 = FPAT2 ET TAB1.'FLUX_IMP' ; FINSI ; * TEMPS ; * *--- APPEL PROCED. TRANSIT1 *--- RESOL PB THERMIQUE NONLIN * TAB1.'TETA' = TAB1.'T_LOCAL'; @TRANS10 TAB1; TAB1.I_11 = TAB1.TEMPERATURE; TAB1.I_FPAT1.I_11 = FPAT1; TAB1.RESUTHER.COEFECHANGE.I_11 = TAB1.COEFECHANGE; TAB1.RESUTHER.VALEUR_TETA.I_11 = TAB1.VALEUR_TETA; TAB1.RESUTHER.COEFRAYONNE.I_11 = TAB1.COEFRAYONNE; TAB1.RESUTHER.CONDUCMAT.I_11 = TAB1.CONDUCMAT; SINON; TAB1.'SOUSTYPE' = THERMIQUE ; SI( NON (EXISTE TAB1 TEMPERATURE) ); SINON; TAB1.'INSTANT(0)' = TAB1.TEMPERATURE; FINSI; TAB1.CONVECTION = TABLE; TAB1.CONVECTION.TABCONV1 = TABLE; TAB1.CONVECTION.TABTE1 = TABLE; TAB1.CONVECTION.TABCONV1.MCONV1 = TAB1.ECONV ; TAB1.CONVECTION.TABTE1.MCONV1 = TAB1.'T_LOCAL' ; TAB1.CONVECTION.TABCONV1.MCONV2 = ERAYON1 ; TAB1.CONVECTION.TABTE1.MCONV2 = TAB1.'TEMP_RAYO' ; FPAT2 = FPAT1 ; SI ( EXISTE TAB1 V_SOURCE ) ; FPAT2 = FPAT1 ET TAB1.'FSOU1' ; FINSI ; TEMPS; TRANSIT1 TAB1; TEMPS; TAB1.RESUTHER.COEFECHANGE.I_11 = TAB1.COEFECHANGE.MCONV1 ; TAB1.RESUTHER.VALEUR_TETA.I_11 = TAB1.CONVECTION.TABTE1.MCONV1; * TAB1.RESUTHER.VALEUR_TETA.I_11 = TAB1.VALEUR_TETA.MCONV1 ; TAB1.RESUTHER.COEFRAYONNE.I_11 = TAB1.COEFECHANGE.MCONV2; TAB1.RESUTHER.CONDUCMAT.I_11 = TAB1.CONDUCMAT ; FINSI; FIN BOCA; FINSI; * * * FIN DU PERMANENT * FINPROC ; * *----------Fin de la procedure @TPERM *-------------------------------------------------------------------- **** @TRASCH * * !!! R. MITTEAU !!! attention, procedure standard * * un pointeur dans /CASTEM9X/procedures pointe sur cette procedure * pour les mises a jour * * CH2 = CHAN 'ATTRIBUT' CH1 'NATURE' 'DISCRET' ; CHT = CH1 ; SINON ; * CHE2 = CHAN 'ATTRIBUT' CHE 'NATURE' 'DISCRET' ; CHT = @ET CH1 CHE ; FINSI ; SI (NON (EXISTE M1)) ; FINSI ; SI (NON ( EXISTE OE1)) ; FINSI ; TRAC M1 OE1 CHT MA2 CT1 ; FINPROC ; **** @TRCPLAS DEBPROC @TRCPLAS TAB1*TABLE MO_1*MMODEL I__1*ENTIER ; * P_T1 = PROG 20. 100. 200. 300. 400. 500. 600. ; EPSB = 0.05 ; I1_1 = 0 ; TITRE TAB1.NOM_MAT.I__1 'CINEMATIC PLASTIFICATION CURVES' ; T_AC1 = TABLE ; I1_1 = I1_1 + 1 ; T_1 = EXTRAIRE P_T1 I1_1 ; EE_1 = @IPOE T_1 TAB1.'TETMAT'.MO_1.'YOUN' ; YY_1 = @IPOE T_1 TAB1.'TETMAT'.MO_1.'SIGY' ; HH_1 = @IPOE T_1 TAB1.'TETMAT'.MO_1.'H' ; EPSY = YY_1 / EE_1 ; S_B = YY_1 + ((EPSB - EPSY)* HH_1) ; SI (EGA I1_1 1) ; EV_PL1 = EV_1 ; SINON ; EV_PL1 = EV_PL1 ET EV_1 ; FINSI ; FIN BOCPLAS1 ; FINPROC ; **** @TRFLI DEBPROC @TRFLI VFPAT1*CHPOINT FPAT1*CHPOINT TAB1*TABLE ; * ************************************************************************ * @TRFLI procedure de trace du flux incident 2D et 3D * * VECFLUI vecteur representant le flux incident * * VECFLUII vecteur representant le flux incident integre EF * * Reecriture et rajout de la visu 3D : Alain MOAL (aout 1995) * ************************************************************************ * *------------------ VARIABLES D'ENTREE COSDIR1 = TAB1.C_COTETF1 ; COSDIR2 = TAB1.C_SITETF1 ; COSDIR3 = TAB1.C_COS3F1 ; IHYPVAP = TAB1.HYPERVAP ; DH0 = TAB1.DH ; MAXSOFL = TAB1.MAX_SOFL ; DMAQ0 = TAB1.D_MAQUETTE ; CONT0 = TAB1.'M_IL_CONTOUR' ; ITRACFI = TAB1.L_TRAC_FLUXI ; NIVEAU1 = TAB1.'NIVEAU' ; SI (NIVEAU1 >EG 4) ; FINSI ; SI (NIVEAU1 >EG 3) ; FINSI ; LIG0 = TAB1.LFLUX_EXTE_DESS ; OEIL0 = TAB1.VIEW_P ; FINSI ; *-------------------------------------- * *---- facteurs d'amplification pour la visualisation des vecteurs SI IHYPVAP ; AMPLV1 = DH0 / (2. * MAXSOFL) ; SINON ; AMPLV1 = DMAQ0 / (2. * MAXSOFL) ; FINSI ; AMPLP1 = AMPLV1 * 1.E5 ; * *---- visualisations en 2D * * ---- CONT0 est une ligne CHPT = @ET CHPX CHPY ; VECFLUI = @VECADA CHPT (-1. * AMPLV1) 'ROUGE' ; * CHPT = @ET CHPX CHPY ; VECFLUII = @VECADA CHPT (-1. * AMPLP1) 'ROUGE' ; * SI ITRACFI ; TITRE ' @TRFLI : INCIDENT FLUX ' ; TRAC VECFLUI CONT0 ; TITRE ' @TRFLI : INTEGRATED FLUX ' ; TRAC VECFLUII CONT0 ; FINSI; FINSI ; * *---- visualisations en 3D * * ---- CONT0 est une surface, LIG0 est une ligne CHPT = @ET (@ET CHPX CHPY) CHPZ ; VECFLUI = @VECADA CHPT (-1. * AMPLV1) 'ROUGE' ; * CHPT = @ET (@ET CHPX CHPY) CHPZ ; VECFLUII = @VECADA CHPT (-1. * AMPLP1) 'ROUGE' ; * SI ITRACFI ; TITRE ' @TRFLI : INCIDENT FLUX ' ; TRAC 'CACH' OEIL0 VECFLUI CONT0 ; TITRE ' @TRFLI : INTEGRATED FLUX ' ; TRAC 'CACH' OEIL0 VECFLUII CONT0 ; FINSI; * * ---- Trace du flux incident le long d'une ligne * ---- en fonction de l'abscisse curviligne TITRE ' @TRFLI : INCIDENT FLUX' ; FINSI ; * *------------------ VARIABLES DE SORTIE TAB1.V_VEC11 = VECFLUII ; TAB1.V_VEC22 = VECFLUI ; *-------------------------------------- * SI (NIVEAU1 >EG 4) ; FINSI ; FINPROC ; **** @TTRACG debproc @ttracg poin1/point text1/texte text2/texte text3/texte geo1*maillage str1*maillage ; dcar1 = ((ld1 * ld1) + (ld2 * ld2) + (ld3 * ld3)) ** .5 ; dcar2 = dcar1 / 10000. ; dcar3 = dcar2 * (2.**.5) ; * dcar1 est la dimension caracteristique de geo1 si (ega v1 2) ; sinon ; finsi ; *1texttit = chain geo1 'en rouge et ' geo2 'en blan' ; *titr 1texttit poin2 = poin1; sinon ; finsi ; sinon ; sinon ; sinon ; finsi ; finsi ; finsi ; finproc ; **** @TTRACP dcar1 = ((ld1 * ld1) + (ld2 * ld2) + (ld3 * ld3)) ** .5 ; dcar2 = dcar1 / 50. ; dcar3 = -1. * dcar2 ; * dcar1 est la dimension caracteristique de geo1 si (ega v1 2) ; croix1 = (pp2 d 1 pp3) et (pp4 d 1 pp5); sinon ; croix1 = (pp2 d 1 pp3) et (pp4 d 1 pp5) et (pp6 d 1 pp7) ; finsi ; *1texttit = chain 'point ' pp1 'dans' geo1 ; *titr 1texttit sinon ; sinon ; sinon ; finsi ; finsi ; finsi ; finproc ; **** @TTRANS 'DEBPROC' @TTRANS TAB1*'TABLE ' ; ** on regarde si il y a un transitoire SI ( NON ( EXISTE TAB1 TRANSITOIRE )) ; TAB1.TRANSITOIRE = FAUX ; FINSI ; * SI ( TAB1.TRANSITOIRE ) ; TAB1.'TRAC_GRAPHE' = VRAI ; *********** cas LAMBDAQ VPAT1 = exp*sinus *********** cas LAMBDAQ SOM1 = somme ( exp*sinus) *********** cas LAMBDAQ SOM3 = SOM1 * PHIZERO *********** cas LAMBDAQ FACFM1 = SOM1 / largeur (v. moyenne du profil) *********** cas LAMBDAQ FLU1 = FACFM1 * VFLUXIMPOSE *********** cas LAMBDAQ VFPAT1 = exp*sinus*phi0 *********** cas LAMBDAQ FLU1 = FACFM1 * VFLUXIMPOSE *********** cas LAMBDAQ PHIZERO = VFLUXIMPOSE *js FLU1 = TAB1.'FLU1'.(DIME TAB1.LIS_FLUX); *js PUI1 = TAB1.'PUI1'.(DIME TAB1.LIS_FLUX); TAB1.V_FLUMOY1 = FLU1; * SOM2 = ( MAXI (RESU FPAT1)) ; * MESS ' >>>>resu flux element finis ' SOM2 ; * MESS ' >>>>valeur prevue ' TAB1.'V_SOM1'; * SI ( NON ( TAB1.'V_SOM1' EGA SOM2 ( ABS ( SOM2 * 0.05 ))) ) ; * MESS ' >>>>verifiez vos valeurs, desole ' ; * ERREUR 'VALEUR_DU_FLUX_RENTRANT' ; * FINSI ; @CALOR TAB1 PUI1 ; TIN = TAB1 . T_IN ; * CPF = @IPOE TIN TAB1.ETCPF ; * EMDOTI = TAB1.V_EMDOTI ; * TOUT = TIN + (PUI1 / (EMDOTI * CPF)) ; * TAB1.'T_LOCAL' = TIN + ((TOUT - TIN ) * TAB1.X_LOCAL) ; * TMOY = (TIN + TOUT) / 2. ; * TMOY= TAB1.'T_MOY' ; * *--- APPEL PROCEDURE CALCUL DE 'H CONVECTION (TRANS)' * SI ( EXISTE TAB1 PFIXTONB ) ; TAB1 . PFIXTONB = VRAI ; SINON ; TAB1 . PFIXTONB = FAUX ; FINSI ; SI ( NON ( EXISTE TAB1 TETA )) ; TAB1.'TETA' = TAB1.'T_LOCAL'; * TAB1 . 'TETA' = TIN ; * MESS '>@TTRANS> Initial Temperature set to TIN'; FINSI ; * *SI( NON (EXISTE TAB1 NO_CONV)) ; @FLUCRIT TAB1 ; * RM 13.03.1997 SI (TAB1.COUPE_ECH_A_CHF) ; TAB1.FLUCRIT1 = TAB1.CHF; FINSI ; @CALHCON TAB1 ; TAB1.'CONVECTION' = TABLE ; TAB1.'CONVECTION' . 'MAILLAGE' = TAB1 . LFLUX_CONV ; TAB1.'CONVECTION' . 'TEMP_EXT' = TAB1.'TETA' ; *FINSI ; * * *--- APPEL PROCEDURE CALCUL DE 'H RAYONNEMENT' * * ERAYON1 = @CALHRAY TAB1 ; * TAB1.'SOUSTYPE' = THERMIQUE ; S_TOT1 = TAB1.'M_ILLAGE_TOT' ; SI ( NON ( EXISTE TAB1 'INITIAL(0)')) ; SINON ; SI ( NON ( EXISTE TAB1 'INITIAL(1)')) ; TAB1.'INITIAL(1)' = TAB1.'INITIAL(0)' ; FINSI ; FINSI ; TAB1.'RAYONNEMEN' = TABLE ; TAB1.'RAYONNEMEN' . 'MAILLAGE' = TAB1 . LFLUX_RAYO ; TAB1.'RAYONNEMEN' . 'EVORAYO' = ERAYON1 ; TAB1.'RAYONNEMEN' . 'TEMP_EXT' = TAB1 . TEMP_RAYO ; FPAT2 = FPAT1 ; SI ( EXISTE TAB1 V_SOURCE ) ; FPAT2 = FPAT1 ET TAB1.FSOU1 ; FINSI ; FPAT3 = FPAT2 ; SI ( EXISTE TAB1 FLUX_IMP ) ; FPAT3 = FPAT2 ET TAB1.FLUX_IMP ; FINSI ; * RM 11.03.97 @TRANSI3 TAB1 ; * TEMPS ; FINSI ; FINPROC ; * *----------Fin de la procedure @TTRANS *-------------------------------------------------------------------- **** @CVECT * ************************************************************** * Procedure de creation d'un objet de type vecteur a partir * * des composantes d'un champ de vecteurs. * * Si le facteur d'amplification pour visualiser un champ de * * vecteur sur une geometrie n'est pas donne,il est adapte * * aux dimensions geometriques du probleme. * * Alain MOAL (juillet 1995) * ************************************************************** * ZM = XM * 0. ; SINON ; FINSI ; * SI (NON (EXISTE AMPLI0)) ; * ---- norme du vecteur VECNORM = ((XV * XV) + (YV * YV) + (ZV * ZV))**0.5 ; * * ---- calcul d'une longueur caracteristique du maillage * SINON ; FINSI ; * *AM* AMPLI0 = LONGCAR / (MAXI VECNORM) ; *AM* AMPLI0 = 2. * LONGCAR / (MAXI VECNORM) ; FINSI ; * *CAST94* CHV1 = (NOMC UX XV) ET (NOMC UY YV) ; SINON ; *CAST94* CHV1 = (NOMC UX XV) ET (NOMC UY YV) ET (NOMC UZ ZV) ; FINSI ; FINPROC VECT1 ; DEBPROC @VISRES TAB1*TABLE ; * ****************************************************************** * Procedure de visualisation des resultats d'un calcul permanent * * en 3D. Alain MOAL (aout-sept 1995) * ****************************************************************** * * ITER = 1 ; *--------------- VARIABLES D'ENTREE : MAIL0 = TAB1.<MAILLAGE ; LIGCONV = TAB1.LFLUX_CONV_DESS ; SURFCONV = TAB1.LFLUX_CONV ; SURFEXTE = TAB1.LFLUX_EXTE ; TE1 = TAB1.ITER ; VTETA1 = TAB1.RESUTHER.'VALEUR_TETA'.ITER ; HCONV1 = TAB1.RESUTHER.COEFECHANGE.ITER ; PROFIL0 = TAB1.V_VPAT1 ; MODEL0 = TAB1.MODELF ; LIG0 = TAB1.LFLUX_EXTE_DESS ; MAXSOFL = TAB1.MAX_SOFL ; DMAQ0 = TAB1.D_MAQUETTE ; NX = TAB1.C_COTETF1 ; NY = TAB1.C_SITETF1 ; NZ = TAB1.C_COS3F1 ; VOLMAT1 = TAB1.ZONE_MAT.1 ; VOLMAT2 = TAB1.ZONE_MAT.2 ; VOLMAT3 = TAB1.ZONE_MAT.3 ; ANGINCI = TAB1.<ANGINCI; *TEST*VBVN = TAB1.<VBVN ; SINON ; FINSI ; OEIL0 = TAB1.VIEW_P ; SINON ; FINSI ; *------------------------------------ * *---- Table de visualisation TAB2 = TABLE ; * FINSI ; * FLU1 = FLU0 * PROFIL0 ; * *---- Trace du flux incident, de la temperature et de l'angle d'incidence *---- le long d'une ligne en fonction de l'abscisse curviligne DESSIN (EVFLUI ET EVTEMI) MIMA LEGE TAB2 ; TITRE ' @VISRES : ANGLE BETWEEN B AND N (degree)'; DESSIN EVANGI MIMA ; *TEST*TITRE ' @VISRES : VBVN '; *TEST*EVVBVN = EVOL JAUN CHPO VBVN SCAL LIG0 ; *TEST*DESSIN EVVBVN MIMA ; * *---- Trace de l'evolution du flux de convection le long d'une ligne SINON ; VTETA = VTETA1 ; FINSI ; * *---- flux de convection sur la ligne et temperatures sur la ligne FLUCONV = HCONV * (VTETA0 - VTETA) ; DESSIN (EVFLUC ET EVTEMC) MIMA LEGE TAB2 ; * *---- temperatures sur la ligne *TITRE '@VISRES : WALL TEMPERATURE (C)' ; *DESSIN (EVOL TURQ CHPO TEMP1 SCAL LIGCONV) MIMA ; * *---- flux de convection sur la surface de convection FLUCONV0 = HCONV * (TE1 - VTETA) ; * *---- Calcul du facteur de concentration et de la puissance extraite * *---- Trace en coupe des isovaleurs de temperature et des vecteurs flux *---- incident et de convection CHPT = @ET (@ET CHPX CHPY) CHPZ ; AMPLV1 = 10. * DMAQ0 / (2. * MAXSOFL) ; VECFLUI = @VECADA CHPT (-1. * AMPLV1) 'ROUGE' ; *FX = FLU1 * NX; *FY = FLU1 * NY; *FZ = FLU1 * NZ; *VECFLUI = @CVECT FX FY FZ SURFEXTE VERT ; TITRE '@VISRES : ISOTHERM IN SECTION' ; * *---- Trace des isovaleurs de temperature sans le maillage TITRE '@VISRES : ISOTHERM, CONVECTED POWER 'PUI1' W'; ARET1 = ARETE VOLMAT1 ; ARET2 = ARETE VOLMAT2 ; ARET3 = ARETE VOLMAT3 ; SINON ; ARET1 = ARETE VOLMAT1 40.; ARET2 = ARETE VOLMAT2 40.; ARET3 = ARETE VOLMAT3 40.; FINSI ; ARET0 = ARET1 ET ARET2 ET ARET3 ; * *---- Messages MESS ' CONCENTRATION FACTOR .................: ' FACT0 ; * FINPROC ; **** @VDEFAUT DEBPROC @VDEFAUT TAB1*TABLE ; * ********************************************************************** * Procedure de preparation de la table TAB1 pour le calcul du profil * * du depot de puissance par la procedure @TOKAFLU. * * On donne ici les valeurs par defaut et on verifie l'existence de * * certains indices importants de la table. Alain MOAL (juillet 1995) * ********************************************************************** * SI (NON (EXISTE TAB1 <IMESS)) ; TAB1.<IMESS = 1 ; FINSI; SI (NON (EXISTE TAB1 <ITRAC)) ; TAB1.<ITRAC = VRAI ; MESS 'Drawings are printed on screen'; FINSI; SI (NON (EXISTE TAB1 <COEFA)) ; TAB1.<COEFA = 5.8E-5 ; FINSI; SI (NON (EXISTE TAB1 <COEFB)) ; TAB1.<COEFB = 5.5 ; FINSI; SI (NON (EXISTE TAB1 <COEFC)) ; TAB1.<COEFC = 4.5E-5 ; FINSI; SI (NON (EXISTE TAB1 <EPS)) ; TAB1.<EPS = 1.E-5 ; FINSI; SI (NON (EXISTE TAB1 <RR)) ; TAB1.<RR = 2.20 ; FINSI; SI (NON (EXISTE TAB1 <RP)) ; MESS 'You must give the value of the large plasma radius'; FINSI; SI (NON (EXISTE TAB1 <HP)) ; TAB1.<HP = 0. ; FINSI; SI (NON (EXISTE TAB1 <IPLASMA)) ; MESS 'You must give the value of the plasma current' ; FINSI; SI (NON (EXISTE TAB1 <INTENS)) ; MESS 'You must give the value of the current in each whorl'; MESS 'of coils'; FINSI; SI (NON (EXISTE TAB1 <LAMB)) ; MESS 'You must give the value of the asymmetrical factor '; MESS 'of the poloidal field'; FINSI; SI (NON (EXISTE TAB1 <THETA0)) ; TAB1.<THETA0 = 0. ; *AM*MESS 'The THETA angle locating the part into the tokamak is : 0.'; FINSI; * * RM attention, ce <ANGPHI0 n a rien a voir avec <ANG_PHI0 * SI (NON (EXISTE TAB1 <ANGPHI0)) ; TAB1.<ANGPHI0 = 0. ; FINSI; SI (NON (EXISTE TAB1 <THETAREF)) ; TAB1.<THETAREF = -90. ; FINSI; SI (NON (EXISTE TAB1 <LAMBQREF)) ; *AM* TAB1.<LAMBQREF = 15.4 /((TAB1.<IPLASMA)**0.5) ; MESS 'You must give the value of the reference decrease length '; FINSI; SI (NON (EXISTE TAB1 <TYPE_CALCUL)) ; MESS 'The option of computation is : AVEC_SHIFT_AVEC_RIPPLE'; FINSI; SI (NON (EXISTE TAB1 <MODEL_CHAMP)) ; MESS 'The poloidal magnetic field model is : SHAFRANOV'; FINSI; SI (NON (EXISTE TAB1 <NBOB)) ; TAB1.<NBOB = 18 ; FINSI; SI (NON (EXISTE TAB1 <NSPI)) ; TAB1.<NSPI = 2028 ; FINSI; SI (NON (EXISTE TAB1 <PLAN)) ; MESS 'You must give the kind of 2D section '; FINSI ; SI (EGA TAB1.<PLAN 'THECONS') ; SI (NON (EXISTE TAB1 <THETA0)) ; MESS 'You must give the THETA angle locating'; FINSI ; SI (NON (EXISTE TAB1 CENTRE_PLASMA)) ; MESS 'You must give the plasma center '; FINSI ; FINSI ; SI (EGA TAB1.<PLAN 'PHICONS') ; SI (NON (EXISTE TAB1 <CENTRE_TORE)) ; MESS 'You must give the tokamak center' ; FINSI ; SI (NON (EXISTE TAB1 <POINT_SUR_AXE_TORE)) ; MESS 'You must give a second point on the tokamak axis'; FINSI ; SI (NON (EXISTE TAB1 <POINT_SUR_OBJET)) ; FINSI ; FINSI ; SI (NON (EXISTE TAB1 LFLUX_EXTE_DESS)) ; TAB1.LFLUX_EXTE_DESS = TAB1.LFLUX_EXTE ; FINSI ; FINSI; SI (NON (EXISTE TAB1 <CENTRE_TORE)) ; MESS 'You must give the tokamak center' ; FINSI ; SI (NON (EXISTE TAB1 <POINT_SUR_AXE_TORE)) ; MESS 'You must give a second point on the tokamak axis'; FINSI ; SI (NON (EXISTE TAB1 <POINT_SUR_OBJET)) ; FINSI ; FINSI ; SI (NON (EXISTE TAB1 <ANG_PHI0)) ; MESS 'You must give the initial toroidal angle '; MESS 'in the tokamak'; FINSI ; SI (NON (EXISTE TAB1 VIEW_P)) ; TAB1.VIEW_P = -1000. 1000. 1000. ; FINSI; FINSI; * *---- norme du champ magnetique toroidal au centre du plasma * rm 24.07.97 BTOR0 = 2.E-7 * TAB1.<NBOB * TAB1.<NSPI * TAB1.<INTENS / TAB1.<RP ; BTOR0 = -2.E-7 * TAB1.<NBOB * TAB1.<NSPI * TAB1.<INTENS / TAB1.<RP ; * FINPROC ; **** @VDEFAUT DEBPROC @VDEFAUT TAB1*TABLE ; * ********************************************************************** * Procedure de preparation de la table TAB1 pour le calcul du profil * * du depot de puissance par la procedure @TOKAFLU. * * On donne ici les valeurs par defaut et on verifie l'existence de * * certains indices importants de la table. Alain MOAL (juillet 1995) * ********************************************************************** * SI (NON (EXISTE TAB1 <IMESS)) ; TAB1.<IMESS = 1 ; FINSI; SI (NON (EXISTE TAB1 <ITRAC)) ; TAB1.<ITRAC = VRAI ; MESS 'Drawings are printed on screen'; FINSI; SI (NON (EXISTE TAB1 <COEFA)) ; TAB1.<COEFA = 5.8E-5 ; FINSI; SI (NON (EXISTE TAB1 <COEFB)) ; TAB1.<COEFB = 5.5 ; FINSI; SI (NON (EXISTE TAB1 <COEFC)) ; TAB1.<COEFC = 4.5E-5 ; FINSI; SI (NON (EXISTE TAB1 <EPS)) ; TAB1.<EPS = 1.E-5 ; FINSI; SI (NON (EXISTE TAB1 <RR)) ; TAB1.<RR = 2.20 ; FINSI; SI (NON (EXISTE TAB1 <RP)) ; MESS 'You must give the value of the large plasma radius'; FINSI; SI (NON (EXISTE TAB1 <HP)) ; TAB1.<HP = 0. ; FINSI; SI (NON (EXISTE TAB1 <IPLASMA)) ; MESS 'You must give the value of the plasma current' ; FINSI; SI (NON (EXISTE TAB1 <INTENS)) ; MESS 'You must give the value of the current in each whorl'; MESS 'of coils'; FINSI; SI (NON (EXISTE TAB1 <LAMB)) ; MESS 'You must give the value of the asymmetrical factor '; MESS 'of the poloidal field'; FINSI; SI (NON (EXISTE TAB1 <THETA0)) ; TAB1.<THETA0 = 0. ; *AM*MESS 'The THETA angle locating the part into the tokamak is : 0.'; FINSI; * * RM attention, ce <ANGPHI0 n a rien a voir avec <ANG_PHI0 * SI (NON (EXISTE TAB1 <ANGPHI0)) ; TAB1.<ANGPHI0 = 0. ; FINSI; SI (NON (EXISTE TAB1 <THETAREF)) ; TAB1.<THETAREF = -90. ; FINSI; SI (NON (EXISTE TAB1 <LAMBQREF)) ; *AM* TAB1.<LAMBQREF = 15.4 /((TAB1.<IPLASMA)**0.5) ; MESS 'You must give the value of the reference decrease length '; FINSI; SI (NON (EXISTE TAB1 <TYPE_CALCUL)) ; MESS 'The option of computation is : AVEC_SHIFT_AVEC_RIPPLE'; FINSI; SI (NON (EXISTE TAB1 <TYPE_DEPOT)) ; MESS 'The heat deposition is : PARALLELE'; FINSI; * RM le 08/12/1998 SI (NON ((EGA TAB1.<TYPE_DEPOT 'PARALLELE') OU (EGA TAB1.<TYPE_DEPOT 'PERPENDICULAIRE'))); FINSI ; SI (NON (EXISTE TAB1 <MODEL_CHAMP)) ; MESS 'The poloidal magnetic field model is : SHAFRANOV'; FINSI; SI (NON (EXISTE TAB1 <NBOB)) ; TAB1.<NBOB = 18 ; FINSI; SI (NON (EXISTE TAB1 <NSPI)) ; TAB1.<NSPI = 2028 ; FINSI; SI (NON (EXISTE TAB1 <PLAN)) ; MESS 'You must give the kind of 2D section '; FINSI ; SI (EGA TAB1.<PLAN 'THECONS') ; SI (NON (EXISTE TAB1 <THETA0)) ; MESS 'You must give the THETA angle locating'; FINSI ; SI (NON (EXISTE TAB1 CENTRE_PLASMA)) ; MESS 'You must give the plasma center '; FINSI ; FINSI ; SI (EGA TAB1.<PLAN 'PHICONS') ; SI (NON (EXISTE TAB1 <CENTRE_TORE)) ; MESS 'You must give the tokamak center' ; FINSI ; SI (NON (EXISTE TAB1 <POINT_SUR_AXE_TORE)) ; MESS 'You must give a second point on the tokamak axis'; FINSI ; SI (NON (EXISTE TAB1 <POINT_SUR_OBJET)) ; FINSI ; FINSI ; SI (NON (EXISTE TAB1 LFLUX_EXTE_DESS)) ; TAB1.LFLUX_EXTE_DESS = TAB1.LFLUX_EXTE ; FINSI ; FINSI; SI (NON (EXISTE TAB1 <CENTRE_TORE)) ; MESS 'You must give the tokamak center' ; FINSI ; SI (NON (EXISTE TAB1 <POINT_SUR_AXE_TORE)) ; MESS 'You must give a second point on the tokamak axis'; FINSI ; SI (NON (EXISTE TAB1 <POINT_SUR_OBJET)) ; FINSI ; FINSI ; SI (NON (EXISTE TAB1 <ANG_PHI0)) ; MESS 'You must give the initial toroidal angle '; MESS 'in the tokamak'; FINSI ; SI (NON (EXISTE TAB1 VIEW_P)) ; TAB1.VIEW_P = -1000. 1000. 1000. ; FINSI; FINSI; * *---- norme du champ magnetique toroidal au centre du plasma * rm 24.07.97 BTOR0 = 2.E-7 * TAB1.<NBOB * TAB1.<NSPI * TAB1.<INTENS / TAB1.<RP ; BTOR0 = -2.E-7 * TAB1.<NBOB * TAB1.<NSPI * TAB1.<INTENS / TAB1.<RP ; * FINPROC ; **** @VDEFJET DEBPROC @VDEFJET TAB1*TABLE ; * ********************************************************************** * Procedure de preparation de la table TAB1 pour le calcul du profil * * du depot de puissance par la procedure @CFPFLU. * * On donne ici les valeurs par defaut et on verifie l'existence de * * certains indices importants de la table. Alain MOAL (Fevrier 2001) * ********************************************************************** * Modif : * * 08/11/01 (A.MOAL) : test sur TAB1.<PUISSANCE_TOTALE et sur * * TAB1.<SENS_REMONTEE * * 27/01/04 (A.MOAL) : ajout de TAB1.<ANG_PHI0 = 0 et * * TAB1.<POINT_SUR_OBJET pour utiliser les memes * * procedures que pour @TOKAFLU * ********************************************************************** * SI (NON (EXISTE TAB1 <IMESS)) ; TAB1.<IMESS = 1 ; FINSI; SI (NON (EXISTE TAB1 <ITRAC)) ; TAB1.<ITRAC = VRAI ; MESS 'Drawings are printed on screen'; FINSI; FINSI; SI (NON (EXISTE TAB1 <CENTRE_TORE)) ; TAB1.<CENTRE_TORE = 0. 0. 0. ; * MESS 'You must give the tokamak center' ; * ERRE '>>>> TAB1.<CENTRE_TORE is missing' ; FINSI ; SI (NON (EXISTE TAB1 <POINT_SUR_AXE_TORE)) ; TAB1.<POINT_SUR_AXE_TORE = 0. 0. 1. ; * MESS 'You must give a second point on the tokamak axis'; * ERRE '>>>> TAB1.<POINT_SUR_AXE_TORE is missing'; FINSI ; *AM*27/01/04 TAB1.<ANG_PHI0 = 0. ; TAB1.<POINT_SUR_OBJET = 1. 0. 0.; FINSI ; SI (NON (EXISTE TAB1 VIEW_P)) ; TAB1.VIEW_P = -1000. 1000. 1000. ; FINSI; FINSI; SI (NON (EXISTE TAB1 <TYPE_DEPOT)) ; TAB1.<TYPE_DEPOT = VRAI ; MESS 'The heat deposition is : PARALLELE'; FINSI; SI (NON (EXISTE TAB1 <CALCUL_INCIDENCE)) ; TAB1.<CALCUL_INCIDENCE = FAUX ; FINSI; SI (NON (EXISTE TAB1 <PUISSANCE_TOTALE)) ; FINSI; SI (NON (EXISTE TAB1 <SENS_REMONTEE)) ; TAB1.<SENS_REMONTEE = 0 ; FINSI; * FINPROC ; **** @VECADA SI ( V_DIM1 EGA 2) ; >VECT1 = VECTEUR <CHP1 <AMPL1 UX UY <MOT1; SINON ; >VECT1 = VECTEUR <CHP1 <AMPL1 UX UY UZ <MOT1 ; FINSI ; FINPROC >VECT1 ; **** @VECGRAD MESS 'ATTENTION PAS ENCORE AU POINT !!!!!!!!!!!!!!!!!!!'; SI (NON (EGA V1 2)) ; FINSI ; S_TOT1 = TAB1.'M_ILLAGE_TOT'; CON_1 = TAB1.'M_IL_CONTOUR'; IZ = 0 ; REPE BOU11 ; IZ = IZ + 1 ; SI ( NON ( EXISTE (TAB1.ZONE_MAT) IZ)) ; QUITTER BOU11 ; FINSI ; MOD_1 = TAB1.DEF_MO.IZ ; MAI_1 = TAB1.ZONE_MAT.IZ ; VK_1 = @EVMAT TAB1.NOM_MAT.IZ 'CONDUCTIVITE' CHT_2 ; FL_1 = VK_1 * GR_1; SI ( IZ EGA 1 ) ; FL_T = FL_1 ; CHN2 = CHN1 ; SINON ; FL_T = FL_T ET FL_1 ; CHN2 = CHN2 ET CHN1 ; FINSI ; C_OLD = CC_1 ; FIN BOU11 ; FL_T = FL_T / CHN2; >VECT1 = VECTEUR FL_T <AMPL1 T,X T,Y <MOT1; FINPROC >VECT1; **** @VERANG DEBPROC @VERANG TAB1*TABLE ; * ******************************************************** * Procedure de creation de la ligne de reference (flux * * normalise dans un fichier issu de PROTEUS) pour * * verification des angles d'incidences. * * Alain MOAL (Mars 2001) * ******************************************************** * * *--------------- VARIABLES D'ENTREE : NOM0 = TAB1.<NOM_FICHIER_F ; *------------------------------------ * OPTI ACQUERIR NOM0 ; *---- lecture du nombre de lignes a lire dans le fichier MESS '@VERANG IS READING 'I' LINES IN FILE 'NOM0 ; * *---- ligne de titre * ACQU R0*FLOTTANT Z0*FLOTTANT DPSI1*FLOTTANT AEFF10*FLOTTANT DDPSI1*FLOTTANT PLEG1*FLOTTANT Q1*FLOTTANT ; * *---- creation du premier point P0 = R0 0. Z0 ; * * ACQU R1*FLOTTANT Z1*FLOTTANT DPSI1*FLOTTANT AEFF10*FLOTTANT DDPSI1*FLOTTANT PLEG1*FLOTTANT Q1*FLOTTANT ; P1 = R1 0. Z1 ; * LIG1 = P0 D 1 P1 ; * *---- boucle sur les I-1 autres lignes du tableau REPETER BOUC1 (I-2) ; ACQU R1*FLOTTANT Z1*FLOTTANT DPSI1*FLOTTANT AEFF10*FLOTTANT DDPSI1*FLOTTANT PLEG1*FLOTTANT Q1*FLOTTANT ; P1 = R1 0. Z1 ; LIG1 = LIG1 D 1 P1 ; FIN BOUC1 ; * *---- calcul des angles d'incidences TAB1.<MAILLAGE_B = LIG1 ; BR BZ BPHI = @MAGNB TAB1 ; * *AM*11/09/01*BX = BR * (COS PHI) + (BPHI * (SIN PHI)); *AM*11/09/01*BY = BR * (SIN PHI) - (BPHI * (COS PHI)); BX = BR * (COS PHI) - (BPHI * (SIN PHI)); BY = BR * (SIN PHI) + (BPHI * (COS PHI)); * *---- Calcul des cosinus B_NORM = ((BX*BX) + (BY*BY) + (BZ*BZ))**0.5 ; COSR0 = BR / B_NORM ; COSZ0 = BZ / B_NORM ; COSP0 = BPHI / B_NORM ; * TITRE '@VERANG : COSINUS OF THE ANGLE BETWEEN b AND r AXIS' ; DESS EVOL1 ; LIST EVOL1 ; * TITRE '@VERANG : COSINUS OF THE ANGLE BETWEEN b AND z AXIS' ; DESS EVOL1 ; LIST EVOL1 ; * TITRE '@VERANG : COSINUS OF THE ANGLE BETWEEN b AND phi AXIS' ; DESS EVOL1 ; LIST EVOL1 ; * * FINPROC ; DEBPROC @VISIN TAB1*TABLE ; * ***************************************************************** * Procedure de visualisation de l'objet modelise positionne par * * rapport au plasma. Cette procedure ne fonctionne qu'en 3D. * * Alain MOAL (Aout 1995) * ***************************************************************** * * *--------------- VARIABLES D'ENTREE : MAIL0 = TAB1.<MAILLAGE ; CP = TAB1.'CENTRE_PLASMA' ; PT = TAB1.'PT_TGPLASMA' ; THETA0 = TAB1.<THETA0 ; RHO0 = TAB1.<RHO0 ; RP = TAB1.<RP ; *------------------------------------ * FINSI ; * *---- creation d'une nouvelle geometrie MAIL0V dans le repere local *---- - l'origine O est placee au point tangent au plasma *---- - l'axe OY est dirige vers le centre du plasma * VECT0 = CP MOINS PT ; * *---- verification de la valeur du petit rayon du plasma *---- verification que cette valeur est la meme que celle de TAB1.<RHO0 SI (EXISTE TAB1 <RHO0) ; SI ((ABS ((RHO0 - TAB1.<RHO0)/RHO0)) > 1.E-4) ; FINSI ; FINSI ; * P1 = 0. 0. 0. ; P2 = 0. 0. 1. ; VTRANS = PT MOINS P1 ; SI (VY EGA 0.) ; SI (VX EGA 0.) ; ANG1 = 0. ; FINSI ; SI (VX > 0.) ; ANG1 = 90. ; FINSI ; SI (VX < 0.) ; ANG1 = -90. ; FINSI ; SINON ; ANG1 = ATG VX VY ; FINSI ; * * VX1 = VX * (COS ANG1) - (VY * (SIN ANG1)) ; VY1 = VX * (SIN ANG1) + (VY * (COS ANG1)) ; VZ1 = VZ ; * SI (VY1 EGA 0.) ; SI (VZ1 EGA 0.) ; ANG2 = 0. ; FINSI ; SI (VZ1 > 0.) ; ANG2 = -90. ; FINSI ; SI (VZ1 < 0.) ; ANG2 = 90. ; FINSI ; SINON ; ANG2 = -1.* (ATG VZ1 VY1) ; FINSI ; * P1 = 0. 0. 0. ; P2 = 1. 0. 0. ; * *---- creation des axes du repere local : *---- - l'origine O est placee au point tangent au plasma *---- - l'axe OY est dirige vers le centre du plasma *---- avec OX en bleu, OY en blanc, OZ en rouge OB1 = 0. 0. 0. ; OB2 = .1 0. 0. ; OB3 = 0. .1 0. ; OB4 = 0. 0. .1 ; MAIL0V = MAIL0V ET LX ET LY ET LZ ; *TRACE (1000. -500. 1000.) FACE CACH MAIL0V ; * * ---- visualisation de la structure etudiee dans le tore ABS1 = RHO0 * (SIN THETA0) * -1. ; ABS2 = RHO0 * (COS THETA0) + RHO0 ; ABS3 = RP * (COS THETA0) + RHO0 ; ABS4 = RP * (SIN THETA0) ; ABS5 = RHO0 * (SIN THETA0) ; ABS6 = RHO0 * (COS(70.+THETA0)) + RHO0 ; ABS7 = RHO0 * (SIN(70.+THETA0)) ; ABS8 = RHO0 * (COS(70.-THETA0)) + RHO0 ; ABS9 = RHO0 * (SIN(70.-THETA0)) * -1. ; * CPLASMA = 0. RHO0 0. ; CTORE = 0. ABS2 ABS4 ; CAUX1 = 0. ABS6 ABS7 ; CAUX2 = 0. ABS8 ABS9 ; CAUX3 = 0. ABS2 ABS5 ; * MAIL0V = MAIL0V ET LX ET LY ET LZ ET LIGPLAS ; *TRACE (1000. -500. 1000.) FACE CACH MAIL0V; * * ---- MENAGE ; ANGROT1 = -1.* THETA0 ; VECT1 = 0. (-1.*RHO0*(COS THETA0) - RP) (RHO0*(SIN THETA0)) ; CP1 = RP 0. 0. ; CP2 = 0. 0. 1. ; MAIL0V = MAIL0V ET LIGTORE ; MENAGE ; * *---- multiplication des aiguilles sur le plancher *aig* MAIL0V = MAIL0V ET (MAIL0V TOUR 0.7 OB1 OB4) *aig* ET (MAIL0V TOUR 1.4 OB1 OB4) *aig* ET (MAIL0V TOUR 2.1 OB1 OB4) *aig* ET (MAIL0V TOUR 2.8 OB1 OB4) ; *aig* MENAGE ; *aig* MAIL0V = MAIL0V ET (MAIL0V TOUR 3.5 OB1 OB4) ; *aig* MENAGE ; * TITRE 'POSITION OF THE MODELISED STRUCTURE IN THE TORE' ; FINPROC ; DEBPROC @VISIN TAB1*TABLE ; * ***************************************************************** * Procedure de visualisation de l'objet modelise positionne par * * rapport au plasma. Cette procedure ne fonctionne qu'en 3D. * * Alain MOAL (Aout 1995) * ***************************************************************** * * *--------------- VARIABLES D'ENTREE : MAIL0 = TAB1.<MAILLAGE ; CP = TAB1.'CENTRE_PLASMA' ; PT = TAB1.'PT_TGPLASMA' ; THETA0 = TAB1.<THETA0 ; RHO0 = TAB1.<RHO0 ; RP = TAB1.<RP ; *------------------------------------ * FINSI ; * *---- creation d'une nouvelle geometrie MAIL0V dans le repere local *---- - l'origine O est placee au point tangent au plasma *---- - l'axe OY est dirige vers le centre du plasma * VECT0 = CP MOINS PT ; * *---- verification de la valeur du petit rayon du plasma *---- verification que cette valeur est la meme que celle de TAB1.<RHO0 SI (EXISTE TAB1 <RHO0) ; SI ((ABS ((RHO0 - TAB1.<RHO0)/RHO0)) > 1.E-4) ; FINSI ; FINSI ; * P1 = 0. 0. 0. ; P2 = 0. 0. 1. ; VTRANS = PT MOINS P1 ; SI (VY EGA 0.) ; SI (VX EGA 0.) ; ANG1 = 0. ; FINSI ; SI (VX > 0.) ; ANG1 = 90. ; FINSI ; SI (VX < 0.) ; ANG1 = -90. ; FINSI ; SINON ; ANG1 = ATG VX VY ; FINSI ; * * VX1 = VX * (COS ANG1) - (VY * (SIN ANG1)) ; VY1 = VX * (SIN ANG1) + (VY * (COS ANG1)) ; VZ1 = VZ ; * SI (VY1 EGA 0.) ; SI (VZ1 EGA 0.) ; ANG2 = 0. ; FINSI ; SI (VZ1 > 0.) ; ANG2 = -90. ; FINSI ; SI (VZ1 < 0.) ; ANG2 = 90. ; FINSI ; SINON ; ANG2 = -1.* (ATG VZ1 VY1) ; FINSI ; * P1 = 0. 0. 0. ; P2 = 1. 0. 0. ; * *---- creation des axes du repere local : *---- - l'origine O est placee au point tangent au plasma *---- - l'axe OY est dirige vers le centre du plasma *---- avec OX en bleu, OY en blanc, OZ en rouge OB1 = 0. 0. 0. ; OB2 = .1 0. 0. ; OB3 = 0. .1 0. ; OB4 = 0. 0. .1 ; MAIL0V = MAIL0V ET LX ET LY ET LZ ; *TRACE (1000. -500. 1000.) FACE CACH MAIL0V ; * * ---- visualisation de la structure etudiee dans le tore ABS1 = RHO0 * (SIN THETA0) * -1. ; ABS2 = RHO0 * (COS THETA0) + RHO0 ; ABS3 = RP * (COS THETA0) + RHO0 ; ABS4 = RP * (SIN THETA0) ; ABS5 = RHO0 * (SIN THETA0) ; ABS6 = RHO0 * (COS(70.+THETA0)) + RHO0 ; ABS7 = RHO0 * (SIN(70.+THETA0)) ; ABS8 = RHO0 * (COS(70.-THETA0)) + RHO0 ; ABS9 = RHO0 * (SIN(70.-THETA0)) * -1. ; * CPLASMA = 0. RHO0 0. ; CTORE = 0. ABS2 ABS4 ; CAUX1 = 0. ABS6 ABS7 ; CAUX2 = 0. ABS8 ABS9 ; CAUX3 = 0. ABS2 ABS5 ; * MAIL0V = MAIL0V ET LX ET LY ET LZ ET LIGPLAS ; *TRACE (1000. -500. 1000.) FACE CACH MAIL0V; * * ---- MENAGE ; ANGROT1 = -1.* THETA0 ; VECT1 = 0. (-1.*RHO0*(COS THETA0) - RP) (RHO0*(SIN THETA0)) ; CP1 = RP 0. 0. ; CP2 = 0. 0. 1. ; MAIL0V = MAIL0V ET LIGTORE ; MENAGE ; * *---- multiplication des aiguilles sur le plancher *aig* MAIL0V = MAIL0V ET (MAIL0V TOUR 0.7 OB1 OB4) *aig* ET (MAIL0V TOUR 1.4 OB1 OB4) *aig* ET (MAIL0V TOUR 2.1 OB1 OB4) *aig* ET (MAIL0V TOUR 2.8 OB1 OB4) ; *aig* MENAGE ; *aig* MAIL0V = MAIL0V ET (MAIL0V TOUR 3.5 OB1 OB4) ; *aig* MENAGE ; * TITRE '@VISIN : MODELISED STRUCTURE IN THE TORE' ; FINPROC ; DEBPROC @VISRES TAB1*TABLE ; * ****************************************************************** * Procedure de visualisation des resultats d'un calcul permanent * * en 3D. Alain MOAL (aout-sept 1995) * ****************************************************************** * * ITER = 1 ; *--------------- VARIABLES D'ENTREE : MAIL0 = TAB1.<MAILLAGE ; LIGCONV = TAB1.LFLUX_CONV_DESS ; SURFCONV = TAB1.LFLUX_CONV ; SURFEXTE = TAB1.LFLUX_EXTE ; TE1 = TAB1.ITER ; VTETA1 = TAB1.RESUTHER.'VALEUR_TETA'.ITER ; HCONV1 = TAB1.RESUTHER.COEFECHANGE.ITER ; PROFIL0 = TAB1.V_VPAT1 ; MODEL0 = TAB1.MODELF ; LIG0 = TAB1.LFLUX_EXTE_DESS ; MAXSOFL = TAB1.MAX_SOFL ; DMAQ0 = TAB1.D_MAQUETTE ; NX = TAB1.C_COTETF1 ; NY = TAB1.C_SITETF1 ; NZ = TAB1.C_COS3F1 ; VOLMAT1 = TAB1.ZONE_MAT.1 ; VOLMAT2 = TAB1.ZONE_MAT.2 ; VOLMAT3 = TAB1.ZONE_MAT.3 ; ANGINCI = TAB1.<ANGINCI; *TEST*VBVN = TAB1.<VBVN ; SINON ; FINSI ; OEIL0 = TAB1.VIEW_P ; SINON ; FINSI ; *------------------------------------ * *---- Table de visualisation TAB2 = TABLE ; * FINSI ; * FLU1 = FLU0 * PROFIL0 ; * *---- Trace du flux incident, de la temperature et de l'angle d'incidence *---- le long d'une ligne en fonction de l'abscisse curviligne DESSIN (EVFLUI ET EVTEMI) MIMA LEGE TAB2 ; TITRE ' @VISRES : ANGLE BETWEEN B AND N (degree)'; DESSIN EVANGI MIMA ; *TEST*TITRE ' @VISRES : VBVN '; *TEST*EVVBVN = EVOL JAUN CHPO VBVN SCAL LIG0 ; *TEST*DESSIN EVVBVN MIMA ; * *---- Trace de l'evolution du flux de convection le long d'une ligne SINON ; VTETA = VTETA1 ; FINSI ; * *---- flux de convection sur la ligne et temperatures sur la ligne FLUCONV = HCONV * (VTETA0 - VTETA) ; DESSIN (EVFLUC ET EVTEMC) MIMA LEGE TAB2 ; * *---- temperatures sur la ligne *TITRE '@VISRES : WALL TEMPERATURE (C)' ; *DESSIN (EVOL TURQ CHPO TEMP1 SCAL LIGCONV) MIMA ; * *---- flux de convection sur la surface de convection FLUCONV0 = HCONV * (TE1 - VTETA) ; * *---- Calcul du facteur de concentration et de la puissance extraite * *---- Trace en coupe des isovaleurs de temperature et des vecteurs flux *---- incident et de convection CHPT = @ET (@ET CHPX CHPY) CHPZ ; AMPLV1 = 10. * DMAQ0 / (2. * MAXSOFL) ; VECFLUI = @VECADA CHPT (-1. * AMPLV1) 'ROUGE' ; *FX = FLU1 * NX; *FY = FLU1 * NY; *FZ = FLU1 * NZ; *VECFLUI = @CVECT FX FY FZ SURFEXTE VERT ; TITRE '@VISRES : ISOTHERM IN SECTION' ; * *---- Trace des isovaleurs de temperature sans le maillage TITRE '@VISRES : ISOTHERM, CONVECTED POWER 'PUI1' W'; ARET1 = ARETE VOLMAT1 ; ARET2 = ARETE VOLMAT2 ; ARET3 = ARETE VOLMAT3 ; SINON ; ARET1 = ARETE VOLMAT1 40.; ARET2 = ARETE VOLMAT2 40.; ARET3 = ARETE VOLMAT3 40.; FINSI ; ARET0 = ARET1 ET ARET2 ET ARET3 ; * *---- Messages MESS ' CONCENTRATION FACTOR .................: ' FACT0 ; * FINPROC ; **** @VNORM3D DEBPROC @VNORM3D <MAIL1*MAILLAGE <MAILD_1*MAILLAGE NIVEAU1/ENTIER; * * !!! R. MITTEAU !!! attention, procedure standard * * un pointeur dans /CASTEM9X/procedures pointe sur cette procedure * pour les mises a jour * SI (NON (EXISTE NIVEAU1)); SINON; SI (NIVEAU1 >EG 4); FINSI; FINSI; FX = 'FR' ; FY = 'FZ' ; FINSI ; SI ( V_DIM1 EGA 2) ; NORMDP1 = ( (XFF1**2) + (YFF1**2) )**0.5; >COSDIR1 = XFF1 / NORMDP1 ; >COSDIR2 = YFF1 / NORMDP1 ; >COSDIR3 = >COSDIR1 * 0. ; SINON ; NORMDP1 = ( (XFF1**2) + (YFF1**2) + (ZFF1**2) )**0.5 ; >COSDIR1 = XFF1 / NORMDP1 ; >COSDIR2 = YFF1 / NORMDP1 ; >COSDIR3 = ZFF1 / NORMDP1 ; MASQ1 = SENS1 MASQUE INFERIEUR 0. ; MASQ2 = SENS1 MASQUE EGSUPE 0. ; MASQ3 = @ET (-1. * MASQ1) MASQ2 ; >COSDIR1 = >COSDIR1 * MASQ3 ; >COSDIR2 = >COSDIR2 * MASQ3 ; >COSDIR3 = >COSDIR3 * MASQ3 ; FINSI ; SI (NON (EXISTE NIVEAU1)); SINON; SI (NIVEAU1 >EG 4); FINSI; FINSI; FINPROC >COSDIR1 >COSDIR2 >COSDIR3 ; **** @VNORMAL DEBPROC VNORMAL <MAIL1*MAILLAGE <MAILD_1*MAILLAGE ; >TETHA1 = ATG YFF1 ( XFF1 + 1.E-12) ; >COS1 = ( COS >TETHA1 ) * 1. ; >SIN1 = ( SIN >TETHA1 ) * 1. ; FINPROC >TETHA1 >COS1 >SIN1 ; *********************************************** * Test de ITRC * * Alain MOAL - CS SI (Janvier 2004) * *********************************************** * * --- options de calcul * *opti trac x; *+++++++++++++++++++++++++++++++++++++* * MAILLAGE * *+++++++++++++++++++++++++++++++++++++* * *----------------------------* * MAILLAGE OMBRE * *----------------------------* * parametres de la geometrie: d1 = 50.e-3; d2 = 40.e-3; d3 = 10.e-3; dist1 = 0.05; dist2 = 0.01; * n1 = 10; n2 = 5; n3 = 1; * * creation des points * OEIL0 = 1000. -1000. 1000. ; v1 = 0. (-1.*d1) 0. ; v2 = 0. 0. d2 ; a1 = 0. 2.4 (-0.72) ; a4 = a3 moins v1 ; rep1 = ((0. 0. 0.) d 1 (3. 0. 0.)) et ((0. 0. 0.) d 1 (0. 3. 0.)) et ((0. 0. 0.) d 1 (0. 0. 3.)); * * creation des lignes * l1 = a1 d n1 a2 ; l2 = a2 d n2 a3 ; l3 = a3 d n1 a4 ; l4 = a4 d n2 a1 ; * * creation des surfaces * st_ombre = daller l1 l2 l3 l4 plan ; *trac st_ombre ; * * creation des volumes * *trac v_ombre ; * *--------------------* * MAILLAGE OMBRANT *--------------------* * vect1 = dist1 0. dist2 ; si graph; finsi; * --- Calcul de l'ombrage * tab1 = table ; * tab1.<ITRAC = vrai ; * *---- position dans la machine * tab1.<CENTRE_TORE = (0. 0. 0.) ; tab1.<POINT_SUR_AXE_TORE = (0. 0. 2.) ; lig1 = tab1.<CENTRE_TORE d 1 tab1.<POINT_SUR_AXE_TORE; tab1.<POINT_SUR_OBJET = a1 ; tab1.<ANG_PHI0 = 0. ; tab1.<RP = 2.40 ; tab1.<RHO0 = 720.E-3 ; tab1.<HP = 0. ; *---- parametres plasma tab1.<IPLASMA = -1.2E6 ; tab1.<INTENS = 1.1E3 ; tab1.<LAMB = 0.0 ; tab1.<LAMBQREF = 10.E-3 ; * * --- passage des maillages * tab1.<maillage = vt_ombre ; tab1.lflux_exte = st_ombre ; * remplissage de tab1 tab1.<S_OMBRE = st_ombre ; tab1.<V_OMBRE_N = vt_ombre ; tab1.<S_OMBRE_N = st_ombre ; tab1.<S_OMBRANT = s_ombre ; tab1.<V_OMBRANT_N = v_ombre ; tab1.<S_OMBRANT_N = s_ombre ; tab1.<METHODE_REMONTEE = 1 ; tab1.<DIST_SANS_TEST = 0.001 ; tab1.<PAS_SANS_TEST = 0.001 ; tab1.<DIST_AVEC_TEST = 0.1 ; tab1.<PAS_AVEC_TEST = 0.005 ; TAB1.<REMONTEE = TABLE ; TAB1.<REMONTEE.<POINT = TABLE ; @ombrage tab1; TITRE 'LIGNES DE CHAMP' ; si graph; TITRE 'CONNECTION DISTANCE' ; TITRE 'OMBRE EN BLEU'; finsi; *---- validation du resultat PO1 = 0.0 2.37 -0.72 ; PO2 = 0.0 2.365 -0.688 ; SI (((VAL0 >EG 0.10099) ET (VAL0 <EG 0.10101)) ET ((VAL1 >EG 0.050219) ET (VAL1 <EG 0.050221))); MESS 'RESULTAT CORRECT'; SINON ; FINSI ; *opti donn 5 ; fin ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales