* ANLIMTRE PROCEDUR FANDEUR 14/10/10 21:15:02 8178 ********************************************************************* * * ANLIMTRE est une procedure d'analyse limite pour des reseaux * de barres articulees utilisant le nouvel operateur * SIMPLEX * * soit un reseau de barres articulees formant le maillage MESH et * bloque en deplacement sur l'ensemble de point PBLOQ. On se propose * de trouver le maximum de la charge placee au point PSOLL dans la * direction VSOLL sachant que la contrainte EFFX dans chaque barre * est soumis a la contrainte |EFFX| <EG CONTMAX * * methode: * -------- * * on considere comme variables independantes: * * (NBEL MESH) * (EFFX -CONTMAX) parametres internes * * (NBNO PBLOQ) * 2 * (F - REACMAX) parametres de bloquages * * 1 * (F - REACMAX) sollicitation * * les inegalites sont (indexees par les elements): * * (NBEL MESH) * (EFFX -CONTMAX) < 2*CONTMAX * * les egalites sont (indexees par les noeuds): * * (NBMO MESH) * 2 equilibres au noeud * * la fonction est: * * (EFFX -CONTMAX) de la variables de sollicitation * * sortie (IOK=0): * --------------- * * valeur CHARLIM de la charge limite * * champ par elements MCHPV des parametres internes * * champ par point CHPPB de bloquages * * champ par point CHPPS de sollicitation * ********************************************************************* * MESH =TABIN.'MESH'; PBLOQ=TABIN.'PBLOQ'; PSOLL=TABIN.'PSOLL'; VSOLL=TABIN.'VSOLL'; CONLIM=TABIN.'CONLIM'; REACMAX=TABIN.'REACMAX'; * * on norme vsoll * XNVSOLL=((XVSOLL ** 2) + (YVSOLL ** 2)) ** 0.5; XVSOLL=XVSOLL/XNVSOLL; YVSOLL=YVSOLL/XNVSOLL; * * conversion eventuelle point --> maillage * PBLOQ=PBLOQ 'ET' PBLOQ; 'FINSI'; * * nombre de variables et initialisation des tables pour le simplex * * a l'interieur et soumis a inegalite * TINEGA='TABLE'; J=0; 'REPETER' LOOP NBVA; J=J+1; TINEGA.J='TABLE'; 'FIN' LOOP; * * points bloques * * * egalites * TEGA='TABLE'; J=0; 'REPETER' LOOP NBEGA ; J=J+1; TEGA.J='TABLE'; TEGA.J.0=0.; 'FIN' LOOP; * * remplissage de la table des inegalites * J=0; 'REPETER' LOOP NBVA ; J=J+1; TINEGA.J.0=2.*CONLIM; TINEGA.J.J=1.; 'FIN' LOOP; * * remplissage de la table des egalites (contribution interieure) * J=0; 'REPETER' LOOP NBVA ; J=J+1; TEGA.(NBEG1+1).J=VAL1JX; TEGA.(NBEG1+1). 0=TEGA.(NBEG1+1). 0 + (CONLIM * VAL1JX); TEGA.(NBEG1+2).J=VAL1JY; TEGA.(NBEG1+2). 0=TEGA.(NBEG1+2). 0 + (CONLIM * VAL1JY); TEGA.(NBEG2+1).J=VAL2JX; TEGA.(NBEG2+1). 0=TEGA.(NBEG2+1). 0 + (CONLIM * VAL2JX); TEGA.(NBEG2+2).J=VAL2JY; TEGA.(NBEG2+2). 0=TEGA.(NBEG2+2). 0 + (CONLIM * VAL2JY); 'FIN' LOOP; * * remplissage de la table des egalites (bloquage) * J=0; 'REPETER' LOOP (NBPB/2); J=J+1; PTJ='POINT' J PBLOQ; NJ='NOEUD' PTJ; NBEGJ=2*(NJ-1); NPB=NBVA+( 2 * (J - 1)); TEGA.(NBEGJ+1).(NPB+1)=1.; TEGA.(NBEGJ+1). 0=TEGA.(NBEGJ+1). 0 + REACMAX; TEGA.(NBEGJ+2).(NPB+2)=1.; TEGA.(NBEGJ+2). 0=TEGA.(NBEGJ+2). 0 + REACMAX; 'FIN' LOOP; * * remplissage de la table des egalites (sollicitation) * NBPS=NBVA+NBPB+1; NSOLL='NOEUD' PSOLL; NBEGS=2*(NSOLL-1); TEGA.(NBEGS+1).NBPS=XVSOLL; TEGA.(NBEGS+1). 0=TEGA.(NBEGS+1). 0 + (XVSOLL * REACMAX); TEGA.(NBEGS+2).NBPS=YVSOLL; TEGA.(NBEGS+2). 0=TEGA.(NBEGS+2). 0 + (YVSOLL * REACMAX); * * fonction a maximiser * TFONC='TABLE' 'VECTEUR'; TFONC.0=(-1)*REACMAX; TFONC.NBPS=1.; * * simplex * IOK TVAR TSEC='SIMPLEX' TFONC TINEGA TEGA; * * sortie * 'SI' (IOK 'EGA' 0); * * chsrge limite * CHARLIM=TVAR.0; * * MCHAML de resultat * J=0; 'REPETER' LOOP NBVA ; J=J+1; 'SI' ('EXISTE' TVAR J); VARJ=TVAR.J - CONLIM; 'SINON'; VARJ=(-1) * CONLIM; 'FINSI'; *tc ajout du ; dans la ligne ci dessu!!!!!!!!!!!!! 'SI' (J 'EGA' 1); MCHPV=MCHPJ; 'SINON'; MCHPV=MCHPV + MCHPJ; 'FINSI'; 'FIN' LOOP; * * CHPO de bloquage * J=0; 'REPETER' LOOP (NBPB/2) ; J=J+1; PTJ='POINT' J PBLOQ; NPB=NBVA+( 2 * (J - 1)); 'SI' ('EXISTE' TVAR (NPB + 1)); REAJX=TVAR.(NPB+1) - REACMAX; 'SINON'; REAJX=(-1) * REACMAX; 'FINSI'; 'SI' ('EXISTE' TVAR (NPB + 2)); REAJY=TVAR.(NPB+2) - REACMAX; 'SINON'; REAJY=(-1) * REACMAX; 'FINSI'; 'SI' (J 'EGA' 1); CHPPB=CHPPJ; 'SINON'; CHPPB=CHPPB + CHPPJ; 'FINSI'; 'FIN' LOOP; * * CHPO de sollicitation * 'SI' ('EXISTE' TVAR NBPS); REACI=TVAR.NBPS - REACMAX; 'SINON'; REACI=(-1) * REACMAX; 'FINSI'; 'FY' (YVSOLL * REACI); * * sortie * TABIN.'CHARLIM'=CHARLIM; TABIN.'MCHPV'=MCHPV; TABIN.'CHPPB'=CHPPB; TABIN.'CHPPS'=CHPPS; 'FINSI'; * 'FINPROC' IOK;
© Cast3M 2003 - Tous droits réservés.
Mentions légales