Fonctions
Christophe Geuzaine
Christophe.Geuzaine at ulg.ac.be
Wed Jul 19 10:19:19 CEST 2000
Francois Henrotte wrote:
>
> > > PostProcessing {
> > > { Name POST ; NameOfFormulation A ; NameOfSystem SYSTEMA ;
> > > { Name I ; Value { Term { [ {I} ] ; In DOMAIN_CND ; } } }
> > > { Name U ; Value { Term { [ {U} ] ; In DOMAIN_CND ; } } }
> > > { Name Intj ; Type Cumulative ;
> > > Value { Integral { [CompZ[-sigma[{T}]*(Dt[{a}]+{dV})] ] ;
> > > In DOMAIN_CND ; Integration Int1 ; Jacobian JacVol ; }
> > > } }
>
> > Je pense que ton probleme vient du fait que, dans le cas d'une grandeur
> > "cumulative" (il faut vraiment qu'on change cette denomonation ---
> > suggestions bienvenues ;-),
>
> Le probleme n'est pas tant le terme `cumulative' qui decrit bien ce qui
> se passe
> que le fait que le resultat de l'integrale se trouve sur la forme d'une
> carte
> avec une valeur constante la ou un scalaire semblerait bien plus
> indique.
Ben oui, c'est un scalaire. ??
>
> > on fait la somme des integrales
> > elementaires sur chaque element du domaine specifie dans le
> > PostProcessing (et pas dans la PostOperation).
>
> ???
> Y a-t-il une bonne raison pour cela que je ne verrais point ???
> Il me semble (de l'exterieur, j'en conviens)
> que ce ne doit pas etre bien difficile de faire l'integration
> sur la `Region' indiquee plutot que sur le `Support'.
> L'information est certainement disponible et le support doit uniquement
> servir de filtre sur les elements.
> Une carte `NonCumulative', serait elle egalement faite sur le `Support'
> ?
Je ne sais plus tres bien pq j'ai programme ca comme ca. De toute facon,
il faudrait qu'on retravaille les integrations en post-pro...
>
> > Donc, la valeur de 'Intj'
> > sera *toujours* la meme, que tu l'affiches dans PRIMARY ou dans
> > SECONDARY... Autrement dit, ce que tu regardes dans 'i1.pos', ce n'est
> > pas le courant dans PRIMARY, mais la somme des courants dans DOMAIN_CND
> > (== PRIMARY + SECONDARY ?).
>
> D'accord, il y avait cela mais il y a plus grave.
> Il y a aussi un probleme de Jacobien (le cas que j'etudie est axi).
> Je m'explique.
> L'equation de controle du courant est integree sur
> une section du conducteur, cad une SURFACE.
> Il se fait qu'en 2D cette surface ressemble etrangement
> a une partie du domaine d'etude, mais c'est une illusion.
> La section est une SURFACE, le domaine d'etude est un VOLUME.
> En axi, il doit y avoir un facteur `r' de difference entre les deux
> Jacobiens (de memoire).
> J'ai jete un coup d'oeil dans le code. Je trouve :
>
> case JACOBIAN_SUR :
>
> switch (Type_Element) {
> case POINT :
> *Type_Dimension = _1D ; return (void *)JacobianVol0D ;
> case LINE : case LINE_2 :
> *Type_Dimension = _2D ; return (void *);
> case TRIANGLE : case TRIANGLE_2 :
> case QUADRANGLE : case QUADRANGLE_2 :
> *Type_Dimension = _3D ; return (void *)JacobianSur3D ;
> default:
> }
>
> On voit qu'il est impossible d'evaluer un jacobien de surface
> pour un element de forme TRIANGLE ou QUADRANGLE en 2D.
> L'erreur peut etre decrite ainsi:
> "Non, tous les elemens de surface en 2D ne sont pas
> associes a des element de type LINE !
> Les sections de conducteurs sont un contrexemple."
>
> Tu vas me dire, ca c'est du travail pour toi et tu auras raison.
> Pour faire avancer le schmilblick, peux-tu me dire:
> . Comment disposer de la fonction `r' ou `x' dans les fonctions.
> J'ai essaye $X, et ai obtenu des zeros partout.
> . Dans quel fichier je puis trouver les lignes de code qui
> effectuent le changement de coordonnees de l'element de reference
> vers l'element reel, tant lors de l'assemblage des matrices
> elementaires
> que lors de l'evaluation des expressions integrees lors du
> post-processing.
> . Je dois avant tout verifie que mes calculs sont corrects (tant pis si
> le post
> est errone pour l'instant) et donc etre assure que lors du changement
> de coordonne d'une grandeur de type `Form1P', la composante 33 du
> jacobien
> est bien prise en consideration.
> Si cela est vrai, seul demeure un probleme pour l'evaluation explicite
> du courant dans le post-processing.
> . Tu m'as jadis dit que vous utilisiez couramment la transformation axi
> avec le carre du rayon (la mienne). Je ne trouve pas dans le code
> le jacobien de Surface correspondant a cette transformation. Oubli ?
>
> Tu peux toujours proposer a Dave de refaire quelques cas-test axi pour
> tirer
> tout ce
OK, tu as oublie de specifier le jacobien dans le PostProcessing :
{ Name I ; Value { Term { [ {I} ] ; In DOMAIN_CND ; } } }
doit etre remplace par
{ Name I ; Value { Term { [ {I} ] ; In DOMAIN_CND ; Jacobian JacVol ; }
} }
Pour le moment, en post, on considere tjs un jacobien standard. C'est en
effet dangereux qu'il n'y ait pas de warning...
Dis-moi si ca marche,
--
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.geuz.org