Comment interpoler des données multipoints aux centres cellulaires d'un maillage non structuré?

11

J'ai des ensembles de données de champ multipoint, chaque ensemble de données de point concerne une seule cellule d'un maillage non structuré. Le but est d'interpoler les données au centre de la cellule, directement ou indirectement, de la manière la plus précise.

Si j'utilise l'interpolation pondérée par la distance inverse, dans le cas où la distance entre la source et la cible (centre de la cellule) est très petite, je peux me retrouver avec une exception à virgule flottante.

Pour ce type d'interpolation sur un maillage structuré, une interpolation pondérée en fonction du volume est utilisée. Cela ne se traduit pas directement par une cellule maillée de forme arbitraire.

L'introduction d'une tolérance pour une interpolation IDW pour contourner le SIGFPE n'a de sens que si je n'introduis aucun test qui pourrait rendre l'interpolation inefficace. L'ajout d'un suffisamment petit au dénominateur pour chaque poids est-il une option possible avec l'interpolation IDW? Quelles méthodes d'interpolation adaptées à ce problème connaissez-vous?δ

Information additionnelle:

Pour l'interpolation du maillage aux points, j'utilise une interpolation basée sur les coordonnées barcycentriques . Chaque cellule polyédrique du maillage est décomposée en tétraèdres. Le champ centré sur la cellule est interpolé aux points de cellule à l'aide d'une interpolation IDW . Une recherche est effectuée pour chaque point pour trouver le tétraèdre dans lequel il se trouve, et les valeurs sont interpolées en utilisant l'interpolation barycentrique .

pWPC=1WPC

tmaric
la source
Pouvez-vous être un peu plus précis sur la fonction de pondération que vous utilisez? Il existe plusieurs approches d'interpolation qui utilisent des fonctions de pondération polynomiale qui n'ont pas de singularités aux extrémités.
Pedro
1
Si la fonction à interpoler est lisse, avez-vous pensé à utiliser des fonctions de base radiales pour interpoler globalement à partir du maillage? Vous pouvez construire un prototype rapide en utilisant python et scipy, voir ici: docs.scipy.org/doc/scipy/reference/generated/…
fcruz
La bibliothèque dans laquelle je travaille prend en charge RBF (support compact et global), mais j'ai très peu d'expérience avec cela. Merci pour le conseil .. :)
tmaric
1
Si vous essayez la bibliothèque SciPy RBF, soyez conscient de ce bogue en
n00b
Avez-vous des valeurs de gradient de variable dépendante aux sommets des cellules?
Johntra Volta

Réponses:

7

Des liens vers divers progiciels d'interpolation de données dispersées se trouvent sur ma page Web http://www.mat.univie.ac.at/~neum/stat.html#fit

Le livre
GE Fasshauer, Meshfree Approximation Methods using MATLAB, World Scienti fi c 2007.
présente un état de l'art complet (en date de 2006).

Quelques articles plus récents sur l'interpolation de données dispersées:
http://www.stanford.edu/group/uq/pdfs/journals/jcp_scattered_2010.pdf
http://www.math.auckland.ac.nz/~waldron/Preprints/ Boîte-splines / box-splines.pdf

La méthode à utiliser dépend beaucoup de l'utilisation faite de l'interpolant résultant. Les méthodes de krigeage sont basées sur un modèle stochastique et sont donc bonnes si les données à interpoler sont quelque peu bruyantes. Les fonctions de base radiales sont à privilégier si (implémentées de manière stable) et qu'un résultat visuellement agréable est souhaité (interpolation à faible courbure).

Arnold Neumaier
la source
Professeur Neumaier, des méthodes que vous avez rassemblées dans les liens sur votre site Web et dans votre réponse, avez-vous des recommandations spécifiques pour l'application décrite dans la question?
Geoff Oxberry
Je suppose que j'ai un peu d'apprentissage à faire ... comme toujours, la quantité de choses qui ont besoin d'apprendre croît de façon exponentielle avec le temps, et la quantité de choses que j'arrive à apprendre, au mieux de façon linéaire. :) Merci. Je vais utiliser l'interpolation IDW pour l'implémentation initiale et lire sur l'interpolation des données dispersées (RBF semble être le choix à la mode). :)
tmaric
1
@GeoffOxberry: J'ai collecté les liens au fil du temps, sans avoir essayé les packages. Je ne peux donc pas en recommander un particulier. Mais j'ai ajouté un commentaire sur les recommandations qualitatives.
Arnold Neumaier
3

Ci-dessous, je donnerai un exemple comment interpoler d'un ensemble de points à un autre, sur un maillage de volume fini.

J'ai colocalisé la disposition des variables - les données que je stocke en mémoire représentent des valeurs aux centres cellulaires. Je stocke les variables de champ et leurs gradients. Les gradients sont trouvés à partir des valeurs environnantes résolvant un problème des moindres carrés (avec QR via les réflexions du maître de maison).

Votre arrangement peut différer mais le principe est le même.

ϕf

ϕnb1+ϕnb1rnb1,f=ϕf

ϕnb2+ϕnb2rnb2,f=ϕf

...

ϕnbn+ϕnbnrnbn,f=ϕf

nbrnbn,ff

Ensuite j'écris

ϕf=1n(i=1nϕnbi+i=1n(ϕnbirnbi,f))

Vous avez donc besoin d'un ensemble de valeurs de champ et de dégradés à ces points. Vous devez décider quels points environnants contribueront à votre point interpolé, ainsi que les vecteurs de distance de ces points au point auquel nous interpolons.

Par exemple: si l'on stocke des données représentatives des valeurs aux sommets des cellules, vous utilisez cette équation pour trouver des valeurs au centre de la cellule, etc., tout cela en fonction de votre situation.

Donc, cela est basé sur la série Taylor autour du point. On peut aussi utiliser des dérivées secondes pour dériver une expression plus précise.

John Travolta
la source
ϕf1n
1
J'ai écrit cela dans mon code à la volée. Ici, on suppose seulement que les données varient linéairement dans l'espace, c'est pourquoi seules les premières dérivées de la série de Taylor sont incluses. Il n'y a aucune hypothèse sur le maillage, cela fonctionne pour n'importe quel maillage.
Johntra Volta
1
Cependant, vous pouvez ajouter des poids. Comme dans la reconstruction du gradient des moindres carrés, où nous avons la version pondérée et non pondérée.
Johntra Volta
1n
Vous pouvez me contacter par e-mail (vous pouvez le trouver sur mon profil utilisateur) pour une discussion plus approfondie. Je suis intéressé de voir comment allez-vous résoudre le problème.
Johntra Volta