Télécharger elimrela.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : elimrela.dgibi
  2. 'OPTI' echo 0 ;
  3. ************************************************************************
  4. * NOM : elimrela
  5. * DESCRIPTION : Test de l'élimination des relations dans RESO et KRES
  6. *
  7. *
  8. *
  9. * LANGAGE : GIBIANE-CAST3M
  10. * AUTEUR : Stephane GOUNAND (CEA/DEN/DM2S/SEMT/LTA)
  11. * mel : stephane.gounand@cea.fr
  12. **********************************************************************
  13. * VERSION : v1, 17/02/2019, version initiale
  14. * HISTORIQUE : v1, 17/02/2019, création
  15. * HISTORIQUE :
  16. * HISTORIQUE :
  17. ************************************************************************
  18. *
  19. interact= FAUX ;
  20. *
  21. vimpi = 1 ; limpi = ('NEG' vimpi 0) ;
  22. *
  23. ************************************************************************
  24. *
  25. * PROCEDURES
  26. *
  27. ************************************************************************
  28. *
  29. 'DEBPROC' VERIRESO ;
  30. 'ARGUMENT' mat*'RIGIDITE' ;
  31. 'ARGUMENT' sol*'CHPOINT' ;
  32. 'ARGUMENT' smb*'CHPOINT' ;
  33. 'ARGUMENT' tol*'FLOTTANT' ;
  34. 'ARGU' nom*'MOT' ;
  35. *
  36. res = '-' smb ('*' mat sol) ;
  37. mresa = 'MAXIMUM' res 'ABS' ;
  38. msmba = 'MAXIMUM' smb 'ABS' ;
  39. mresa = '/' mresa msmba ;
  40. lok = ('<' mresa tol) ;
  41. ch = 'CHAI' nom ' : |res|=' mresa ;
  42. 'SI' lok ;
  43. ch = 'CHAI' ' ' ' ' ' ' ' ' ch ' < tol=' tol ;
  44. 'SINO' ;
  45. ch = 'CHAI' '!!!' ' ' ch ' > tol=' tol ;
  46. 'FINS' ;
  47. 'MESS' ch ;
  48. 'RESP' lok ;
  49. 'FINP' ;
  50. *
  51. ************************************************************************
  52. * NOM : GCOND
  53. * DESCRIPTION : Effectue n fois la procédure de condensation en vue
  54. * d'éliminer les multiplicateurs de Lagrange
  55. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  56. * VERSION : v1, 07/02/2019, version initiale
  57. ************************************************************************
  58. *
  59. 'DEBPROC' GCOND ;
  60. 'ARGUMENT' mat*'RIGIDITE' ;
  61. 'ARGUMENT' smb*'CHPOINT' ;
  62. 'ARGUMENT' nelim*'ENTIER' ;
  63. 'ARGUMENT' limpi/'LOGIQUE' ;
  64. 'SI' ('NON' ('EXISTE' limpi)) ;
  65. limpi = FAUX ;
  66. 'FINSI' ;
  67. *
  68. tcond = 'TABLE' ;
  69. tcond . 0 = 'TABLE' ;
  70. tcond . 0 . 'mat' = mat ;
  71. tcond . 0 . 'smb' = smb ;
  72. 'SI' ('>' nelim 0) ;
  73. 'REPETER' iielim nelim ;
  74. ielim = &iielim ;
  75. ielimm = '-' ielim 1 ;
  76. mat = tcond . ielimm . 'mat' ;
  77. smb = tcond . ielimm . 'smb' ;
  78. 'SI' limpi ; oimpi = 'VALE' 'IMPI' ; 'OPTI' 'IMPI' 1 ; 'FINSI' ;
  79. matc smbc smb1 = 'KOPS' 'CONDENSE' mat smb ;
  80. 'SI' limpi ; 'OPTI' 'IMPI' oimpi ; 'FINSI' ;
  81. tcond . ielim = 'TABLE' ;
  82. tcond . ielim . 'mat' = matc ;
  83. tcond . ielim . 'smb' = smbc ;
  84. tcond . ielim . 'smb1' = smb1 ;
  85. 'FIN' iielim ;
  86. 'FINSI' ;
  87. mat = tcond . nelim . 'mat' ;
  88. smb = tcond . nelim . 'smb' ;
  89. 'RESPRO' mat smb tcond ;
  90. *
  91. * End of procedure file GCOND
  92. *
  93. 'FINPROC' ;
  94. ************************************************************************
  95. * NOM : GEVAP
  96. * DESCRIPTION : Effectue n fois la procédure de décondensation en vue
  97. * de récupérer les multiplicateurs de Lagrange
  98. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  99. * VERSION : v2, 02/07/2019
  100. ************************************************************************
  101. *
  102. 'DEBPROC' GEVAP ;
  103. 'ARGUMENT' dsolc*'CHPOINT' ;
  104. 'ARGUMENT' tcc*'TABLE' ;
  105. *
  106. dtcc = '-' ('DIME' tcc) 1 ;
  107. dsol = dsolc ;
  108. 'SI' ('>' dtcc 0) ;
  109. 'REPETER' iitcc dtcc ;
  110. * itcc = '-' dtcc ('-' iitcc 1) ;
  111. itcc = '-' dtcc &iitcc ;
  112. ktg = tcc . itcc . 'mat' ;
  113. ftot = tcc . itcc . 'smb' ;
  114. ftot1 = tcc . ('+' itcc 1) . 'smb1' ;
  115. dsol = 'KOPS' 'EVAPORE' dsol ktg ftot ftot1 ;
  116. 'FIN' iitcc ;
  117. 'FINSI' ;
  118. 'RESPRO' dsol ;
  119. *
  120. * End of procedure file GEVAP
  121. *
  122. 'FINPROC' ;
  123. *
  124. ************************************************************************
  125. *
  126. * JEU DE DONNEES
  127. *
  128. ************************************************************************
  129. *
  130. lok = vrai ; tol = 1.d-14 ;
  131. *
  132. 'OPTION' 'DIME' 3 'ELEM' CUB8 ;
  133. p0 = 0. 0 0 ; p1 = 1. 0. 0 ; p2 = 2. 0. 0 ;
  134. mt = p1 'ET' p0 'ET' p2 ;
  135. *
  136. cc = 'MANU' 'CHPO' mt 1 'T' 1. ;
  137. rig = 'MANU' 'RIGI' cc 'DIAG' ;
  138. con1 = 'RELA' p0 'T' '+' 2. p1 'T' '-' p2 'T' ;
  139. vcon1 = 'DEPI' con1 4. ;
  140. con2 = 'RELA' p0 'T' '+' 2. p1 'T' '+' p2 'T' ;
  141. vcon2 = 'DEPI' con2 5. ;
  142. *
  143. mat = rig 'ET' con1 'ET' con2 ;
  144. for = 'NOMC' 'Q' ('+' ('COOR' 1 mt) 1.) 'NATU' 'DISCRET' ;
  145. smb = for 'ET' vcon1 'ET' vcon2 ;
  146. *
  147. *xx = 'KRES' mat smb 'TYPINV' 2 'PRECOND' 0 'IMPR' 4 'RESID'
  148. *1.D-20 'LDEPE' faux 'TYRENU' 'RIEN' 'PCMLAG' 'RIEN' 'IMPINV' 4 'METASS'
  149. * 6 ;
  150. *
  151. * RESO ELIM ok
  152. *
  153. * Copie de sécurité
  154. matc1 = '*' mat 1. ;
  155. matc2 = '*' mat 1. ;
  156. matc3 = '*' mat 1. ;
  157. 'OPTI' impi vimpi ;
  158. xxc3 = 'RESO' matc3 smb 'ELIM' 2 ;
  159. xxc2 = 'RESO' matc2 smb 'ELIM' 1 ;
  160. xxc1 = 'RESO' matc1 smb 'ELIM' 0 ;
  161. * PS : RESO ne retriangule pas si elim change
  162. *xxc2 = 'RESO' matc smb 'ELIM' 1 ;
  163. *xxc3 = 'RESO' matc smb 'ELIM' 0 ;
  164. 'OPTI' impi 0 ;
  165. *
  166. lok1 = verireso mat xxc1 smb tol 'RESO ELIM 0' ;
  167. lok2 = verireso mat xxc2 smb tol 'RESO ELIM 1' ;
  168. lok3 = verireso mat xxc3 smb tol 'RESO ELIM 2' ;
  169. lok = lok1 'ET' lok2 'ET' lok3 ;
  170. *
  171. *
  172. * KRES élimination en interne opérateur
  173. *
  174. * Copie de sécurité
  175. mat1 = '*' mat 1. ;
  176. mat2 = '*' mat 1. ;
  177. mat3 = '*' mat 1. ;
  178. mat4 = '*' mat 1. ;
  179. 'OPTI' impi vimpi ;
  180. xx1 = 'KRES' mat1 smb 'TYPINV' 2 'PRECOND' 0 'IMPR' 4 'RESID' 1.D-20
  181. 'LDEPE' vrai 'SCALAG' 0 'IMPINV' 2 ;
  182. xx2 = 'KRES' mat2 smb 'TYPINV' 2 'PRECOND' 0 'IMPR' 4 'RESID' 1.D-20
  183. 'LDEPE' faux 'SCALAG' 0 'IMPINV' 2 ;
  184. xx3 = 'KRES' mat3 smb 'TYPINV' 2 'PRECOND' 0 'IMPR' 4 'RESID' 1.D-20
  185. 'LDEPE' vrai 'SCALAG' 1 'IMPINV' 2 ;
  186. xx4 = 'KRES' mat4 smb 'TYPINV' 2 'PRECOND' 0 'IMPR' 4 'RESID' 1.D-20
  187. 'LDEPE' faux 'SCALAG' 1 'IMPINV' 2 ;
  188. 'OPTI' impi 0 ;
  189. *
  190. lok1 = verireso mat xx1 smb tol 'KRES ELIM 1 SCALAG 0' ;
  191. lok2 = verireso mat xx2 smb tol 'KRES ELIM 0 SCALAG 0' ;
  192. lok3 = verireso mat xx3 smb tol 'KRES ELIM 1 SCALAG 1' ;
  193. lok4 = verireso mat xx4 smb tol 'KRES ELIM 0 SCALAG 1' ;
  194. lok = lok1 'ET' lok2 'ET' lok3 'ET' lok4 ;
  195. *
  196. * KRES élimination en externe opérateur avec les procédures GCOND et
  197. * GEVAP (nb elimination=2)
  198. *
  199. lisnelim = 'LECT' 2 1 0 ;
  200. 'REPE' belim ('DIME' lisnelim) ;
  201. nelim = 'EXTR' lisnelim &belim ;
  202. * Copie de sécurité
  203. mat1 = '*' mat 1. ;
  204. mat2 = '*' mat 1. ;
  205. *
  206. matc1 smbc1 tcond1 = GCOND mat1 smb nelim limpi ;
  207. xxc1 = 'KRES' matc1 smbc1 'TYPINV' 2 'PRECOND' 0 'IMPR' 4 'RESID' 1.D-20
  208. 'LDEPE' faux 'SCALAG' 1 'IMPINV' 2 ;
  209. chid = 'CHAI' 'KRES MATRED ELIMGCOND' ' ' nelim ' SCALAG 1' ;
  210. lokc1 = verireso matc1 xxc1 smbc1 tol chid ;
  211. xx1 = GEVAP xxc1 tcond1 ;
  212. chid = 'CHAI' 'KRES MATTOT ELIMGCOND' ' ' nelim ' SCALAG 1' ;
  213. lok1 = verireso mat xx1 smb tol chid ;
  214. *
  215. matc2 smbc2 tcond2 = GCOND mat2 smb nelim limpi ;
  216. xxc2 = 'KRES' matc2 smbc2 'TYPINV' 2 'PRECOND' 0 'IMPR' 4 'RESID' 1.D-20
  217. 'LDEPE' faux 'SCALAG' 0 'IMPINV' 2 ;
  218. chid = 'CHAI' 'KRES MATRED ELIMGCOND' ' ' nelim ' SCALAG 0' ;
  219. lokc2 = verireso matc2 xxc2 smbc2 tol chid ;
  220. xx2 = GEVAP xxc2 tcond1 ;
  221. chid = 'CHAI' 'KRES MATTOT ELIMGCOND' ' ' nelim ' SCALAG 0' ;
  222. lok2 = verireso mat xx2 smb tol chid ;
  223. *
  224. lok = lokc1 'ET' lok1 'ET' lokc2 'ET' lok2 ;
  225. 'FIN' belim ;
  226. *
  227. 'SAUT' 1 'LIGNE' ;
  228. 'SI' lok ;
  229. 'MESSAGE' 'Tout sest bien passe' ;
  230. 'SINON' ;
  231. 'MESSAGE' '!!! Il y a eu des erreurs' ;
  232. 'FINSI' ;
  233. 'SAUT' 1 'LIGNE' ;
  234. *
  235. 'SI' interact ;
  236. 'OPTION' 'DONN' 5 'ECHO' 1 ;
  237. 'FINSI' ;
  238. 'SI' ('NON' lok) ;
  239. 'ERREUR' 5 ;
  240. 'FINSI' ;
  241. *
  242. * End of dgibi file ELIMRELA
  243. *
  244. 'FIN' ;
  245.  
  246.  
  247.  
  248.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales