IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #21
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2014
    Messages : 1 295
    Points : 2 380
    Points
    2 380
    Par défaut
    Je suppose que le maillage triangulaire que tu veux effectuer doit avoir une en concordance avec tes granulats? Ce que je veux dire c'est qu'ils doivent épouser les courbes de tes cercles comme dans l'exemple que tu as posté? Le code que tu as apporté sur le maillage triangulaire ne me parait pas facilement adaptable à ce que tu souhaites faire. Il va falloir y réfléchir un peu.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  2. #22
    Candidat au Club
    Homme Profil pro
    Doctorant génie civil
    Inscrit en
    novembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Doctorant génie civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : novembre 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    En fait même s'il va un peu rentrer dans le granulat (les éléments triangulaires) , je pense si je raffine beaucoup mon maillage, je peux éloigner de ce problème.

    Merci

  3. #23
    Candidat au Club
    Homme Profil pro
    Doctorant génie civil
    Inscrit en
    novembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Doctorant génie civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : novembre 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    j'ai réussi de faire le maillage sur le logiciel GMSH qui fait très rapidement le maillage. Mais c'est moi qui va rentrer les coordonnées des centres et des rayons et cela dure un peu de temps.
    Pour cela j'ai trouvé un code sur matlab qui à partir d'un fichier .dat contenant 3 colonnes x y et rayon du cercle, me crée un fichier .geo qui peut rentrer dans gmsh et faire directement le maillage.
    Le problème est que quand j'ouvre la variable A dans le code ci-dessous il n’y a que la première coordonnée et me donne erreur je ne sais pas pourquoi? pouvez-vous m'aider?
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    inclusions =
    
      31.202999999999999  33.957000000000001   2.444500000000000
      18.372000000000000  44.258000000000003   1.977600000000000
      39.808999999999997  13.093999999999999   4.566400000000000
      33.985999999999997   6.827700000000000   1.676800000000000
       5.338100000000000  32.688000000000002   3.606100000000000
    
    >> csvwrite('inclusions.dat',inclusions)
    >> fileID = fopen('inclusions.dat','r');
    formatSpec = '%f %f %f';
    sizeA = [3 Inf]; % column order, [x y radius]
    
    A = fscanf(fileID,formatSpec,sizeA);
    A = A';
    fclose(fileID);
    % since the inclusions are generated for DEM, they are all in contact
    % scale their radius to separate them from each other
    
    factor = 0.9;
    
    A(:,3) = A(:,3)*factor;
    
    numberOfInclusions = size(A,1);
    
    th = 0:pi/50:2*pi;
    
    % plot the inclusions 
    
    figure
    hold on
    
    for i=1:numberOfInclusions
        xunit = A(i,3) * cos(th) + A(i,1);
        yunit = A(i,3) * sin(th) + A(i,2);
        plot(xunit, yunit);
    end
    axis equal
    
    % plot the outer box
    dL = 0.1;
    L  = 1;
    
    plot([0-dL L+dL],[-dL -dL]);
    plot([L+dL L+dL],[-dL L+dL]);
    plot([L+dL -dL],[L+dL L+dL]);
    plot([-dL -dL],[L+dL -dL]);
    
    %%%%%%%%%%%%%%
    % make a Gmsh geo file
    
    gmshFile = fopen('inclusions.geo','w');
    
    h = 0.03;
    fprintf(gmshFile, 'h=%f;\n',h);
    fprintf(gmshFile, 'h2=%f;\n',h*2);
    
    for i=1:numberOfInclusions
        x = A(i,1);
        y = A(i,2);
        r = A(i,3);
        
        fprintf(gmshFile, 'Point(%i)={%22.14E,%22.14E,0,h2};\n',10*i,  x,y  );
        fprintf(gmshFile, 'Point(%i)={%22.14E,%22.14E,0,h};\n',10*i+1,x+r,y);
        fprintf(gmshFile, 'Point(%i)={%22.14E,%22.14E,0,h};\n',10*i+2,x,y+r);
        fprintf(gmshFile, 'Point(%i)={%22.14E,%22.14E,0,h};\n',10*i+3,x-r,y);
        fprintf(gmshFile, 'Point(%i)={%22.14E,%22.14E,0,h};\n',10*i+4,x,y-r);
        
        fprintf(gmshFile, 'Circle(%i)={%i,%i,%i};\n',10*i,  10*i+1,10*i,10*i+2);
        fprintf(gmshFile, 'Circle(%i)={%i,%i,%i};\n',10*i+1,10*i+2,10*i,10*i+3);
        fprintf(gmshFile, 'Circle(%i)={%i,%i,%i};\n',10*i+2,10*i+3,10*i,10*i+4);
        fprintf(gmshFile, 'Circle(%i)={%i,%i,%i};\n',10*i+3,10*i+4,10*i,10*i+1);
        
        fprintf(gmshFile, 'Line Loop(%i)={%i,%i,%i,%i};\n',i,10*i,10*i+1,10*i+2,10*i+3);
        
        fprintf(gmshFile, 'Plane Surface(%i)={%i};\n',i,i);
    end
    
    fprintf(gmshFile, '\n');
    
    % use an array to faciliate Plane definition later
    
    fprintf(gmshFile, 'For i In {1:%i}\n',numberOfInclusions);
    fprintf(gmshFile, 'inclusions[i]=i;\n');
    fprintf(gmshFile, 'fields[i]=2*i;\n');
    fprintf(gmshFile, 'EndFor\n\n');
    
    % put the inclusions in a box (1,2,3,4)
    
    fprintf(gmshFile, 'Point(%i)={%22.4E,%22.4E,0,h};\n',1,  -dL,-dL  );
    fprintf(gmshFile, 'Point(%i)={%22.4E,%22.4E,0,h};\n',2,  L+dL,-dL );
    fprintf(gmshFile, 'Point(%i)={%22.4E,%22.4E,0,h};\n',3,  L+dL,L+dL);
    fprintf(gmshFile, 'Point(%i)={%22.4E,%22.4E,0,h};\n',4,  -dL,L+dL );
    
    fprintf(gmshFile, 'Line(%i)={%i,%i};\n',1,1,2);
    fprintf(gmshFile, 'Line(%i)={%i,%i};\n',2,2,3);
    fprintf(gmshFile, 'Line(%i)={%i,%i};\n',3,3,4);
    fprintf(gmshFile, 'Line(%i)={%i,%i};\n',4,4,1);
    
    fprintf(gmshFile, 'Line Loop(%i)={%i,%i,%i,%i};\n',1000,1,2,3,4);
    
    fprintf(gmshFile, 'Plane Surface(1000)={1000,inclusions[{1:%i}]};\n',60);
    
    % physical quantities
    
    fprintf(gmshFile, 'Physical Line(%i)={%i};\n',1,1); % lower edge
    fprintf(gmshFile, 'Physical Line(%i)={%i};\n',2,2); % right edge
    fprintf(gmshFile, 'Physical Line(%i)={%i};\n',3,3); % upper edge
    fprintf(gmshFile, 'Physical Line(%i)={%i};\n',4,4); % left edge
    
    fprintf(gmshFile, 'Physical Surface(%i)={%i};\n',1,1000); % matrix
    fprintf(gmshFile, 'Physical Surface(%i)={inclusions[{1:%i}]};\n\n',2,numberOfInclusions);
    
    % inclusions: coarse elements inside
    
    
    % for i=1:numberOfInclusions
    %     r = A(i,3);
    %     
    %     fprintf(gmshFile, 'Field[%i]=Attractor;\n',2*i-1);
    %     fprintf(gmshFile, 'Field[%i].EdgesList={%i,%i,%i,%i};\n',2*i-1,10*i,10*i+1,10*i+2,10*i+3);
    %     fprintf(gmshFile, 'Field[%i]=Threshold;\n',2*i);
    %     fprintf(gmshFile, 'Field[%i].IField=1;\n',2*i);
    %     fprintf(gmshFile, 'Field[%i].LcMin=h;\n',2*i);
    %     fprintf(gmshFile, 'Field[%i].LcMax=h2;\n',2*i);
    %     fprintf(gmshFile, 'Field[%i].DistMin=%f;\n',2*i,0.1*r);
    %     fprintf(gmshFile, 'Field[%i].DistMax=%f;\n',2*i,0.3*r);
    % end
    % 
    % fprintf(gmshFile, 'Field[%i]=Min;\n',2*numberOfInclusions+1);
    % fprintf(gmshFile, 'Field[%i].FieldsList={fields[{1:%i}]};\n',2*numberOfInclusions+1,numberOfInclusions);
    % fprintf(gmshFile, 'Background Field=%i;\n',2*numberOfInclusions+1);
    % fprintf(gmshFile, 'Mesh.CharacteristicLengthExtendFromBoundary=0;\n');
    
    % another solution
    
    for i=1:numberOfInclusions
        fprintf(gmshFile, 'Point{%i} In Surface {%i};\n',10*i,i);
    end

  4. #24
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2014
    Messages : 1 295
    Points : 2 380
    Points
    2 380
    Par défaut
    Salut,

    Pourquoi ne pas utiliser csvread pour faire ta lecture?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  5. #25
    Candidat au Club
    Homme Profil pro
    Doctorant génie civil
    Inscrit en
    novembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Doctorant génie civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : novembre 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    en fait moi je veux écrire un fichier .geo et celui de .dat j'en ai pas pour ça je crée un fichier .dat dans lequel j’écris les paramètres de données. Mon problème c'est avec A qui prend toujours la première valeur des inclusions je ne sais pas pourquoi.

  6. #26
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2014
    Messages : 1 295
    Points : 2 380
    Points
    2 380
    Par défaut
    Je ne suis pas sûr d'avoir bien compris, mais ton fichier contient bien tout ton tableau. C'est juste avec ta lecture sur Matlab que tu ne lis pas bien ton fichier. Télécharge notepad++ et ouvrer ton fichier .dat pour te rendre compte qu'il contient bien ce que tu désires.
    Les nombres sont accolés les uns avec les autres séparés par une virgule.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  7. #27
    Candidat au Club
    Homme Profil pro
    Doctorant génie civil
    Inscrit en
    novembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Doctorant génie civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : novembre 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Merci bien j'ai fais sur notepad et j'ai vu des virgules entre chaque élément de la matrice, comment je peux enlever cette virgule et avoir des espaces pourqu'il lit bien le fichier. A noter que dans la fonction maillage(n) j'obtient la variable Cercle et c'est pas moi qui rentre ces paramètres.


    Merci

  8. #28
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2014
    Messages : 1 295
    Points : 2 380
    Points
    2 380
    Par défaut
    Bah si tu veux pas de virgules il ne faut pas créer un fichier via csvwrite car c'est justement le formalisme du fichier csv (enfin je suppose, je ne suis pas familier de ce format). Je n'ai toujours pas bien compris, ce fichier tu dois l'ouvrir dans matlab ou sur un programme tiers?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  9. #29
    Candidat au Club
    Homme Profil pro
    Doctorant génie civil
    Inscrit en
    novembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Doctorant génie civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : novembre 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Voici dés le début ce que je veux faire:

    - Comme le maillage par matlab est difficile j'ai pu faire un maillage sur un logiciel GMSH qui lorsque je sélectionne le contour de mon carré et les cercles , il fait directement le maillage triangulaire.

    - Pour faire le maillage sur GMSH, j'ai besoin de rentrer tous les coordonnées de mes cercles, point par point obtenus du matlab (fonction maillage) dans Gmsh.

    - Pour faciliter beaucoup mon travail, j'ai trouvé un code qui me crée un fichier .geo à partir d'un fichier .dat que peut gmsh le lire directement.

    - Ce fichier .dat : il faut qu'il contient 3 colonnes (x,y et rayon).

    - mon problème est toujours que lorsque je le crée a partir de la matrice obtenue via matlab, ce code lit le premier élément (à cause de la virgule qui sépare mes éléments)

    - j'ai essayé par une matrice (2*2 double ) chaque élément est séparé par une espace non virgule, ça marche.

    Merci

  10. #30
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2014
    Messages : 1 295
    Points : 2 380
    Points
    2 380
    Par défaut
    Tu peux essayer d'utiliser la fonction csvread pour lire ton fichier, il va le lire correctement !

    Ou alors tu peux enregistrer tes données de coordonnées et de rayon avec une autre fonction que csvwrite. Je sais pas si ça répond à ta question?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  11. #31
    Candidat au Club
    Homme Profil pro
    Doctorant génie civil
    Inscrit en
    novembre 2015
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Doctorant génie civil
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : novembre 2015
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    le fichier .dat n'existe jamais, c'est moi qui l'ouvre et qui écrit dedans. il contient la matrice que j'ai obtenu à partir de la fonction maillage (vous pouvez jeter un coup d'oeil sur ma fonction qui me donne la matrice CERCLE et non un fichier .dat )

    je ne sais pas si vous me comprenez.

  12. #32
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : août 2014
    Messages : 1 295
    Points : 2 380
    Points
    2 380
    Par défaut
    Désolé, je suis un peu lent à la compréhension, mais j'ai fini par intégrer le problème. Pour être honnête, l'écriture de fichier c'est pas vraiment mon fort, donc je ne vois pas encore comment résoudre ton problème, mais je vais me pencher sur la question quand j'aurai un peu de temps. (Sauf si un gentil modérateur passe par là avant moi )
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/08/2012, 09h05
  2. Réponses: 27
    Dernier message: 03/02/2003, 12h27
  3. créer un noeuds avec des paramétres
    Par Toxine77 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 21/01/2003, 16h11
  4. Réponses: 2
    Dernier message: 06/12/2002, 07h50
  5. Une fonction avec des attributs non obligatoires
    Par YanK dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2002, 13h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo