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