$$$$ @CLPC * @CLPC PROCEDUR PV 19/01/24 21:15:01 10083 *23456789123456789123456789123456789123456789123456789123456789123456789 **************************************************** **************************************************** * * PROCEDURE POUR CONDITIONS AUX LIMITES * * PERIODIQUE EN CONTRAINTE IMPOSE * * L.GELEBART, G. TREGO 10/06 **************************************************** ***************************************************** DEBPROC @CLPC MAIL0*MAILLAGE CONT0*TABLE; SXX = CONT0 . 1; SYY = CONT0 . 2; SZZ = CONT0 . 3; SXY = CONT0 . 4; SXZ = CONT0 . 5; SYZ = CONT0 . 6; MOD0 = MODE MAIL0 MECANIQUE ELASTIQUE; * * Identification des points et surfaces exterieures * pour application des CL *===================================================== ENVE0 = ENVE MAIL0; elim0 = 1.e-4; ENVE_PT0 = CHANGE ENVE0 POI1; XMAX = MAXI (COOR 1 ENVE0);XMIN = MINI (COOR 1 ENVE0); YMAX = MAXI (COOR 2 ENVE0);YMIN = MINI (COOR 2 ENVE0); ZMAX = MAXI (COOR 3 ENVE0);ZMIN = MINI (COOR 3 ENVE0); LX0 = XMAX - XMIN; LY0 = YMAX - YMIN; LZ0 = ZMAX - ZMIN; PXMIN = ENVE_PT0 POIN 'PLAN' (XMIN 0. 0.) (XMIN 1. 0.) (XMIN 0. 1.) (LX0 * elim0); PYMIN = ENVE_PT0 POIN 'PLAN' (0. YMIN 0.) (1. YMIN 0.) (0. YMIN 1.) (LY0 * elim0); PZMIN = ENVE_PT0 POIN 'PLAN' (0. 0. ZMIN) (1. 0. ZMIN) (0. 1. ZMIN) (LZ0 * elim0); * SURFX0 = ENVE0 ELEM APPUYE STRICTEMENT PXMIN; SURFY0 = ENVE0 ELEM APPUYE STRICTEMENT PYMIN; SURFZ0 = ENVE0 ELEM APPUYE STRICTEMENT PZMIN; SURFX1 = SURFX0 PLUS (LX0 0. 0.); SURFY1 = SURFY0 PLUS (0. LY0 0.); SURFZ1 = SURFZ0 PLUS (0. 0. LZ0); elim SURFX1 MAIL0 (LX0 * elim0); elim SURFY1 MAIL0 (LY0 * elim0); elim SURFZ1 MAIL0 (LZ0 * elim0); * A1 = ENVE_PT0 POIN PROC (XMIN YMIN ZMIN); A2 = ENVE_PT0 POIN PROC (XMAX YMIN ZMIN); A4 = ENVE_PT0 POIN PROC (XMIN YMAX ZMIN); * SX00 = LY0 * LZ0; SX0 = MESU SURFX0; SX1 = MESU SURFX1; SY00 = LX0 * LZ0; SY0 = MESU SURFY0; SY1 = MESU SURFY1; SZ00 = LX0 * LY0; SZ0 = MESU SURFZ0; SZ1 = MESU SURFZ1; * * Application des contraintes *================================ test = 0; SI ((SXZ NEG 0.) OU (SYZ NEG 0.) OU (SZZ NEG 0.)); FZ1 = FSUR MASS MOD0 SURFZ1 (SXZ SYZ SZZ); FZ0 = FSUR MASS MOD0 SURFZ0 ((0. - SXZ) (0. - SYZ) (0. - SZZ)); FZ0 = FZ0 * (SZ00 / SZ0); FZ1 = FZ1 * (SZ00 / SZ1); FCLP0 = FZ0 ET FZ1; test=1; FINSI; * SI ((SXY NEG 0.) OU (SYY NEG 0.) OU (SYZ NEG 0.)); FY1 = FSUR MASS MOD0 SURFY1 (SXY SYY SYZ); FY0 = FSUR MASS MOD0 SURFY0 ((0. - SXY) (0. - SYY) (0. - SYZ)); FY0 = FY0 * (SY00 / SY0); FY1 = FY1 * (SY00 / SY1); SI (test EGA 1); FCLP0 = FCLP0 ET (FY0 ET FY1); SINON; FCLP0 = FY0 ET FY1; test=1; FINSI; FINSI; * SI ((SXX NEG 0.) OU (SXY NEG 0.) OU (SXZ NEG 0.)); FX1 = FSUR MASS MOD0 SURFX1 (SXX SXY SXZ); FX0 = FSUR MASS MOD0 SURFX0 ((0. - SXX) (0. - SXY) (0. - SXZ)); FX0 = FX0 * (SX00 / SX0); FX1 = FX1 * (SX00 / SX1); SI (test EGA 1); FCLP0 = FCLP0 ET (FX0 ET FX1); SINON; FCLP0 = FX0 ET FX1; FINSI; FINSI; * * Blocage du mvt de corps rigide *=========================================== BL1 = BLOQUE UX UY UZ A1; BL2 = BLOQUE UY UZ A2; BL3 = BLOQUE UZ A4; BL0 = BL1 ET (BL2 ET BL3); *BL0 = @CORIGI ENVE0; * * Application des conditions de periodicite *=========================================== RIGCLP = BL0; *surfaces z=cte SURFZ0P = SURFZ0 CHAN POI1; SURFZ1P = SURFZ0P PLUS (0. 0. LZ0); ELIM (lz0 * elim0) SURFZ1P SURFZ1; N0 = NBNO SURFZ0P; N0 = N0 / 2 + 1; M0 = SURFZ0P POIN N0; M1 = SURFZ1P POIN N0; turfz0p = surfz0p diff (manu poi1 m0); turfz1p = surfz1p diff (manu poi1 m1); RIGIX = RELA UX M0 - UX M1 - UX tURFZ0P + UX tURFZ1P; RIGIY = RELA UY M0 - UY M1 - UY tURFZ0P + UY tURFZ1P; RIGIZ = RELA UZ M0 - UZ M1 - UZ tURFZ0P + UZ tURFZ1P; RIGCLP = RIGCLP ET (RIGIX ET RIGIY ET RIGIZ); *surfaces x=cte SURFX0P = SURFX0 CHAN POI1; * enlever les points deja traites surfx0p = surfx0p diff (surfx0p inte surfz0p); surfx1p = surfx0p PLUS(LX0 0. 0.); ELIM (LX0 * elim0) SURFX1P SURFX1; N0 = NBNO SURFX0P; N0 = N0 / 2 + 1; M0 = SURFX0P POIN N0 ; M1 = SURFX1P POIN N0 ; turfx0p = surfx0p diff (manu poi1 m0); turfx1p = surfx1p diff (manu poi1 m1); RIGIX = RELA UX M0 - UX M1 - UX tURFX0P + UX tURFX1P; RIGIY = RELA UY M0 - UY M1 - UY tURFX0P + UY tURFX1P; RIGIZ = RELA UZ M0 - UZ M1 - UZ tURFX0P + UZ tURFX1P; RIGCLP = RIGCLP ET (RIGIX ET RIGIY ET RIGIZ); *surfaces y=cte SURFY0P = SURFY0 CHAN POI1; * enlever les points deja traites surfy0p = surfy0p diff (surfy0p inte surfz0p ); surfy0p = surfy0p diff (surfy0p inte surfx0p ); surfy1p = surfy0p PLUS(0. LY0 0.); ELIM (LY0 * elim0) SURFY1P SURFY1; N0 = NBNO SURFY0P; N0 = N0 / 2 + 1; M0 = SURFY0P POIN N0 ; M1 = SURFY1P POIN N0 ; turfy0p = surfy0p diff (manu poi1 m0); turfy1p = surfy1p diff (manu poi1 m1); RIGIX = RELA UX M0 - UX M1 - UX tURFY0P + UX tURFY1P; RIGIY = RELA UY M0 - UY M1 - UY tURFY0P + UY tURFY1P; RIGIZ = RELA UZ M0 - UZ M1 - UZ tURFY0P + UZ tURFY1P; RIGCLP = RIGCLP ET (RIGIX ET RIGIY ET RIGIZ); FINPROC RIGCLP FCLP0; ********************************************* * FIN DE LA PROCEDURE CLPC *********************************************