Bonjour,

je souhaite savoir comment créer un fichier .dat compatible avec Matlab, dans le but de placer dans ce fichier .dat les coordonnée et le numéro de différents points d'un plan (problème en 2D) dans le but de créer un maillage (de la figure obtenue par les points) pour pouvoir appliquer les éléments finis...

de plus, je joint ci-contre un code Matlab pour un maillage... pouvez vous me l'expliciter ?
je n'arrive pas à l'appliquer sans avoir en permanence 5 point et un maillage préfait dedans...


fichier explegeom.m :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
function [x,y]=polyg(bs,s) 
% cette fonction doit puvoir être appelée por 0, 1 ou 2 parametres d'entrée
% bs: tableau des numéros de segments
% s tableau des parametrs sur chaque segment
% x et y tableaux des coordonnées correspondantes
 
close all
 
Q= [ 0 0 1 0  ;  % couple de points par ligne, coordonnées x1,y1,x2,y2
     1 0 2 1  ;
     2 1 0 1  ;
     0 1 0 0 ];
 
nbs=size(Q,1); % nombre de segments
 
if nargin==0  
  x=nbs;   
  return 
end
 
dl= [ 0 0 0 0 ;  %borne inf du parametre
      1 1 1 1 ;  %borne sup du parametre
      1 1 1 1 ;  % domaine à gauche
      0 0 0 0 ]  % domaine à droite
 
% on aurait pu écrire de facon condensée:   dl=[zeros(1,nbs);ones(2,nbs);zeros(1,nbs)];
 
if nargin==1   
  x=dl(:,bs);   
  return 
end 
 
x=zeros(size(s)); 
y=zeros(size(s)); 
[m,n]=size(bs); 
 
if m==1 & n==1,   
  bs=bs*ones(size(s)); % expand bs 
elseif m~=size(s,1) | n~=size(s,2),   
  error('bs must be scalar or of same size as s'); 
end 
 
nli=size(s,1);
ncol=size(s,2);
 
%On remplit dans une double boucle x et y, qui doivent avoir la même
%dimension que s et bs
if nli>0 & ncol>0
for nuli=1:nli
    for nucol=1:ncol
    [x(nuli,nucol),y(nuli,nucol)]=segment(Q(bs(nuli,nucol),:),s(nuli,nucol),dl(1:2,bs(nuli,nucol)));
    end
end
end
fichier MailSimple.m:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
function [p e t ]= MailSimple
 
pdegplot('explegeom'), axis equal 
[p,e,t]=initmesh('explegeom', 'Hmax',1); % Hmax: taille max de triangles
pdemesh(p,e,t), axis equal

fichier segment.m:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
function [x,y]= segment(S,par, bpar)
 
% S=[x1,y1,x2,y2], deux points extrémaux du segment
% bpar=(bpar(1),bpar(2)], bornes correspondantes du parametrage
% par: valeur du parametre pour lequel on veut calculer le point [x,y]
% Attention, cette routine ne marche que pour des réels, alors que 
% Matlab suggère de l'écrire pour des tableux de parametres... 
% ceci oblige à remplir x et y dans une boucle à l'extérieur.. 
 
alph=(par-bpar(1))/(bpar(2)-bpar(1)); % coordonnée barycentrique du point cherché
x=(1-alph)*S(1) + alph*S(3) ;
y=(1-alph)*S(2) + alph*S(4) ;
D'avance merci !