Répondre à la discussion
Affichage des résultats 1 à 19 sur 19

Probleme de programmation et recherche de voisins



  1. #1
    tabitni

    Smile Probleme de programmation et recherche de voisins

    Bonjour,


    j'ai un problème au niveau de programmation de monte carlo pour des terminer la structure des métaux, ,j'arrive pas de faire la déclaration de structure et aussi déterminer les proches voisins.

    Merci

    -----


  2. Publicité
  3. #2
    Coincoin

    Re : probleme de programmation

    Salut,
    Quel langage utilises-tu ?
    Comment vois-tu ton programme ? Comment vont être organisées les différentes grandeurs ?
    Encore une victoire de Canard !

  4. #3
    obi76

    Re : probleme de programmation

    Ce serai sans doute plus justifié dans le forum "informatique".

    Les problèmes de déclaration ne sont pas un problème de physique... (et bien qu'en en ayant tous les jours, j'airai plutôt dans la partie info si vraiment je ne trouvais pas le(s) problèmes).

  5. #4
    tabitni

    Re : probleme de programmation

    Bonjour,

    j'utilise un langage de programation de fortran mais le probleme que je veux determiner la structure des metaux de 3 D , je veux afficher le nombre des atome pour chaque structure meme si en fesant la periodicité de reseaux . cad si on declare un table qui porte le nombre des atomes avec les positions de chaque atome .je veux afficher les nombres des atomes et aussi la position de chaque atome avec la periodicité de mon systeme. aproposde programme j'arrive pas de faire l'affichage complete de ma stucture .
    Merci

  6. #5
    tabitni

    Re : probleme de programmation

    Bonjour ,

    j'ai pas de probleme de declaration de mon systeme mais j'arrive pas d'obtenir ce que je suis entrain de programmer.

    Merci

  7. A voir en vidéo sur Futura
  8. #6
    Coincoin

    Re : probleme de programmation

    Si tu stockes tes positions d'atomes en une longue liste, tu vas effectivement avoir du mal à retrouver les plus proches voisins de manière optimale. Il existe des manières complexes de le faire, mais ça peut devenir assez compliqué pour pas grand chose.
    Une autre manière de faire serait de considérer une grille sur laquelle se trouve tes atomes. Il suffit ensuite d'enregistrer pour chaque noeud de la grille quel atome s'y trouve. Ça demande un peu plus de mémoire mais trouver les voisins est trivial. Par contre, ce n'est pas envisageable si tu t'intéresses aux positions de tes atomes (car tu limites ta résolution spatiale au pas de la grille).

    Je pense qu'avant de te lancer dans le programmation (tu parles déjà de structure...), il faudrait que tu réfléchisses calmement à ce que tu veux et à la façon dont tu vas le mettre en oeuvre.
    Encore une victoire de Canard !

  9. Publicité
  10. #7
    tabitni

    Re : probleme de programmation

    Bonjour,
    Merci beaucoup pour l'explication que vous me donnne ,mais j'ai pas compris qui que vous voulez dire apropos de grille , vous pouvez m'expliquer la considération d'une grille sur laquelle se trouve tes atomes.
    Merci

  11. #8
    tabitni

    Re : probleme de programmation

    Bonjour,

    merci j'ai bien compris l explication de grille .

  12. #9
    obi76

    Re : probleme de programmation

    la recherche des lpus proches voisins c'est marrant c'est une des plus grosses parties de mon mémoire

    Ben tu as 2 solutions :

    si les atomes sont en contact (et je présume que c'est le cas), tu classe toutes les abscisses des atomes, et pour chaque atom tu regarde les N à droite de la liste (jusqu'à ce que la distance soit supérieure à la somme des rayons) et hop.
    Problème : c'est du N^3/2
    Avantage : ça prend pas de place

    Sinon la technique de la grille (ou des listes chainées si t'es en f90) ça marche très bien et très vite.

  13. #10
    Coincoin

    Re : probleme de programmation

    Le problème, c'est qu'il est en 3D, pas en 1D.
    La méthode la plus simple est de calculer pour chaque atome la distance de tous les autres et de trier. C'est très lourd, mais ça reste simple...
    Encore une victoire de Canard !

  14. #11
    obi76

    Re : probleme de programmation

    en 3D ça marche aussi, tu les classe sur un seul axe et tu balaye sur les 2 autres.
    N^3/2 c'est en 2D, en 3D ça donne du N^5/3 (et je pense même que tu peux passer en N^3/2 en 3D en faisant 2 classements).

  15. #12
    le poisson

    Re : probleme de programmation

    Salut,

    bien que j'arrive apres la bataille, j'ai deux remarques.
    1- on fait de la physique et comment determine-t-on une structure quand on est physicien ? Ben on calcule un facteur de structure, c'est bete mais quand meme la base !
    2- pour calculer les plus proches voisins, coincoin a raison mais on peut ameliorer la methode. Il suffit de construire une grille sous-jacente : c'est a dire decouper la boite de simulation en petit cube. Chaque atome etant dans un petit cube, on a qu'a boucler sur les cubes voisins de celui de l'atome central pour trouver l'atome le plus proche. Ca permet de passer d'une methode d'ordre N2 a une methode d'ordre N. C'est super classique comme methode.

  16. Publicité
  17. #13
    obi76

    Re : probleme de programmation

    C'est super classique mais c'est ce que j'ai dis plus haut, ça dépend.

    il y a 2 méthodes chacune avec ses avantages. Ici, si les voisins bougent pas c'est sur que la grille c'est bien. on est en N, certes avec beaucoup de mémoire nécessaire mais en N quand même.

    S'il faut détecter les kNN ou alors que les atomes bougent, la méthode de la grille est loins d'être optimale puisqu'elle donne en kNN des particules qui sont beaucoup trop loin pour être en interaction directe avec celle qui nous intéresse.

    Mais dans ce cas effectivement une grille serai sûrement plus adaptée (voire même en faisant des décompositions spatiales en 4 à chaque fois (ou en 8 en 3D), ce qui diminue énormément la mémoire nécessaire, reste en N mais pas super simple à mettre en oeuvre.

  18. #14
    tabitni

    Re : probleme de programmation

    Bonjour,

    j'ai deja calculé la distance entre les atomes de ma structure , mais le probleme que j'ai une structure de cube centre donc pour déterminer les prochses voisins de chaque atome dans sommet et l'autre au centre tu vas trouver que l'atome de sommet prend des proches voisin different que l'atome de centre .
    comme ca on a le probleme parceque ,on a obligé de trouver que chaque atome prend meme prochose voisin des autres atomes ,sinon je dois declarer deux tableau un pour les sommets et l'autre pour les centres , apropos la methode ( 3D ça donne du N^5/3 ) j'ai rien compris N^5/3.

  19. #15
    obi76

    Re : probleme de programmation et recherche de voisins

    Ben t'as beaucoup plus simple si c'est cubique et régulier.

    Tu numérote tes atomes, les plus proches voisins ça va être index, index+1, index-1, index+NX-1, index+NX+1 etc etc...

  20. #16
    tabitni

    Re : probleme de programmation et recherche de voisins

    je ai deja fait meme travail (index+1, index-1, index+NX-1, index+NX+1 )mais par exemple si on a une structure rutile comment determiner les proches voisins ,on a des atomes au sommet et un atome au centre .

  21. #17
    obi76

    Re : Probleme de programmation et recherche de voisins

    Tu trouve un système de numérotation qui te permet de les trouver directement.
    Si tu fais des coupes horizontales de ton domaine, sur chaque plan tes atomes seront disposés en carré (donc numérotation facile)
    De là tu peux trouver une technique toujours avec les index qui te permettrai de trouver les atomes au sommet directement

  22. #18
    le poisson

    Re : probleme de programmation

    Salut,

    juste pour compléter ce que tu dis.
    Certes la grille n'est pas optimale quand les atomes bougent. C'est pour cela qu'en MD on utilise plus souvent des listes de Verlet que des grilles. Sauf qu'une grille ca peut-etre utile pour que la remise a jour de ta liste soit en N et non en N2. Et puis il y a un autre cas ou on utilise des grilles : la parallelisation par domaine (dans des grands, tres grands systemes).

    Enfin tout ca pour dire qu'on est d'accord finalement !!!!

  23. Publicité
  24. #19
    tabitni

    Re : Probleme de programmation et recherche de voisins

    Salut

    j'ai un autre probleme au niveau de programmation . pour declarer un tableau qui porte les nombres des atomes cad tab(l.l.l) parceque je travail sur les structures de tois dimension ,le probleme que j'arrives pas de trouver le nombre d'atomes de mon systeme quant je initialise la taille de systeme par expemple tab(2.2.2).

    Merci

Sur le même thème :

Discussions similaires

  1. recherche d'aide programmation language C
    Par vincent29100 dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 31/03/2008, 15h54
  2. Recherche logiciel de programmation orienté objet
    Par Bretzel dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 27/03/2008, 18h10
  3. Quand les chevreuils copient leurs voisins
    Par RSSBot dans le forum Commentez les actus, dossiers et définitions
    Réponses: 2
    Dernier message: 21/05/2006, 17h02
  4. Utilisez les connexions sans fil à Internet de vos voisins !
    Par RSSBot dans le forum Commentez les actus, dossiers et définitions
    Réponses: 1
    Dernier message: 11/05/2006, 11h37
  5. Recherche logiciel de programmation
    Par Grunk dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 05/11/2005, 16h24