Télécharger issleq.procedur

Retour à la liste

Numérotation des lignes :

  1. * ISSLEQ PROCEDUR AF221230 17/03/28 21:15:00 9380
  2. DEBPROC ISSLEQ TDON1*'TABLE';
  3. ************************************************************************
  4. *
  5. * I S S L E Q
  6. * ------------
  7. *
  8. * FONCTION:
  9. * ---------
  10. *
  11. * Procedure pour la résolution des problèmes ISS et de propagation des
  12. * ondes 1D avec la methode lineaire equivalente.
  13. *
  14. * PHRASE D'APPEL (EN GIBIANE):
  15. * ----------------------------
  16. *
  17. * ISSLEQ TDON1
  18. *
  19. * OPERANDES:
  20. * ----------
  21. *
  22. * TDON1 :Table des donnees (type TABLE)
  23. * .'SOL' :sous-table pour definir les
  24. * donnees du profil
  25. * du sol (type TABLE)
  26. * .'ITERATION' :sous table pour la partie du
  27. * sol à iterer (type TABLE)
  28. * .I : couche I (type TABLE)
  29. * .'MAILLAGE' :maillage de la couche I
  30. * (type MAILLAGE)
  31. * .'FRONTIERE' :frontiere de la couche I
  32. * (type MAILLAGE)
  33. * .'MASSE_VOLUMIQUE' :masse volumique de la couche I
  34. * (type FLONNTANT)
  35. * .'POISSON' :coefficient de poisson de la
  36. * couche I (type FLOTTANT)
  37. * .'G_GAMMA' :evolution de la courbe
  38. * caracteristique G/G0-gamma
  39. * (type EVOLUTION)
  40. * .'H_GAMMA' :evolution de la courbe
  41. * caracteristique Eps-gamma
  42. * (type EVOLUTION)
  43. * .'BASE' :frontiere inferieure de la
  44. * derniere couche qui compose
  45. * la stratigraphie (type MAILLAGE)
  46. * a introduire une seule fois pour
  47. * la dernier couche
  48. * .'CONSTANTE' :sous table pour la partie du
  49. * sol à iterer (type TABLE)
  50. * .I : couche I (type TABLE)
  51. * .'MAILLAGE' :maillage de la couche I
  52. * (type MAILLAGE)
  53. * .'FRONTIERE' :frontiere de la couche I
  54. * (type MAILLAGE)
  55. * .'MASSE_VOLUMIQUE' :masse volumique de la couche I
  56. * (type FLONNTANT)
  57. * .'POISSON' :coefficient de poisson de la
  58. * couche I (type FLOTTANT)
  59. * .'AMORTISSEMENT' :amortissement
  60. * couche I (type FLOTTANT)
  61. * .'STRUCTURE' :sous-table pour definir les
  62. * donnees de la structure (type TABLE)
  63. * .'MAILLAGE' :maillage de la structure
  64. * (type MAILLAGE)
  65. * .'RIGIDITE' :rigidité de la structure
  66. * (type RIGIDITE)
  67. * .'MASSE' :masse de la structure
  68. * (type RIGIDITE)
  69. * .'AMORTISSEMENT' :amortissement de la structure
  70. * (type RIGIDITE)
  71. * .'BLOCAGES_MECANIQUES' :tout type des blocages mecaniques
  72. * supplementaires (type RIGIDITE)
  73. * .'PARAMETRES' :sous TABLE pour definir les parametres
  74. * du calcul (type TABLE)
  75. * .'GAMMAO_X' :evolution de l’acceleration selon
  76. * la direction x (type EVOLUTION)
  77. * .'GAMMAO_Y' :evolution de l’acceleration selon
  78. * la direction y (type EVOLUTION)
  79. * .'GAMMAO_Z' :evolution de l’acceleration selon
  80. * la direction z (type EVOLUTION)
  81. * [seulement une des trois evolution
  82. * est necessaire]
  83. * .'POINT' :point de reference (type POINT)
  84. * .'CRITERE' :critere de convergence pour le
  85. * calcul lineaire equivalent (type FLOTTANT)
  86. * (default 0.05)
  87. * .'CHI' :coefficient pour la deformation moyenne
  88. * gamma_m (type FLOTTANT)
  89. * .'F1' :premiere frequence pour modele
  90. * d'amortissement de Rayleigh
  91. * (type FLOTTANT)
  92. * .'F2' :premiere frequence pour modele
  93. * d'amortissement de Rayleigh
  94. * (type FLOTTANT)
  95. * .'FC' :premiere de coupure du signal
  96. * (type FLOTTANT)
  97. * .'TYPE' :type de frontiere absorbante (LYSMER
  98. * ou WHITE) (type MOT) (defaut LYSMER)
  99. * .'PAR_DEC' :sous-table à donner pour la procedure
  100. * DECONV3D - voir la notice correspondante
  101. * (P_GAM sous-table) (facultatif)
  102. * .'TYPE_CALCUL' : type de calcul ‘ISS_COMPLET’ (type MOT)
  103. * tout le sol est à considere comme
  104. * domaine à iterer. La sous-table
  105. * ITERATION dans la table SOL est
  106. * obligatoire
  107. * type de calcul ‘ISS_COMP_SIMP’ (type MOT)
  108. * une partie du sol est considere
  109. * comme domaine à iterer et une
  110. * partie constante. La sous table
  111. * ITERATION dans la table SOL et la
  112. * sous table CONSTANTE dans la table
  113. * SOL sont obligatoires
  114. * RESULTATS:
  115. * ----------
  116. * TDON1 :Table des donnees (type TABLE)
  117. * .'STEP "J"' :sous-table des resultats
  118. * pour chaque iteration (type TABLE) J=0..N
  119. * .'ITERATION' :sous table pour la partie du
  120. * sol à iterer (type TABLE)
  121. * .'T_SOL' :sous-table avec les maillages des
  122. * couche
  123. * .I : couche I (type MAILLAGE)
  124. * .'T_ESO' :sous-table avec les mchaml pour
  125. * les module E des couches
  126. * .I : couche I (type MCHAML)
  127. * .'T_MOD' :sous-table avec les modeles pour
  128. * les couches
  129. * .I : couche I (type MMODEL)
  130. * .'T_GGO' :sous-table avec les mchaml pour
  131. * les rapports G/G0 des couches
  132. * .I : couche I (type MCHAML)
  133. * .'T_MAT' :sous-table avec les materiaux pour
  134. * les couches
  135. * .I : couche I (type MCHAML)
  136. * .'T_RIG' :sous-table avec les rigites pour
  137. * les couches
  138. * .I : couche I (type RIGIDITE)
  139. * .'T_MAS' :sous-table avec les masses pour
  140. * les couches
  141. * .I : couche I (type RIGIDITE)
  142. * .'T_KSI' :sous-table avec les amortissements
  143. * pour les couches
  144. * .I : couche I (type RIGIDITE)
  145. * .'T_AMO' :sous-table avec les matrices
  146. * d amortissement amortissements
  147. * pour les couches
  148. * .I : couche I (type MCHAML)
  149. * .'T_DIS' :sous-table avec les champs des
  150. * deformations maximales pour chaque
  151. * couche
  152. * .I : couche I (type MAILLAGE)
  153. * .'O_SOL' :Assemblage des maillages pour
  154. * la partie à iterer (type MAILLAGE)
  155. * .'O_MOD' :Assemblage des MMODEL pour
  156. * la partie à iterer (type MAILLAGE)
  157. * .'O_GGO' :Assemblage des MCHAML G/G0 pour
  158. * la partie à iterer (type MAILLAGE)
  159. * .'O_MAT' :Assemblage des materiaux pour
  160. * la partie à iterer (type MAILLAGE)
  161. * .'O_RIG' :Assemblage des rigidités pour
  162. * la partie à iterer (type MAILLAGE)
  163. * .'O_MAS' :Assemblage des masses pour
  164. * la partie à iterer (type MAILLAGE)
  165. * .'O_KSI' :Assemblage des MCHAML Eps pour
  166. * la partie à iterer (type MAILLAGE)
  167. * .'O_AMO' :Assemblage des amortissements pour
  168. * la partie à iterer (type MAILLAGE)
  169. * .'O_DIS' :Assemblage des MCHAML Dmax pour
  170. * la partie à iterer (type MAILLAGE)
  171. * .'CONSTANTE' :sous table pour la partie du
  172. * sol constante (type TABLE)
  173. * .'T_SOL' :sous-table avec les maillages des
  174. * couche
  175. * .I : couche I (type MAILLAGE)
  176. * .'T_ESO' :sous-table avec les mchaml pour
  177. * les module E des couches
  178. * .I : couche I (type MCHAML)
  179. * .'T_MOD' :sous-table avec les modeles pour
  180. * les couches
  181. * .I : couche I (type MMODEL)
  182. * .'T_GGO' :sous-table avec les mchaml pour
  183. * les rapports G/G0 des couches
  184. * .I : couche I (type MCHAML)
  185. * .'T_MAT' :sous-table avec les materiaux pour
  186. * les couches
  187. * .I : couche I (type MCHAML)
  188. * .'T_RIG' :sous-table avec les rigites pour
  189. * les couches
  190. * .I : couche I (type RIGIDITE)
  191. * .'T_MAS' :sous-table avec les masses pour
  192. * les couches
  193. * .I : couche I (type RIGIDITE)
  194. * .'T_KSI' :sous-table avec les amortissements
  195. * pour les couches
  196. * .I : couche I (type RIGIDITE)
  197. * .'T_AMO' :sous-table avec les matrices
  198. * d amortissement amortissements
  199. * pour les couches
  200. * .I : couche I (type MCHAML)
  201. * .'T_DIS' :sous-table avec les champs des
  202. * deformations maximales pour chaque
  203. * couche
  204. * .I : couche I (type MAILLAGE)
  205. * .'O_SOL' :Assemblage des maillages pour
  206. * la partie à iterer (type MAILLAGE)
  207. * .'O_MOD' :Assemblage des MMODEL pour
  208. * la partie à iterer (type MAILLAGE)
  209. * .'O_GGO' :Assemblage des MCHAML G/G0 pour
  210. * la partie à iterer (type MAILLAGE)
  211. * .'O_MAT' :Assemblage des materiaux pour
  212. * la partie à iterer (type MAILLAGE)
  213. * .'O_RIG' :Assemblage des rigidités pour
  214. * la partie à iterer (type MAILLAGE)
  215. * .'O_MAS' :Assemblage des masses pour
  216. * la partie à iterer (type MAILLAGE)
  217. * .'O_KSI' :Assemblage des MCHAML Eps pour
  218. * la partie à iterer (type MAILLAGE)
  219. * .'O_AMO' :Assemblage des amortissements pour
  220. * la partie à iterer (type MAILLAGE)
  221. * .'O_DIS' :Assemblage des MCHAML Dmax pour
  222. * la partie à iterer (type MAILLAGE)
  223. * .'TOTALE' :sous table pour l'assembles des deux parties
  224. * CONSTANTE + ITERER (type TABLE)
  225. * .I : couche I (type MAILLAGE)
  226. * .'O_SOL' :Assemblage des maillages pour
  227. * la partie à iterer (type MAILLAGE)
  228. * .'O_MOD' :Assemblage des MMODEL pour
  229. * la partie à iterer (type MAILLAGE)
  230. * .'O_GGO' :Assemblage des MCHAML G/G0 pour
  231. * la partie à iterer (type MAILLAGE)
  232. * .'O_MAT' :Assemblage des materiaux pour
  233. * la partie à iterer (type MAILLAGE)
  234. * .'O_RIG' :Assemblage des rigidités pour
  235. * la partie à iterer (type MAILLAGE)
  236. * .'O_MAS' :Assemblage des masses pour
  237. * la partie à iterer (type MAILLAGE)
  238. * .'O_KSI' :Assemblage des MCHAML Eps pour
  239. * la partie à iterer (type MAILLAGE)
  240. * .'O_AMO' :Assemblage des amortissements pour
  241. * la partie à iterer (type MAILLAGE)
  242. * .'O_DIS' :Assemblage des MCHAML Dmax pour
  243. * la partie à iterer (type MAILLAGE)
  244. * .'STRUCTURE' :sous-table pour definir les
  245. * donnees de la structure (type TABLE)
  246. * .'MAILLAGE' :maillage de la structure
  247. * (type MAILLAGE)
  248. * .'RIGIDITE' :rigidité de la structure
  249. * (type RIGIDITE)
  250. * .'MASSE' :masse de la structure
  251. * (type RIGIDITE)
  252. * .'AMORTISSEMENT' :amortissement de la structure
  253. * (type RIGIDITE)
  254. * .'BLOCAGES_MECANIQUES' :tout type des blocages mecaniques
  255. * supplementaires (type RIGIDITE)
  256. * .'RES_DYN_X' :Table des resultats du calcul DYNAMIC
  257. *
  258. * COMMENTAIRES
  259. * --------------------------------------------
  260. * La procedure peut etre utilisée seulement pour des cas 3D
  261. *
  262. * AUTEUR, DATE DE CREATION ET DE MODIFICATION:
  263. * --------------------------------------------
  264. *
  265. * A. FRAU 25/11/2015 : Creation.
  266.  
  267. *
  268. ************************************************************************
  269. *
  270. *************************************************************
  271. MESS '';
  272. MESS '**************************************************************';
  273. MESS '';
  274. MESS '--------------------------------------------------------------';
  275. MESS '---------------------- Procedure ISSLEQ ----------------------';
  276. MESS '-- Procedure pour la realissation d un calcul ISS avec --';
  277. MESS '-- la methode lineaire equivalente --';
  278. MESS '--------------------------------------------------------------';
  279. MESS '';
  280. *************************************************************
  281. *
  282. 'SI' (('VALE' 'DIME') 'NEG' 3);
  283. 'MESS';
  284. 'MESS' ' La procedure ISSLEQ marche seulement pour les calculs 3D';
  285. QUIT ISSLEQ;
  286. 'FINSI';
  287. *
  288. *************************************************************
  289. *************** inizio procedura *******************
  290. *************************************************************
  291. *
  292. *
  293. *
  294. 'SI' ('EXIST' (TDON1) 'STEP0');
  295. *************************************************************
  296. **************** STEP SUP A 1 **********************
  297. *************************************************************
  298. *
  299. 'SI' ('EXIST' (TDON1) 'COLONNE');
  300. 'SI' ('EXIST' (TDON1) 'STRUCTURE');
  301. I_STEP = ('DIME' TDON1) - 5;
  302. 'SINON';
  303. I_STEP = ('DIME' TDON1) - 4;
  304. 'FINSI';
  305. 'SINON';
  306. 'SI' ('EXIST' (TDON1) 'STRUCTURE');
  307. I_STEP = ('DIME' TDON1) - 4;
  308. 'SINON';
  309. I_STEP = ('DIME' TDON1) - 3;
  310. 'FINSI';
  311. 'FINSI';
  312. *
  313. MOT11 = 'CHAINE' 'STEP ' I_STEP;
  314. MOT22 = 'CHAINE' 'STEP' I_STEP;
  315. MOT33 = 'CHAINE' 'STEP' (I_STEP - 1);
  316. *
  317. MESS '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++';
  318. MESS '-- 'MOT11' --';
  319. MESS '--------------------------------------------------------------';
  320. *
  321. TDON1.MOT22 = TABLE;
  322. *
  323. **************************************************************
  324. * extraction tables
  325. **************************************************************
  326. *
  327. MESS '';
  328. MESS '--------------------------------------------------------------';
  329. MESS '-- Lecture des donnees d entree --';
  330. MESS '--------------------------------------------------------------';
  331. *
  332. TABPAR = TDON1.'PARAMETRES';
  333. TABFRO = TDON1.'FRONTIERE';
  334. 'SI' ('EXIST' (TDON1) 'STRUCTURE');
  335. TABSTR = TDON1.MOT33.'STRUCTURE';
  336. 'FINSI';
  337. *
  338. 'SI' (EXIST (TDON1.'SOL') 'CONSTANTE');
  339. TABSOL_C = TDON1.'SOL'.'CONSTANTE';
  340. 'FINSI';
  341. *
  342. 'SI' (EXIST (TDON1.'SOL') 'ITERATION');
  343. TABSOL_I = TDON1.'SOL'.'ITERATION';
  344. 'FINSI';
  345. *
  346. 'SI' (EXIST (TDON1) 'COLONNE');
  347. TABCOL = TDON1.'COLONNE';
  348. 'FINSI';
  349. *
  350. 'SI' (EXIST (TDON1.MOT33.'SOL') 'CONSTANTE');
  351. TABRES_C = TDON1.MOT33.'SOL'.'CONSTANTE';
  352. *
  353. SOL_C = TABRES_C.T_SOL;
  354. ESO_C = TABRES_C.T_ESO;
  355. MOD_C = TABRES_C.T_MOD;
  356. MAT_C = TABRES_C.T_MAT;
  357. KSI_C = TABRES_C.T_KSI;
  358. RIG_C = TABRES_C.T_RIG;
  359. MAS_C = TABRES_C.T_MAS;
  360. AMO_C = TABRES_C.T_AMO;
  361. GGO_C = TABRES_C.T_GGO;
  362. *
  363. MAI_SOLC = TABRES_C.O_SOL;
  364. MOD_SOLC = TABRES_C.O_MOD;
  365. MAT_SOLC = TABRES_C.O_MAT;
  366. GGO_SOLC = TABRES_C.O_GGO;
  367. KSI_SOLC = TABRES_C.O_KSI;
  368. RIG_SOLC = TABRES_C.O_RIG;
  369. MAS_SOLC = TABRES_C.O_MAS;
  370. AMO_SOLC = TABRES_C.O_AMO;
  371. *
  372. NZONE_C = DIME SOL_C;
  373. *
  374. 'FINSI';
  375. *
  376. 'SI' (EXIST (TDON1.MOT33.'SOL') 'ITERATION');
  377. TABRES_I = TDON1.MOT33.'SOL'.'ITERATION';
  378. *
  379. SOL_I = TABRES_I.T_SOL;
  380. ESO_I = TABRES_I.T_ESO;
  381. MOD_I = TABRES_I.T_MOD;
  382. MAT_I = TABRES_I.T_MAT;
  383. KSI_I = TABRES_I.T_KSI;
  384. RIG_I = TABRES_I.T_RIG;
  385. MAS_I = TABRES_I.T_MAS;
  386. AMO_I = TABRES_I.T_AMO;
  387. GGO_I = TABRES_I.T_GGO;
  388. *
  389. MAI_SOLI = TABRES_I.O_SOL;
  390. MOD_SOLI = TABRES_I.O_MOD;
  391. MAT_SOLI = TABRES_I.O_MAT;
  392. GGO_SOLI = TABRES_I.O_GGO;
  393. KSI_SOLI = TABRES_I.O_KSI;
  394. RIG_SOLI = TABRES_I.O_RIG;
  395. MAS_SOLI = TABRES_I.O_MAS;
  396. AMO_SOLI = TABRES_I.O_AMO;
  397. *
  398. NZONE_I = DIME SOL_I;
  399. *
  400. 'FINSI';
  401. *
  402. 'SI' (EXIST (TDON1.MOT33) 'COLONNE');
  403. TABRESC = TDON1.MOT33.'COLONNE';
  404. *
  405. SOLCOL = TABRESC.T_SOL;
  406. ESOCOL = TABRESC.T_ESO;
  407. MODCOL = TABRESC.T_MOD;
  408. MATCOL = TABRESC.T_MAT;
  409. KSICOL = TABRESC.T_KSI;
  410. RIGCOL = TABRESC.T_RIG;
  411. MASCOL = TABRESC.T_MAS;
  412. AMOCOL = TABRESC.T_AMO;
  413. GGOCOL = TABRESC.T_GGO;
  414. *
  415. MAISOLC = TABRESC.O_SOL;
  416. MODSOLC = TABRESC.O_MOD;
  417. MATSOLC = TABRESC.O_MAT;
  418. GGOSOLC = TABRESC.O_GGO;
  419. KSISOLC = TABRESC.O_KSI;
  420. RIGSOLC = TABRESC.O_RIG;
  421. MASSOLC = TABRESC.O_MAS;
  422. AMOSOLC = TABRESC.O_AMO;
  423. *
  424. NZONEC = DIME SOLCOL;
  425. *
  426. 'FINSI';
  427. *
  428. F1 = TABPAR.'F1' ;
  429. F2 = TABPAR.'F2' ;
  430. FC = TABPAR.'FC' ;
  431. V_MOD = VALEUR MODE;
  432. *
  433. **************************************************************
  434. * preparation deconvolution
  435. **************************************************************
  436. *
  437. MESS '';
  438. MESS '--------------------------------------------------------------';
  439. MESS '-- Deconvolution --';
  440. MESS '--------------------------------------------------------------';
  441. 'SI' (EGA (TYPE TABRESC) 'TABLE');
  442. *
  443. * Deconvilution 3D (Cas Mode Plan et 3D) - Colonne
  444. * NN1 = 'DIME' (TABCOL);
  445. I = 1;
  446. 'REPE' IND1 (NZONEC);
  447. 'SI' (I 'EGA' 1);
  448. BOR_FRO = (TABCOL. I .'FRONTIERE');
  449. 'SINON';
  450. BOR_FRO = BOR_FRO 'ET' (TABCOL. I .'FRONTIERE');
  451. 'FINSI';
  452. I = I + 1;
  453. 'FIN' IND1;
  454. 'ELIM' 0.001 BOR_FRO;
  455. BOR_FON = TABCOL. NZONEC .'BASE';
  456. 'OUBL' NN1;
  457. 'OUBL' I;
  458. *
  459. PP1 = BOR_FRO POIN PROC (10000. 10000. 10000.);
  460. PP2 = BOR_FRO POIN PROC (10000. 10000. -10000.);
  461. LL2 = BOR_FRO POIN DROIT PP1 PP2 0.001;
  462. *
  463. LL2B = LL2;
  464. I = 1;
  465. NN1 = NBNO LL2;
  466. 'REPE' IND1 (NN1);
  467. 'SI' (I EGA NN1);
  468. PP1 = LL2B;
  469. 'SINON';
  470. PP1 = LL2B POIN PROC (0. 0. 10000.);
  471. 'FINSI';
  472. 'SI' ('EGA' ('TYPE' LL2A) 'POINT');
  473. LL2A = LL2A 'ET' PP1;
  474. 'SINON';
  475. 'SI' ('EGA' ('TYPE' LL2A) 'MAILLAGE');
  476. LL2A = LL2A ET PP1;
  477. 'SINON';
  478. LL2A = PP1;
  479. 'FINSI';
  480. 'FINSI';
  481. NN2 = NN1 - (I - 1);
  482. J = 1;
  483. 'SI' (NN2 'NEG' 1);
  484. 'REPE' IND2 (NN2);
  485. PPX = LL2B 'POIN' J;
  486. VAL1 = 0.;
  487. VAL1 = VAL1 + (((PPX 'COOR' 1) -(PP1 'COOR' 1))**(2));
  488. VAL1 = VAL1 + (((PPX 'COOR' 2) -(PP1 'COOR' 2))**(2));
  489. VAL1 = VAL1 + (((PPX 'COOR' 3) -(PP1 'COOR' 3))**(2));
  490. VAL1 = ((VAL1)**(0.5));
  491. 'SI' (VAL1 > 0.001);
  492. 'SI' ('EGA' ('TYPE' LL2C) 'POINT');
  493. LL2C = LL2C 'ET' PPX;
  494. 'SINON';
  495. 'SI' ('EGA' ('TYPE' LL2C) 'MAILLAGE');
  496. LL2C = LL2C 'ET' PPX;
  497. 'SINON';
  498. LL2C = PPX;
  499. 'FINSI';
  500. 'FINSI';
  501. 'FINSI';
  502. J = J + 1;
  503. 'FIN' IND2;
  504. 'FINSI';
  505. LL2B = LL2C;
  506. 'OUBL' LL2C;
  507. I = I + 1;
  508. 'FIN' IND1;
  509. LL2 = LL2A;
  510. 'OUBL' LL2A;
  511. 'OUBL' LL2B;
  512. 'OUBL' LL2C;
  513. 'OUBL' NN1;
  514. 'OUBL' NN2;
  515. 'OUBL' VAL1;
  516. 'OUBL' PP1;
  517. 'OUBL' PPX;
  518. *
  519. NELEM_F = ('NBNO' LL2) - 1;
  520. I = 1 ;
  521. ID2 = 'CHAINE' 'N';
  522. TABDV2 = 'TABLE';
  523. 'REPE' BLOC4 NELEM_F ;
  524. PP1 = LL2 'POIN' I;
  525. PP2 = LL2 'POIN' (I + 1);
  526. XX1 = -10000.;
  527. XX2 = 10000.;
  528. YY1 = -10000.;
  529. YY2 = 10000.;
  530. ZZ1 = (PP1 'COOR' 3) + 0.01;
  531. ZZ2 = (PP2 'COOR' 3) - 0.01;
  532. CH1 CH2 CH3 = 'COOR' (BOR_FRO);
  533. MAI2 = CH1 'POIN' 'COMPRIS' XX1 XX2;
  534. CH2 = 'REDU' CH2 MAI2 ;
  535. MAI2 = CH2 'POIN' 'COMPRIS' YY1 YY2;
  536. CH3 = 'REDU' CH3 MAI2 ;
  537. MAI2 = CH3 'POIN' 'COMPRIS' ZZ2 ZZ1;
  538. CH3 = 'REDU' CH3 MAI2 ;
  539. MAI2 = (BOR_FRO) 'ELEM' 'APPUYE'
  540. 'STRICTEMENT' MAI2;
  541. TABDV2.I = 'TABLE' ;
  542. TABDV2.I.'FRONTIERE' = MAI2;
  543. Z1 = (PP1 COOR 3);
  544. Z3 = (PP2 COOR 3);
  545. TABDV2.I.'EPAISSEUR' = Z1 - Z3 ;
  546. * ZELEM1 = MAISOLC 'ELEM' 'CONTENANT' PP1;
  547. ZELEM2 = MAISOLC 'ELEM' 'CONTENANT' PP2;
  548. PPX1 = ZELEM1 POIN PROC PP1;
  549. PPX2 = ZELEM1 POIN PROC PP2;
  550. PPY1 = ZELEM2 POIN PROC PP1;
  551. PPY2 = ZELEM2 POIN PROC PP2;
  552. * VALX1 = 0.;
  553. VALX2 = 0.;
  554. VALX1 = VALX1 + (((PPX1 COOR 1) - (PP1 COOR 1))**(2.));
  555. VALX1 = VALX1 + (((PPX1 COOR 2) - (PP1 COOR 2))**(2.));
  556. VALX1 = VALX1 + (((PPX1 COOR 3) - (PP1 COOR 3))**(2.));
  557. VALX1 = ((VALX1)**(0.5));
  558. VALX2 = VALX2 + (((PPX2 COOR 1) - (PP2 COOR 1))**(2.));
  559. VALX2 = VALX2 + (((PPX2 COOR 2) - (PP2 COOR 2))**(2.));
  560. VALX2 = VALX2 + (((PPX2 COOR 3) - (PP2 COOR 3))**(2.));
  561. VALX2 = ((VALX2)**(0.5));
  562. VALY1 = 0.;
  563. VALY2 = 0.;
  564. VALY1 = VALY1 + (((PPY1 COOR 1) - (PP1 COOR 1))**(2.));
  565. VALY1 = VALY1 + (((PPY1 COOR 2) - (PP1 COOR 2))**(2.));
  566. VALY1 = VALY1 + (((PPY1 COOR 3) - (PP1 COOR 3))**(2.));
  567. VALY1 = ((VALY1)**(0.5));
  568. VALY2 = VALY2 + (((PPY2 COOR 1) - (PP2 COOR 1))**(2.));
  569. VALY2 = VALY2 + (((PPY2 COOR 2) - (PP2 COOR 2))**(2.));
  570. VALY2 = VALY2 + (((PPY2 COOR 3) - (PP2 COOR 3))**(2.));
  571. VALY2 = ((VALY2)**(0.5));
  572. 'SI' ((VALX1 + VALX2) < 0.0001);
  573. ZELEM = ZELEM1;
  574. 'FINSI';
  575. 'SI' ((VALY1 + VALY2) < 0.0001);
  576. ZELEM = ZELEM2;
  577. 'FINSI';
  578. ZELEM = ZELEM1 'ELEM' 'CONTENANT' PP1;
  579. 'OUBL' ZELEM1;
  580. 'OUBL' ZELEM2;
  581. 'OUBL' VALX1;
  582. 'OUBL' VALX2;
  583. 'OUBL' VALY1;
  584. 'OUBL' VALY2;
  585. *
  586. RMATE = REDU MATSOLC ZELEM ;
  587. RKSI = REDU KSISOLC ZELEM ;
  588. *
  589. TABDV2.I.'MASSE_VOLUMIQUE' = EXTR RMATE RHO 1 1 1 ;
  590. TABDV2.I.'POISSON' = EXTR RMATE NU 1 1 1 ;
  591. TABDV2.I.'YOUNG' = EXTR RMATE YOUN 1 1 1 ;
  592. TABDV2.I.'AMORTISSEMENT' = EXTR RKSI KS 1 1 1 ;
  593. I = I + 1 ;
  594. 'FIN' BLOC4 ;
  595. 'OUBL' ELEM_I;
  596. 'OUBL' NOEU1;
  597. 'OUBL' NOEU2;
  598. 'OUBL' NOEU3;
  599. 'OUBL' Z1;
  600. 'OUBL' Z3;
  601. 'OUBL' PP1;
  602. 'OUBL' PP2;
  603. 'OUBL' ID1;
  604. *
  605. TDON1.MOT22.'COLONNE' = TABLE;
  606. 'SI' ('EXIST' TABPAR 'GAMMAO_X');
  607. DIR = 'UX' ;
  608. GAMMAO = TABPAR.'GAMMAO_X' ;
  609. TYP_F = TABPAR.'TYPE' ;
  610. MOD_DEC = MODSOLC;
  611. MAT_DEC = MATSOLC;
  612. MAI_DEC = MAISOLC;
  613. *
  614. PPX1 =
  615. (TABDV2 . 1 .FRONTIERE) POIN PROC (-100000. -100000. 10000.);
  616. PPX2 =
  617. (TABDV2 . 1 .FRONTIERE) POIN PROC (100000. 100000. 10000.);
  618.  
  619. PPXF = (((PPX2 COOR 1) + (PPX1 COOR 1))/(2.))
  620. (((PPX2 COOR 2) - (PPX1 COOR 2))/(2.))
  621. (((PPX2 COOR 3) - (PPX1 COOR 3))/(2.));
  622. P_GAM = TABLE;
  623. P_GAM. 1 = (TABDV2. 1 .'FRONTIERE') 'POIN' 'PROC' (10000. 10000.
  624. 10000.);
  625. TABRXDV2 = DECONV3D TABDV2 (PPXF) BOR_FON MOD_DEC
  626. MAT_DEC DIR GAMMAO F1 F2 FC P_GAM;
  627. TDON1.MOT22.'COLONNE'.'TAB_DEC' = TABDV2;
  628. TDON1.MOT22.'COLONNE'.'RES_DEC_X' = TABRXDV2;
  629. 'OUBL' P_GAM;
  630. 'OUBL' PPXF
  631. 'OUBL' BOR_FRO;
  632. 'OUBL' BOR_FON;
  633. 'OUBL' MOD_DEC;
  634. 'OUBL' MAT_DEC;
  635. 'OUBL' DIR;
  636. 'OUBL' GAMMAO;
  637. 'OUBL' MAI_DEC;
  638. 'FINSI';
  639. *
  640. 'SI' ('EXIST' TABPAR 'GAMMAO_Y');
  641. DIR = 'UY' ;
  642. GAMMAO = TABPAR.'GAMMAO_Y' ;
  643. TYP_F = TABPAR.'TYPE' ;
  644. MOD_DEC = MODSOLC;
  645. MAT_DEC = MATSOLC;
  646. MAI_DEC = MAISOLC;
  647. *
  648. PPX1 = (TABDV2 . 1 .FRONTIERE)
  649. POIN PROC (-100000. -100000. 10000.);
  650. PPX2 = (TABDV2 . 1 .FRONTIERE)
  651. POIN PROC (100000. 100000. 10000.);
  652.  
  653. *
  654. PPXF = (((PPX2 COOR 1) + (PPX1 COOR 1))/(2.))
  655. (((PPX2 COOR 2) - (PPX1 COOR 2))/(2.))
  656. (((PPX2 COOR 3) - (PPX1 COOR 3))/(2.));
  657. P_GAM = TABLE;
  658. P_GAM. 1 = (TABDV2. 1 .'FRONTIERE') 'POIN' 'PROC' (10000. 10000.
  659. 10000.);
  660. TABRYDV2 = DECONV3D TABDV2 (PPXF) BOR_FON MOD_DEC
  661. MAT_DEC DIR GAMMAO F1 F2 FC P_GAM;
  662. TDON1.MOT22.'COLONNE'.'TAB_DEC' = TABDV2;
  663. TDON1.MOT22.'COLONNE'.'RES_DEC_Y' = TABRYDV2;
  664. 'OUBL' P_GAM;
  665. 'OUBL' PPXF
  666. 'OUBL' BOR_FRO;
  667. 'OUBL' BOR_FON;
  668. 'OUBL' MOD_DEC;
  669. 'OUBL' MAT_DEC;
  670. 'OUBL' DIR;
  671. 'OUBL' GAMMAO;
  672. 'OUBL' MAI_DEC;
  673. 'FINSI';
  674. *
  675. 'SI' ('EXIST' TABPAR 'GAMMAO_Z');
  676. DIR = 'UZ' ;
  677. GAMMAO = TABPAR.'GAMMAO_Z' ;
  678. TYP_F = TABPAR.'TYPE' ;
  679. MOD_DEC = MODSOLC;
  680. MAT_DEC = MATSOLC;
  681. MAI_DEC = MAISOLC;
  682. *
  683. PPX1 = (TABDV2 . 1 .FRONTIERE)
  684. POIN PROC (-100000. -100000. 10000.);
  685. PPX2 = (TABDV2 . 1 .FRONTIERE)
  686. POIN PROC (100000. 100000. 10000.);
  687.  
  688. *
  689. PPXF = (((PPX2 COOR 1) + (PPX1 COOR 1))/(2.))
  690. (((PPX2 COOR 2) - (PPX1 COOR 2))/(2.))
  691. (((PPX2 COOR 3) - (PPX1 COOR 3))/(2.));
  692. P_GAM = TABLE;
  693. P_GAM. 1 = (TABDV2. 1 .'FRONTIERE') 'POIN' 'PROC' (10000. 10000.
  694. 10000.);
  695. TABRZDV2 = DECONV3D TABDV2 (PPXF) BOR_FON MOD_DEC
  696. MAT_DEC DIR GAMMAO F1 F2 FC P_GAM;
  697. TDON1.MOT22.'COLONNE'.'TAB_DEC' = TABDV2;
  698. TDON1.MOT22.'COLONNE'.'RES_DEC_Z' = TABRZDV2;
  699. 'OUBL' P_GAM;
  700. 'OUBL' PPXF
  701. 'OUBL' BOR_FRO;
  702. 'OUBL' BOR_FON;
  703. 'OUBL' MOD_DEC;
  704. 'OUBL' MAT_DEC;
  705. 'OUBL' DIR;
  706. 'OUBL' GAMMAO;
  707. 'OUBL' MAI_DEC;
  708. 'FINSI';
  709. 'SINON';
  710. *
  711. * Deconvilution 3D (Cas 3D)
  712. NN1 = 'DIME' (TABFRO.LATERALE);
  713. I = 1;
  714. 'REPE' IND1 (NN1);
  715. 'SI' (I EGA 1);
  716. BOR_FRO = (TABFRO.LATERALE. I .MAILLAGE);
  717. 'SINON';
  718. BOR_FRO = BOR_FRO ET (TABFRO.LATERALE. I .MAILLAGE);
  719. 'FINSI';
  720. I = I + 1;
  721. 'FIN' IND1;
  722. 'ELIM' 0.001 BOR_FRO;
  723. BOR_FON = TABFRO.'BASE';
  724. 'OUBL' NN1;
  725. 'OUBL' I;
  726. *
  727. PP1 = BOR_FRO POIN PROC (10000. 10000. 10000.);
  728. PP2 = BOR_FRO POIN PROC (10000. 10000. -10000.);
  729. LL2 = BOR_FRO POIN DROIT PP1 PP2 0.001;
  730. *
  731. LL2B = LL2;
  732. I = 1;
  733. NN1 = NBNO LL2;
  734. 'REPE' IND1 (NN1);
  735. 'SI' (I EGA NN1);
  736. PP1 = LL2B;
  737. 'SINON';
  738. PP1 = LL2B POIN PROC (0. 0. 10000.);
  739. 'FINSI';
  740. 'SI' ('EGA' ('TYPE' LL2A) 'POINT');
  741. LL2A = LL2A 'ET' PP1;
  742. 'SINON';
  743. 'SI' ('EGA' ('TYPE' LL2A) 'MAILLAGE');
  744. LL2A = LL2A ET PP1;
  745. 'SINON';
  746. LL2A = PP1;
  747. 'FINSI';
  748. 'FINSI';
  749. NN2 = NN1 - (I - 1);
  750. J = 1;
  751. 'SI' (NN2 'NEG' 1);
  752. 'REPE' IND2 (NN2);
  753. PPX = LL2B 'POIN' J;
  754. VAL1 = 0.;
  755. VAL1 = VAL1 + (((PPX 'COOR' 1) -(PP1 'COOR' 1))**(2));
  756. VAL1 = VAL1 + (((PPX 'COOR' 2) -(PP1 'COOR' 2))**(2));
  757. VAL1 = VAL1 + (((PPX 'COOR' 3) -(PP1 'COOR' 3))**(2));
  758. VAL1 = ((VAL1)**(0.5));
  759. 'SI' (VAL1 > 0.001);
  760. 'SI' ('EGA' ('TYPE' LL2C) 'POINT');
  761. LL2C = LL2C 'ET' PPX;
  762. 'SINON';
  763. 'SI' ('EGA' ('TYPE' LL2C) 'MAILLAGE');
  764. LL2C = LL2C 'ET' PPX;
  765. 'SINON';
  766. LL2C = PPX;
  767. 'FINSI';
  768. 'FINSI';
  769. 'FINSI';
  770. J = J + 1;
  771. 'FIN' IND2;
  772. 'FINSI';
  773. LL2B = LL2C;
  774. 'OUBL' LL2C;
  775. I = I + 1;
  776. 'FIN' IND1;
  777. LL2 = LL2A;
  778. 'OUBL' LL2A;
  779. 'OUBL' LL2B;
  780. 'OUBL' LL2C;
  781. 'OUBL' NN1;
  782. 'OUBL' NN2;
  783. 'OUBL' VAL1;
  784. 'OUBL' PP1;
  785. 'OUBL' PPX;
  786. *
  787. NELEM_F = ('NBNO' LL2) - 1;
  788. I = 1 ;
  789. ID2 = 'CHAINE' 'N';
  790. TABDV = 'TABLE';
  791. *
  792. 'REPE' BLOC4 NELEM_F ;
  793. PP1 = LL2 POIN I;
  794. PP2 = LL2 POIN (I + 1);
  795. XX1 = -10000.;
  796. XX2 = 10000.;
  797. YY1 = -10000.;
  798. YY2 = 10000.;
  799. ZZ1 = (PP1 COOR 3) + 0.01;
  800. ZZ2 = (PP2 COOR 3) - 0.01;
  801. CH1 CH2 CH3 = 'COOR' (BOR_FRO);
  802. MAI2 = CH1 'POIN' 'COMPRIS' XX1 XX2;
  803. CH2 = 'REDU' CH2 MAI2 ;
  804. MAI2 = CH2 'POIN' 'COMPRIS' YY1 YY2;
  805. CH3 = 'REDU' CH3 MAI2 ;
  806. MAI2 = CH3 'POIN' 'COMPRIS' ZZ2 ZZ1;
  807. CH3 = 'REDU' CH3 MAI2 ;
  808. MAI2 = (BOR_FRO) 'ELEM' 'APPUYE'
  809. 'STRICTEMENT' MAI2;
  810. *
  811. TABDV.I = 'TABLE' ;
  812. TABDV.I.'FRONTIERE' = MAI2;
  813. Z1 = (PP1 COOR 3);
  814. Z3 = (PP2 COOR 3);
  815. TABDV.I.'EPAISSEUR' = Z1 - Z3 ;
  816. *
  817. 'SI' ('EGA' ('TYPE' (MAI_SOLC)) 'MAILLAGE');
  818. PPP1 = MAI_SOLC 'POIN' 'PROC' PP1;
  819. VAL1 = 0.;
  820. VAL1 = VAL1 + (((PPP1 COOR 1) - (PP1 COOR 1))**(2.));
  821. VAL1 = VAL1 + (((PPP1 COOR 2) - (PP1 COOR 2))**(2.));
  822. VAL1 = VAL1 + (((PPP1 COOR 3) - (PP1 COOR 3))**(2.));
  823. VAL1 = ((VAL1)**(0.5));
  824. 'SINON';
  825. VAL1 = 100000.;
  826. 'FINSI';
  827. 'SI' ('EGA' ('TYPE' (MAI_SOLI)) 'MAILLAGE');
  828. PPP2 = MAI_SOLI 'POIN' 'PROC' PP1;
  829. VAL2 = 0.;
  830. VAL2 = VAL2 + (((PPP2 COOR 1) - (PP1 COOR 1))**(2.));
  831. VAL2 = VAL2 + (((PPP2 COOR 2) - (PP1 COOR 2))**(2.));
  832. VAL2 = VAL2 + (((PPP2 COOR 3) - (PP1 COOR 3))**(2.));
  833. VAL2 = ((VAL2)**(0.5));
  834. 'SINON';
  835. VAL2 = 100000.;
  836. 'FINSI';
  837. *
  838. *
  839. 'SI' (VAL1 < 0.0001);
  840. ZELEM1 = MAI_SOLC 'ELEM' 'CONTENANT' PP1;
  841. ZELEM2 = MAI_SOLC 'ELEM' 'CONTENANT' PP2;
  842. PPX1 = ZELEM1 POIN PROC PP1;
  843. PPX2 = ZELEM1 POIN PROC PP2;
  844. PPY1 = ZELEM2 POIN PROC PP1;
  845. PPY2 = ZELEM2 POIN PROC PP2;
  846. *
  847. VALX1 = 0.;
  848. VALX2 = 0.;
  849. VALX1 = VALX1 + (((PPX1 COOR 1) - (PP1 COOR 1))**(2.));
  850. VALX1 = VALX1 + (((PPX1 COOR 2) - (PP1 COOR 2))**(2.));
  851. VALX1 = VALX1 + (((PPX1 COOR 3) - (PP1 COOR 3))**(2.));
  852. VALX1 = ((VALX1)**(0.5));
  853. VALX2 = VALX2 + (((PPX2 COOR 1) - (PP2 COOR 1))**(2.));
  854. VALX2 = VALX2 + (((PPX2 COOR 2) - (PP2 COOR 2))**(2.));
  855. VALX2 = VALX2 + (((PPX2 COOR 3) - (PP2 COOR 3))**(2.));
  856. VALX2 = ((VALX2)**(0.5));
  857. VALY1 = 0.;
  858. VALY2 = 0.;
  859. VALY1 = VALY1 + (((PPY1 COOR 1) - (PP1 COOR 1))**(2.));
  860. VALY1 = VALY1 + (((PPY1 COOR 2) - (PP1 COOR 2))**(2.));
  861. VALY1 = VALY1 + (((PPY1 COOR 3) - (PP1 COOR 3))**(2.));
  862. VALY1 = ((VALY1)**(0.5));
  863. VALY2 = VALY2 + (((PPY2 COOR 1) - (PP2 COOR 1))**(2.));
  864. VALY2 = VALY2 + (((PPY2 COOR 2) - (PP2 COOR 2))**(2.));
  865. VALY2 = VALY2 + (((PPY2 COOR 3) - (PP2 COOR 3))**(2.));
  866. VALY2 = ((VALY2)**(0.5));
  867. 'SI' ((VALX1 + VALX2) < 0.0001);
  868. ZELEM = ZELEM1;
  869. 'FINSI';
  870. 'SI' ((VALY1 + VALY2) < 0.0001);
  871. ZELEM = ZELEM2;
  872. 'FINSI';
  873. *
  874. 'OUBL' ZELEM1;
  875. 'OUBL' ZELEM2;
  876. 'OUBL' VALX1;
  877. 'OUBL' VALX2;
  878. 'OUBL' VALY1;
  879. 'OUBL' VALY2;
  880. ID1 = 'CHAINE' 'C';
  881. 'SI' ('EGA' ID2 'C');
  882. ID2 = 'CHAINE' 'C';
  883. 'SINON';
  884. 'SI' ('EGA' ID2 'I');
  885. ID2 = 'M';
  886. 'SINON';
  887. ID2 = 'C';
  888. 'FINSI';
  889. 'FINSI';
  890. 'SINON';
  891. 'SI' (VAL2 < 0.0001);
  892. ZELEM1 = MAI_SOLI 'ELEM' 'CONTENANT' PP1;
  893. ZELEM2 = MAI_SOLI 'ELEM' 'CONTENANT' PP2;
  894. PPX1 = ZELEM1 POIN PROC PP1;
  895. PPX2 = ZELEM1 POIN PROC PP2;
  896. PPY1 = ZELEM2 POIN PROC PP1;
  897. PPY2 = ZELEM2 POIN PROC PP2;
  898. *
  899. VALX1 = 0.;
  900. VALX2 = 0.;
  901. VALX1 = VALX1 + (((PPX1 COOR 1) - (PP1 COOR 1))**(2.));
  902. VALX1 = VALX1 + (((PPX1 COOR 2) - (PP1 COOR 2))**(2.));
  903. VALX1 = VALX1 + (((PPX1 COOR 3) - (PP1 COOR 3))**(2.));
  904. VALX1 = ((VALX1)**(0.5));
  905. VALX2 = VALX2 + (((PPX2 COOR 1) - (PP2 COOR 1))**(2.));
  906. VALX2 = VALX2 + (((PPX2 COOR 2) - (PP2 COOR 2))**(2.));
  907. VALX2 = VALX2 + (((PPX2 COOR 3) - (PP2 COOR 3))**(2.));
  908. VALX2 = ((VALX2)**(0.5));
  909. VALY1 = 0.;
  910. VALY2 = 0.;
  911. VALY1 = VALY1 + (((PPY1 COOR 1) - (PP1 COOR 1))**(2.));
  912. VALY1 = VALY1 + (((PPY1 COOR 2) - (PP1 COOR 2))**(2.));
  913. VALY1 = VALY1 + (((PPY1 COOR 3) - (PP1 COOR 3))**(2.));
  914. VALY1 = ((VALY1)**(0.5));
  915. VALY2 = VALY2 + (((PPY2 COOR 1) - (PP2 COOR 1))**(2.));
  916. VALY2 = VALY2 + (((PPY2 COOR 2) - (PP2 COOR 2))**(2.));
  917. VALY2 = VALY2 + (((PPY2 COOR 3) - (PP2 COOR 3))**(2.));
  918. VALY2 = ((VALY2)**(0.5));
  919. 'SI' ((VALX1 + VALX2) < 0.0001);
  920. ZELEM = ZELEM1;
  921. 'FINSI';
  922. 'SI' ((VALY1 + VALY2) < 0.0001);
  923. ZELEM = ZELEM2;
  924. 'FINSI';
  925. *
  926. ID1 = 'CHAINE' 'I';
  927. 'SI' ('EGA' ID2 'I');
  928. ID2 = 'CHAINE' 'I';
  929. 'SINON';
  930. 'SI' ('EGA' ID2 'C');
  931. ID2 = 'M';
  932. 'SINON';
  933. ID2 = 'I';
  934. 'FINSI';
  935. 'FINSI';
  936. 'SINON';
  937. 'MESS' 'Error contruction table DECONV';
  938. 'QUIT' ISSLEQ;
  939. 'FINSI';
  940. 'FINSI';
  941. 'OUBL' ZELEM1;
  942. 'OUBL' ZELEM2;
  943. *
  944. 'SI' ('EGA' ID1 'C');
  945. RMATE = REDU MAT_SOLC ZELEM ;
  946. RKSI = REDU KSI_SOLC ZELEM ;
  947. 'FINSI';
  948. 'SI' ('EGA' ID1 'I');
  949. RMATE = REDU MAT_SOLI ZELEM ;
  950. RKSI = REDU KSI_SOLI ZELEM ;
  951. 'FINSI';
  952. *
  953. TABDV.I.'MASSE_VOLUMIQUE' = EXTR RMATE RHO 1 1 1 ;
  954. TABDV.I.'POISSON' = EXTR RMATE NU 1 1 1 ;
  955. TABDV.I.'YOUNG' = EXTR RMATE YOUN 1 1 1 ;
  956. TABDV.I.'AMORTISSEMENT' = EXTR RKSI KS 1 1 1 ;
  957. I = I + 1 ;
  958. 'FIN' BLOC4 ;
  959. 'OUBL' ELEM_I;
  960. 'OUBL' NOEU1;
  961. 'OUBL' NOEU2;
  962. 'OUBL' NOEU3;
  963. 'OUBL' Z1;
  964. 'OUBL' Z3;
  965. 'OUBL' PP1;
  966. 'OUBL' PP2;
  967. 'OUBL' ID1;
  968. *
  969. TDON1.MOT22.'SOL' = TABLE;
  970. 'SI' ('EXIST' TABPAR 'GAMMAO_X');
  971. DIR = 'UX' ;
  972. GAMMAO = TABPAR.'GAMMAO_X' ;
  973. TYP_F = TABPAR.'TYPE' ;
  974. 'SI' ('EGA' ID2 'C');
  975. MOD_DEC = MOD_SOLC;
  976. MAT_DEC = MAT_SOLC;
  977. MAI_DEC = MAI_SOLC;
  978. 'FINSI';
  979. *
  980. 'SI' ('EGA' ID2 'I');
  981. MOD_DEC = MOD_SOLI;
  982. MAT_DEC = MAT_SOLI;
  983. MAI_DEC = MAI_SOLI;
  984. 'FINSI';
  985. *
  986. 'SI' ('EGA' ID2 'M');
  987. MOD_DEC = MOD_SOLC ET MOD_SOLI;
  988. MAT_DEC = MAT_SOLC ET MAT_SOLI;
  989. MAI_DEC = MAI_SOLC ET MAI_SOLI;
  990. 'FINSI';
  991. *
  992. P_GAM = TABPAR.'PAR_DEC';
  993. TABRXDV = DECONV3D TABDV (TABPAR.POINT) BOR_FON MOD_DEC
  994. MAT_DEC DIR GAMMAO F1 F2 FC P_GAM;
  995. *
  996. TDON1.MOT22.'SOL'.'TAB_DEC' = TABDV;
  997. TDON1.MOT22.'SOL'.'RES_DEC_X' = TABRXDV;
  998. 'FINSI';
  999. *
  1000. 'SI' ('EXIST' TABPAR 'GAMMAO_Y');
  1001. DIR = 'UY' ;
  1002. GAMMAO = TABPAR.'GAMMAO_Y' ;
  1003. TYP_F = TABPAR.'TYPE' ;
  1004. 'SI' ('EGA' ID2 'C');
  1005. MOD_DEC = MOD_SOLC;
  1006. MAT_DEC = MAT_SOLC;
  1007. MAI_DEC = MAI_SOLC;
  1008. 'FINSI';
  1009. *
  1010. 'SI' ('EGA' ID2 'I');
  1011. MOD_DEC = MOD_SOLI;
  1012. MAT_DEC = MAT_SOLI;
  1013. MAI_DEC = MAI_SOLI;
  1014. 'FINSI';
  1015. *
  1016. 'SI' ('EGA' ID2 'M');
  1017. MOD_DEC = MOD_SOLC ET MOD_SOLI;
  1018. MAT_DEC = MAT_SOLC ET MAT_SOLI;
  1019. MAI_DEC = MAI_SOLC ET MAI_SOLI;
  1020. 'FINSI';
  1021. *
  1022. P_GAM = TABLE;
  1023. P_GAM. 1 = (TABDV. 1 .'FRONTIERE') 'POIN' 'PROC' (10000. 10000.
  1024. 10000.);
  1025. TABRYDV = DECONV3D TABDV (TABPAR.POINT) BOR_FON MOD_DEC
  1026. MAT_DEC DIR GAMMAO F1 F2 FC P_GAM;
  1027. *
  1028. TDON1.MOT22.'SOL'.'TAB_DEC' = TABDV;
  1029. TDON1.MOT22.'SOL'.'RES_DEC_Y' = TABRYDV;
  1030. 'FINSI';
  1031. *
  1032. 'SI' ('EXIST' TABPAR 'GAMMAO_Z');
  1033. DIR = 'UZ' ;
  1034. GAMMAO = TABPAR.'GAMMAO_Z' ;
  1035. TYP_F = TABPAR.'TYPE' ;
  1036. 'SI' ('EGA' ID2 'C');
  1037. MOD_DEC = MOD_SOLC;
  1038. MAT_DEC = MAT_SOLC;
  1039. MAI_DEC = MAI_SOLC;
  1040. 'FINSI';
  1041. *
  1042. 'SI' ('EGA' ID2 'I');
  1043. MOD_DEC = MOD_SOLI;
  1044. MAT_DEC = MAT_SOLI;
  1045. MAI_DEC = MAI_SOLI;
  1046. 'FINSI';
  1047. *
  1048. 'SI' ('EGA' ID2 'M');
  1049. MOD_DEC = MOD_SOLC ET MOD_SOLI;
  1050. MAT_DEC = MAT_SOLC ET MAT_SOLI;
  1051. MAI_DEC = MAI_SOLC ET MAI_SOLI;
  1052. 'FINSI';
  1053. *
  1054. P_GAM = TABLE;
  1055. P_GAM. 1 = (TABDV. 1 .'FRONTIERE') 'POIN' 'PROC' (10000. 10000.
  1056. 10000.);
  1057. TABRZDV = DECONV3D TABDV (TABPAR.POINT) BOR_FON MOD_DEC
  1058. MAT_DEC DIR GAMMAO F1 F2 FC P_GAM;
  1059. *
  1060. TDON1.MOT22.'SOL'.'TAB_DEC' = TABDV;
  1061. TDON1.MOT22.'SOL'.'RES_DEC_Z' = TABRZDV;
  1062. 'FINSI';
  1063. 'OUBL' P_GAM;
  1064. 'OUBL' BOR_FRO;
  1065. 'OUBL' BOR_FON;
  1066. 'OUBL' MOD_DEC;
  1067. 'OUBL' MAT_DEC;
  1068. 'OUBL' DIR;
  1069. 'OUBL' GAMMAO;
  1070. 'OUBL' MAI_DEC;
  1071. 'FINSI';
  1072. *
  1073.  
  1074. 'SI' ('EXIST' (TDON1) 'STRUCTURE');
  1075. TDON1.MOT22.'STRUCTURE' = 'COPI' (TDON1.'STRUCTURE');
  1076. 'FINSI';
  1077. *
  1078. **************************************************************
  1079. * resolution dynamique
  1080. **************************************************************
  1081. *
  1082. MESS '';
  1083. MESS '--------------------------------------------------------------';
  1084. MESS '-- Calcul Dynamic --';
  1085. MESS '--------------------------------------------------------------';
  1086. *
  1087. * Detection plage de temps
  1088. A1 = 0;
  1089. 'SI' ('EXIST' TABPAR 'GAMMAO_X');
  1090. DT1 = EXTR (EXTR (TABPAR.'GAMMAO_X') ABSC) 2;
  1091. AA1 AA2 A3 = 'MAXI' (TABPAR.'GAMMAO_X');
  1092. 'SI' (AA1 > A1);
  1093. A1 = AA1;
  1094. 'FINSI';
  1095. 'OUBL' AA1;
  1096. 'OUBL' AA2;
  1097. 'OUBL' AA3;
  1098. 'FINSI';
  1099. 'SI' ('EXIST' TABPAR 'GAMMAO_Y');
  1100. DT1 = EXTR (EXTR (TABPAR.'GAMMAO_Y') ABSC) 2;
  1101. AA1 AA2 A3 = 'MAXI' (TABPAR.'GAMMAO_Y');
  1102. 'SI' (AA1 > A1);
  1103. A1 = AA1;
  1104. 'FINSI';
  1105. 'OUBL' AA1;
  1106. 'OUBL' AA2;
  1107. 'OUBL' AA3;
  1108. 'FINSI';
  1109. 'SI' ('EXIST' TABPAR 'GAMMAO_Z');
  1110. DT1 = EXTR (EXTR (TABPAR.'GAMMAO_Z') ABSC) 2;
  1111. AA1 AA2 A3 = 'MAXI' (TABPAR.'GAMMAO_Z');
  1112. 'SI' (AA1 > A1);
  1113. A1 = AA1;
  1114. 'FINSI';
  1115. 'OUBL' AA1;
  1116. 'OUBL' AA2;
  1117. 'OUBL' AA3;
  1118. 'FINSI';
  1119. A2 = (ENTI((TABPAR.'DELTA_T')/DT1))/2;
  1120. NB_PAS = A1 + A2;
  1121. NN1 = A1 + A2;
  1122. NN2 = A1 - A2;
  1123. 'SI' (NN2 < 0);
  1124. NN2 = 0;
  1125. 'FINSI';
  1126. 'OUBL' A2;
  1127. 'OUBL' A1;
  1128. 'OUBL' DT1;
  1129. NN1 = ((NN1 - 1)*(4)) + 1;
  1130. NN2 = ((NN2 - 1)*(4)) + 1;
  1131. NB_PAS = NN1 + 4;
  1132. *
  1133. 'SI' ('EGA' ('TYPE' TABCOL) 'TABLE');
  1134. *
  1135. * resolution dynamique sur la colonne
  1136. 'SI' ('EGA' V_MOD 'TRID' ) ;
  1137. 'SI' (('DIME' ('EXTR' RIGSOLC 'COMP')) 'EGA' 3);
  1138. CH_DEPI = 'MANU' 'CHPO' 3 MAISOLC UX 0.0 UY 0.0 UZ 0.0 ;
  1139. CH_VITI = 'MANU' 'CHPO' 3 MAISOLC UX 0.0 UY 0.0 UZ 0.0 ;
  1140. 'SINON';
  1141. CH_DEPI = 'MANU' 'CHPO' 6 MAISOLC UX 0.0 UY 0.0 UZ 0.0
  1142. RX 0.0 RY 0.0 RZ 0.0;
  1143. CH_VITI = 'MANU' 'CHPO' 6 MAISOLC UX 0.0 UY 0.0 UZ 0.0
  1144. RX 0.0 RY 0.0 RZ 0.0;
  1145. 'FINSI';
  1146. 'FINSI';
  1147. 'SI' ('EXIST' TABPAR 'GAMMAO_X');
  1148. TAB_DYXC = TABLE ;
  1149. TAB_DYXC.'DEPL' = CH_DEPI ;
  1150. TAB_DYXC.'VITE' = CH_VITI ;
  1151. TAB_DYXC.'RIGI' = RIGSOLC ;
  1152. TAB_DYXC.'MASS' = MASSOLC;
  1153. TAB_DYXC.'AMOR' = AMOSOLC 'ET' (TABRXDV2.'AMOR');
  1154. TAB_DYXC.'CHAR' = TABRXDV2.'CHAR' ;
  1155. TAB_DYXC.'FREQ' = TABRXDV2.'FCDYN' ;
  1156. TAB_DYXC.'DEBU' = 0.0 ;
  1157. TAB_DYXC.'INST' = 'PROG' 0.0 PAS ((1)*(TABRXDV2.'PAS'))
  1158. NPAS ( NB_PAS - 1 ) ;
  1159. TRESUXC = DYNAMIC TAB_DYXC ;
  1160. 'TEMPS' ;
  1161. 'MENAGE' ;
  1162. TDON1.MOT22.'COLONNE'.'RES_DYN_X' = 'COPI' TRESUXC;
  1163. 'FINSI';
  1164. 'SI' ('EXIST' TABPAR 'GAMMAO_Y');
  1165. TAB_DYYC = TABLE ;
  1166. TAB_DYYC.'DEPL' = CH_DEPI ;
  1167. TAB_DYYC.'VITE' = CH_VITI ;
  1168. TAB_DYYC.'RIGI' = RIGSOLC ;
  1169. TAB_DYYC.'MASS' = MASSOLC;
  1170. TAB_DYYC.'AMOR' = AMOSOLC 'ET' (TABRYDV2.'AMOR');
  1171. TAB_DYYC.'CHAR' = TABRYDV2.'CHAR' ;
  1172. TAB_DYYC.'FREQ' = TABRYDV2.'FCDYN' ;
  1173. TAB_DYYC.'DEBU' = 0.0 ;
  1174. TAB_DYYC.'INST' = 'PROG' 0.0 PAS ((1)*(TABRYDV2.'PAS'))
  1175. NPAS ( NB_PAS - 1 ) ;
  1176. TRESUYC = DYNAMIC TAB_DYYC ;
  1177. 'TEMPS' ;
  1178. 'MENAGE' ;
  1179. TDON1.MOT22.'COLONNE'.'RES_DYN_Y' = 'COPI' TRESUYC;
  1180. 'FINSI';
  1181. 'SI' ('EXIST' TABPAR 'GAMMAO_Z');
  1182. TAB_DYZC = TABLE ;
  1183. TAB_DYZC.'DEPL' = CH_DEPI ;
  1184. TAB_DYZC.'VITE' = CH_VITI ;
  1185. TAB_DYZC.'RIGI' = RIGSOLC ;
  1186. TAB_DYZC.'MASS' = MASSOLC;
  1187. TAB_DYZC.'AMOR' = AMOSOLC 'ET' (TABRZDV2.'AMOR');
  1188. TAB_DYZC.'CHAR' = TABRZDV2.'CHAR' ;
  1189. TAB_DYZC.'FREQ' = TABRZDV2.'FCDYN' ;
  1190. TAB_DYZC.'DEBU' = 0.0 ;
  1191. TAB_DYZC.'INST' = 'PROG' 0.0 PAS ((1)*(TABRZDV2.'PAS'))
  1192. NPAS ( NB_PAS - 1 ) ;
  1193. TRESUZC = DYNAMIC TAB_DYZC ;
  1194. 'TEMPS' ;
  1195. 'MENAGE' ;
  1196. TDON1.MOT22.'COLONNE'.'RES_DYN_Z' = 'COPI' TRESUZC;
  1197. 'FINSI';
  1198. 'SINON';
  1199. *
  1200. * resolution dynamique du systeme sol+structure
  1201. 'SI' ('EGA' ('TYPE' MAI_SOLC) 'MAILLAGE' ) ;
  1202. MAITOT = MAI_SOLC;
  1203. MODTOT = MOD_SOLC;
  1204. RIGTOT = RIG_SOLC;
  1205. MASTOT = MAS_SOLC;
  1206. AMOTOT = AMO_SOLC;
  1207. 'SI' ('EGA' ('TYPE' MAI_SOLI) 'MAILLAGE' ) ;
  1208. MAITOT = MAITOT 'ET' MAI_SOLI;
  1209. MODTOT = MODTOT 'ET' MOD_SOLI;
  1210. RIGTOT = RIGTOT 'ET' RIG_SOLI;
  1211. MASTOT = MASTOT 'ET' MAS_SOLI;
  1212. AMOTOT = AMOTOT 'ET' AMO_SOLI;
  1213. 'FINSI';
  1214. 'SINON';
  1215. 'SI' ('EGA' ('TYPE' MAI_SOLI) 'MAILLAGE' );
  1216. MAITOT = MAI_SOLI;
  1217. MODTOT = MOD_SOLI;
  1218. RIGTOT = RIG_SOLI;
  1219. MASTOT = MAS_SOLI;
  1220. AMOTOT = AMO_SOLI;
  1221. 'FINSI';
  1222. 'FINSI';
  1223. 'SI' ('EGA' ('TYPE' TABSTR) 'TABLE' );
  1224. MAITOT = MAITOT 'ET' (TABSTR.'MAILLAGE');
  1225. RIGTOT = RIGTOT 'ET' (TABSTR.'RIGIDITE');
  1226. MASTOT = MASTOT 'ET' (TABSTR.'MASSE');
  1227. AMOTOT = AMOTOT 'ET' (TABSTR.'AMORTISSEMENT');
  1228. 'SI' ('EXIST' (TABSTR) 'BLOCAGES_MECANIQUES' );
  1229. RIGTOT = RIGTOT 'ET' (TABSTR.'BLOCAGES_MECANIQUES');
  1230. 'FINSI';
  1231. 'FINSI';
  1232. * 'ELIM' 0.001 MAITOT;
  1233. *
  1234. 'SI' ('EGA' V_MOD 'TRID' ) ;
  1235. 'SI' (('DIME' ('EXTR' RIGTOT 'COMP')) 'EGA' 3);
  1236. CH_DEPI = 'MANU' 'CHPO' 3 MAITOT UX 0.0 UY 0.0 UZ 0.0 ;
  1237. CH_VITI = 'MANU' 'CHPO' 3 MAITOT UX 0.0 UY 0.0 UZ 0.0 ;
  1238. 'SINON';
  1239. CH_DEPI = 'MANU' 'CHPO' 6 MAITOT UX 0.0 UY 0.0 UZ 0.0
  1240. RX 0.0 RY 0.0 RZ 0.0;
  1241. CH_VITI = 'MANU' 'CHPO' 6 MAITOT UX 0.0 UY 0.0 UZ 0.0
  1242. RX 0.0 RY 0.0 RZ 0.0;
  1243. 'FINSI';
  1244. 'FINSI';
  1245. *
  1246. 'SI' ('EXIST' TABPAR 'GAMMAO_X');
  1247. TAB_DYX = TABLE ;
  1248. TAB_DYX.'DEPL' = CH_DEPI ;
  1249. TAB_DYX.'VITE' = CH_VITI ;
  1250. TAB_DYX.'RIGI' = RIGTOT ;
  1251. TAB_DYX.'MASS' = MASTOT;
  1252. TAB_DYX.'AMOR' = AMOTOT 'ET' (TABRXDV.'AMOR');
  1253. TAB_DYX.'CHAR' = TABRXDV.'CHAR' ;
  1254. TAB_DYX.'FREQ' = TABRXDV.'FCDYN' ;
  1255. TAB_DYX.'DEBU' = 0.0 ;
  1256. TAB_DYX.'INST' = 'PROG' 0.0 PAS ((1)*(TABRXDV.'PAS'))
  1257. NPAS ( NB_PAS - 1 ) ;
  1258. TRESUX = DYNAMIC TAB_DYX ;
  1259. 'TEMPS' ;
  1260. 'MENAGE' ;
  1261. TDON1.MOT22.'RES_DYN_X' = 'COPI' TRESUX;
  1262. 'FINSI';
  1263. 'SI' ('EXIST' TABPAR 'GAMMAO_Y');
  1264. TAB_DYY = TABLE ;
  1265. TAB_DYY.'DEPL' = CH_DEPI ;
  1266. TAB_DYY.'VITE' = CH_VITI ;
  1267. TAB_DYY.'RIGI' = RIGTOT ;
  1268. TAB_DYY.'MASS' = MASTOT;
  1269. TAB_DYY.'AMOR' = AMOTOT 'ET' (TABRYDV.'AMOR');
  1270. TAB_DYY.'CHAR' = TABRYDV.'CHAR' ;
  1271. TAB_DYY.'FREQ' = TABRYDV.'FCDYN' ;
  1272. TAB_DYY.'DEBU' = 0.0 ;
  1273. TAB_DYY.'INST' = 'PROG' 0.0 PAS ((1)*(TABRYDV.'PAS'))
  1274. NPAS ( NB_PAS - 1 ) ;
  1275. TRESUY = DYNAMIC TAB_DYY ;
  1276. 'TEMPS' ;
  1277. 'MENAGE' ;
  1278. TDON1.MOT22.'RES_DYN_Y' = 'COPI' TRESUY;
  1279. 'FINSI';
  1280. 'SI' ('EXIST' TABPAR 'GAMMAO_Z');
  1281. TAB_DYZ = TABLE ;
  1282. TAB_DYZ.'DEPL' = CH_DEPI ;
  1283. TAB_DYZ.'VITE' = CH_VITI ;
  1284. TAB_DYZ.'RIGI' = RIGTOT ;
  1285. TAB_DYZ.'MASS' = MASTOT;
  1286. TAB_DYZ.'AMOR' = AMOTOT 'ET' (TABRZDV.'AMOR');
  1287. TAB_DYZ.'CHAR' = TABRZDV.'CHAR' ;
  1288. TAB_DYZ.'FREQ' = TABRZDV.'FCDYN' ;
  1289. TAB_DYZ.'DEBU' = 0.0 ;
  1290. TAB_DYZ.'INST' = 'PROG' 0.0 PAS ((1)*(TABRZDV.'PAS'))
  1291. NPAS ( NB_PAS - 1 ) ;
  1292. TRESUZ = DYNAMIC TAB_DYZ ;
  1293. 'TEMPS' ;
  1294. 'MENAGE' ;
  1295. TDON1.MOT22.'RES_DYN_Z' = 'COPI' TRESUZ;
  1296. 'FINSI';
  1297. 'FINSI';
  1298. *
  1299. **************************************************************
  1300. * deductions reponse
  1301. **************************************************************
  1302. *
  1303. *
  1304. *
  1305. **************************************************************
  1306. * deduction du champ de deformation maximale
  1307. **************************************************************
  1308. *
  1309. MESS '';
  1310. MESS '--------------------------------------------------------------';
  1311. MESS '-- Calcul Deformation Maximale --';
  1312. MESS '--------------------------------------------------------------';
  1313. 'SI' ('EGA' ('TYPE' TABSOL_C) 'TABLE');
  1314. DEF_C = 'TABLE';
  1315. 'SI' ('EGA' ('TYPE' TABCOL) 'TABLE');
  1316. DEFC = 'TABLE';
  1317. II1 = 1;
  1318. 'REPE' IND1 (NZONE_C);
  1319. DEF_C. II1 = 'TABLE';
  1320. JJ1 = 1;
  1321. 'REPE' IND2 ('DIME' (SOL_C. II1));
  1322. DEF_C. II1 . JJ1 = 'MANU' 'CHML' (MOD_C. II1 . JJ1) 'DMAX' 0.0;
  1323. JJ1 = JJ1 + 1;
  1324. 'FIN' IND2;
  1325. II1 = II1 + 1;
  1326. 'FIN' IND1;
  1327. II1 = 1;
  1328. 'REPE' IND1 (NZONEC);
  1329. DEFC. II1 = 'TABLE';
  1330. JJ1 = 1;
  1331. 'REPE' IND2 ('DIME' (SOLCOL. II1));
  1332. DEFC. II1 . JJ1 = 'MANU' 'CHML' (MODCOL. II1 . JJ1) 'DMAX' 0.0;
  1333. JJ1 = JJ1 + 1;
  1334. 'FIN' IND2;
  1335. II1 = II1 + 1;
  1336. 'FIN' IND1;
  1337. 'SINON';
  1338. II1 = 1;
  1339. 'REPE' IND1 (NZONE_C);
  1340. DEF_C. II1 = 'MANU' 'CHML' (MOD_C. II1) 'DMAX' 0.0;
  1341. II1 = II1 + 1;
  1342. 'FIN' IND1;
  1343. 'FINSI';
  1344. 'FINSI';
  1345. *
  1346. 'SI' ('EGA' ('TYPE' TABSOL_I) 'TABLE');
  1347. DEF_I = 'TABLE';
  1348. II1 = 1;
  1349. 'REPE' IND1 ('DIME' SOL_I);
  1350. * DEF_I. II1 = 'TABLE';
  1351. * JJ1 = 1;
  1352. * 'REPE' IND2 ('DIME' (SOL_I. II1));
  1353. * DEF_I. II1 . JJ1 = 'MANU' 'CHML' (MOD_I. II1 . JJ1) 'DMAX' 0.0;
  1354. * JJ1 = JJ1 + 1;
  1355. * 'FIN' IND2;
  1356. DEF_I. II1 = 'MANU' 'CHML' (MOD_I. II1) 'DMAX' 0.0;
  1357. II1 = II1 + 1;
  1358. 'FIN' IND1;
  1359. 'FINSI';
  1360. *
  1361. 'SI' ('EGA' ('TYPE' TABCOL) 'TABLE');
  1362. I = 1;
  1363. 'REPE' IND1 (NN1);
  1364. 'SI' (I '>' (NN2));
  1365. 'SI' ('EGA' ('TYPE' CH1) 'CHPOINT');
  1366. 'SI' ('EGA' ('TYPE' TRESUXC) 'TABLE');
  1367. CH1 = CH1 + (TRESUXC. I .'DEPL');
  1368. 'FINSI';
  1369. 'SI' ('EGA' ('TYPE' TRESUYC) 'TABLE');
  1370. CH1 = CH1 + (TRESUYC. I .'DEPL');
  1371. 'FINSI';
  1372. 'SI' ('EGA' ('TYPE' TRESUZC) 'TABLE');
  1373. CH1 = CH1 + (TRESUZC. I .'DEPL');
  1374. 'FINSI';
  1375. 'SINON';
  1376. 'SI' ('EGA' ('TYPE' TRESUXC) 'TABLE');
  1377. CH1 = (TRESUXC. I .'DEPL');
  1378. 'FINSI';
  1379. 'SI' ('EGA' ('TYPE' TRESUYC) 'TABLE');
  1380. CH1 = (TRESUYC. I .'DEPL');
  1381. 'FINSI';
  1382. 'SI' ('EGA' ('TYPE' TRESUZC) 'TABLE');
  1383. CH1 = (TRESUZC. I .'DEPL');
  1384. 'FINSI';
  1385. 'FINSI';
  1386.  
  1387. * DEPSOL = 'REDU' (TRESUC. I .'DEPL') ('EXTR' MODSOLC 'MAIL');
  1388. DEPSOL = 'REDU' (CH1) ('EXTR' MODSOLC 'MAIL');
  1389. 'OUBL' CH1;
  1390.  
  1391. EPSSOL = 'EPSI' DEPSOL MODSOLC;
  1392. EPSSOL = 'CHAN' 'GRAVITE' MODSOLC EPSSOL;
  1393. *
  1394. * Cas 3D - COLONNE
  1395. 'SI' ('EGA' V_MOD 'TRID' ) ;
  1396. II1 = 1;
  1397. 'REPE' IND3 (NZONEC);
  1398. JJ1 = 1;
  1399. 'REPE' IND4 ('DIME' (SOLCOL. II1));
  1400. MOD1 = 'REDU' MODSOLC (SOLCOL. II1 . JJ1);
  1401. EPS1 = 'REDU' EPSSOL (SOLCOL. II1 . JJ1);
  1402. E11 = EXCO 'EPXX' EPS1 'SMXX' ;
  1403. E22 = EXCO 'EPYY' EPS1 'SMYY' ;
  1404. E33 = EXCO 'EPZZ' EPS1 'SMZZ' ;
  1405. G12 = EXCO 'GAXY' EPS1 'SMXY' ;
  1406. G13 = EXCO 'GAXZ' EPS1 'SMXZ' ;
  1407. G23 = EXCO 'GAYZ' EPS1 'SMYZ' ;
  1408. E12 = G12 / 2.0 ;
  1409. E13 = G13 / 2.0 ;
  1410. E23 = G23 / 2.0 ;
  1411. EPS2 = E11;
  1412. EPS2 = EPS2 + (E22);
  1413. EPS2 = EPS2 + (E33);
  1414. EPS2 = EPS2 + (E12);
  1415. EPS2 = EPS2 + (E13);
  1416. EPS2 = EPS2 + (E23);
  1417. EPS2 = CHAN 'TYPE' EPS2 'CONTRAINTES' ;
  1418. EPS2 = 'PRIN' EPS2 MOD1;
  1419. 'DETR' E11;
  1420. 'DETR' E22;
  1421. 'DETR' E33;
  1422. 'DETR' G12;
  1423. 'DETR' G13;
  1424. 'DETR' G23;
  1425. 'DETR' E12;
  1426. 'DETR' E13;
  1427. 'DETR' E23;
  1428. S11 = 'EXCO' SI11 EPS2 'DMAX' ;
  1429. S33 = 'EXCO' SI33 EPS2 'DMAX' ;
  1430. CHDEFM = (S11 - S33)*(0.5);
  1431. VAL1 = 'EXTR' CHDEFM 'DMAX' 1 1 1;
  1432. VAL2 = 'EXTR' (DEFC. II1 . JJ1) 'DMAX' 1 1 1;
  1433. 'SI' (VAL1 > VAL2);
  1434. DEFC. II1 . JJ1= CHDEFM;
  1435. 'FINSI';
  1436. JJ1 = JJ1 + 1;
  1437. 'FIN' IND4;
  1438. II1 = II1 + 1;
  1439. 'FIN' IND3;
  1440. 'FINSI';
  1441. 'FINSI';
  1442. I = I + 1;
  1443. 'FIN' IND1;
  1444. 'SINON';
  1445. *
  1446. CHDEFM_I = 'TABLE';
  1447. CHDEFM_C = 'TABLE';
  1448. I = 1;
  1449. 'REPE' IND1 (NN1);
  1450. 'SI' (I '>' (NN2));
  1451. 'SI' ('EGA' ('TYPE' CH1) 'CHPOINT');
  1452. 'SI' ('EGA' ('TYPE' TRESUX) 'TABLE');
  1453. CH1 = CH1 + (TRESUX. I .'DEPL');
  1454. 'FINSI';
  1455. 'SI' ('EGA' ('TYPE' TRESUY) 'TABLE');
  1456. CH1 = CH1 + (TRESUY. I .'DEPL');
  1457. 'FINSI';
  1458. 'SI' ('EGA' ('TYPE' TRESUZ) 'TABLE');
  1459. CH1 = CH1 + (TRESUZ. I .'DEPL');
  1460. 'FINSI';
  1461. 'SINON';
  1462. 'SI' ('EGA' ('TYPE' TRESUX) 'TABLE');
  1463. CH1 = (TRESUX. I .'DEPL');
  1464. 'FINSI';
  1465. 'SI' ('EGA' ('TYPE' TRESUY) 'TABLE');
  1466. CH1 = (TRESUY. I .'DEPL');
  1467. 'FINSI';
  1468. 'SI' ('EGA' ('TYPE' TRESUZ) 'TABLE');
  1469. CH1 = (TRESUZ. I .'DEPL');
  1470. 'FINSI';
  1471. 'FINSI';
  1472. * DEPSOL = 'REDU' (TRESU. I .'DEPL') ('EXTR' MODTOT 'MAIL');
  1473. DEPSOL = 'REDU' (CH1) ('EXTR' MODTOT 'MAIL');
  1474. 'OUBL' CH1;
  1475. EPSSOL = 'EPSI' DEPSOL MODTOT;
  1476. EPSSOL = 'CHAN' 'GRAVITE' MODTOT EPSSOL;
  1477. *
  1478. * Cas 3D
  1479. 'SI' ('EGA' V_MOD 'TRID' ) ;
  1480. *
  1481. ******** VECCHIA VERSIONE
  1482. * 'SI' ('EGA' ('TYPE' TABSOL_C) 'TABLE');
  1483. * II1 = 1;
  1484. * 'REPE' IND3 (NZONE_C);
  1485. * MOD1 = 'REDU' MODTOT (SOL_C. II1);
  1486. * EPS1 = 'REDU' EPSSOL (SOL_C. II1);
  1487. * E11 = EXCO 'EPXX' EPS1 'SMXX' ;
  1488. * E22 = EXCO 'EPYY' EPS1 'SMYY' ;
  1489. * E33 = EXCO 'EPZZ' EPS1 'SMZZ' ;
  1490. * G12 = EXCO 'GAXY' EPS1 'SMXY' ;
  1491. * G13 = EXCO 'GAXZ' EPS1 'SMXZ' ;
  1492. * G23 = EXCO 'GAYZ' EPS1 'SMYZ' ;
  1493. * E12 = G12 / 2.0 ;
  1494. * E13 = G13 / 2.0 ;
  1495. * E23 = G23 / 2.0 ;
  1496. * EPS2 = E11;
  1497. * EPS2 = EPS2 + (E22);
  1498. * EPS2 = EPS2 + (E33);
  1499. * EPS2 = EPS2 + (E12);
  1500. * EPS2 = EPS2 + (E13);
  1501. * EPS2 = EPS2 + (E23);
  1502. * EPS2 = CHAN 'TYPE' EPS2 'CONTRAINTES' ;
  1503. * EPS2 = 'PRIN' EPS2 MOD1;
  1504. * 'DETR' E11;
  1505. * 'DETR' E22;
  1506. * 'DETR' E33;
  1507. * 'DETR' G12;
  1508. * 'DETR' G13;
  1509. * 'DETR' G23;
  1510. * 'DETR' E12;
  1511. * 'DETR' E13;
  1512. * 'DETR' E23;
  1513. * S11 = 'EXCO' SI11 EPS2 'DMAX' ;
  1514. * S33 = 'EXCO' SI33 EPS2 'DMAX' ;
  1515. * CHDEFM = (S11 - S33)*(0.5);
  1516. * VAL1 = 'EXTR' CHDEFM 'DMAX' 1 1 1;
  1517. * VAL2 = 'EXTR' (DEF_C. II1) 'DMAX' 1 1 1;
  1518. * 'SI' (VAL1 > VAL2);
  1519. * DEF_C. II1 = CHDEFM;
  1520. * 'FINSI';
  1521. * II1 = II1 + 1;
  1522. * 'FIN' IND3;
  1523. * 'FINSI';
  1524. * 'SI' ('EGA' ('TYPE' TABSOL_I) 'TABLE');
  1525. * II1 = 1;
  1526. * 'REPE' IND3 (NZONE_I);
  1527. * JJ1 = 1;
  1528. * 'REPE' IND4 ('DIME' SOL_I. II1);
  1529. * MOD1 = 'REDU' MODTOT (SOL_I. II1 . JJ1);
  1530. * EPS1 = 'REDU' EPSSOL (SOL_I. II1 . JJ1);
  1531. * E11 = 'EXCO' 'EPXX' EPS1 'SMXX' ;
  1532. * E22 = 'EXCO' 'EPYY' EPS1 'SMYY' ;
  1533. * E33 = 'EXCO' 'EPZZ' EPS1 'SMZZ' ;
  1534. * G12 = 'EXCO' 'GAXY' EPS1 'SMXY' ;
  1535. * G13 = 'EXCO' 'GAXZ' EPS1 'SMXZ' ;
  1536. * G23 = 'EXCO' 'GAYZ' EPS1 'SMYZ' ;
  1537. * E12 = G12 / 2.0 ;
  1538. * E13 = G13 / 2.0 ;
  1539. * E23 = G23 / 2.0 ;
  1540. * EPS2 = E11;
  1541. * EPS2 = EPS2 + (E22);
  1542. * EPS2 = EPS2 + (E33);
  1543. * EPS2 = EPS2 + (E12);
  1544. * EPS2 = EPS2 + (E13);
  1545. * EPS2 = EPS2 + (E23);
  1546. * EPS2 = 'CHAN' 'TYPE' EPS2 'CONTRAINTES' ;
  1547. * EPS2 = 'PRIN' EPS2 MOD1;
  1548. * 'DETR' E11;
  1549. * 'DETR' E22;
  1550. * 'DETR' E33;
  1551. * 'DETR' G12;
  1552. * 'DETR' G13;
  1553. * 'DETR' G23;
  1554. * 'DETR' E12;
  1555. * 'DETR' E13;
  1556. * 'DETR' E23;
  1557. * EPS2 = 'PRIN' EPS1 MOD1;
  1558. * S11 = 'EXCO' SI11 EPS2 'DMAX' ;
  1559. * S33 = 'EXCO' SI33 EPS2 'DMAX' ;
  1560. * CHDEFM = (S11 - S33)*(0.5);
  1561. * VAL1 = 'EXTR' CHDEFM 'DMAX' 1 1 1;
  1562. * VAL2 = 'EXTR' (DEF_I. II1 . JJ1) 'DMAX' 1 1 1;
  1563. * 'SI' (VAL1 > VAL2);
  1564. * DEF_I. II1 . JJ1 = CHDEFM;
  1565. * 'FINSI';
  1566. * JJ1 = JJ1 + 1;
  1567. * 'FIN' IND4;
  1568. * II1 = II1 + 1;
  1569. * 'FIN' IND3;
  1570. * 'FINSI';
  1571. *
  1572. ******** NUOVA VERSIONE
  1573. 'SI' ('EGA' ('TYPE' TABSOL_C) 'TABLE');
  1574. * CHDEFM_C = 'TABLE';
  1575. II1 = 1;
  1576. 'REPE' IND3 (NZONE_C);
  1577. 'SI' (I EGA (NN2 + 1));
  1578. MOD1 = 'REDU' MODTOT (SOL_C. II1);
  1579. EPS1 = 'REDU' EPSSOL (SOL_C. II1);
  1580. E11 = EXCO 'EPXX' EPS1 'SMXX' ;
  1581. E22 = EXCO 'EPYY' EPS1 'SMYY' ;
  1582. E33 = EXCO 'EPZZ' EPS1 'SMZZ' ;
  1583. G12 = EXCO 'GAXY' EPS1 'SMXY' ;
  1584. G13 = EXCO 'GAXZ' EPS1 'SMXZ' ;
  1585. G23 = EXCO 'GAYZ' EPS1 'SMYZ' ;
  1586. E12 = G12 / 2.0 ;
  1587. E13 = G13 / 2.0 ;
  1588. E23 = G23 / 2.0 ;
  1589. EPS2 = E11;
  1590. EPS2 = EPS2 + (E22);
  1591. EPS2 = EPS2 + (E33);
  1592. EPS2 = EPS2 + (E12);
  1593. EPS2 = EPS2 + (E13);
  1594. EPS2 = EPS2 + (E23);
  1595. EPS2 = CHAN 'TYPE' EPS2 'CONTRAINTES' ;
  1596. EPS2 = 'PRIN' EPS2 MOD1;
  1597. 'DETR' E11;
  1598. 'DETR' E22;
  1599. 'DETR' E33;
  1600. 'DETR' G12;
  1601. 'DETR' G13;
  1602. 'DETR' G23;
  1603. 'DETR' E12;
  1604. 'DETR' E13;
  1605. 'DETR' E23;
  1606. S11 = 'EXCO' SI11 EPS2 'DMAX' ;
  1607. S33 = 'EXCO' SI33 EPS2 'DMAX' ;
  1608. * CHDEFM_C. II1 = (S11 - S33)*(0.5);
  1609. CHDEFM_C. II1 = (S11 - S33)*(1.0);
  1610. 'SINON';
  1611. MOD1 = 'REDU' MODTOT (SOL_C. II1);
  1612. EPS1 = 'REDU' EPSSOL (SOL_C. II1);
  1613. E11 = EXCO 'EPXX' EPS1 'SMXX' ;
  1614. E22 = EXCO 'EPYY' EPS1 'SMYY' ;
  1615. E33 = EXCO 'EPZZ' EPS1 'SMZZ' ;
  1616. G12 = EXCO 'GAXY' EPS1 'SMXY' ;
  1617. G13 = EXCO 'GAXZ' EPS1 'SMXZ' ;
  1618. G23 = EXCO 'GAYZ' EPS1 'SMYZ' ;
  1619. E12 = G12 / 2.0 ;
  1620. E13 = G13 / 2.0 ;
  1621. E23 = G23 / 2.0 ;
  1622. EPS2 = E11;
  1623. EPS2 = EPS2 + (E22);
  1624. EPS2 = EPS2 + (E33);
  1625. EPS2 = EPS2 + (E12);
  1626. EPS2 = EPS2 + (E13);
  1627. EPS2 = EPS2 + (E23);
  1628. EPS2 = CHAN 'TYPE' EPS2 'CONTRAINTES' ;
  1629. EPS2 = 'PRIN' EPS2 MOD1;
  1630. 'DETR' E11;
  1631. 'DETR' E22;
  1632. 'DETR' E33;
  1633. 'DETR' G12;
  1634. 'DETR' G13;
  1635. 'DETR' G23;
  1636. 'DETR' E12;
  1637. 'DETR' E13;
  1638. 'DETR' E23;
  1639. S11 = 'EXCO' SI11 EPS2 'DMAX' ;
  1640. S33 = 'EXCO' SI33 EPS2 'DMAX' ;
  1641. * CHDEFM_C. II1 = MAXI (CHDEFM_C. II1) ((S11 - S33)*(0.5));
  1642. CH_111 = (CHDEFM_C. II1);
  1643. * CH_222 = ((S11 - S33)*(0.5));
  1644. CH_222 = ((S11 - S33)*(1.0));
  1645. DIF_11 = CH_111 - CH_222;
  1646. MASQ1 = MASQ DIF_11 'INFEURIEUR' 0.D0;
  1647. MASQ2 = MASQ DIF_11 'EGSUPE' 0.D0;
  1648. CHDEFM_C. II1 = (CH_111 '*' MASQ2) + (CH_222 '*' MASQ1);
  1649. 'FINSI';
  1650. DEF_C. II1 = CHDEFM_C. II1;
  1651. II1 = II1 + 1;
  1652. 'FIN' IND3;
  1653. 'FINSI';
  1654. *
  1655. 'SI' ('EGA' ('TYPE' TABSOL_I) 'TABLE');
  1656. * CHDEFM_I = 'TABLE';
  1657. II1 = 1;
  1658. 'REPE' IND3 (NZONE_I);
  1659. 'SI' (I EGA (NN2 + 1));
  1660. MOD1 = 'REDU' MODTOT (SOL_I. II1);
  1661. EPS1 = 'REDU' EPSSOL (SOL_I. II1);
  1662. E11 = 'EXCO' 'EPXX' EPS1 'SMXX' ;
  1663. E22 = 'EXCO' 'EPYY' EPS1 'SMYY' ;
  1664. E33 = 'EXCO' 'EPZZ' EPS1 'SMZZ' ;
  1665. G12 = 'EXCO' 'GAXY' EPS1 'SMXY' ;
  1666. G13 = 'EXCO' 'GAXZ' EPS1 'SMXZ' ;
  1667. G23 = 'EXCO' 'GAYZ' EPS1 'SMYZ' ;
  1668. E12 = G12 / 2.0 ;
  1669. E13 = G13 / 2.0 ;
  1670. E23 = G23 / 2.0 ;
  1671. EPS2 = E11;
  1672. EPS2 = EPS2 + (E22);
  1673. EPS2 = EPS2 + (E33);
  1674. EPS2 = EPS2 + (E12);
  1675. EPS2 = EPS2 + (E13);
  1676. EPS2 = EPS2 + (E23);
  1677. EPS2 = 'CHAN' 'TYPE' EPS2 'CONTRAINTES' ;
  1678. EPS2 = 'PRIN' EPS2 MOD1;
  1679. 'DETR' E11;
  1680. 'DETR' E22;
  1681. 'DETR' E33;
  1682. 'DETR' G12;
  1683. 'DETR' G13;
  1684. 'DETR' G23;
  1685. 'DETR' E12;
  1686. 'DETR' E13;
  1687. 'DETR' E23;
  1688. * EPS2 = 'PRIN' EPS1 MOD1;
  1689. * EPS2 = 'PRIN' EPS2 MOD1;
  1690. S11 = 'EXCO' SI11 EPS2 'DMAX' ;
  1691. S33 = 'EXCO' SI33 EPS2 'DMAX' ;
  1692. * CHDEFM_I. II1 = (S11 - S33)*(0.5);
  1693. CHDEFM_I. II1 = (S11 - S33)*(1.0);
  1694. 'SINON';
  1695. MOD1 = 'REDU' MODTOT (SOL_I. II1);
  1696. EPS1 = 'REDU' EPSSOL (SOL_I. II1);
  1697. E11 = 'EXCO' 'EPXX' EPS1 'SMXX' ;
  1698. E22 = 'EXCO' 'EPYY' EPS1 'SMYY' ;
  1699. E33 = 'EXCO' 'EPZZ' EPS1 'SMZZ' ;
  1700. G12 = 'EXCO' 'GAXY' EPS1 'SMXY' ;
  1701. G13 = 'EXCO' 'GAXZ' EPS1 'SMXZ' ;
  1702. G23 = 'EXCO' 'GAYZ' EPS1 'SMYZ' ;
  1703. E12 = G12 / 2.0 ;
  1704. E13 = G13 / 2.0 ;
  1705. E23 = G23 / 2.0 ;
  1706. EPS2 = E11;
  1707. EPS2 = EPS2 + (E22);
  1708. EPS2 = EPS2 + (E33);
  1709. EPS2 = EPS2 + (E12);
  1710. EPS2 = EPS2 + (E13);
  1711. EPS2 = EPS2 + (E23);
  1712. EPS2 = 'CHAN' 'TYPE' EPS2 'CONTRAINTES' ;
  1713. EPS2 = 'PRIN' EPS2 MOD1;
  1714. 'DETR' E11;
  1715. 'DETR' E22;
  1716. 'DETR' E33;
  1717. 'DETR' G12;
  1718. 'DETR' G13;
  1719. 'DETR' G23;
  1720. 'DETR' E12;
  1721. 'DETR' E13;
  1722. 'DETR' E23;
  1723. * EPS2 = 'PRIN' EPS1 MOD1;
  1724. * EPS2 = 'PRIN' EPS2 MOD1;
  1725. S11 = 'EXCO' SI11 EPS2 'DMAX' ;
  1726. S33 = 'EXCO' SI33 EPS2 'DMAX' ;
  1727. * CHDEFM_I. II1 = MAXI (CHDEFM_I. II1) ((S11 - S33)*(0.5));
  1728. CH_111 = (CHDEFM_I. II1);
  1729. * CH_222 = ((S11 - S33)*(0.5));
  1730. CH_222 = ((S11 - S33)*(1.0));
  1731. DIF_11 = CH_111 - CH_222;
  1732. MASQ1 = MASQ DIF_11 'INFEURIEUR' 0.D0;
  1733. MASQ2 = MASQ DIF_11 'EGSUPE' 0.D0;
  1734. CHDEFM_I. II1 = (CH_111 '*' MASQ2) + (CH_222 '*' MASQ1);
  1735. 'FINSI';
  1736. DEF_I. II1 = CHDEFM_I. II1;
  1737. II1 = II1 + 1;
  1738. 'FIN' IND3;
  1739. 'FINSI';
  1740. 'FINSI';
  1741. 'FINSI';
  1742. I = I + 1;
  1743. 'FIN' IND1;
  1744. 'FINSI';
  1745. 'OUBL' NN1;
  1746. 'OUBL' NN2;
  1747. 'OUBL' DEPSOL;
  1748. 'OUBL' EPSSOL;
  1749. 'OUBL' MOD1;
  1750. 'OUBL' EPS1;
  1751. 'OUBL' EPS2;
  1752. 'OUBL' S11;
  1753. 'OUBL' S33;
  1754. 'OUBL' CHDEFM;
  1755. 'OUBL' VAL1;
  1756. 'OUBL' VAL2;
  1757. 'OUBL' II1;
  1758. 'OUBL' JJ1;
  1759. *
  1760. 'SI' ('EGA' ('TYPE' DEF_I) 'TABLE');
  1761. DEF_SOLI = 'VIDE' 'MCHAML';
  1762. * NN1 = 'DIME' DEF_I;
  1763. I = 1;
  1764. 'REPE' IND1 (NZONE_I);
  1765. * J = 1;
  1766. * NN2 = 'DIME' (DEF_I. I);
  1767. * 'REPE' IND2 (NN2);
  1768. * DEF_SOLI = DEF_SOLI 'ET' (DEF_I. I . J);
  1769. * J = J + 1;
  1770. * 'FIN' IND2;
  1771. DEF_SOLI = DEF_SOLI 'ET' (DEF_I. I);
  1772. I = I + 1;
  1773. 'FIN' IND1;
  1774. 'FINSI';
  1775. *
  1776. 'SI' ('EGA' ('TYPE' DEF_C) 'TABLE');
  1777. DEF_SOLC = 'VIDE' 'MCHAML';
  1778. * NN1 = 'DIME' DEF_C;
  1779. I = 1;
  1780. 'REPE' IND1 (NZONE_C);
  1781. DEF_SOLC = DEF_SOLC 'ET' (DEF_C. I);
  1782. I = I + 1;
  1783. 'FIN' IND1;
  1784. 'FINSI';
  1785. *
  1786. 'SI' ('EGA' ('TYPE' DEFC) 'TABLE');
  1787. DEF_SOLI = 'VIDE' 'MCHAML';
  1788. * NN1 = 'DIME' DEFC;
  1789. I = 1;
  1790. 'REPE' IND1 (NZONEC);
  1791. J = 1;
  1792. NN2 = 'DIME' (DEFC. I);
  1793. 'REPE' IND2 (NN2);
  1794. DEFCOL = DEFCOL 'ET' (DEFC. I . J);
  1795. J = J + 1;
  1796. 'FIN' IND2;
  1797. I = I + 1;
  1798. 'FIN' IND1;
  1799. 'FINSI';
  1800. *
  1801. **************************************************************
  1802. * Modification des matrices
  1803. **************************************************************
  1804. *
  1805. MESS '';
  1806. MESS '--------------------------------------------------------------';
  1807. MESS '-- Modification termes K et C --';
  1808. MESS '--------------------------------------------------------------';
  1809. ALPHA = 4.0 * PI * F1 * F2 / ( F1 + F2 ) ;
  1810. BETA = 1.0 / ( PI * ( F1 + F2 ) ) ;
  1811.  
  1812. 'SI' (EXIST (TDON1.MOT33.'SOL') 'CONSTANTE');
  1813. *
  1814. ESO_C_N = TABLE;
  1815. MAT_C_N = TABLE;
  1816. KSI_C_N = TABLE;
  1817. RIG_C_N = TABLE;
  1818. AMO_C_N = TABLE;
  1819. GGO_C_N = TABLE;
  1820. *
  1821. 'FINSI';
  1822. *
  1823. 'SI' (EXIST (TDON1.MOT33.'SOL') 'ITERATION');
  1824. TABRES_I = TDON1.MOT33.'SOL'.'ITERATION';
  1825. *
  1826. ESO_I_N = TABLE;
  1827. MAT_I_N = TABLE;
  1828. KSI_I_N = TABLE;
  1829. RIG_I_N = TABLE;
  1830. AMO_I_N = TABLE;
  1831. GGO_I_N = TABLE;
  1832. *
  1833. 'FINSI';
  1834. *
  1835. 'SI' (EXIST (TDON1.MOT33) 'COLONNE');
  1836. TABRESC = TDON1.MOT33.'COLONNE';
  1837. *
  1838. ESOCOL_N = TABLE;
  1839. MATCOL_N = TABLE;
  1840. KSICOL_N = TABLE;
  1841. RIGCOL_N = TABLE;
  1842. AMOCOL_N = TABLE;
  1843. GGOCOL_N = TABLE;
  1844. *
  1845. 'FINSI';
  1846. *
  1847. 'SI' ('EXIST' (TDON1.MOT33.'SOL') 'ITERATION');
  1848. * NN1 = 'DIME' DEF_I;
  1849. I = 1;
  1850. 'REPE' IND1 (NZONE_I);
  1851. *
  1852. * VECCHIA VERSIONE
  1853. * ESO_I_N. I = TABLE;
  1854. * MAT_I_N. I = TABLE;
  1855. * KSI_I_N. I = TABLE;
  1856. * RIG_I_N. I = TABLE;
  1857. * AMO_I_N. I = TABLE;
  1858. * GGO_I_N. I = TABLE;
  1859. * J = 1;
  1860. * 'REPE' IND2 ('DIME' (DEF_I. I));
  1861. * LLGAM1 = 'EXTR' (TABSOL_I. I .'G_GAMMA') ABSC;
  1862. * LLGAM2 = 'EXTR' (TABSOL_I. I .'H_GAMMA') ABSC;
  1863. * LLGG01 = 'EXTR' (TABSOL_I. I .'G_GAMMA') ORDO;
  1864. * LLEPS1 = 'EXTR' (TABSOL_I. I .'H_GAMMA') ORDO;
  1865. * VDEF1 = (TABPAR.'CHI')*('EXTR' (DEF_I. I .J)
  1866. * 'DMAX' 1 1 1);
  1867. * 'SI' (VDEF1 < ('EXTR' LLGAM1 1));
  1868. * VGG01 = 'EXTR' LLGG01 1;
  1869. * 'SINON';
  1870. * 'SI' (VDEF1 > ('EXTR' LLGAM1 ('DIME' LLGAM1)));
  1871. * VGG01 = 'EXTR' LLGG01 ('DIME' LLGAM1);
  1872. * 'SINON';
  1873. * VGG01 = 'EXTR' (IPOL (LOG ('PROG' VDEF1))
  1874. * (LOG LLGAM1) LLGG01) 1 ;
  1875. *
  1876. * 'FINSI';
  1877. * 'FINSI';
  1878. * 'SI' (VDEF1 < ('EXTR' LLGAM2 1));
  1879. * VEPS1 = 'EXTR' LLEPS1 1;
  1880. * 'SINON';
  1881. * 'SI' (VDEF1 > ('EXTR' LLGAM2 ('DIME' LLGAM2)));
  1882. * VEPS1 = 'EXTR' LLEPS1 ('DIME' LLGAM2);
  1883. * 'SINON';
  1884. * VEPS1 = EXTR (IPOL (LOG (PROG VDEF1))
  1885. * (LOG LLGAM2) LLEPS1) 1 ;
  1886. * 'FINSI';
  1887. * 'FINSI';
  1888. *
  1889. * ESO_I_N. I . J = VGG01*(TABSOL_I. I .'MODULE_E');
  1890. * MAT_I_N. I . J = 'MATE' (MOD_I. I . J )
  1891. * 'YOUN' (ESO_I_N. I . J) 'NU' (TABSOL_I. I .'POISSON')
  1892. * 'RHO' (TABSOL_I. I .'MASSE_VOLUMIQUE');
  1893. * GGO_I_N. I . J = 'MANU' 'CHML' MOD_I.I.J 'G_GO' VGG01;
  1894. * KSI_I_N. I . J = 'MANU' 'CHML' MOD_I.I.J 'KS' VEPS1;
  1895. * RIG_I_N. I . J = 'RIGI' (MOD_I.I.J) (MAT_I_N.I.J) ;
  1896. * AMO_I_N. I . J = (VEPS1) * (((ALPHA) * (MAS_I. I . J))
  1897. * 'ET' ((BETA) * (RIG_I_N. I . J)));
  1898. *
  1899. * J = J + 1;
  1900. * 'FIN' IND2;
  1901. *
  1902. * NUOVA VERSIONE
  1903. LLGAM1 = 'EXTR' (TABSOL_I. I .'G_GAMMA') ABSC;
  1904. LLGAM2 = 'EXTR' (TABSOL_I. I .'H_GAMMA') ABSC;
  1905. LLGAM1 = LOG(LLGAM1);
  1906. LLGAM2 = LOG(LLGAM2);
  1907. LLGG01 = 'EXTR' (TABSOL_I. I .'G_GAMMA') ORDO;
  1908. LLEPS1 = 'EXTR' (TABSOL_I. I .'H_GAMMA') ORDO;
  1909.  
  1910. EV_CO1 = EVOL MANU 'DMAX' LLGAM1 'G/G0' LLGG01;
  1911. EV_CO2 = EVOL MANU 'DMAX' LLGAM2 'EPS' LLEPS1;
  1912.  
  1913.  
  1914. GGO_I_N. I = 'EXCO' (VARI (MOD_I. I)
  1915. (LOG((TABPAR.'CHI')*((DEF_I. I)))) EV_CO1 'GRAVITE')
  1916. 'SCAL' 'G_GO';
  1917.  
  1918. KSI_I_N. I = 'EXCO' (VARI (MOD_I. I)
  1919. (LOG((TABPAR.'CHI')*((DEF_I. I)))) EV_CO2 'GRAVITE')
  1920. 'SCAL' 'KS';
  1921.  
  1922. ESO_I_N. I = (GGO_I_N. I)*(TABSOL_I. I .'MODULE_E');
  1923. MAT_I_N. I = 'MATE' (MOD_I. I)
  1924. 'YOUN' (ESO_I_N. I) 'NU' (TABSOL_I. I .'POISSON')
  1925. 'RHO' (TABSOL_I. I .'MASSE_VOLUMIQUE');
  1926. RIG_I_N. I = 'RIGI' (MOD_I.I) (MAT_I_N.I) ;
  1927.  
  1928. MAT_PRO = 'MATE' (MOD_I. I) 'YOUN'
  1929. (((ESO_I_N. I)*(KSI_I_N. I))*(BETA))
  1930. 'NU' (TABSOL_I. I .'POISSON')
  1931. 'RHO'
  1932. (((TABSOL_I. I .'MASSE_VOLUMIQUE')*(KSI_I_N. I))*(ALPHA));
  1933. AMO_I_N. I = (MASS (MOD_I.I) MAT_PRO) ET (RIGI (MOD_I.I) MAT_PRO);
  1934. I = I + 1;
  1935. 'FIN' IND1;
  1936. 'FINSI';
  1937. *
  1938. 'SI' (EXIST (TDON1.MOT33.'SOL') 'CONSTANTE');
  1939. * NN1 = 'DIME' DEF_C;
  1940. I = 1;
  1941. 'REPE' IND1 (NZONE_C);
  1942. VGG01 = 'EXTR' (GGO_C. I) 'G_GO' 1 1 1;
  1943. VEPS1 = 'EXTR' (KSI_C. I) 'KS' 1 1 1;
  1944. *
  1945. ESO_C_N. I = VGG01*(TABSOL_C. I .'MODULE_E');
  1946. MAT_C_N. I = 'MATE' (MOD_C. I) 'YOUN' (ESO_C_N. I)
  1947. 'NU' (TABSOL_C. I .'POISSON')
  1948. 'RHO' (TABSOL_C. I .'MASSE_VOLUMIQUE');
  1949. GGO_C_N. I = 'MANU' 'CHML' MOD_C.I 'G_GO' VGG01;
  1950. KSI_C_N. I = 'MANU' 'CHML' MOD_C.I 'KS' VEPS1;
  1951. RIG_C_N. I = 'RIGI' (MOD_C.I) (MAT_C_N.I) ;
  1952. AMO_C_N. I = (VEPS1) * (((ALPHA) * (MAS_C. I))
  1953. 'ET' ((BETA) * (RIG_C_N. I)));
  1954. I = I + 1;
  1955. 'FIN' IND1;
  1956. 'FINSI';
  1957. *
  1958. **************************************************************
  1959. * Controle convergence
  1960. **************************************************************
  1961. *
  1962. MESS '';
  1963. MESS '--------------------------------------------------------------';
  1964. MESS '-- Critere de convergence --';
  1965. MESS '--------------------------------------------------------------';
  1966. *'SI' ( 'NON' ( 'EXIS' TOL_EPS ) ) ;
  1967. * TOL_EPS = 0.05 ;
  1968. *'FINSI' ;
  1969. TOL_EPS = TABPAR.'CRITERE';
  1970. *
  1971. K = 0;
  1972. 'SI' ('EXIST' (TDON1.MOT33.'SOL') 'ITERATION') ;
  1973. *
  1974. I = 1;
  1975. 'REPE' IND1 (NZONE_I);
  1976. L_ELE1 = (TABSOL_I.I.MAILLAGE) 'ELEM' 'TYPE';
  1977. J = 1;
  1978. 'REPE' IND2 (DIME L_ELE1);
  1979. JJ1 = 1;
  1980. MAI1 = ((TABSOL_I.I.'MAILLAGE') 'ELEM' ('EXTR'L_ELE1 J));
  1981. 'REPE' IND3 (NBEL MAI1);
  1982. ELE1 = MAI1 ELEM JJ1;
  1983. VAL0 = EXTR (REDU (GGO_I. I) ELE1) 'G_GO' 1 1 1 ;
  1984. VAL1 = EXTR (REDU (GGO_I_N. I) ELE1) 'G_GO' 1 1 1 ;
  1985. DELTA = ( 'ABS' ( VAL1 - VAL0 ) ) / VAL1 ;
  1986. 'SI' ( DELTA >EG 0.05 ) ;
  1987. K = K + 1 ;
  1988. 'FINSI' ;
  1989. JJ1 = JJ1 + 1;
  1990. 'FIN' IND3;
  1991. J = J + 1;
  1992. 'FIN' IND2;
  1993. * J = 1;
  1994. * 'REPE' IND2 ('DIME' (DEF_I. I ));
  1995. * VAL0 = EXTR (GGO_I. I . J) 'G_GO' 1 1 1 ;
  1996. * VAL1 = EXTR (GGO_I_N. I . J) 'G_GO' 1 1 1 ;
  1997. * DELTA = ( 'ABS' ( VAL1 - VAL0 ) ) / VAL1 ;
  1998. * 'SI' ( DELTA >EG 0.05 ) ;
  1999. * K = K + 1 ;
  2000. * 'FINSI' ;
  2001. * J = J + 1;
  2002. * 'FIN' IND2;
  2003. I = I + 1;
  2004. 'FIN' IND1;
  2005. *
  2006. 'MESS' '';
  2007. 'MESS'
  2008. '--------------------------------------------------------------';
  2009. TIT11 = 'CHAINE' '-- Non convergence sur '
  2010. K ' elements --';
  2011. 'MESS' TIT11;
  2012. 'MESS'
  2013. '--------------------------------------------------------------';
  2014. 'FINSI';
  2015. *
  2016. **************************************************************
  2017. * Assemblage
  2018. **************************************************************
  2019. *
  2020. 'MESS' '';
  2021. 'MESS' '--------------------------------------------------------------';
  2022. 'MESS' '-- Assemblage --';
  2023. 'MESS' '--------------------------------------------------------------';
  2024. I = 1;
  2025. 'SI' ('EGA' ('TYPE' TABSOL_I) 'TABLE');
  2026. 'REPE' BLOC3 NZONE_I;
  2027. * NELEM_I = (DIME SOL_I.I);
  2028. *
  2029. * VECCHIA VERSIONE
  2030. * J = 1;
  2031. * 'REPE' BLOC31 NELEM_I ;
  2032. * 'SI' ( ( I 'EGA' 1 ) 'ET' ( J 'EGA' 1 ) ) ;
  2033. * 'SI' ('EXIST' (SOL_I. I) J);
  2034. * GGO_SI_N = GGO_I_N. I . J ;
  2035. * MAT_SI_N = MAT_I_N. I . J ;
  2036. * RIG_SI_N = RIG_I_N. I . J ;
  2037. * KSI_SI_N = KSI_I_N. I . J ;
  2038. * AMO_SI_N = AMO_I_N. I . J ;
  2039. * 'FINSI';
  2040. * 'SINON';
  2041. * 'SI' ('EXIST' (SOL_I. I) J);
  2042. * GGO_SI_N = GGO_SI_N 'ET' (GGO_I_N. I . J);
  2043. * MAT_SI_N = MAT_SI_N 'ET' (MAT_I_N. I . J);
  2044. * RIG_SI_N = RIG_SI_N 'ET' (RIG_I_N. I . J);
  2045. * KSI_SI_N = KSI_SI_N 'ET' (KSI_I_N. I . J);
  2046. * AMO_SI_N = AMO_SI_N 'ET' (AMO_I_N. I . J);
  2047. * 'FINSI';
  2048. * 'FINSI';
  2049. * J = J + 1;
  2050. * 'FIN' BLOC31;
  2051. *
  2052. * NUOVA VERSIONE
  2053. 'SI' ( ( I 'EGA' 1 )) ;
  2054. GGO_SI_N = GGO_I_N. I;
  2055. MAT_SI_N = MAT_I_N. I;
  2056. RIG_SI_N = RIG_I_N. I;
  2057. KSI_SI_N = KSI_I_N. I;
  2058. AMO_SI_N = AMO_I_N. I;
  2059. 'SINON';
  2060. GGO_SI_N = GGO_SI_N 'ET' (GGO_I_N. I);
  2061. MAT_SI_N = MAT_SI_N 'ET' (MAT_I_N. I);
  2062. RIG_SI_N = RIG_SI_N 'ET' (RIG_I_N. I);
  2063. KSI_SI_N = KSI_SI_N 'ET' (KSI_I_N. I);
  2064. AMO_SI_N = AMO_SI_N 'ET' (AMO_I_N. I);
  2065. 'FINSI';
  2066. I = I + 1;
  2067. 'FIN' BLOC3;
  2068. 'FINSI';
  2069. *
  2070. 'SI' ('EGA' ('TYPE' TABSOL_C) 'TABLE');
  2071. 'SI' ('EGA' ('TYPE' TABCOL) 'TABLE');
  2072. I = 1;
  2073. 'REPE' BLOC3 NZONEC;
  2074. NELEMC = (DIME SOLCOL.I);
  2075. J = 1;
  2076. 'REPE' BLOC31 NELEMC ;
  2077. 'SI' ( ( I 'EGA' 1 ) 'ET' ( J 'EGA' 1 ) ) ;
  2078. 'SI' ('EXIST' (SOLCOL. I) J);
  2079. GGOSC_N = GGOCOL_N. I . J ;
  2080. MATSC_N = MATCOL_N. I . J ;
  2081. RIGSC_N = RIGCOL_N. I . J ;
  2082. KSISC_N = KSICOL_N. I . J ;
  2083. AMOSC_N = AMOCOL_N. I . J ;
  2084. 'FINSI';
  2085. 'SINON';
  2086. 'SI' ('EXIST' (SOLCOL. I) J);
  2087. GGOSC_N = GGOSC_N 'ET' (GGOCOL_N. I . J);
  2088. MATSC_N = MATSC_N 'ET' (MATCOL_N. I . J);
  2089. RIGSC_N = RIGSC_N 'ET' (RIGCOL_N. I . J);
  2090. KSISC_N = KSISC_N 'ET' (KSICOL_N. I . J);
  2091. AMOSC_N = AMOSC_N 'ET' (AMOCOL_N. I . J);
  2092. 'FINSI';
  2093. 'FINSI';
  2094. J = J + 1;
  2095. 'FIN' BLOC31;
  2096. I = I + 1;
  2097. 'FIN' BLOC3;
  2098. *
  2099. I = 1;
  2100. 'REPE' BLOC3 NZONE_C;
  2101. NELEM_C = (DIME SOL_C.I);
  2102. J = 1;
  2103. 'REPE' BLOC31 NELEM_C ;
  2104. 'SI' ( ( I 'EGA' 1 ) 'ET' ( J 'EGA' 1 ) ) ;
  2105. 'SI' ('EXIST' (SOL_C. I) J);
  2106. GGO_SC_N = GGO_C_N. I . J ;
  2107. MAT_SC_N = MAT_C_N. I . J ;
  2108. RIG_SC_N = RIG_C_N. I . J ;
  2109. KSI_SC_N = KSI_C_N. I . J ;
  2110. AMO_SC_N = AMO_C_N. I . J ;
  2111. 'FINSI';
  2112. 'SINON';
  2113. 'SI' ('EXIST' (SOL_C. I) J);
  2114. GGO_SC_N = GGO_SC_N 'ET' (GGO_C_N. I . J);
  2115. MAT_SC_N = MAT_SC_N 'ET' (MAT_C_N. I . J);
  2116. RIG_SC_N = RIG_SC_N 'ET' (RIG_C_N. I . J);
  2117. KSI_SC_N = KSI_SC_N 'ET' (KSI_C_N. I . J);
  2118. AMO_SC_N = AMO_SC_N 'ET' (AMO_C_N. I . J);
  2119. 'FINSI';
  2120. 'FINSI';
  2121. J = J + 1;
  2122. 'FIN' BLOC31;
  2123. I = I + 1;
  2124. 'FIN' BLOC3;
  2125. 'SINON';
  2126. I = 1;
  2127. 'REPE' BLOC3 NZONE_C;
  2128. 'SI' ( ( I 'EGA' 1 )) ;
  2129. GGO_SC_N = GGO_C_N. I ;
  2130. MAT_SC_N = MAT_C_N. I ;
  2131. RIG_SC_N = RIG_C_N. I ;
  2132. KSI_SC_N = KSI_C_N. I ;
  2133. AMO_SC_N = AMO_C_N. I ;
  2134. 'SINON';
  2135. GGO_SC_N = GGO_SC_N 'ET' (GGO_C_N. I );
  2136. MAT_SC_N = MAT_SC_N 'ET' (MAT_C_N. I );
  2137. RIG_SC_N = RIG_SC_N 'ET' (RIG_C_N. I );
  2138. KSI_SC_N = KSI_SC_N 'ET' (KSI_C_N. I );
  2139. AMO_SC_N = AMO_SC_N 'ET' (AMO_C_N. I );
  2140. 'FINSI';
  2141. I = I + 1;
  2142. 'FIN' BLOC3;
  2143. 'FINSI';
  2144. 'FINSI';
  2145. *
  2146. 'SI' ('EGA' ('TYPE' TABSOL_I) 'TABLE');
  2147. 'ELIM' MAI_SOLI 0.001 ;
  2148. DEF_SOLT = DEF_SOLI;
  2149. MAI_SOLT = MAI_SOLI;
  2150. MOD_SOLT = MOD_SOLI;
  2151. GGO_ST_N = GGO_SI_N;
  2152. MAT_ST_N = MAT_SI_N;
  2153. RIG_ST_N = RIG_SI_N;
  2154. MAS_SOLT = MAS_SOLI;
  2155. KSI_ST_N = KSI_SI_N;
  2156. AMO_ST_N = AMO_SI_N;
  2157. 'SI' ('EGA' ('TYPE' TABSOL_C) 'TABLE');
  2158. 'SI' ('EGA' ('TYPE' TABCOL) 'TABLE');
  2159. DEF_SOLT = DEF_SOLC 'ET' DEF_SOLI;
  2160. MAI_SOLT = MAI_SOLI 'ET' MAI_SOLC;
  2161. MOD_SOLT = MOD_SOLI 'ET' MOD_SOLC;
  2162. MAS_SOLT = MAS_SOLI 'ET' MAS_SOLC;
  2163. GGO_ST_N = GGO_ST_N 'ET' GGO_SOLC;
  2164. MAT_ST_N = MAT_ST_N 'ET' MAT_SOLC;
  2165. RIG_ST_N = RIG_ST_N 'ET' RIG_SOLC;
  2166. KSI_ST_N = KSI_ST_N 'ET' KSI_SOLC;
  2167. AMO_ST_N = AMO_ST_N 'ET' AMO_SOLC;
  2168. *
  2169. GGOST_C = GGOSC_N;
  2170. MATST_C = MATSC_N;
  2171. RIGST_C = RIGSC_N;
  2172. KSIST_C = KSISC_N;
  2173. AMOST_C = AMOSC_N;
  2174. 'SINON';
  2175. DEF_SOLT = DEF_SOLC 'ET' DEF_SOLI;
  2176. MAI_SOLT = MAI_SOLI 'ET' MAI_SOLC;
  2177. MOD_SOLT = MOD_SOLI 'ET' MOD_SOLC;
  2178. GGO_ST_N = GGO_ST_N 'ET' GGO_SOLC;
  2179. MAT_ST_N = MAT_ST_N 'ET' MAT_SOLC;
  2180. RIG_ST_N = RIG_ST_N 'ET' RIG_SOLC;
  2181. MAS_SOLT = MAS_SOLI 'ET' MAS_SOLC;
  2182. KSI_ST_N = KSI_ST_N 'ET' KSI_SOLC;
  2183. AMO_ST_N = AMO_ST_N 'ET' AMO_SOLC;
  2184. 'FINSI';
  2185. 'FINSI';
  2186. 'SINON';
  2187. 'SI' ('EGA' ('TYPE' TABSOL_C) 'TABLE');
  2188. 'SI' ('EGA' ('TYPE' TABCOL) 'TABLE');
  2189. DEF_SOLT = DEF_SOLC;
  2190. MAI_SOLT = MAI_SOLC;
  2191. MOD_SOLT = MOD_SOLC;
  2192. MAS_SOLT = MAS_SOLC;
  2193. GGO_ST_N = GGO_SOLC;
  2194. MAT_ST_N = MAT_SOLC;
  2195. RIG_ST_N = RIG_SOLC;
  2196. KSI_ST_N = KSI_SOLC;
  2197. AMO_ST_N = AMO_SOLC;
  2198. *
  2199. GGOST_C = GGOSC_N;
  2200. MATST_C = MATSC_N;
  2201. RIGST_C = RIGSC_N;
  2202. KSIST_C = KSISC_N;
  2203. AMOST_C = AMOSC_N;
  2204. 'SINON';
  2205. DEF_SOLT = DEF_SOLC;
  2206. GGO_ST_N = GGO_SOLC;
  2207. MAT_ST_N = MAT_SOLC;
  2208. RIG_ST_N = RIG_SOLC;
  2209. KSI_ST_N = KSI_SOLC;
  2210. AMO_ST_N = AMO_SOLC;
  2211. 'FINSI';
  2212. 'FINSI';
  2213. 'FINSI';
  2214. *
  2215. ELIM 0.001 MAI_SOLT;
  2216. *
  2217. **************************************************************
  2218. * Sauvegarde
  2219. **************************************************************
  2220. *
  2221. MESS '';
  2222. MESS '--------------------------------------------------------------';
  2223. MESS '-- Stockage --';
  2224. MESS '--------------------------------------------------------------';
  2225. *
  2226. 'SI' ('EGA' ('TYPE' TABSOL_C) 'TABLE');
  2227. 'SI' ('EGA' ('TYPE' TABCOL) 'TABLE');
  2228. TABRC_N = TABLE ;
  2229. TABRC_N.'T_SOL' = SOLCOL ;
  2230. TABRC_N.'T_ESO' = ESOCOL ;
  2231. TABRC_N.'T_MOD' = MODCOL ;
  2232. TABRC_N.'T_GGO' = GGOCOL_N ;
  2233. TABRC_N.'T_MAT' = MATCOL_N;
  2234. TABRC_N.'T_RIG' = RIGCOL_N ;
  2235. TABRC_N.'T_MAS' = MASCOL ;
  2236. TABRC_N.'T_KSI' = KSICOL_N ;
  2237. TABRC_N.'T_AMO' = AMOCOL_N ;
  2238. TABRC_N.'T_DIS' = DEFC ;
  2239. TABRC_N.'O_SOL' = MAISOLC ;
  2240. TABRC_N.'O_MOD' = MODSOLC ;
  2241. TABRC_N.'O_GGO' = GGOST_C ;
  2242. TABRC_N.'O_MAT' = MATST_C ;
  2243. TABRC_N.'O_RIG' = RIGST_C ;
  2244. TABRC_N.'O_MAS' = MASSOLC ;
  2245. TABRC_N.'O_KSI' = KSIST_C ;
  2246. TABRC_N.'O_AMO' = AMOST_C ;
  2247. TABRC_N.'O_DIS' = DEFCOL ;
  2248. *
  2249. TABR_C_N = TABLE ;
  2250. TABR_C_N.'T_SOL' = SOL_C ;
  2251. TABR_C_N.'T_ESO' = ESO_C_N ;
  2252. TABR_C_N.'T_MOD' = MOD_C ;
  2253. TABR_C_N.'T_GGO' = GGO_C_N ;
  2254. TABR_C_N.'T_MAT' = MAT_C_N ;
  2255. TABR_C_N.'T_RIG' = RIG_C_N ;
  2256. TABR_C_N.'T_MAS' = MAS_C ;
  2257. TABR_C_N.'T_KSI' = KSI_C_N ;
  2258. TABR_C_N.'T_AMO' = AMO_C_N ;
  2259. TABR_C_N.'T_DIS' = DEF_C ;
  2260. TABR_C_N.'O_SOL' = MAI_SOLC ;
  2261. TABR_C_N.'O_MOD' = MOD_SOLC ;
  2262. TABR_C_N.'O_GGO' = GGO_SC_N ;
  2263. TABR_C_N.'O_MAT' = MAT_SC_N ;
  2264. TABR_C_N.'O_RIG' = RIG_SC_N ;
  2265. TABR_C_N.'O_MAS' = MAS_SOLC ;
  2266. TABR_C_N.'O_KSI' = KSI_SC_N ;
  2267. TABR_C_N.'O_AMO' = AMO_SC_N ;
  2268. TABR_C_N.'O_DIS' = DEF_SOLC ;
  2269. 'SINON';
  2270. TABR_C_N = TABLE ;
  2271. TABR_C_N.'T_SOL' = SOL_C ;
  2272. TABR_C_N.'T_ESO' = ESO_C_N ;
  2273. TABR_C_N.'T_MOD' = MOD_C ;
  2274. TABR_C_N.'T_GGO' = GGO_C_N ;
  2275. TABR_C_N.'T_MAT' = MAT_C_N ;
  2276. TABR_C_N.'T_RIG' = RIG_C_N ;
  2277. TABR_C_N.'T_MAS' = MAS_C ;
  2278. TABR_C_N.'T_KSI' = KSI_C_N ;
  2279. TABR_C_N.'T_AMO' = AMO_C_N ;
  2280. TABR_C_N.'T_DIS' = DEF_C ;
  2281. TABR_C_N.'O_SOL' = MAI_SOLC ;
  2282. TABR_C_N.'O_MOD' = MOD_SOLC ;
  2283. TABR_C_N.'O_GGO' = GGO_SC_N ;
  2284. TABR_C_N.'O_MAT' = MAT_SC_N ;
  2285. TABR_C_N.'O_RIG' = RIG_SC_N ;
  2286. TABR_C_N.'O_MAS' = MAS_SOLC ;
  2287. TABR_C_N.'O_KSI' = KSI_SC_N ;
  2288. TABR_C_N.'O_AMO' = AMO_SC_N ;
  2289. TABR_C_N.'O_DIS' = DEF_SOLC ;
  2290. 'FINSI';
  2291. 'FINSI';
  2292. 'SI' ('EGA' ('TYPE' TABSOL_I) 'TABLE');
  2293. TABR_I_N = TABLE ;
  2294. TABR_I_N.'T_SOL' = SOL_I ;
  2295. TABR_I_N.'T_ESO' = ESO_I_N ;
  2296. TABR_I_N.'T_MOD' = MOD_I ;
  2297. TABR_I_N.'T_GGO' = GGO_I_N ;
  2298. TABR_I_N.'T_MAT' = MAT_I_N ;
  2299. TABR_I_N.'T_RIG' = RIG_I_N ;
  2300. TABR_I_N.'T_MAS' = MAS_I ;
  2301. TABR_I_N.'T_KSI' = KSI_I_N ;
  2302. TABR_I_N.'T_AMO' = AMO_I_N ;
  2303. TABR_I_N.'T_DIS' = DEF_I ;
  2304. TABR_I_N.'O_SOL' = MAI_SOLI ;
  2305. TABR_I_N.'O_MOD' = MOD_SOLI ;
  2306. TABR_I_N.'O_GGO' = GGO_SI_N ;
  2307. TABR_I_N.'O_MAT' = MAT_SI_N ;
  2308. TABR_I_N.'O_RIG' = RIG_SI_N ;
  2309. TABR_I_N.'O_MAS' = MAS_SOLI ;
  2310. TABR_I_N.'O_KSI' = KSI_SI_N ;
  2311. TABR_I_N.'O_AMO' = AMO_SI_N ;
  2312. TABR_I_N.'O_DIS' = DEF_SOLI ;
  2313. 'FINSI';
  2314. *
  2315. TABR_T_N = TABLE;
  2316. TABR_T_N.'O_SOL' = MAI_SOLT ;
  2317. TABR_T_N.'O_MOD' = MOD_SOLT ;
  2318. TABR_T_N.'O_GGO' = GGO_ST_N ;
  2319. TABR_T_N.'O_MAT' = MAT_ST_N ;
  2320. TABR_T_N.'O_RIG' = RIG_ST_N ;
  2321. TABR_T_N.'O_MAS' = MAS_SOLT ;
  2322. TABR_T_N.'O_KSI' = KSI_ST_N ;
  2323. TABR_T_N.'O_AMO' = AMO_ST_N ;
  2324. TABR_T_N.'O_DIS' = DEF_SOLT ;
  2325. *
  2326. TDON1.MOT22 .'SOL' = TABLE;
  2327. 'SI' ('EGA' ('TYPE' TABSOL_I) 'TABLE');
  2328. TDON1.MOT22 .'SOL'.'ITERATION' = TABR_I_N;
  2329. 'FINSI';
  2330. *
  2331. 'SI' ('EGA' ('TYPE' TABSOL_C) 'TABLE');
  2332. 'SI' ('EGA' ('TYPE' TABCOL) 'TABLE');
  2333. TDON1.MOT22.'COLONNE' = TABRC_N;
  2334. TDON1.MOT22.'SOL'.'CONSTANTE' = TABR_C_N;
  2335. 'SINON';
  2336. TDON1.MOT22.'SOL'.'CONSTANTE' = TABR_C_N;
  2337. 'FINSI';
  2338. 'FINSI';
  2339. *
  2340. TDON1.MOT22.'SOL'.'TOTALE' = TABR_T_N;
  2341. 'SI' ('EXIST' (TDON1) 'STRUCTURE');
  2342. TDON1.MOT22.'STRUCTURE' = TABSTR;
  2343. 'FINSI';
  2344. *
  2345. 'TRAC' (TABR_T_N.'O_GGO') (TABR_T_N.'O_MOD')
  2346. 'TITR' ('CHAINE' 'Non Convergence sur ' K ' elements') 'NCLK';
  2347. 'TRAC' (TABR_T_N.'O_KSI') (TABR_T_N.'O_MOD')
  2348. 'TITR' ('CHAINE' 'Non Convergence sur ' K ' elements') 'NCLK';
  2349. *
  2350. 'OUBL' I;
  2351. 'OUBL' J;
  2352. 'OUBL' ZZ;
  2353. 'OUBL' MOD_C;
  2354. 'OUBL' MODC;
  2355. 'OUBL' MAT_C;
  2356. 'OUBL' MATC;
  2357. 'OUBL' RIG_C;
  2358. 'OUBL' RIGC;
  2359. 'OUBL' MAS_C;
  2360. 'OUBL' MASC;
  2361. 'OUBL' AMO_C;
  2362. 'OUBL' AMOC;
  2363. 'OUBL' KSI_C;
  2364. 'OUBL' KSIC;
  2365. 'OUBL' SOL_C;
  2366. 'OUBL' SOLC;
  2367. 'OUBL' ESO_C;
  2368. 'OUBL' ESOC;
  2369. 'OUBL' GGO_C;
  2370. 'OUBL' GGOC;
  2371. 'OUBL' MOD_I;
  2372. 'OUBL' MAT_I;
  2373. 'OUBL' RIG_I;
  2374. 'OUBL' MAS_I;
  2375. 'OUBL' AMO_I;
  2376. 'OUBL' KSI_I;
  2377. 'OUBL' SOL_I;
  2378. 'OUBL' ESO_I;
  2379. 'OUBL' GGO_I;
  2380. 'OUBL' MAI_SOLC;
  2381. 'OUBL' MAT_SOLC;
  2382. 'OUBL' GGO_SOLC;
  2383. 'OUBL' KSI_SOLC;
  2384. 'OUBL' MOD_SOLC;
  2385. 'OUBL' RIG_SOLC;
  2386. 'OUBL' MAS_SOLC;
  2387. 'OUBL' AMO_SOLC;
  2388. 'OUBL' MAI_SOLI;
  2389. 'OUBL' MAT_SOLI;
  2390. 'OUBL' GGO_SOLI;
  2391. 'OUBL' KSI_SOLI;
  2392. 'OUBL' MOD_SOLI;
  2393. 'OUBL' RIG_SOLI;
  2394. 'OUBL' MAS_SOLI;
  2395. 'OUBL' AMO_SOLI;
  2396. 'OUBL' MAISOLC;
  2397. 'OUBL' MATSOLC;
  2398. 'OUBL' GGOSOLC;
  2399. 'OUBL' KSISOLC;
  2400. 'OUBL' MODSOLC;
  2401. 'OUBL' RIGSOLC;
  2402. 'OUBL' MASSOLC;
  2403. 'OUBL' AMOSOLC;
  2404. 'OUBL' MAI_SOLT;
  2405. 'OUBL' MAT_SOLT;
  2406. 'OUBL' GGO_SOLT;
  2407. 'OUBL' KSI_SOLT;
  2408. 'OUBL' MOD_SOLT;
  2409. 'OUBL' RIG_SOLT;
  2410. 'OUBL' MAS_SOLT;
  2411. 'OUBL' AMO_SOLT;
  2412. 'OUBL' MAISOLT;
  2413. 'OUBL' MATSOLT;
  2414. 'OUBL' GGOSOLT;
  2415. 'OUBL' KSISOLT;
  2416. 'OUBL' MODSOLT;
  2417. 'OUBL' RIGSOLT;
  2418. 'OUBL' MASSOLT;
  2419. 'OUBL' AMOSOLT;
  2420. 'OUBL' TABSOL_C;
  2421. 'OUBL' TABCOL;
  2422. 'OUBL' TABSOL_I;
  2423. 'OUBL' TABPAR;
  2424. 'OUBL' TABSOL;
  2425. 'OUBL' TABSTR;
  2426. 'OUBL' TABFRO;
  2427. 'OUBL' H_SAND;
  2428. 'OUBL' G_SAND;
  2429. 'OUBL' H_CLAY;
  2430. 'OUBL' G_CLAY;
  2431. 'OUBL' H_SAND;
  2432. 'OUBL' EH_SAND;
  2433. 'OUBL' EG_SAND;
  2434. 'OUBL' EH_CLAY;
  2435. 'OUBL' EG_CLAY;
  2436. 'OUBL' EH_SAND;
  2437. 'OUBL' MAIL1C;
  2438. 'OUBL' GAM_EFF;
  2439. 'OUBL' TABRES_T;
  2440. 'OUBL' TABRESC;
  2441. 'OUBL' TABRES_C;
  2442. 'OUBL' TABRES_I;
  2443. 'OUBL' ZONE_C;
  2444. 'OUBL' ZONE_I;
  2445. 'OUBL' ZONEC;
  2446. 'OUBL' NN1;
  2447. 'OUBL' NELEM_C;
  2448. 'OUBL' NELEMC;
  2449. 'OUBL' NELEM1C;
  2450. 'OUBL' NELEM1_I;
  2451. 'OUBL' NELEM_I;
  2452. 'OUBL' NZONE_C;
  2453. 'OUBL' NZONE_I;
  2454. 'OUBL' NZONEC;
  2455. 'OUBL' F1;
  2456. 'OUBL' F2;
  2457. 'OUBL' FC;
  2458. 'OUBL' ALPHA;
  2459. 'OUBL' BETA;
  2460. 'OUBL' MAIL1_I;
  2461. 'OUBL' GGO_SI_N;
  2462. 'OUBL' KSI_SI_N;
  2463. 'OUBL' MAT_SI_N;
  2464. 'OUBL' KSI_SOLI;
  2465. 'OUBL' GGO_SOLI;
  2466. 'OUBL' TABR_T_N;
  2467. 'OUBL' TABR_I_N;
  2468. 'OUBL' GGO_I_N;
  2469. 'OUBL' AMO_I_N;
  2470. 'OUBL' RIG_I_N;
  2471. 'OUBL' KSI_I_N;
  2472. 'OUBL' MAT_I_N;
  2473. 'OUBL' ESO_I_N;
  2474. 'OUBL' DEF_I;
  2475. 'OUBL' TRESUX;
  2476. 'OUBL' TAB_DYX;
  2477. 'OUBL' TABRXDV;
  2478. 'OUBL' TABDV;
  2479. 'OUBL' LLEPS1;
  2480. 'OUBL' LLGG01;
  2481. 'OUBL' LLGAM2;
  2482. 'OUBL' LLGAM1;
  2483. 'OUBL' L_GG03;
  2484. 'OUBL' L_GG02;
  2485. 'OUBL' L_GG01;
  2486. *
  2487. *************************************************************
  2488. *************** FIN STEP SUP A 1 ********************
  2489. *************************************************************
  2490. *
  2491. 'SINON';
  2492. *************************************************************
  2493. ******************** STEP0 *************************
  2494. *************************************************************
  2495. *
  2496. MESS '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++';
  2497. MESS '-- STEP 0 --';
  2498. MESS '--------------------------------------------------------------';
  2499. MESS '';
  2500. MESS '--------------------------------------------------------------';
  2501. MESS '-- Controle des donnees d entree --';
  2502. MESS '--------------------------------------------------------------';
  2503. MESS '';
  2504. *
  2505. ************* controle general *****************************
  2506. 'SI' ('EXIST' (TDON1) 'SOL');
  2507. 'SI' ('NEG' (TYPE (TDON1.'SOL')) 'TABLE');
  2508. 'MESS' ;
  2509. 'MESS' ' Erruer....l indice de la table des donnees';
  2510. 'MESS' ' SOL doit etre du type TABLE';
  2511. 'QUIT' ISSLEQ;
  2512. 'SINON';
  2513. TABSOL = TDON1.'SOL';
  2514. 'FINSI';
  2515. 'SINON';
  2516. 'MESS' ;
  2517. 'MESS' ' Erruer....Il manque la table du sol';
  2518. 'MESS' ' dans la table des donn�es';
  2519. 'QUIT' ISSLEQ;
  2520. 'FINSI';
  2521. 'SI' ('EXIST' (TDON1) 'PARAMETRES');
  2522. 'SI' ('NEG' (TYPE (TDON1.'PARAMETRES')) 'TABLE');
  2523. 'MESS' ;
  2524. 'MESS' ' Erruer....l indice de la table des donnees';
  2525. 'MESS' ' PARAMETRE doit etre du type TABLE';
  2526. 'QUIT' ISSLEQ;
  2527. 'SINON';
  2528. TABPAR = TDON1.'PARAMETRES';
  2529. 'FINSI';
  2530. 'SINON';
  2531. 'MESS' ;
  2532. 'MESS' ' Erruer....Il manque la table des parametres';
  2533. 'MESS' ' dans la table des donn�es';
  2534. 'QUIT' ISSLEQ;
  2535. 'FINSI';
  2536. V_STR = FAUX;
  2537. 'SI' ('EXIST' (TDON1) 'STRUCTURE');
  2538. 'SI' ('NEG' (TYPE (TDON1.'STRUCTURE')) 'TABLE');
  2539. 'MESS' ;
  2540. 'MESS' ' Erruer....l indice de la table des donnees';
  2541. 'MESS' ' STRUCTURE doit etre du type TABLE';
  2542. 'QUIT' ISSLEQ;
  2543. 'SINON';
  2544. TABSTR = TDON1.'STRUCTURE';
  2545. V_STR = VRAI;
  2546. 'FINSI';
  2547. 'SINON';
  2548. 'MESS' ;
  2549. 'MESS' ' Attention...calcul sans la structure';
  2550. 'FINSI';
  2551. *
  2552. ************* controle parametre *****************************
  2553. 'SI' ('EXIST' (TABPAR) 'F1');
  2554. 'SI' ('NEG' ('TYPE' (TABPAR.'F1')) 'FLOTTANT');
  2555. 'MESS' ;
  2556. 'MESS' ' Erruer....F1 n est pas un flottant'
  2557. 'MESS' ' dans la table des parametres';
  2558. 'QUIT' ISSLEQ;
  2559. FINSI;
  2560. 'SINON';
  2561. 'MESS' ;
  2562. 'MESS' ' Erruer....il manque F1 dans la table des parametres';
  2563. 'QUIT' ISSLEQ;
  2564. 'FINSI';
  2565. 'SI' ('EXIST' (TABPAR) 'F2');
  2566. 'SI' ('NEG' ('TYPE' (TABPAR.'F2')) 'FLOTTANT');
  2567. 'MESS' ;
  2568. 'MESS' ' Erruer....F2 n est pas un flottant'
  2569. 'MESS' ' dans la table des parametres';
  2570. 'QUIT' ISSLEQ;
  2571. FINSI;
  2572. 'SINON';
  2573. 'MESS' ;
  2574. 'MESS' ' Erruer....il manque F2 dans la table des parametres';
  2575. 'QUIT' ISSLEQ;
  2576. 'FINSI';
  2577. 'SI' ('EXIST' (TABPAR) 'FC');
  2578. 'SI' ('NEG' ('TYPE' (TABPAR.'FC')) 'FLOTTANT');
  2579. 'MESS' ;
  2580. 'MESS' ' Erruer....FC n est pas un flottant'
  2581. 'MESS' ' dans la table des parametres';
  2582. 'QUIT' ISSLEQ;
  2583. FINSI;
  2584. 'SINON';
  2585. 'MESS' ;
  2586. 'MESS' ' Erruer....il manque FC dans la table des parametres';
  2587. 'QUIT' ISSLEQ;
  2588. 'FINSI';
  2589. 'SI' ('EXIST' (TABPAR) 'TYPE');
  2590. 'SI' (('NEG' TABPAR.'TYPE' 'LYSMER') ET
  2591. ('NEG' TABPAR.'TYPE' 'WHITE'));
  2592. 'MESS' ;
  2593. 'MESS' ' Erruer....type de frontiere mauvaise';
  2594. 'QUIT' ISSLEQ;
  2595. 'FINSI';
  2596. 'SINON';
  2597. TABPAR.'TYPE' = CHAINE 'LYSMER';
  2598. 'FINSI';
  2599. *'SI' ('EXIST' (TABPAR) 'REPONSE');
  2600. * I = 1;
  2601. * 'REPE' IND1 ('DIME' (TABPAR.'REPONSE'));
  2602. * 'SI' ('NEG' (TYPE (TABPAR.'REPONSE'. I .'NOM')) 'MOT');
  2603. * 'MESS' ;
  2604. * 'MESS' ' Erruer dans la tables des parametres';
  2605. * 'MESS' ' dans la table des reponse a l indice ' I;
  2606. * 'MESS' ' le sous-indice NOM doit etre un mot';
  2607. * 'QUIT' ISSLEQ;
  2608. * 'FINSI';
  2609. * 'SI' ('NEG' (TYPE (TABPAR.'REPONSE'. I .'NOEUD')) 'POINT');
  2610. * 'MESS' ;
  2611. * 'MESS' ' Erruer dans la tables des parametres';
  2612. * 'MESS' ' dans la table des reponse a l indice ' I;
  2613. * 'MESS' ' le sous-indice NOEUD doit etre un point';
  2614. * 'QUIT' ISSLEQ;
  2615. * 'FINSI';
  2616. * 'SI' ('NEG' (TYPE (TABPAR.'REPONSE'. I .'COMP')) 'MOT');
  2617. * 'MESS' ;
  2618. * 'MESS' ' Erruer dans la tables des parametres';
  2619. * 'MESS' ' dans la table des reponse a l indice ' I;
  2620. * 'MESS' ' le sous-indice COMP doit etre un mot';
  2621. * 'QUIT' ISSLEQ;
  2622. * 'FINSI';
  2623. * I = I + 1;
  2624. * 'FIN' IND1;
  2625. *'SINON';
  2626. * 'MESS' ;
  2627. * 'MESS' ' Erruer....il manque la table des point de reponse';
  2628. * 'QUIT' ISSLEQ;
  2629. *'FINSI';
  2630. 'SI' ('EXIST' (TABPAR) 'TYPE_CALCUL');
  2631. 'SI' (('NEG' (TABPAR.'TYPE_CALCUL') (CHAINE 'ISS_COMPLET')) ET
  2632. ('NEG' (TABPAR.'TYPE_CALCUL') 'ISS_CHAMPLOIN') ET
  2633. ('NEG' (TABPAR.'TYPE_CALCUL') (CHAINE 'ISS_COMP_SIMP')));
  2634. 'MESS' ;
  2635. 'MESS' ' Erruer....type de calcul non prevu';
  2636. 'QUIT' ISSLEQ;
  2637. 'FINSI';
  2638. 'SINON';
  2639. TABPAR.'TYPE_CALCUL' = CHAINE 'ISS_COMPLET';
  2640. 'FINSI';
  2641. T_CAL = TABPAR.'TYPE_CALCUL';
  2642. 'SI' ('EXIST' (TABPAR) 'CRITERE');
  2643. 'SI' ('NEG' ('TYPE' (TABPAR.'CRITERE')) 'FLOTTANT');
  2644. 'MESS';
  2645. 'MESS' ' Erruer....CRITERE n est pas un flottant'
  2646. 'MESS' ' dans la table des parametres';
  2647. 'QUIT' ISSLEQ;
  2648. 'FINSI';
  2649. 'SINON';
  2650. 'MESS';
  2651. 'MESS' ' CRITERE fixe à 0.05'
  2652. 'MESS' ' dans la table des parametres';
  2653. TABPAR.'CRITERE' = 0.05;
  2654. 'FINSI';
  2655. *
  2656. ************* controle sol **********************************
  2657. 'SI' (('VALEUR' 'DIME') 'EGA' 2);
  2658. 'OPTI' 'ELEM' SEG3;
  2659. F_BASE = 'VIDE' MAILLAGE;
  2660. F_LATE = 'VIDE' MAILLAGE;
  2661. 'OPTI' 'ELEM' QUA8;
  2662. 'SINON';
  2663. 'OPTI' 'ELEM' QUA4;
  2664. F_BASE = 'VIDE' MAILLAGE;
  2665. F_LATE = 'VIDE' MAILLAGE;
  2666. 'OPTI' 'ELEM' CUB8;
  2667. 'FINSI';
  2668. *
  2669. * serie de checks pour le calcul complet
  2670. 'SI' ('EGA' T_CAL 'ISS_COMPLET');
  2671. 'SI' ('EXIST' TABSOL 'CONSTANTE');
  2672. 'MESS' ;
  2673. 'MESS' ' Erreur....pour le calcul COMPLET';
  2674. 'MESS' ' il n y a pas besoin de la partie du sol constante';
  2675. 'QUIT' ISSLEQ;
  2676. 'FINSI';
  2677. 'SI' ('EXIST' TABSOL 'ITERATION');
  2678. 'SI' ('NEG'