Interpolate values triangular prism mesh on unstructured tetrahedral mesh

I am trying to interpolate the values of a fine structured triangular prism (=wedge) mesh on a coarser unstructured tetrahedral mesh. For both meshes, I have the x,y,z coordinates of the cell center, so in principle it is just a question of finding the x nearest neighbors of the coarse mesh and assign a weight average of the values of these points to the tetrahedron of the coarse mesh. I actually thought this would be possible with the interp3 function, but it gives me an error message stating that my values are not monotonously increasing. Any clue on how I can efficiently to this interpolation job? Best regards and thanks in advance for your help. Sarah

 Réponse acceptée

interp3 is not designed to solve an interpolation on a scattered set. It REQUIRES a regular, rectangular mesh. If you lack that, then it won't work. Anyway, just finding the nearest set of k neighbors is a bad way to do interpolation, since it need not yield a continuous prediction.
You need to use tools like scatteredInterpolant, or if you already have the tessellated mesh, then something like tsearchn.

3 commentaires

Dear Mr. D'Errico, thanks for your swift answer. What exactly do you mean with 'if you already have a tessellated mesh'? For both meshes, I do have a matrix containing the coordinates of the mesh nodes (x,y,z as columns) and a matrix containing the set of nodes building each cell (6 columns for the wedge mesh, 4 columns for the tetraeder mesh). But from the documentation I do not understand how I should use tsearchn in that case... Best regards, Sarah
In three dimensions, a tessellated mesh would be that 4 column array of indices for the tetrahedral mesh. Each row of that array indicates one tetrahedron of the mesh. It is the array TRI in the call to tsearchn. Likewise, the existing mesh node coordinates will be the array X in your call to tsearchn.
Hi John, I tested your first option with scatteredInterpolant and it seems to work and even fairly fast... F = scatteredInterpolant(MeshHYD.cellmid(:,1),MeshHYD.cellmid(:,2),MeshHYD.cellmid(:,3),MeshHYD.WC(:,ii)); MeshBERT.WC(:,ii) = F(MeshBERT.cellmid(:,1),MeshBERT.cellmid(:,2),MeshBERT.cellmid(:,3)); I'll see whether I can make the other option work too. Thanks for your help!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Descriptive Statistics dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by