Click here to load reader

Un exemple de matrice distribuée pour PETSc - Code · PDF filede donnée PARTITION. Il y a plusieurs façons possibles de partitionner les mailles : c'est le mot-clé PARALLELISME

  • View
    213

  • Download
    0

Embed Size (px)

Text of Un exemple de matrice distribuée pour PETSc - Code · PDF filede donnée...

  • Code_Aster VersiondefaultTitre : Un exemple de matrice distribue pour PETSc Date : 12/06/2014 Page : 1/14Responsable : BREUX Natacha Cl : D4.06.40 Rvision :

    feaf011a1df8

    Un exemple de matrice distribue pour PETSc

    Rsum :

    Pour utiliser les solveurs de la librairie PETSc en parallle, on doit fournir une matrice assemble distribuesur les processeurs disponibles selon un modle de distribution impos par PETSc (rpartition par groupe delignes contigues). Le modle de distribution des donnes Code_Aster repose sur une rpartition des maillesentre les processeurs. Il conduit une matrice assemble qui ne suit pas le modle de distribution PETSc. Onexplique ici en suivant un exemple physique simple les diffrentes numrotations des degrs de libert :numrotation locale et globale pour Code_Aster puis numrotation PETSc.

    Manuel de dveloppement Fascicule d4.06: Structures lies aux lments finis

    Document diffus sous licence GNU FDL (http://www.gnu.org/copyleft/fdl.html)

  • Code_Aster VersiondefaultTitre : Un exemple de matrice distribue pour PETSc Date : 12/06/2014 Page : 2/14Responsable : BREUX Natacha Cl : D4.06.40 Rvision :

    feaf011a1df8

    1 IntroductionLe mot cl SOLVEUR 'MATR_DISTRIBUEE' indique si la matrice du problme linaire rsoudre estcomplte sur tous les processeurs (MATR_DISTRIBUEE='NON'), ou bien rpartie sur ces processeurs(MATR_DISTRIBUEE='OUI'). Dans les deux cas, le vecteur second membre est complet sur tous lesprocesseurs.

    La rpartition des mailles par processeur est dfinie dans le modle. Elle est dcrite dans la structurede donne PARTITION. Il y a plusieurs faons possibles de partitionner les mailles : c'est le mot-clPARALLELISME qui slectionne le type de distribution.

    Chaque processeur assemble les contributions lmentaires des degrs de libert qu'il possde, c'est dire des degrs de libert qui appartiennent des mailles qui lui ont t affectes dans la partition.Comme on a partitionn des mailles (et non des degrs de libert), un degr de libert peut trepossd par plusieurs processeurs.

    Chaque processeur assemble donc un bloc de la matrice totale. Chaque degr de libert possde unindice local (sur ce processeur) et un indice global (dans le modle global). Lorsqu'on utilise un solveur PETSc, on lui passe un objet de type Mat, qui est une matrice distribueavec le modle de distribution attendu par PETSc. Cette distribution est une distribution par blocs delignes de matrice. On effectue donc une nouvelle rpartition des valeurs de la matrice entre lesprocesseurs disponibles pour le calcul de faon construire une matrice rpartie de type PETSc.Chaque degr de libert possde donc en plus de son indice local et de son indice globale (dans lemodle Aster) un indice global dans la matrice PETSc.

    L'objet de cette documentation est d'expliciter ces diffrentes numrotations partir d'un exemplesimple. Elle complte la documentation [D4.01.03].

    2 Problme modleOn considre un problme 2D dlasticit statique, distribu sur deux processeurs.

    2.1 GomtrieLe domaine lastique est un carr de points extrmes (-50,50) et (50,50). On maille ce domaine en 4quadrangles.

    (a) Gomtrie : on impose une pression uniformesur la frontire N et une condition d'encastrement

    sur la frontire D

    (b) Maillage : les noms des sommets (N1 N9) etdes mailles (M1 M12) sont conformes

    Code_Aster. Il y a 8 mailles 1D et 4 mailles 2D.Les mailles bleues M7, M8 et M10 sont affectesau processeur 0. Les mailles rouges M9, M11 et

    Manuel de dveloppement Fascicule d4.06: Structures lies aux lments finis

    Document diffus sous licence GNU FDL (http://www.gnu.org/copyleft/fdl.html)

  • Code_Aster VersiondefaultTitre : Un exemple de matrice distribue pour PETSc Date : 12/06/2014 Page : 3/14Responsable : BREUX Natacha Cl : D4.06.40 Rvision :

    feaf011a1df8

    M12 sont affectes au processeur 1 2.2 Proprits du matriau

    E=1,0 1011N /m2 =0,3

    2.3 Modlisation 2DLe modle est affect sur les 4 mailles quadrangulaires (groupe de mailles 2D all) et sur les 2segments qui constituent le bord suprieur du domaine (groupe de mailles 1D up).

    MODEL=AFFE_MODELE(MAILLAGE=MA, AFFE=_F(GROUP_MA=('all','up',), PHENOMENE='MECANIQUE', MODELISATION='C_PLAN',),);

    2.4 Conditions limites et chargementOn exerce une pression rpartie sur le bord suprieur du carr, dextrmits (-50,50) (50,50) :

    PRESSION=AFFE_CHAR_MECA(MODELE=MODEL, PRES_REP=_F(GROUP_MA='up', PRES=1000000000,),);

    La base du carr est encastre : on applique la condition DX=0, DY=0 sur le segment dextrmits(50,50) (50,50) .

    Cet encastrement est appliqu de deux faons : modlisation A : avec AFFE_CHAR_CINE

    ENCASTR=AFFE_CHAR_CINE(MODELE=MODEL, MECA_IMPO=_F(GROUP_NO='bottom', DX=0, DY=0,),);

    modlisation B : avec AFFE_CHAR_MECAENCASTR=AFFE_CHAR_MECA(MODELE=MODEL, DDL_IMPO=_F(GROUP_NO='bottom', DX=0, DY=0,),);

    2.5 Distribution du problmeOn dfinit une partition du modle :

    PART=DEFI_PARTITION(NB_PART=2, MODELE=MODEL,);

    MODEL=MODI_MODELE(reuse=MODEL, MODELE=MODEL, PARTITION=_F(PARALLELISME='SOUS_DOMAINE', PARTITION=PART,),);

    puis on prcise au solveur que la matrice est distribue :

    Manuel de dveloppement Fascicule d4.06: Structures lies aux lments finis

    Document diffus sous licence GNU FDL (http://www.gnu.org/copyleft/fdl.html)

  • Code_Aster VersiondefaultTitre : Un exemple de matrice distribue pour PETSc Date : 12/06/2014 Page : 4/14Responsable : BREUX Natacha Cl : D4.06.40 Rvision :

    feaf011a1df8

    MECA_STATIQUE(MODELE=MODEL, CHAM_MATER=AFMAT, EXCIT=(_F(CHARGE=PRESSION,), _F(CHARGE=ENCASTR,),), SOLVEUR=_F(METHODE='PETSC', MATR_DISTRIBUEE='OUI', ALGORITHME='GMRES',),);

    Le calcul est excut sur 2 processeurs.

    3 Gnralits sur le systme linaireOn veut rsoudre un problme d'lasticit linaire. On rappelle sa formulation variationnelle auparagraphe 3.1.

    Le problme discret associ au problme continu est diffrent selon la mthode utilise pour appliquerla condition limite de Dirichlet sur la base du domaine. On le dcrira ultrieurement pour chaquemodlisation. On regroupe dans cette section la partie commune aux modlisations A et B.

    3.1 Problme continu

    Les contraintes vrifient l'quation =0 dans le domaine lastique. Le dplacement u estfix sur la frontire infrieure du domaine D par la condition de Dirichlet u=u0 . Ici, u0=0 . Sur lafrontire suprieure N , on applique le chargement de Neumann n= p , pour une pression puniforme.

    On crit la formulation variationnelle du problme. On dfinit : l'espace affine V={v ,v(H 1())2,v=u0 surD } , l'espace vectoriel associ (dplacements cinmatiquement admissibles)

    V 0={v ,v(H 1())2,v=0 surD }

    On cherche uV , tel que vV 0 , a (u ,v )=( f , v ) , o a est la forme bilinaire de l'lasticitlinaire et f correspond au chargement pression sur N .

    3.2 Numrotation des quations de la matrice Code_Aster globaleLa description de la numrotation de la matrice (globale et locale) est faite par les objets duNUME_DDL. Le NUME_EQUA contient les informations globales. On rappelle rapidement le rle deschamps dont on va afficher la valeur et on renvoie [D4.06.07] pour la description de rfrence.

    .NUME.REFN est un tableau de noms, contenant le nom du maillage, de la grandeur discrtiseet du solveur. Ici REFN contient :

    MA DEPL_R GMRES

    .NUME.NEQU est le nombre total d'quations N .NUME.DELG est un tableau de taille N , qui contient un marqueur des degrs de libert de

    Lagrange avec la convention :

    DELG (i)={ 0 : ddl physique1 : Lagrange 12 : Lagrange 2

    .NUME.DEEQ est un tableau entier de taille 2N Lquation ieq est dcrite par un coupledentiers (ino,icmp) en positions (ieq-1) 2+1 et ( ieq-1) 2+2 du tableau : ino>0 est le numro du nud du maillage support du degr de libert ieq.

    Manuel de dveloppement Fascicule d4.06: Structures lies aux lments finis

    Document diffus sous licence GNU FDL (http://www.gnu.org/copyleft/fdl.html)

  • Code_Aster VersiondefaultTitre : Un exemple de matrice distribue pour PETSc Date : 12/06/2014 Page : 5/14Responsable : BREUX Natacha Cl : D4.06.40 Rvision :

    feaf011a1df8

    Si icmp>0, le degr de libert correspond la composante icmp de la grandeur sous-jacente.

    Si icmp0.

    ino=0 indique que lquation ieq est lquation de dualisation dune relation linaire. Dansce cas, icmp est forcment nul.

    .NUME.PRNO est une collection de taille 1 + le nombre de charges dualises dans le modle.On accde ces objets par le pointeur de noms .LILI. Le premier objet de la collectioncontient les degrs de libert associs au maillage (par convention .LILI(1)=&MAILLA) etles objets suivants les degrs de libert tardifs crs par dualisation. Pour chaque nud, ontrouve le numro dquation de la premire composante associe ce nud, le nombre de composantes portes par ce nud un vecteur dentiers cods prcisant quelles sont les composantes de la grandeur

    prsentes sur ce nud (voir D4.06.05 pour le systme de codage)

    Remarque : Attention, il y a un niveau supplmentaire dindirection (vecteur .NUEQ ) qui permet de trouver laposition des valeurs des termes de la matrice dans le tableau .VALE . On omet volontairementici ce niveau car il n'intervient pas dans l'exempl

Search related