Re: [DuMux] Output face fluxes in VTU

2022-11-05 Thread Timo Koch
Hi Rafael,

this is not implemented in any convenient way. Probably because it’s not clear 
how to _visualise_ normal face fluxes in a useful way.
Vtk doesn’t support face quantities.

You can write out the skeleton (only the faces of the grid) if you need 
something for debugging or postprocessing.
There is a class “ConformingIntersectionWriter” in 
dumux/io/vtk/intersectionwriter.hh. You can add a face field with “addField”. 
It expect a vector with number of entries equal to the number of faces.

The indexing is gridView.indexSet().subIndex(element, localFacetIndex, 
/*codim=*/1) or gridView.indexSet().index(facet) where facet is a Dune codim<1> 
entity. The local localFacetIndex can be obtained from 
intersection.indexInInside().
Unfortunately there is no direct mapping from sub-control-volume-faces to 
intersections. Because you would compute normal flux in Dumux over 
sub-control-volume-faces you would have to find the intersection.
In your case you could e.g. check the normal vector:



const auto localFacetIndex = [&]{
for (const auto& is : intersections(gridGeometry->gridView(), element))
if (is.centerUnitOuterNormal()*scvf.unitOuterNormal() > 0.9)
return is.indexInInside();
}();

const auto globalFacetIndex = 
gridGeometry->gridView().indexSet().subIndex(element, localFacetIndex, 
/*codim=*/1);
normalFluxes[globalFacetIndex] = flux; 



assuming you have computef the normal face flux (flux) for this scvf.
For writing out:



std::vector normalFluxes(gridGeometry->gridView().size(1));

// fill the vector here

ConformingIntersectionWriter faceVtk(gridGeometry->gridView());
faceVtk.addField(normalFluxes, “normal flux");
faceVtk.write("output", Dune::VTK::ascii);



Best wishes
Timo


> On 5 Nov 2022, at 15:10, Rafael March  wrote:
> 
> Hello, 
> 
> How to output normal face fluxes in the VTU files?
> 
> I'm using a cell-centered TPFA scheme (two-phase) with a YASP (cartesian) 
> grid. Hence, the fluxes are stored in the grid faces, normal to each face. I 
> would like to see these fluxes in the VTU files. I thought this would do the 
> trick:
> 
> vtkWriter.addVelocityOutput(std::make_shared(*gridVariables));
> 
> But it doesn't. Can you point me in the right direction?
> 
> Thank you!
> 
> Rafael March.
> ___
> DuMux mailing list
> DuMux@listserv.uni-stuttgart.de
> https://listserv.uni-stuttgart.de/mailman/listinfo/dumux

___
DuMux mailing list
DuMux@listserv.uni-stuttgart.de
https://listserv.uni-stuttgart.de/mailman/listinfo/dumux


[DuMux] Output face fluxes in VTU

2022-11-05 Thread Rafael March
Hello,

How to output normal face fluxes in the VTU files?

I'm using a cell-centered TPFA scheme (two-phase) with a YASP (cartesian)
grid. Hence, the fluxes are stored in the grid faces, normal to each face.
I would like to see these fluxes in the VTU files. I thought this would do
the trick:

vtkWriter.addVelocityOutput(std::make_shared(*gridVariables));

But it doesn't. Can you point me in the right direction?

Thank you!

Rafael March.
___
DuMux mailing list
DuMux@listserv.uni-stuttgart.de
https://listserv.uni-stuttgart.de/mailman/listinfo/dumux