$$$$ @CARENE * @CARENE PROCEDUR CB215821 15/12/02 21:15:01 8719 ************************************************************************ *----------------------------------------------------------------------- * * PROCEDURE CARENE (ECRITE PAR MR MALEYRAN ) MLN/CERN JANVIER 91 * * * CONTRUCTION D'UNE COQUE LISSEE PAR LA METHODE D'ENERGIE MINIMUM DE * DEFORMATION (ECRITE PAR MR MALEYRAN * *----------------------------------------------------------------------- * * ENTREE COU EST UNE TABLE TELLE QUE: * * * * COU.1 MAILLAGE DE TYPE LIGNE SEG2 REPRESENTANT LE COUPLE * INITIAL DE LA COQUE. * (COU_1 EST LE MAITRE_COUPLE DANS UN PLAN DONT LA NORMALE EST * LA DIRECTION PRINCIPALE DES LISSES * * COU.2 MAILLAGE DE TYPE LIGNE SEG2 REPRESENTANT LE COUPLE * FINAL DE LA COQUE. * (COU.2 EST LE COUPLE FINAL QUELCONQUE DANS L'ESPACE 3D) * * COU.N MAILLAGE DE TYPE LIGNE SEG2 REPRESENTANT LE COUPLE * INTERMEDIAIRE DE RANG N DE LA COQUE. * (COU.3 EST UN COUPLE INTERMEDIAIRDE DANS UN PLAN PARALLELE * A YOZ C'EST A DIRE OX = CONSTANT. OX DOIT ETRE UN MULTIPLE * DE N_COU) * (COU.1 COU.2 (COU.3) DOIVENT AVOIR LE MEME NOMBRE DE * POINTS ET ETRE PARCOURUES DANS LE MEME SENS). * * ROT_1 LISTREEL DES ROTATIONS IMPOSEES AU POINT * INITIAL DE COU.1 * (LISTREEL DE DIMENSION 3 DONT LES VALEURS PEUVENT ETRE : * 0. < RX, RY, RZ <= 45. EN DEGRES (ROTATIONS IMPOSEES) * RX, RY, RZ, > 45. (ROTATIONS LIBRES)) * * ROT_2 LISTREEL DES ROTATIONS IMPOSEES AU POINT * FINAL DE COU.2 * (LISTREEL DE DIMENSION 3 DONT LES VALEURS PEUVENT ETRE : * 0. < RX, RY, RZ <= 45. EN DEGRES (ROTATIONS IMPOSEES) * RX, RY, RZ, > 45. (ROTATIONS LIBRES)) * * N_COU FLOTTANT (DISTANCE ENTRE ELEMENTS DE LA COQUE) * * AXE_P ENTIER (DIRECTION DES LISSES) * 1 : SUIVANT OX * 2 : SUIVANT OY * 3 : SUIVANT OZ * *----------------------------------------------------------------------- * * SORTIE * * CARE_1 CARENE LISSEE * LIS TABLE DES LISSES * COUI table des couples * *----------------------------------------------------------------------- 'DEBP' @CARENE COU*'TABLE' ROT_1*'LISTREEL' ROT_2*'LISTREEL' N_COU*'FLOTTANT' AXE_P*'ENTIER' ; 'OPTI' 'DIME' 3 'ELEM' 'QUA4' 'MODE' 'TRIDIM' ; 'TITRE' ' LISSAGE DE CARENE (Energie de deform. mini.)' ; X = (0. 0. 0.) 'DROI' 1 ((N_COU * 5.) 0. 0.) ; Y = (0. 0. 0.) 'DROI' 1 (0. (N_COU * 5.) 0.) ; Z = (0. 0. 0.) 'DROI' 1 (0. 0. (N_COU * 5.)) ; X = X 'COUL' 'ROUG' ; Y = Y 'COUL' 'ROUG' ; Z = Z 'COUL' 'ROUG' ; O1 = 1E5 1E5 1E5 ; NCO = 'NBEL' COU.1 ; COU_1X = 'COOR' AXE_P COU.1 ; COU_2X = 'COOR' AXE_P COU.2 ; 'SI' ((MAXI COU_2X) < 0.) ; COE_1 = -1. ; 'SINON' ; COE_1 = 1. ; 'FINSI' ; COU_DX = (ABS COU_2X) - (ABS COU_1X) ; MAX_DX = 'MAXI' COU_DX ; NLI = (MAX_DX / N_COU) ; NLIE = 'ENTI' NLI ; 'SI' ((NLI - NLIE) < (N_COU / 1000.)) ; NLIE = NLIE ; 'SINON' ; NLIE = NLIE + 1 ; 'FINSI' ; I = 0 ; LIS = 'TABLE' ; BLO = 'TABLE' ; DIP = 'TABLE' ; 'REPETE' BOU_1 (NCO + 1) ; I = I + 1 ; P1X P1Y P1Z = 'COOR' (COU.1 'POIN' I) ; P2X P2Y P2Z = 'COOR' (COU.2 'POIN' I) ; * * LES LISSES SONT SUR OX * 'SI' ('EGA' AXE_P 1) ; * P12X = (ABS P2X) - (ABS P1X) ; N12 = (P12X / N_COU) ; N12E = 'ENTI' N12 ; 'SI' (N12E > 0) ; 'SI' ((N12 - N12E) < (N_COU / 1000.)) ; N12E = N12E ; MAI_1 = (P1X 0. 0.) DROI N12E (P2X 0. 0.) ; 'SINON' ; P2I = N12E * N_COU * COE_1 ; N12E = N12E + 1 ; MAI_1 = (P1X 0. 0.) DROI (N12E - 1) (P2I 0. 0.) DROI 1 (P2X 0. 0.) ; 'FINSI' ; 'SINON' ; MAI_1 = (P1X 0. 0.) DROI 1 (P2X 0. 0.) ; 'FINSI' ; NEI = 'NBEL' MAI_1 ; DEI = NLIE - NEI ; 'SI' ('EGA' DEI 0) ; 'SINON' ; INC1 = N_COU / 1000. ; * INC1 = 0. MAI_1 = MAI_1 'DROI' DEI ((P2X + INC1) 0. 0.) ; 'FINSI' ; J = 1 ; BLO.J = 'BLOQ' 'UX' (MAI_1 'POIN' 1) ; DIP.J = 'DEPI' BLO.J 0. ; J = J + 1 ; BLO.J = 'BLOQ' 'UY' (MAI_1 'POIN' 1) ; DIP.J = 'DEPI' BLO.J P1Y; J = J + 1 ; BLO.J = 'BLOQ' 'UZ' (MAI_1 'POIN' 1) ; DIP.J = 'DEPI' BLO.J P1Z ; J = J + 1 ; BLO.J = 'BLOQ' 'UX' (MAI_1 'POIN' 'FINA') ; DIP.J = 'DEPI' BLO.J 0. ; J = J + 1 ; BLO.J = 'BLOQ' 'UY' (MAI_1 'POIN' 'FINA') ; DIP.J = 'DEPI' BLO.J P2Y; J = J + 1 ; BLO.J = 'BLOQ' 'UZ' (MAI_1 'POIN' 'FINA') ; DIP.J = 'DEPI' BLO.J P2Z ; K = 'DIME' COU ; 'SI' (K > 2) ; CO1 = K - 2 ; L = 2 ; 'REPE' BOU_3 CO1 ; L = L + 1 ; P3X P3Y P3Z = 'COOR' (COU.L 'POIN' I) ; DENS N_COU ; LL1 = (P1X 0. 0.) DROI (P3X 0. 0.) ; NL1 = 'NBNO' LL1 ; J = J + 1 ; BLO.J = 'BLOQ' 'UX' (MAI_1 'POIN' NL1) ; DIP.J = 'DEPI' BLO.J 0. ; J = J + 1 ; BLO.J = 'BLOQ' 'UY' (MAI_1 'POIN' NL1) ; DIP.J = 'DEPI' BLO.J P3Y; J = J + 1 ; BLO.J = 'BLOQ' 'UZ' (MAI_1 'POIN' NL1) ; DIP.J = 'DEPI' BLO.J P3Z ; 'FIN' BOU_3 ; 'FINSI' ; * 'FINSI'; * * LES LISSES SONT SUR OY * 'SI' ('EGA' AXE_P 2) ; * P12Y = (ABS P2Y) - (ABS P1Y) ; N12 = (P12Y / N_COU) ; N12E = 'ENTI' N12 ; 'SI' (N12E > 0) ; 'SI' ((N12 - N12E) < (N_COU / 1000.)) ; N12E = N12E ; MAI_1 = (0. P1Y 0.) DROI N12E (0. P2Y 0.) ; 'SINON' ; P2I = N12E * N_COU * COE_1 ; N12E = N12E + 1 ; MAI_1 = (0. P1Y 0.) DROI (N12E - 1) (0. P2I 0.) DROI 1 (0. P2Y 0.) ; 'FINSI' ; 'SINON' ; MAI_1 = (0. P1Y 0.) DROI 1 (0. P2Y 0.) ; 'FINSI' ; NEI = 'NBEL' MAI_1 ; DEI = NLIE - NEI ; 'SI' ('EGA' DEI 0) ; 'SINON' ; INC1 = N_COU / 1000. ; MAI_1 = MAI_1 'DROI' DEI (0. (P2Y + INC1) 0.) ; 'FINSI' ; J = 1 ; BLO.J = 'BLOQ' 'UX' (MAI_1 'POIN' 1) ; DIP.J = 'DEPI' BLO.J P1X; J = J + 1 ; BLO.J = 'BLOQ' 'UY' (MAI_1 'POIN' 1) ; DIP.J = 'DEPI' BLO.J 0. ; J = J + 1 ; BLO.J = 'BLOQ' 'UZ' (MAI_1 'POIN' 1) ; DIP.J = 'DEPI' BLO.J P1Z ; J = J + 1 ; BLO.J = 'BLOQ' 'UX' (MAI_1 'POIN' 'FINA') ; DIP.J = 'DEPI' BLO.J P2X; J = J + 1 ; BLO.J = 'BLOQ' 'UY' (MAI_1 'POIN' 'FINA') ; DIP.J = 'DEPI' BLO.J 0. ; J = J + 1 ; BLO.J = 'BLOQ' 'UZ' (MAI_1 'POIN' 'FINA') ; DIP.J = 'DEPI' BLO.J P2Z ; K = 'DIME' COU ; 'SI' (K > 2) ; CO1 = K - 2 ; L = 2 ; 'REPE' BOU_3 CO1 ; L = L + 1 ; P3X P3Y P3Z = 'COOR' (COU.L 'POIN' I) ; DENS N_COU ; LL1 = (0. P1Y 0.) DROI (0. P3Y 0.) ; NL1 = 'NBNO' LL1 ; J = J + 1 ; BLO.J = 'BLOQ' 'UX' (MAI_1 'POIN' NL1) ; DIP.J = 'DEPI' BLO.J P3X; J = J + 1 ; BLO.J = 'BLOQ' 'UY' (MAI_1 'POIN' NL1) ; DIP.J = 'DEPI' BLO.J 0. ; J = J + 1 ; BLO.J = 'BLOQ' 'UZ' (MAI_1 'POIN' NL1) ; DIP.J = 'DEPI' BLO.J P3Z ; 'FIN' BOU_3 ; 'FINSI' ; * 'FINSI' ; * * LES LISSES SONT SUR OZ * 'SI' ('EGA' AXE_P 3) ; * P12Z = (ABS P2Z) - (ABS P1Z) ; N12 = (P12Z / N_COU) ; N12E = 'ENTI' N12 ; 'SI' (N12E > 0) ; 'SI' ((N12 - N12E) < (N_COU / 1000.)) ; N12E = N12E ; MAI_1 = (0. 0. P1Z) DROI N12E (0. 0. P2Z) ; 'SINON' ; P2I = N12E * N_COU * COE_1 ; N12E = N12E + 1 ; MAI_1 = (0. 0. P1Z) DROI (N12E - 1) (0. 0. P2I) DROI 1 (0. 0. P2Z) ; 'FINSI' ; 'SINON' ; MAI_1 = (0. 0. P1Z) DROI 1 (0. 0. P2Z) ; 'FINSI' ; NEI = 'NBEL' MAI_1 ; DEI = NLIE - NEI ; 'SI' ('EGA' DEI 0) ; 'SINON' ; INC1 = N_COU / 1000. ; MAI_1 = MAI_1 'DROI' DEI (0. 0. ( P2Z + INC1)) ; 'FINSI' ; J = 1 ; BLO.J = 'BLOQ' 'UX' (MAI_1 'POIN' 1) ; DIP.J = 'DEPI' BLO.J P1X; J = J + 1 ; BLO.J = 'BLOQ' 'UY' (MAI_1 'POIN' 1) ; DIP.J = 'DEPI' BLO.J P1Y; J = J + 1 ; BLO.J = 'BLOQ' 'UZ' (MAI_1 'POIN' 1) ; DIP.J = 'DEPI' BLO.J 0. ; J = J + 1 ; BLO.J = 'BLOQ' 'UX' (MAI_1 'POIN' 'FINA') ; DIP.J = 'DEPI' BLO.J P2X; J = J + 1 ; BLO.J = 'BLOQ' 'UY' (MAI_1 'POIN' 'FINA') ; DIP.J = 'DEPI' BLO.J P2Y; J = J + 1 ; BLO.J = 'BLOQ' 'UZ' (MAI_1 'POIN' 'FINA') ; DIP.J = 'DEPI' BLO.J 0. ; K = 'DIME' COU ; 'SI' (K > 2) ; CO1 = K - 2 ; L = 2 ; 'REPE' BOU_3 CO1 ; L = L + 1 ; P3X P3Y P3Z = 'COOR' (COU.L 'POIN' I) ; DENS N_COU ; LL1 = (0. 0. P1Z) DROI (0. 0. P3Z) ; NL1 = 'NBNO' LL1 ; J = J + 1 ; BLO.J = 'BLOQ' 'UX' (MAI_1 'POIN' NL1) ; DIP.J = 'DEPI' BLO.J P3X; J = J + 1 ; BLO.J = 'BLOQ' 'UY' (MAI_1 'POIN' NL1) ; DIP.J = 'DEPI' BLO.J P3Y; J = J + 1 ; BLO.J = 'BLOQ' 'UZ' (MAI_1 'POIN' NL1) ; DIP.J = 'DEPI' BLO.J 0. ; 'FIN' BOU_3 ; 'FINSI' ; * 'FINSI' ; * ROT1 = 'EXTR' ROT_1 1 ; ROT2 = 'EXTR' ROT_1 2 ; ROT3 = 'EXTR' ROT_1 3 ; COE = PI / 180. ; 'SI' (ROT1 '