Télécharger nlin_lapn.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : nlin_lapn.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. *BEGINPROCEDUR coptab
  5. ************************************************************************
  6. * NOM : COPTAB
  7. * DESCRIPTION : copie la table arguments pour NLIN
  8. *
  9. *
  10. *
  11. * LANGAGE : GIBIANE-CAST3M
  12. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  13. * mél : gounand@semt2.smts.cea.fr
  14. **********************************************************************
  15. * VERSION : v1, 11/05/2004, version initiale
  16. * HISTORIQUE : v1, 11/05/2004, création
  17. * HISTORIQUE : v2, 12/12/2005, version pour nlin final
  18. * HISTORIQUE :
  19. * HISTORIQUE :
  20. ************************************************************************
  21. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  22. * en cas de modification de ce sous-programme afin de faciliter
  23. * la maintenance !
  24. ************************************************************************
  25. *
  26. *
  27. 'DEBPROC' COPTAB A*'TABLE ' ;
  28. nop = A . 'NUMOP' ;
  29. nvar = A . 'NUMVAR' ;
  30. ndat = A . 'NUMDAT' ;
  31. ncof = A . 'NUMCOF' ;
  32. nder = A . 'NUMDER' ;
  33. *
  34. B = 'TABLE' ;
  35. B. 'NUMOP' = nop ;
  36. B. 'NUMVAR' = nvar ;
  37. B. 'NUMDAT' = ndat ;
  38. B. 'NUMCOF' = ncof ;
  39. B. 'NUMDER' = nder ;
  40. *
  41. B . 'VAR' = 'TABLE' ;
  42. 'REPETER' ivar nvar ;
  43. B . 'VAR' . &ivar = 'TABLE' ;
  44. 'SI' ('EXISTE' (A . 'VAR' . &ivar) 'NOMDDL') ;
  45. B . 'VAR' . &ivar . 'NOMDDL' =
  46. A . 'VAR' . &ivar . 'NOMDDL' ;
  47. 'FINSI' ;
  48. 'SI' ('EXISTE' (A . 'VAR' . &ivar) 'DISC') ;
  49. B . 'VAR' . &ivar . 'DISC' =
  50. A . 'VAR' . &ivar . 'DISC' ;
  51. 'FINSI' ;
  52. 'SI' ('EXISTE' (A . 'VAR' . &ivar) 'VALEUR') ;
  53. B . 'VAR' . &ivar . 'VALEUR' =
  54. A . 'VAR' . &ivar . 'VALEUR' ;
  55. 'FINSI' ;
  56. 'FIN' ivar ;
  57. *
  58. B . 'DAT' = 'TABLE' ;
  59. 'SI' ('>' ndat 0) ;
  60. 'REPETER' idat ndat ;
  61. B . 'DAT' . &idat = 'TABLE' ;
  62. 'SI' ('EXISTE' (A . 'DAT' . &idat) 'NOMDDL') ;
  63. B . 'DAT' . &idat . 'NOMDDL' =
  64. A . 'DAT' . &idat . 'NOMDDL' ;
  65. 'FINSI' ;
  66. 'SI' ('EXISTE' (A . 'DAT' . &idat) 'DISC') ;
  67. B . 'DAT' . &idat . 'DISC' =
  68. A . 'DAT' . &idat . 'DISC' ;
  69. 'FINSI' ;
  70. 'SI' ('EXISTE' (A . 'DAT' . &idat) 'VALEUR') ;
  71. B . 'DAT' . &idat . 'VALEUR' =
  72. A . 'DAT' . &idat . 'VALEUR' ;
  73. 'FINSI' ;
  74. 'FIN' idat ;
  75. 'FINSI' ;
  76. *
  77. B . 'COF' = 'TABLE' ;
  78. 'SI' ('>' ncof 0) ;
  79. 'REPETER' icof ncof ;
  80. B . 'COF' . &icof = 'TABLE' ;
  81. 'SI' ('EXISTE' (A . 'COF' . &icof) 'COMPOR') ;
  82. B . 'COF' . &icof . 'COMPOR' =
  83. A . 'COF' . &icof . 'COMPOR' ;
  84. 'FINSI' ;
  85. 'SI' ('EXISTE' (A . 'COF' . &icof) 'LDAT') ;
  86. B . 'COF' . &icof . 'LDAT' =
  87. A . 'COF' . &icof . 'LDAT' ;
  88. 'FINSI' ;
  89. * 'SI' ('EXISTE' (A . 'COF' . &icof) 'FACMUL') ;
  90. * B . 'COF' . &icof . 'FACMUL' =
  91. * A . 'COF' . &icof . 'FACMUL' ;
  92. * 'FINSI' ;
  93. 'FIN' icof ;
  94. 'FINSI' ;
  95. *
  96. 'REPETER' iop nop ;
  97. B . &iop = 'TABLE' ;
  98. 'REPETER' ivar nvar ;
  99. B . &iop . &ivar = 'TABLE' ;
  100. 'REPETER' ider ('+' nder 1) ;
  101. * B . &iop . &ivar . ('-' &ider 1) = 'TABLE' ;
  102. * 'SI' ('EXISTE'
  103. * (A . &iop . &ivar . ('-' &ider 1))
  104. * 'COMPOR') ;
  105. * B . &iop . &ivar . ('-' &ider 1) . 'LCOF' =
  106. * A . &iop . &ivar . ('-' &ider 1) . 'LCOF' ;
  107. * 'FINSI' ;
  108. 'SI' ('EXISTE'
  109. (A . &iop . &ivar) ('-' &ider 1)) ;
  110. B . &iop . &ivar . ('-' &ider 1) =
  111. A . &iop . &ivar . ('-' &ider 1) ;
  112. 'FINSI' ;
  113. 'FIN' ider ;
  114. 'FIN' ivar ;
  115. 'FIN' iop ;
  116. *
  117. 'FINPROC' B ;
  118. *
  119. * End of procedure file COPTAB
  120. *
  121. *ENDPROCEDUR coptab
  122. *
  123. * Plusieurs facons de construire la matrice du laplacien pour tester
  124. * nlin
  125. *
  126. 'DEBPROC' LAP1 ;
  127. idim = 'VALEUR' 'DIME' ;
  128. numop = idim ;
  129. numder = idim ;
  130. numvar = 1 ;
  131. numdat = 0 ;
  132. numcof = 0 ;
  133. *
  134. discg = 'LINE' ;
  135. methgau = 'GAU7' ;
  136. *
  137. A = ININLIN numop numvar numdat numcof numder ;
  138. A . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'T' ;
  139. A . 'VAR' . 1 . 'DISC' = 'LINE' ;
  140. * Manière simple
  141. A . 1 . 1 . 1 = 'LECT' ;
  142. A . 2 . 1 . 2 = 'LECT' ;
  143. *
  144. B = COPTAB A ;
  145. B . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'Q' ;
  146. *
  147. mlapn = 'NLIN' discg _mt A B methgau ;
  148. 'RESPRO' mlapn ;
  149. 'FINPROC' ;
  150.  
  151. ************************************************************************
  152. * NOM : NLIN_LAPN
  153. * DESCRIPTION : Test tout simple sur un laplacien
  154. *
  155. * Domaine : carré [0,1]x[0,1]
  156. * Equation : \Delta T = 0
  157. * CLim : restriction au bord de la solution exacte
  158. * Solution : T_exact = 2^0.5 x + \pi y
  159. *
  160. *
  161. * LANGAGE : GIBIANE-CAST3M
  162. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  163. * mél : gounand@semt2.smts.cea.fr
  164. **********************************************************************
  165. * VERSION : v1, 28/09/2005, version initiale
  166. * HISTORIQUE : v1, 28/09/2005, création
  167. * HISTORIQUE : v2, 12/12/2005, nouvelle version à l'aide de nlin_final
  168. * HISTORIQUE :
  169. ************************************************************************
  170. * Prière de PRENDRE LE TEMPS de compléter les commentaires
  171. * en cas de modification de ce sous-programme afin de faciliter
  172. * la maintenance !
  173. ************************************************************************
  174. *
  175. interact= FAUX ;
  176. graph = FAUX ;
  177. 'OPTION' 'DIME' 2 'ELEM' 'TRI3' ;
  178. 'SI' graph ;
  179. 'SI' interact ;
  180. 'OPTION' 'TRAC' 'X' ;
  181. 'SINON' ;
  182. 'OPTION' 'TRAC' 'PSC' ;
  183. 'FINSI' ;
  184. 'FINSI' ;
  185. *
  186. * Maillage
  187. *
  188. nx = 5 ;
  189. ny = 5 ;
  190. pA = 0. 0. ; pB = 1. 0. ;
  191. pC = 1. 1. ; pD = 0. 1. ;
  192. l1 = 'DROIT' nx pA pB ;
  193. l2 = 'DROIT' ny pB pC ;
  194. l3 = 'DROIT' nx pC pD ;
  195. l4 = 'DROIT' ny pD pA ;
  196. *mt = 'DALLER' l1 l2 l3 l4 ;
  197. mt = 'SURFACE' (l1 'ET' l2 'ET' l3 'ET' l4) ;
  198. cmt = l1 'ET' l2 'ET' l3 'ET' l4 ;
  199. *
  200. _mt = 'CHANGER' mt 'QUAF' ;
  201. _cmt = 'CHANGER' cmt 'QUAF' ;
  202. 'SI' graph ;
  203. 'TRACER' mt 'NOEUD' 'TITRE' ('CHAINE' 'Maillage') ;
  204. 'FINSI' ;
  205. *
  206. * Solution exacte du problème
  207. *
  208. xmt ymt = 'COORDONNEE' mt ;
  209. solex = '+' ('*' xmt ('**' 2.D0 0.5D0))
  210. ('*' ymt PI) ;
  211. solex = 'NOMC' 'T' solex 'NATURE' 'DISCRET' ;
  212. *
  213. * Matrice du problème
  214. *
  215. mlapn = LAP1 ;
  216.  
  217. *
  218. * Conditions aux limites
  219. *
  220. clim = 'REDU' solex cmt ;
  221. mbloc = 'BLOQUE' 'T' cmt ;
  222. fbloc = 'DEPIMPOSE' mbloc clim ;
  223. 'SI' graph ;
  224. 'TRACER' clim cmt 'TITRE' ('CHAINE' 'Conditions aux limites') ;
  225. 'FINSI' ;
  226. *
  227. * Résoud le problème
  228. *
  229. mtot = mlapn 'ET' mbloc ;
  230. ftot = fbloc ;
  231. *
  232. solu = 'RESOUD' mtot ftot ;
  233. *
  234. *
  235. * Post-traitement et calcul de l'erreur
  236. *
  237. *
  238. tsol = 'EXCO' 'T' solu 'T' ;
  239. difexa = '-' solex tsol ;
  240. 'SI' graph ;
  241. 'TRACER' tsol mt 'TITRE' ('CHAINE' 'Solution approchee') ;
  242. 'TRACER' difexa mt 'TITRE'
  243. ('CHAINE' 'Solution exacte - solution approchee') ;
  244. 'FINSI' ;
  245. nerr = '/' ('**' ('XTX' difexa) 0.5D0) ('NBNO' mt) ;
  246. 'OPTION' 'ECHO' 0 ;
  247. 'SAUTER' 3 'LIGNE' ;
  248. 'MESSAGE' ('CHAINE' 'Norme de lerreur : ' nerr) ;
  249. 'SAUTER' 3 'LIGNE' ;
  250. 'OPTION' 'ECHO' 1 ;
  251. *
  252. 'SI' (nerr '>' 1.D-10) ;
  253. 'ERREUR' 5 ;
  254. 'FINSI' ;
  255. *
  256. 'SI' interact ;
  257. 'OPTION' 'DONN' 5 ;
  258. 'FINSI' ;
  259. *
  260. * End of dgibi file NLIN_LAPN
  261. *
  262. 'FIN' ;
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  

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