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

Fortran Discussion :

projet étudiant :maillage non régulier


Sujet :

Fortran

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut projet étudiant :maillage non régulier
    Bonjour,
    je suis en école d'ingénieur et je réalise un projet de résolution d'equations au dérivées partielles en codant sur du fortran.(résolution par différences finies et éléments finis)

    Mon prob est le suivant, je dois réaliser un maillage non régulier de ma variable d'espace.Pour l'instant mon prog tourne avec un maillage regulier c'est a dire:
    deltax=epaisseur/nn ,nn etant le nombre de points souhaité.
    avec x(i+1)=x(i)+deltax pour I=1,NN

    je ne vois pas trop comment coder un maillage non régulier, je penses qu'une fonction pourrait m'aider mais je ne vois pas trop comment la placer.
    Je souhaite avoir plus de points aux extrémités qu'au centre.(mon sujet etant la simulation d'un transport d'humidité en milieu poreux lors d'un echange convectif, si cela vous parle bien sur ^^)

    J'espère que vous avez compris mon besoin.
    Merci d'avance.
    Nath

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    un maillage non régulier de ma variable d'espace
    Un espace à combien de dimensions?
    Le temps intervient-il explicitement?
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    mon projet est en 1D et le temps intervient avec un schéma semi implicite.
    Et les conditions aux limites traitées explicitement.
    Merci d'avance

  4. #4
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    alors si tu es en 1D et que tu veux faire un maillage non régulier, la variable de temps n'importe peu (pour l'instant) comme tu dit, il te faut plus de mailles aux bords...

    alors, imaginons ton maillage comme régulier, tu as donc une fonction déguisée qui te donne pour NN point sur un segment [a,b]: x_i = a+(a-b)/NN*i
    à peu de chose près... en gros il y a une fonction identité qui se cache derrière, il faut changer cela,
    un exemple simple: on définit des morceaux.
    -> on se donne un delta (voir à lui donner une bonne valeur)
    et on dit que l'on veut N points sur les segments [a,a+delta] et [b-delta,b] et M points sur le segment [a+delta,b-delta] dans ce cas, il faut veiller à ce qu'un point soit sur a+delta et b-delta.
    après tu peu utiliser des fonction de répartition plus complexes!
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre réponse

  6. #6
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Bonjour,
    Je suis une doctorante en mécanique, et je suis entrain de programmer mon code sur fortran. Je veut utilisé un maillage non régulier, c'est pour cela c'est plus facile d'exporter le maillage à l'aide du mailleur Gambit. Est ce quelqu'un peut m'informer comment exporter le maillage du gambit (en format ASCII).
    Merci beaucoup..

  7. #7
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    ce que tu veux c'est "importer" un maillage gambit issu de gambit dans ton code???
    gambit doit te sortir un format ASCII (texte) il suffit alors de faire lire ce fichier par ton code fortran
    typiquement: les noeuds, les mailles, des propriétés matériaux (eventuellement)

    mon conseil: à l'aide de gambit, génère un tout petit maillage genre moins de 20 mailles et fait une routine de lecture et une routine de réécriture: ainsi tu poeux facilement comparer: si ce n'est pas pareil: ton code aura mal lu...
    l'idéal est un petit maillage mais contenant quand même les subtilités éventuelles de ton problème...

    tu travaillera avec des mailles linéaires ou quadratique? 2D? 3D? axi?... as-tu un exemple de fichier ascii de gambit (pas trop gros si possible) histoire de voir comment c'est rangé dans ce genre de fichier...
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

  8. #8
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Merci pour votre réponse,
    Oui c'est ce que cherche à réaliser, mon problème est en 3D, coordonnées cylindriques, je vais vous donner un exemple de fichier ASCII de gambit contenant un petit nombre de nœuds( je sais pas est ce que j'ai réussi à exporter correctement ce fichier, en effet j'ai mailler dans gambit et je l'ai exporter puis j'ai lit ce maillage par fluent (.msh) et enfin je l'ai convertit en fichier ASCII).
    merci.
    Fichiers attachés Fichiers attachés

  9. #9
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    alors, malheureusement pour nous, ce fichier ascii ne contient que la définition des noeuds... pour lire ce fichier, j'ai fait (rapidement) ceci:

    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
     
    program lit
    implicit none
    real(kind=8),dimension(:,:),allocatable ::node
    integer,dimension(:),allocatable :: relatif
    integer i,Nligne,ios
     
    open(unit=10,file="mailage.txt",status="old",position="rewind")
    i=0
    !on saute la première ligne
    read(10,*)
    do while(ios==0)
      read(unit=10,fmt=*,iostat=ios)
      if (ios==0) i=i+1
    end do
    !on connait maintenant le nombre de noeud
    Nligne=i
    !on se repositionne sur la seconde ligne
    rewind(10)
    read(10,*)
    !on alloue notre tableau de noeud:
    ! (Nombre de noeuds,Dimenssion)
    allocate( node(Nligne,3))
    allocate( relatif(Nligne) )
    !on le remplit:
    do i=1,Nligne
      read(10,*)relatif(i),node(i,1),node(i,2),node(i,3)
    end do
    !on a plus besoin du fichier
    close(10)
    !============================================
    ! à ce moment, node contient les coordonnées des noeuds
    ! et relatif contient leur numéro.
    ! dans l'exemple, relatif(i)=i mais ce n'est pas toujours
    ! le cas, c'est la différence entre la numérotation absolue
    ! et relative... ce tableau permet la conversion!
    !===============================================
    !on vérifie qu'on a bien lu:
    do i=1,Nligne
      write(*,*)relatif(i),node(i,1),node(i,2),node(i,3)
    end do
     
    end program lit
    cela permet de lire correctement les noeuds, même si il ne sont pas rangé dans l'ordre ou que certains "manque" grâce à une numérotation relative.

    cependnant tu dois trouvé comment exporter les données de maille.
    généralement les mailles sont définie par les numéro des noeuds qui les composent... exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    maille:
    ...
    8 5 8 98
    ...
    on définit là la maille numéro 8 composée des noeuds 5 8 et 98 c'est donc un triangle. le sens de rotation des noeuds va avoir son importance pour le sens de la normale... etc... mais pitetre que gambit a un format particulier... qui sait...
    bonne chance!
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

  10. #10
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup pour votre aide.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Physique et ingenierie
    Inscrit en
    Janvier 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Physique et ingenierie
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2017
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Maillage irrégulier
    Bonjour genteur slayer et tout le monde,merci pour ces informations au niveau le code,pour moi, je travail aussi sur la programmation en fortran et j'aimerais bien comme un code de base pour pour faire un maillage d'une géometrie simple et horizontale munis d'un bloc à l'intérieur.
    j'éspére que vous avez compris mon probléme.
    Nom : Capture.PNG
Affichages : 365
Taille : 42,3 Ko

Discussions similaires

  1. Réponses: 21
    Dernier message: 25/01/2008, 17h13
  2. Isovaleurs sur un maillage non structuré
    Par Takeiteasy dans le forum MATLAB
    Réponses: 8
    Dernier message: 09/09/2007, 16h22
  3. Réponses: 1
    Dernier message: 24/11/2006, 16h15
  4. Projet de mod - non rémunéré !
    Par bs_seb dans le forum Projets
    Réponses: 2
    Dernier message: 04/08/2005, 22h21

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