Télécharger adapte.procedur

Retour à la liste

Numérotation des lignes :

  1. * ADAPTE PROCEDUR PASCAL 22/04/27 21:15:01 11356
  2. debproc adapte mot1*'MOT' ;
  3.  
  4. *----------------------------------------------------------------------*
  5. * Option MAIL *
  6. *----------------------------------------------------------------------*
  7.  
  8. si (ega mot1 'MAIL') ;
  9.  
  10. *------------------------ Lecture des arguments -----------------------*
  11.  
  12. * Lecture du chargement
  13. argu geo2*maillage cgtot1*chargement ;
  14.  
  15. * Lecture des mots-cles
  16. imot1 = faux ; imot2 = faux ; imot3 = faux ;
  17. repe b1 3 ;
  18. argu moti1/'MOT' ;
  19. si (ega moti1 'DIST') ;
  20. argu dmin1*flottant ;
  21. imot1 = vrai ;
  22. iter b1 ;
  23. fins ;
  24. si (ega moti1 'TRAJ') ;
  25. argu lmin1*flottant ;
  26. imot2 = vrai ;
  27. iter b1 ;
  28. fins ;
  29. si (ega moti1 'MINI') ;
  30. argu dabs1*flottant ;
  31. imot3 = vrai ;
  32. iter b1 ;
  33. fins ;
  34. si (exis moti1) ;
  35. erreur 19 ;
  36. quit adapte ;
  37. fins ;
  38. fin b1 ;
  39. si (non imot1) ;
  40. erreur '***** ERREUR : il manque la donnee de DIST' ;
  41. quit adapte ;
  42. fins ;
  43. si (non imot2) ;
  44. lmin1 = -1. ;
  45. fins ;
  46. si (non imot3) ;
  47. dabs1 = -1. ;
  48. sino ;
  49. si (dabs1 > dmin1) ;
  50. mess '***** ATTENTION : le parametre MINI est pris egal a DIST' ;
  51. dabs1 = dmin1 ;
  52. fins ;
  53. fins ;
  54.  
  55. *---------------------- Pre-traitement maillages ----------------------*
  56.  
  57. * Extraction des maillages :
  58. ttps1 tmod1 = extr cgtot1 'MODE' tables ;
  59. tgeo1 = table ;
  60. i0 = 0 ;
  61. lmot1 = mots ;
  62. repe b1 (dime ttps1) ;
  63. modi1 = tmod1 . i0 ;
  64. tgeo1 . i0 = extr modi1 mail ;
  65. i0 = i0 + 1 ;
  66. si (vide lmot1) ;
  67. si (non (vide modi1)) ;
  68. lmot1 = extr modi1 depl ;
  69. fins ;
  70. fins ;
  71. fin b1 ;
  72.  
  73. * Maillage fin :
  74. repe b1 (dime ttps1) ;
  75. i0 = &b1 - 1 ;
  76. si (&b1 ega 1) ;
  77. geo1 = tgeo1 . i0 ;
  78. sino ;
  79. geoi1 = tgeo1 . i0 ;
  80. si ((nbel geoi1) > (nbel geo1)) ;
  81. geo1 = geoi1 ;
  82. fins ;
  83. fins ;
  84. fin b1 ;
  85. si ((nbel geo1) < 1) ;
  86. erreur '***** ERREUR : le maillage passe dans le chargement est vide' ;
  87. quit ADAPTE ;
  88. fins ;
  89.  
  90. si ((nbno geo2) > (nbno geo1)) ;
  91. mess '***** ATTENTION : le maillage fourni est plus fin que celui a adapter' ;
  92. fins ;
  93.  
  94. * Tolerance geometrique :
  95. tol1 = 1.e-5 * dmin1 ;
  96. tol1 = tol1 / (((flot (nbel geo1)) ** (0.333)) + 1.) ;
  97.  
  98. * Verification points(geo2) inclus dans points(geo1)
  99. *elim (geo1 et geo2) tol1 ;
  100. mpoi1 = chan poi1 geo1 ;
  101. mpoi2 = chan poi1 geo2 ;
  102. si ((nbel (mpoi1 inte mpoi2)) neg (nbel mpoi2)) ;
  103. erre '***** ERREUR : les points du maillage fourni doivent etre confondus avec ceux du maillage a adapter' ;
  104. quit adapte ;
  105. fins ;
  106.  
  107. *----------------------------- Traitement -----------------------------*
  108.  
  109. * Initialisation objets resultats :
  110. ttps3 = table ;
  111. tgeo3 = table ;
  112. ttps4 = table ;
  113. trig4 = table ;
  114. lree1 = prog ;
  115.  
  116. * Coordonnees des noeuds de geo2 :
  117. x1 y1 z1 = geo2 coor ;
  118. pts2 = chan poi1 geo2 ;
  119.  
  120. * Quelques initialisations :
  121. dmin2 = dmin1 ** 2 ;
  122. idabs1 = dabs1 > -1. ;
  123. si idabs1 ;
  124. dabs2 = dabs1 ** 2 ;
  125. sino ;
  126. dabs2 = dabs1 ;
  127. fins ;
  128. rmini1 = 0. ;
  129. geoi1p = vide maillage ;
  130. geoi3p = vide maillage ;
  131. geo3 = vide maillage ;
  132. i0 = 0 ;
  133. ir0 = 0 ;
  134. repe b1 (dime ttps1) ;
  135. tpsi1 = ttps1 . (&b1 - 1) ;
  136. geoi1 = tgeo1 . (&b1 - 1) ;
  137.  
  138. * On evite des traitements peu utiles en forcant le pas adaptation
  139. * a etre au moins egal au part d'apport de matiere :
  140. si (geoi1 ega geoi1p) ; iter b1 ; fins ;
  141.  
  142. * Maillage grossier :
  143. ptsi1 = chan poi1 geoi1 ;
  144. ptsi2 = ptsi1 inte pts2 ;
  145. si (vide ptsi2) ;
  146. ttps3 . i0 = tpsi1 ;
  147. tgeo3 . i0 = geoi1 ;
  148. i0 = i0 + 1 ;
  149. iter b1 ;
  150. fins ;
  151. geoi2 = geo2 elem appu stri ptsi2 ;
  152.  
  153. * Distances a la source :
  154. ptxi1 = tire cgtot1 traj tpsi1 ;
  155. si (&b1 ega 1) ; ptxi1p = ptxi1 ; fins ;
  156. xp1 yp1 zp1 = ptxi1 coor ;
  157. xi1 yi1 zi1 = (redu x1 geoi2) (redu y1 geoi2) (redu z1 geoi2) ;
  158. xi1 yi1 zi1 = (xi1 - xp1) (yi1 - yp1) (zi1 - zp1) ;
  159. ri1 = (xi1 ** 2) + (yi1 ** 2) + (zi1 ** 2) ;
  160. chri1 = chan cham ri1 geoi2 ;
  161. geoi3 = chri1 elem supe dmin2 stri ;
  162.  
  163. * geoi3 : maillage grossier a retrancher de geoi1 :
  164. si (vide geoi3) ;
  165. geo3 = geoi1 ;
  166. rigi1 = vide rigidite ;
  167. ttps4 . ir0 = tpsi1 ;
  168. trig4 . ir0 = rigi1 ;
  169. ir0 = ir0 + 1 ;
  170. sino ;
  171. ltrj1 = norm (ptxi1 moin ptxi1p) ;
  172. si idabs1 ; rmini1 = mini chri1 ; fins ;
  173. si ((ltrj1 '>' lmin1) ou (&b1 ega 1) ou (rmini1 '<' dabs2)) ;
  174. *mess 'adaptation' ;
  175. ptxi1p = ptxi1 ;
  176. geoix = geoi1 incl geoi3 volu bary ;
  177. geoix = geoi1 diff geoix ;
  178. geo3 = geoi3 et geoix ;
  179.  
  180. dgeoi3 = geoi3 diff geoi3p ;
  181. si ((&b1 neg 1) et (non (vide dgeoi3))) ;
  182. lree1 = lree1 et tpsi1 ;
  183. geoi3p = geoi3 ;
  184. fins ;
  185. rigi1 = (enve geoix) rela accro geoi3 lmot1 ;
  186. ttps4 . ir0 = tpsi1 ;
  187. trig4 . ir0 = rigi1 ;
  188. ir0 = ir0 + 1 ;
  189. sino ;
  190. geoix = geoi1 diff geoi1p ;
  191. geo3 = geo3 et geoix ;
  192. fins ;
  193. fins ;
  194. geoi1p = geoi1 ;
  195.  
  196. * Tables resultat :
  197. ttps3 . i0 = tpsi1 ;
  198. tgeo3 . i0 = geo3 ;
  199. i0 = i0 + 1 ;
  200. *trac face geo3 ;
  201.  
  202. fin b1 ;
  203. *lree1 = lree1 enle 1 ;
  204.  
  205. * Chargements de sortie :
  206. cggeo3 = char mail ttps3 tgeo3 ;
  207. cgrig4 = char blot ttps4 trig4 ;
  208.  
  209. * Sortie des resultats :
  210. resp (cggeo3 et cgrig4) lree1 ;
  211.  
  212. quit adapte ;
  213.  
  214. * finsi Option MAIL :
  215. fins ;
  216.  
  217. *----------------------------------------------------------------------*
  218.  
  219. * Si mot-cle option pas reconnu : erreur !
  220. erreur 251 ;
  221.  
  222. finproc ;
  223.  
  224.  

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