Télécharger nlin_lapnpara.dgibi

Retour à la liste

Numérotation des lignes :

  1. * fichier : nlin_lapnpara.dgibi
  2. ************************************************************************
  3. ************************************************************************
  4. ************************************************************************
  5. * NOM : NLIN_LAPNPARA
  6. * DESCRIPTION : Test tout simple sur un laplacien construit en parallèle
  7. * ou en séquentiel
  8. * On vérifie l'écart à la solution analytique dans les
  9. * deux cas.
  10. *
  11. * Domaine : carré [0,1]x[0,1]
  12. * Equation : \Delta T = 0
  13. * CLim : restriction au bord de la solution exacte
  14. * Solution : T_exact = 2^0.5 x + \pi y
  15. *
  16. *
  17. * LANGAGE : GIBIANE-CAST3M
  18. * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
  19. * mél : gounand@semt2.smts.cea.fr
  20. **********************************************************************
  21. * VERSION : v1, 19/11/2015, version initiale basée sur nlin_lapn
  22. * (dix ans après !)
  23. * HISTORIQUE : v1, 19/11/2015, création
  24. * HISTORIQUE :
  25. **********************************************************************
  26. *
  27. interact= FAUX ; graph = FAUX ;
  28. 'OPTION' 'DIME' 2 'ELEM' 'TRI3' ;
  29. 'SI' graph ;
  30. 'SI' interact ;
  31. 'OPTION' 'TRAC' 'X' ;
  32. 'SINON' ;
  33. 'OPTION' 'TRAC' 'PSC' ;
  34. 'FINSI' ;
  35. 'FINSI' ;
  36. *
  37. * Latrice du laplacien construite en parallèle ou non avec NLIN
  38. *
  39. 'DEBPROC' LAP1 ;
  40. 'ARGUMENT' lpara*'LOGIQUE' ;
  41. idim = 'VALEUR' 'DIME' ;
  42. numop = idim ;
  43. numder = idim ;
  44. numvar = 1 ;
  45. numdat = 0 ;
  46. numcof = 0 ;
  47. *
  48. discg = 'LINE' ;
  49. methgau = 'GAU7' ;
  50. *
  51. A = ININLIN numop numvar numdat numcof numder ;
  52. A . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'T' ;
  53. A . 'VAR' . 1 . 'DISC' = 'LINE' ;
  54. * Manière simple
  55. A . 1 . 1 . 1 = 'LECT' ;
  56. A . 2 . 1 . 2 = 'LECT' ;
  57. *
  58. B = ININLIN numop numvar numdat numcof numder ;
  59. B . 'VAR' . 1 . 'NOMDDL' = 'MOTS' 'Q' ;
  60. B . 'VAR' . 1 . 'DISC' = 'LINE' ;
  61. * Manière simple
  62. B . 1 . 1 . 1 = 'LECT' ;
  63. B . 2 . 1 . 2 = 'LECT' ;
  64. *
  65. 'SI' lpara ;
  66. nbpart = 'VALEUR' 'ASSI' ;
  67. _mtpart = 'PART' 'ARLE' _mt nbpart ;
  68. tmlapn = 'ASSI' 'TOUS' 'NLIN' discg _mtpart A B methgau ;
  69. mlapn = 'ET' tmlapn ;
  70. * mlapn = 'ETG' tmlapn ;
  71. * 'ERREUR' stop ;
  72. 'SINON' ;
  73. mlapn = 'NLIN' discg _mt A B methgau ;
  74. 'FINSI' ;
  75. 'RESPRO' mlapn ;
  76. 'FINPROC' ;
  77. *
  78. *
  79. * Maillage
  80. *
  81. nx = 15 ;
  82. ny = 20 ;
  83. pA = 0. 0. ; pB = 1. 0. ;
  84. pC = 1. 1. ; pD = 0. 1. ;
  85. l1 = 'DROIT' nx pA pB ;
  86. l2 = 'DROIT' ny pB pC ;
  87. l3 = 'DROIT' nx pC pD ;
  88. l4 = 'DROIT' ny pD pA ;
  89. *mt = 'DALLER' l1 l2 l3 l4 ;
  90. mt = 'SURFACE' (l1 'ET' l2 'ET' l3 'ET' l4) ;
  91. cmt = l1 'ET' l2 'ET' l3 'ET' l4 ;
  92. *
  93. _mt = 'CHANGER' mt 'QUAF' ;
  94. _cmt = 'CHANGER' cmt 'QUAF' ;
  95. 'SI' graph ;
  96. 'TRACER' mt 'NOEUD' 'TITRE' ('CHAINE' 'Maillage') ;
  97. 'FINSI' ;
  98. *
  99. * Solution exacte du problème
  100. *
  101. xmt ymt = 'COORDONNEE' mt ;
  102. solex = '+' ('*' xmt ('**' 2.D0 0.5D0))
  103. ('*' ymt PI) ;
  104. solex = 'NOMC' 'T' solex 'NATURE' 'DISCRET' ;
  105. *
  106. * Matrice du problème
  107. *
  108. mlapnpar = LAP1 vrai ;
  109. mlapnseq = LAP1 faux ;
  110. *
  111. * Conditions aux limites
  112. *
  113. clim = 'REDU' solex cmt ;
  114. mbloc = 'BLOQUE' 'T' cmt ;
  115. fbloc = 'DEPIMPOSE' mbloc clim ;
  116. 'SI' graph ;
  117. 'TRACER' clim cmt 'TITRE' ('CHAINE' 'Conditions aux limites') ;
  118. 'FINSI' ;
  119. *
  120. * Résoud le problème
  121. *
  122. mtot_seq = mlapnseq 'ET' mbloc ;
  123. mtot_par = mlapnpar 'ET' mbloc ;
  124. ftot = fbloc ;
  125. *
  126. solu_seq = 'RESOUD' mtot_seq ftot ;
  127. solu_par = 'RESOUD' mtot_par ftot ;
  128. *
  129. *
  130. * Post-traitement et calcul de l'erreur
  131. *
  132. *
  133. tsol_seq = 'EXCO' 'T' solu_seq 'T' ;
  134. tsol_par = 'EXCO' 'T' solu_par 'T' ;
  135. dif_seq = '-' solex tsol_seq ;
  136. dif_par = '-' solex tsol_par ;
  137. 'SI' graph ;
  138. 'TRACER' tsol mt 'TITRE' ('CHAINE' 'Solution approchee') ;
  139. 'TRACER' dif_seq mt 'TITRE'
  140. ('CHAINE' 'Solution exacte - solution approchee sequentiel') ;
  141. 'TRACER' dif_par mt 'TITRE'
  142. ('CHAINE' 'Solution exacte - solution approchee parallèle') ;
  143. 'FINSI' ;
  144. nerr_seq = '/' ('**' ('XTX' dif_seq) 0.5D0) ('NBNO' mt) ;
  145. nerr_par = '/' ('**' ('XTX' dif_par) 0.5D0) ('NBNO' mt) ;
  146. 'OPTION' 'ECHO' 0 ;
  147. 'SAUTER' 3 'LIGNE' ;
  148. 'MESSAGE' ('CHAINE' 'Norme de lerreur sequentiel : ' nerr_seq) ;
  149. 'MESSAGE' ('CHAINE' 'Norme de lerreur parallele : ' nerr_par) ;
  150. 'SAUTER' 3 'LIGNE' ;
  151. 'OPTION' 'ECHO' 1 ;
  152. *
  153. 'SI' ('OU' (nerr_seq '>' 1.D-10) (nerr_par '>' 1.D-10)) ;
  154. 'ERREUR' 5 ;
  155. 'FINSI' ;
  156. *
  157. 'SI' interact ;
  158. 'OPTION' 'DONN' 5 ;
  159. 'FINSI' ;
  160. *
  161. * End of dgibi file NLIN_LAPNPARA
  162. *
  163. 'FIN' ;
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  

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