get_des_pets

Christophe Geuzaine Christophe.Geuzaine at ulg.ac.be
Fri Feb 4 14:10:17 CET 2000


André Nicolet wrote:
> 
> Christophe Geuzaine wrote:
> 
> >
> > Si tu veux construire 2 systemes lineaires separes (par exemple pour du
> > couplage faible), la tu dois definir 2 formulations separees.
> 
> oui. Est-ce qu'on peut demander de resoudre successivement plusieurs
> formulations, les faire communiquer et boucler la dessus ? Comment les
> formulations se voient-elles entre elles ?
> 

Oui. Elles communiquent par l'intermediaire des espaces fonctionnels.
Par exemple, pour du magneto-thermique, on ecrirait qqch comme :

Formulation{
 { Name Mag ; Type FemEquation ;
    Quantity {
      { Name a  ; Type Local ; NameOfSpace Mag ; }
      { Name T  ; Type Local ; NameOfSpace The ; }
    }
    Equation {
      Galerkin { [ nu[{T}] * Dof{d a} , {d a} ] }
    }
 }
 { Name The ; Type FemEquation ;
    Quantity {
      { Name a  ; Type Local ; NameOfSpace Mag ; }
      { Name T  ; Type Local ; NameOfSpace The ; }
    }
    Equation {
      Galerkin { [ k[{T}] * Dof{d T} , {d T} ] }
      Galerkin { [ -0.5 * sigma[{T}]* Dt[{a}]^2, {T} ] }
    }
  }
}

et ce sont les 'Dof' qui devident ce qui doit etre considere comme
inconnu pour l'equation consideree.


> >
> > Non, non, il ne faut rien faire soi-meme. Ce que je dis, c'est que, pour
> > l'algo de Lanczos de base, tel qu'il est programme, le code, en interne,
> > traite les nombres complexes de maniere decouplee. Pour d'autres
> > algorithmes (e.g. si on utilise les solveurs de PETSc, les complexes
> > sont traites commes des vrais nombres complexes). Ma remarque avait pour
> > but de signaler que, meme si la matrice est complexe, mais qu'elle est
> > hermitienne, la maniere interne dont les complexes sont traites dans le
> > cas de l'algo de Lanczos permettrait de resoudre le probleme.
> 
> Ok mais c'est ton 'beaucoup plus emmerdant' qui m'a fait peur. En fait il
> suffit de chipoter dans 'Lanczos.c' !
> 
> A ce propos, c'est pas hyperfacile à comprendre ce fichier :
> 'struct DofData * DofData_P' contient la matrice je suppose ? Sous quel
> format ? Je l'ai pas trouvé dans Data_DofData.h, c'est défini où ?
> Le préfixe 'g' dans 'gProdMatrixVector' par exemple, c'est une librairie ?
> C'est du BLAS ou c'est défini par vous ?
> 

DofData contient tout ce qui est relatif a un systeme a resoudre, et en
particulier la (les) matrice(s). Tous les objets d'algebre lineaire dans
GetDP sont encapsules pour permettre l'utilisation de differentes
librairies de routines specialisees. D'ou l'introduction des types gXXX
et des routines gXXX. Ces types et ces routines sont alors
particularisees a la compilation : jette un oeil sur LinAlg_SPARSKIT et
sur LinAlg_PETSC, qui sont les 2 interfaces vers les 2 solveurs qu'on
peut utiliser pour l'instant. 

Note : comme le 'SPARSKIT' n'est pas vraiment le Sparskit pur et dur,
mais une collection de routines du Sparskit original avec bcp de
routines faites maison pour 'piloter' tout ca en C, il est directement
inclus dans les sources de GetDP dans le repertoire Sparskit. (Je
prefere ne pas relire cette phrase ;-).

En resume : le format des matrices, des vecteurs, etc., ne doit jamais
transparaitre dans les routines de GetDP, qui ne peuvent acceder a ces
objets que par l'intermediaire des fonctions definies dans LinAlg_XXX.



-- 
Christophe Geuzaine

Tel: +32-(0)4-366.37.10    mailto:Christophe.Geuzaine at ulg.ac.be
Fax: +32-(0)4-366.29.10    http://www.montefiore.ulg.ac.be/~geuzaine/