Download anlimtre.procedur

Back to the list

   1 : * ANLIMTRE  PROCEDUR  CHAT      12/08/07    21:15:01     7481           
   2 : *********************************************************************
   3 : *
   4 : * ANLIMTRE est une procedure d'analyse limite pour des reseaux
   5 : *          de barres articulees utilisant le nouvel operateur
   6 : *          SIMPLEX
   7 : *
   8 : * soit un reseau de barres articulees formant le maillage MESH et
   9 : * bloque en deplacement sur l'ensemble de point PBLOQ. On se propose
  10 : * de trouver le maximum de la charge placee au point PSOLL dans la
  11 : * direction VSOLL sachant que la contrainte EFFX dans chaque barre
  12 : * est soumis a la contrainte |EFFX| <EG CONTMAX
  13 : *
  14 : * methode:
  15 : * --------
  16 : *
  17 : * on considere comme variables independantes:
  18 : *
  19 : * (NBEL MESH)  *    (EFFX -CONTMAX) parametres internes
  20 : *
  21 : * (NBNO PBLOQ) * 2 * (F - REACMAX)  parametres de bloquages
  22 : *
  23 : *      1       *      (F - REACMAX) sollicitation
  24 : *
  25 : * les inegalites sont (indexees par les elements):
  26 : *
  27 : * (NBEL MESH)  *    (EFFX -CONTMAX) < 2*CONTMAX
  28 : *
  29 : * les egalites sont (indexees par les noeuds):
  30 : *
  31 : * (NBMO MESH)  * 2   equilibres au noeud
  32 : *
  33 : * la fonction est:
  34 : *
  35 : * (EFFX -CONTMAX) de la variables de sollicitation
  36 : *
  37 : * sortie (IOK=0):
  38 : * ---------------
  39 : *
  40 : * valeur CHARLIM de la charge limite
  41 : *
  42 : * champ par elements MCHPV des parametres internes
  43 : *
  44 : * champ par point CHPPB de bloquages
  45 : *
  46 : * champ par point CHPPS de sollicitation
  47 : *
  48 : *********************************************************************
  49 : 'DEBPROC' ANLIMTRE TABIN*'TABLE';
  50 : *
  51 : MESH =TABIN.'MESH';
  52 : PBLOQ=TABIN.'PBLOQ';
  53 : PSOLL=TABIN.'PSOLL';
  54 : VSOLL=TABIN.'VSOLL';
  55 : CONLIM=TABIN.'CONLIM';
  56 : REACMAX=TABIN.'REACMAX';
  57 : *
  58 : * on norme vsoll
  59 : *
  60 : XVSOLL YVSOLL='COOR' VSOLL;
  61 : XNVSOLL=((XVSOLL ** 2) + (YVSOLL ** 2)) ** 0.5;
  62 : XVSOLL=XVSOLL/XNVSOLL; YVSOLL=YVSOLL/XNVSOLL;
  63 : *
  64 : * conversion eventuelle point --> maillage
  65 : *
  66 : 'SI' ('EGA' ('TYPE' PBLOQ) 'POINT   ');
  67 :   PBLOQ=PBLOQ 'ET' PBLOQ;
  68 :   PBLOQ=PBLOQ 'ELEM' 1;
  69 : 'FINSI';
  70 : *
  71 : * nombre de variables et initialisation des tables pour le simplex
  72 : *
  73 : * a l'interieur et soumis a inegalite
  74 : *
  75 : NBVA='NBEL' MESH;
  76 : TINEGA='TABLE';
  77 : J=0; 'REPETER' LOOP NBVA;  J=J+1;
  78 :   TINEGA.J='TABLE';
  79 : 'FIN' LOOP;
  80 : *
  81 : * points bloques
  82 : *
  83 : NBPB=2*('NBNO' PBLOQ);
  84 : *
  85 : * egalites
  86 : *
  87 : NBEGA=2 * ('NBNO' MESH);
  88 : TEGA='TABLE';
  89 : J=0; 'REPETER' LOOP NBEGA ; J=J+1;
  90 :   TEGA.J='TABLE';
  91 :   TEGA.J.0=0.;
  92 : 'FIN' LOOP;
  93 : *
  94 : * remplissage de la table des inegalites
  95 : *
  96 : J=0; 'REPETER' LOOP NBVA ; J=J+1;
  97 :   TINEGA.J.0=2.*CONLIM;
  98 :   TINEGA.J.J=1.;
  99 : 'FIN' LOOP;
 100 : *
 101 : * remplissage de la table des egalites (contribution interieure)
 102 : *
 103 : J=0; 'REPETER' LOOP NBVA ; J=J+1;
 104 :   ELEMJ=MESH 'ELEM' J;
 105 :   MODLJ='MODL' ELEMJ MECANIQUE ELASTIQUE BARR;
 106 :   CARBJ='CARB' MODLJ 'SECT' 1.;
 107 :   CHAMJ='MANU' 'CHAM' MODLJ TYPE 'CONTRAINTES'
 108 :                      'POSI' 'STRESSES' 'EFFX' 1 1 2. ;
 109 :   BSIGJ='BSIG' MODLJ CHAMJ CARBJ;
 110 :   PTJ1=ELEMJ 'POIN' 1; N1='NOEUD' PTJ1; NBEG1=2*(N1-1);
 111 :   PTJ2=ELEMJ 'POIN' 2; N2='NOEUD' PTJ2; NBEG2=2*(N2-1);
 112 :   VAL1JX='EXTR' BSIGJ PTJ1 'FX'; VAL1JY='EXTR' BSIGJ PTJ1 'FY';
 113 :   VAL2JX='EXTR' BSIGJ PTJ2 'FX'; VAL2JY='EXTR' BSIGJ PTJ2 'FY';
 114 :   TEGA.(NBEG1+1).J=VAL1JX;
 115 :   TEGA.(NBEG1+1). 0=TEGA.(NBEG1+1). 0 + (CONLIM * VAL1JX);
 116 :   TEGA.(NBEG1+2).J=VAL1JY;
 117 :   TEGA.(NBEG1+2). 0=TEGA.(NBEG1+2). 0 + (CONLIM * VAL1JY);
 118 :   TEGA.(NBEG2+1).J=VAL2JX;
 119 :   TEGA.(NBEG2+1). 0=TEGA.(NBEG2+1). 0 + (CONLIM * VAL2JX);
 120 :   TEGA.(NBEG2+2).J=VAL2JY;
 121 :   TEGA.(NBEG2+2). 0=TEGA.(NBEG2+2). 0 + (CONLIM * VAL2JY);
 122 : 'FIN' LOOP;
 123 : *
 124 : * remplissage de la table des egalites (bloquage)
 125 : *
 126 : J=0; 'REPETER' LOOP (NBPB/2); J=J+1;
 127 :   PTJ='POINT' J PBLOQ; NJ='NOEUD' PTJ; NBEGJ=2*(NJ-1);
 128 :   NPB=NBVA+( 2 * (J - 1));
 129 :   TEGA.(NBEGJ+1).(NPB+1)=1.;
 130 :   TEGA.(NBEGJ+1). 0=TEGA.(NBEGJ+1). 0 + REACMAX;
 131 :   TEGA.(NBEGJ+2).(NPB+2)=1.;
 132 :   TEGA.(NBEGJ+2). 0=TEGA.(NBEGJ+2). 0 + REACMAX;
 133 : 'FIN' LOOP;
 134 : *
 135 : * remplissage de la table des egalites (sollicitation)
 136 : *
 137 : NBPS=NBVA+NBPB+1;
 138 : NSOLL='NOEUD' PSOLL; NBEGS=2*(NSOLL-1);
 139 : TEGA.(NBEGS+1).NBPS=XVSOLL;
 140 : TEGA.(NBEGS+1). 0=TEGA.(NBEGS+1). 0 + (XVSOLL * REACMAX);
 141 : TEGA.(NBEGS+2).NBPS=YVSOLL;
 142 : TEGA.(NBEGS+2). 0=TEGA.(NBEGS+2). 0 + (YVSOLL * REACMAX);
 143 : *
 144 : * fonction a maximiser
 145 : *
 146 : TFONC='TABLE' 'VECTEUR';
 147 : TFONC.0=(-1)*REACMAX; TFONC.NBPS=1.;
 148 : *
 149 : * simplex
 150 : *
 151 : IOK TVAR TSEC='SIMPLEX' TFONC TINEGA TEGA;
 152 : *
 153 : * sortie
 154 : *
 155 : 'SI' (IOK 'EGA' 0);
 156 : *
 157 : * chsrge limite
 158 : *
 159 :   CHARLIM=TVAR.0;
 160 : *
 161 : * MCHAML de resultat
 162 : *
 163 :   MO='MODL' MESH MECANIQUE ELASTIQUE BARR;
 164 :   J=0; 'REPETER' LOOP NBVA ; J=J+1;
 165 :     'SI' ('EXISTE' TVAR J);
 166 :       VARJ=TVAR.J - CONLIM;
 167 :     'SINON';
 168 :       VARJ=(-1) * CONLIM;
 169 :     'FINSI';
 170 :     MCHPJ=('MANU' 'CHAM' MO TYPE 'CONTRAINTES'
 171 :            'POSI' 'STRESSES' 'EFFX' J 1 VARJ)
 172 :          +('MANU' 'CHAM' MO TYPE 'CONTRAINTES'
 173 :            'POSI' 'STRESSES' 'EFFX' J 2 VARJ);
 174 : *tc ajout du ; dans la ligne ci dessu!!!!!!!!!!!!!
 175 :     'SI' (J 'EGA' 1);
 176 :       MCHPV=MCHPJ;
 177 :     'SINON';
 178 :       MCHPV=MCHPV + MCHPJ;
 179 :     'FINSI';
 180 :   'FIN' LOOP;
 181 : *
 182 : * CHPO de bloquage
 183 : *
 184 :   J=0; 'REPETER' LOOP (NBPB/2) ; J=J+1;
 185 :     PTJ='POINT' J PBLOQ;
 186 :     NPB=NBVA+( 2 * (J - 1));
 187 :     'SI' ('EXISTE' TVAR (NPB + 1));
 188 :       REAJX=TVAR.(NPB+1) - REACMAX;
 189 :     'SINON';
 190 :       REAJX=(-1) * REACMAX;
 191 :     'FINSI';
 192 :     'SI' ('EXISTE' TVAR (NPB + 2));
 193 :       REAJY=TVAR.(NPB+2) - REACMAX;
 194 :     'SINON';
 195 :       REAJY=(-1) * REACMAX;
 196 :     'FINSI';
 197 :     CHPPJ='MANU' 'CHPO' PTJ 2 'FX' REAJX 'FY' REAJY;
 198 :     'SI' (J 'EGA' 1);
 199 :        CHPPB=CHPPJ;
 200 :     'SINON';
 201 :        CHPPB=CHPPB + CHPPJ;
 202 :     'FINSI';
 203 :   'FIN' LOOP;
 204 : *
 205 : * CHPO de sollicitation
 206 : *
 207 :   'SI' ('EXISTE' TVAR NBPS);
 208 :     REACI=TVAR.NBPS - REACMAX;
 209 :   'SINON';
 210 :     REACI=(-1) * REACMAX;
 211 :   'FINSI';   
 212 :   CHPPS='MANU' 'CHPO' PSOLL 2 'FX' (XVSOLL * REACI)
 213 :                               'FY' (YVSOLL * REACI);
 214 : *
 215 : * sortie
 216 : *
 217 :   TABIN.'CHARLIM'=CHARLIM;
 218 :   TABIN.'MCHPV'=MCHPV;
 219 :   TABIN.'CHPPB'=CHPPB;
 220 :   TABIN.'CHPPS'=CHPPS;
 221 : 'FINSI';
 222 : *
 223 : 'FINPROC' IOK;
 224 :  

© Cast3M 2003 - All rights reserved.
Disclaimer