CFD Online Discussion Forums

CFD Online Discussion Forums (
-   OpenFOAM Programming & Development (
-   -   Mapping values from 2D mesh to 3D mesh boundary during runtime (

benk May 3, 2012 13:51

Mapping values from 2D mesh to 3D mesh boundary during runtime
Hi all, I'm making a model that has 2 meshes: a 2D mesh and a 3D mesh. The 3D mesh is identical to the 2D mesh in all dimensions except that it extends into the z-direction.

During runtime, I need to map values from the 2D mesh onto a boundary of the 3D mesh because they are coupled. The dimensions of the 3D boundary that I'm trying to map onto is exactly the same as the 2D mesh.

What is the easiest/best way of doing this?

Since this is just a 1:1 mapping, I thought that this would be relatively easy by just looping over the boundary values of the 3D mesh, something like this:


label frontWall = mesh3D.boundaryMesh().findPatchID("frontWall");
fixedValueFvPatchScalarField& faceValues = refCast<fixedValueFvPatchScalarField>(Cvalues_3D.boundaryField()[frontWall]);
scalarField& Cvalues_3D_boundary = faceValues; //this selects the boundary values on the 3D mesh

Cvalues_3D_boundary[i] = Cvalues_2D[i]; //where Cvalues_2D are the values on the 2D mesh that I want mapped onto the 3D mesh boundary

The problem that I have with the above code is that the 3D boundary values are sorted in a different order than the 2D values. For example, in the forAll loop i the code above, I've found that Cvalues_3D_boundary[1] should actually be equal to Cvalues_2D[100].

Is there another way to map values between meshes during runtime?

Detian Liu June 13, 2014 02:39

Dear Ben,
I am recently studying about the mesh mapping, I have a simple question, and hope get some help from you. That is how to create 2 different meshes in one case, such as mesh3D and mesh 2D you mentioned before.
Thanks a billion.


All times are GMT -4. The time now is 18:21.