Download limemeca.procedur

Back to the list

   1 : * LIMEMECA  PROCEDUR  AM        96/12/23    21:42:40     2448           
   2 : 'DEBPROC' limemeca mod1*'MMODEL' tab1*'TABLE' tab2*'TABLE' 
   3 :                    mch1*'MCHAML' chp1*'CHPOINT' 
   4 :                    chp2/'CHPOINT' coeff/'FLOTTANT';
   5 : *
   6 : * Analyse limite par l'approche cinematique de structure de poutre
   7 : *
   8 : * P.Pegon, Aout 90
   9 : *
  10 : nbmeca1='DIME' tab1;
  11 : 'SI' ('NEG' nbmeca1 ('DIME' tab2)); 
  12 :   'MESS' 'LIMEMECA: input tables without the same dimension';
  13 :   lok=faux;
  14 : 'SINON';
  15 :   lok=vrai; 
  16 : 'FINSI';
  17 : nbmeca1=nbmeca1-1;
  18 : *
  19 : 'SI' lok;
  20 :   'SI' ('EXISTE' tab1 'SOUSTYPE');
  21 :     'SI' ('EGA' tab1 . 'SOUSTYPE' 'MECANISMES_PAR_NOEUDS');
  22 :       lok=vrai;
  23 :     'SINON';
  24 :       lok=faux;
  25 :       'MESS' 'LIMEMECA: input table 1 without the right "SOUSTYPE"';
  26 :     'FINSI';
  27 :   'FINSI';
  28 :   'SI' ('EXISTE' tab2 'SOUSTYPE');
  29 :     'SI' ('EGA' tab2 . 'SOUSTYPE' 'MECANISMES_PAR_ELEMENTS');
  30 :       lok=lok 'ET' vrai;
  31 :     'SINON';
  32 :       lok=faux;
  33 :       'MESS' 'LIMEMECA: input table 2 without the right "SOUSTYPE"';
  34 :     'FINSI';
  35 :   'FINSI';
  36 : 'FINSI';
  37 : *
  38 : 'SI' lok;
  39 :   chlm1=tab2 . 1;
  40 :   comp1='EXTR' chlm1 'COMP';
  41 :   laxi1=faux; ndonn1=4;
  42 :   'SI' (('DIME' comp1) > 2);
  43 :     'SI' ('EGA' ('EXTR' comp1 3) 'UP2 ');
  44 :       laxi1=vrai; ndonn1=6;
  45 :     'FINSI';
  46 :   'FINSI';
  47 : *
  48 :   comp1='EXTR' mch1 'COMP';
  49 :   'SI' ('NEG' ('DIME' comp1) ndonn1); 
  50 :      'MESS' 'LIMEMECA: characteristic field without ' ndonn1 
  51 :             ' components';
  52 :      lok=faux; 
  53 :   'FINSI';
  54 :   'OUBL' comp1;
  55 : *
  56 : 'FINSI';
  57 : *
  58 : 'SI' lok;
  59 :   mot1='MOTS' 'UX' 'UY' 'RZ'; mot2='MOTS' 'FX' 'FY' 'MZ';
  60 : *
  61 :   me1='EXTR' mod1 'MAIL'; nbme1='NBEL' me1;
  62 :   nbthet2=ndonn1*nbme1;
  63 : *
  64 :   'SI' ('NON' ('EXISTE' coeff));
  65 :     coeff=1.d0;
  66 :   'FINSI';
  67 : *
  68 :   tabf1='TABLE' 'VECTEUR';
  69 :   'REPE' lab1 nbme1;
  70 :     elemj0='ELEM' me1 &lab1;
  71 :     chelmk='REDU' mch1 elemj0;
  72 :     ind0=nbmeca1+((&lab1-1)*ndonn1);
  73 :     ind0=ind0+1;
  74 :     tabf1 . ind0=(-1.d0)*('EXTR' chelmk 1 1 1 'MZ1+');
  75 :     ind0=ind0+1;
  76 :     tabf1 . ind0=(-1.d0)*('EXTR' chelmk 1 1 1 'MZ1-');
  77 :     ind0=ind0+1;
  78 :     tabf1 . ind0=(-1.d0)*('EXTR' chelmk 1 1 1 'MZ2+');
  79 :     ind0=ind0+1;
  80 :     tabf1 . ind0=(-1.d0)*('EXTR' chelmk 1 1 1 'MZ2-');
  81 :     'SI' laxi1;
  82 :       ind0=ind0+1;
  83 :       tabf1 . ind0=(-1.d0)*('EXTR' chelmk 1 1 1 'F2+ ');
  84 :       ind0=ind0+1;
  85 :       tabf1 . ind0=(-1.d0)*('EXTR' chelmk 1 1 1 'F2- ');
  86 :     'FINSI';
  87 :   'FIN' lab1;
  88 : *
  89 :   'SI' ('EXISTE' chp2);
  90 :     tabf10=0.d0;
  91 :     'REPE' lab1 nbmeca1;
  92 :       aa1='XTY' tab1 . &lab1 chp2 mot1 mot2;
  93 :       tabf1 . &lab1=aa1;
  94 :       tabf10=tabf10 - (coeff*aa1);
  95 :     'FIN' lab1;
  96 :     tabf1 . 0=tabf10;
  97 :   'FINSI';
  98 : *
  99 :   tabi1=tabl;
 100 : *
 101 :   nchp1='XTY' chp1 chp1 mot2 mot2; nchp1=(nchp1**0.5d0)/2.d0;
 102 :   chp1=chp1/nchp1;
 103 : *
 104 :   tabe1='TABLE'; tdum1='TABLE' 'VECTEUR';
 105 :   tabe1 . 1=tdum1;
 106 :   tdum10=1.d0;
 107 :   'REPE' lab1 nbmeca1;
 108 :     aa1='XTY' tab1 . &lab1 chp1 mot1 mot2;
 109 :     tdum1 . &lab1=aa1;
 110 :     tdum10=tdum10 + (coeff*aa1);
 111 :   'FIN' lab1;
 112 :   tdum1 . 0=tdum10;
 113 :   'OUBL' mot1; 'OUBL' mot2;
 114 : *
 115 :   'REPE' lab1 nbme1;
 116 :     elemj0='ELEM' me1 &lab1;
 117 :     ind0=1+((ndonn1/2)*(&lab1-1));
 118 : **
 119 :     ind0=ind0+1;
 120 :     tdum1='TABLE' 'VECTEUR';
 121 :     tabe1 . ind0=tdum1;
 122 :     tdum10=0.d0;
 123 :     'REPE' lab2 nbmeca1;
 124 :       chelmk='REDU' tab2 . &lab2 elemj0;
 125 :       rzp1='EXTR' chelmk 1 1 1 'RZP1';
 126 :       tdum1 . &lab2=rzp1;
 127 :       tdum10=tdum10 + (coeff*rzp1);
 128 :     fin lab2;
 129 :     tdum1 . 0=tdum10;
 130 :     jnd0=nbmeca1+(ndonn1*(&lab1-1));
 131 :     tdum1 . (jnd0 + 1)=-1.d0;
 132 :     tdum1 . (jnd0 + 2)=1.d0;
 133 : **
 134 :     ind0=ind0+1;
 135 :     tdum1='TABLE' 'VECTEUR';
 136 :     tabe1 . ind0=tdum1;
 137 :     tdum10=0.d0;
 138 :     'REPE' lab2 nbmeca1;
 139 :       chelmk='REDU' tab2 . &lab2 elemj0;
 140 :       rzp2='EXTR' chelmk 1 1 1 'RZP2';
 141 :       tdum1 . &lab2=rzp2;
 142 :       tdum10=tdum10 + (coeff*rzp2);
 143 :     fin lab2;
 144 :     tdum1 . 0=tdum10;
 145 :     jnd0=nbmeca1+(ndonn1*(&lab1-1));
 146 :     tdum1 . (jnd0 + 3)=-1.d0;
 147 :     tdum1 . (jnd0 + 4)=1.d0;
 148 : **
 149 :     'SI' laxi1;
 150 :       ind0=ind0+1;
 151 :       tdum1='TABLE' 'VECTEUR';
 152 :       tabe1 . ind0=tdum1;
 153 :       tdum10=0.d0;
 154 :       'REPE' lab2 nbmeca1;
 155 :         chelmk='REDU' tab2 . &lab2 elemj0;
 156 :         up2='EXTR' chelmk 1 1 1 'UP2 ';
 157 :         tdum1 . &lab2=up2;
 158 :         tdum10=tdum10 + (coeff*up2);
 159 :       fin lab2;
 160 :       tdum1 . 0=tdum10;
 161 :       jnd0=nbmeca1+(ndonn1*(&lab1-1));
 162 :       tdum1 . (jnd0 + 5)=-1.d0;
 163 :       tdum1 . (jnd0 + 6)=1.d0;
 164 :     'FINSI';
 165 : **
 166 :   'FIN' lab1;
 167 :   'OUBL' me1;
 168 : *
 169 :   iok tabp1 tabs1='SIMP' tabf1 tabi1 tabe1;
 170 :   'OUBL' tabs1; 'OUBL' tabf1; 'OUBL' tabi1; 'OUBL' tabe1; 'OUBL' tdum1;
 171 :   'SI' ('NEG' iok 0); 
 172 :     lok=faux;
 173 :     'MESS' 'LIMEMECA: simplex error code' iok;
 174 :     'SI' ('EGA' iok 1);
 175 :       'MESS' 'LIMEMECA: unbounded objective function';
 176 :     'SINON';
 177 :       'MESS' 'LIMEMECA: no solution for the given constraints';
 178 :     'FINSI';
 179 :   'FINSI';
 180 : *
 181 : 'FINSI';
 182 : *
 183 : 'SI' lok;
 184 :   colim1=(-1.d0)/nchp1*tabp1 . 0;
 185 : *
 186 :   tx1='TABL';
 187 :   'REPE' lab1 nbmeca1;
 188 :     xlab1=(-1.d0)*coeff;
 189 :     lok='EXISTE' tabp1 &lab1;
 190 :     'SI' lok;
 191 :       'SI' ('EGA' tabp1 . &lab1 0.d0);
 192 :         lok=faux;
 193 :       'FINSI';
 194 :     'FINSI';
 195 :     'SI' lok;
 196 :       xlab1=xlab1+tabp1 . &lab1;
 197 :     'SINON';
 198 :       'MESS' 'LIMEMECA: the mechanism number'
 199 :                         &lab1 'is not activated --> increase coeff';
 200 :       'OUBL' tx1;
 201 :       'QUITTER' lab1;
 202 :     'FINSI';
 203 :     tx1 . &lab1=xlab1;
 204 :   'FIN' lab1;
 205 : *
 206 : 'FINSI';
 207 : *
 208 : 'SI' lok;
 209 :   'REPE' lab1 nbmeca1;
 210 :     'SI' ('EGA' &lab1 1);
 211 :       chdlim1=(tx1 . &lab1)*(tab1 . &lab1);
 212 :       chrlim1=(tx1 . &lab1)*(tab2 . &lab1);
 213 :     'SINON';
 214 :       chdlim1=chdlim1+((tx1 . &lab1)*(tab1 . &lab1));
 215 :       chrlim1=chrlim1+((tx1 . &lab1)*(tab2 . &lab1));
 216 :     'FINSI';
 217 :   'FIN' lab1;
 218 :   'OUBL' tx1;
 219 : 'SINON';
 220 :   colim1=''; chdlim1=''; chrlim1='';
 221 : 'FINSI';
 222 : *
 223 : 'FINPROC' lok colim1 chdlim1 chrlim1;
 224 :  

© Cast3M 2003 - All rights reserved.
Disclaimer