yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #12977
[Branch ~yade-pkg/yade/git-trunk] Rev 3995: add porosity in cell info.
------------------------------------------------------------
revno: 3995
committer: Chao Yuan <chaoyuan2012@xxxxxxxxx>
timestamp: Wed 2017-01-25 17:17:13 +0100
message:
add porosity in cell info.
modified:
pkg/pfv/TwoPhaseFlowEngine.cpp
pkg/pfv/TwoPhaseFlowEngine.hpp
--
lp:yade
https://code.launchpad.net/~yade-pkg/yade/git-trunk
Your team Yade developers is subscribed to branch lp:yade.
To unsubscribe from this branch go to https://code.launchpad.net/~yade-pkg/yade/git-trunk/+edit-subscription
=== modified file 'pkg/pfv/TwoPhaseFlowEngine.cpp'
--- pkg/pfv/TwoPhaseFlowEngine.cpp 2016-12-19 16:47:50 +0000
+++ pkg/pfv/TwoPhaseFlowEngine.cpp 2017-01-25 16:17:13 +0000
@@ -38,7 +38,7 @@
else if(entryPressureMethod > 3){cout << endl << "ERROR - Method for determining the entry pressure does not exist";}
computePoreBodyRadius();//save pore body radius before imbibition
- computePoreBodyVolume();//save capillary volume of all cells, for fast calculating saturation
+ computePoreBodyVolume();//save capillary volume of all cells, for fast calculating saturation. Also save the porosity of each cell.
computeSolidLine();//save cell->info().solidLine[j][y]
initializeReservoirs();//initial pressure, reservoir flags and local pore saturation
// if(isCellLabelActivated) updateReservoirLabel();
@@ -52,6 +52,7 @@
FiniteCellsIterator cellEnd = tri.finite_cells_end();
for (FiniteCellsIterator cell = tri.finite_cells_begin(); cell != cellEnd; cell++) {
cell->info().poreBodyVolume = std::abs( cell->info().volume() ) - std::abs(solver->volumeSolidPore(cell));
+ cell->info().porosity = cell->info().poreBodyVolume/std::abs( cell->info().volume() );
}
}
@@ -369,6 +370,13 @@
}
vtkfile.end_data();
+ vtkfile.begin_data("Porosity",CELL_DATA,SCALARS,FLOAT);
+ for (FiniteCellsIterator cell = Tri.finite_cells_begin(); cell != Tri.finite_cells_end(); ++cell) {
+ bool isDrawable = cell->info().isReal() && cell->vertex(0)->info().isReal() && cell->vertex(1)->info().isReal() && cell->vertex(2)->info().isReal() && cell->vertex(3)->info().isReal();
+ if (isDrawable){vtkfile.write_data(cell->info().porosity);}
+ }
+ vtkfile.end_data();
+
vtkfile.begin_data("Label",CELL_DATA,SCALARS,FLOAT);
for (FiniteCellsIterator cell = Tri.finite_cells_begin(); cell != Tri.finite_cells_end(); ++cell) {
bool isDrawable = cell->info().isReal() && cell->vertex(0)->info().isReal() && cell->vertex(1)->info().isReal() && cell->vertex(2)->info().isReal() && cell->vertex(3)->info().isReal();
=== modified file 'pkg/pfv/TwoPhaseFlowEngine.hpp'
--- pkg/pfv/TwoPhaseFlowEngine.hpp 2016-12-20 12:45:40 +0000
+++ pkg/pfv/TwoPhaseFlowEngine.hpp 2017-01-25 16:17:13 +0000
@@ -46,6 +46,7 @@
windowsID = 0;
for (int k=0; k<4;k++) for (int l=0; l<4;l++) solidLine[k][l]=0;
label=-1;
+ porosity=0.;
}
};
@@ -210,6 +211,7 @@
CELL_SCALAR_GETTER(bool,.hasInterface,cellHasInterface) //Temporary function to allow for simulations in Python
CELL_SCALAR_GETTER(Real,.poreBodyRadius,cellInSphereRadius) //Temporary function to allow for simulations in Python
CELL_SCALAR_GETTER(Real,.poreBodyVolume,cellVoidVolume) //Temporary function to allow for simulations in Python
+ CELL_SCALAR_GETTER(Real,.porosity,cellPorosity)
CELL_SCALAR_SETTER(bool,.hasInterface,setCellHasInterface) //Temporary function to allow for simulations in Python
CELL_SCALAR_GETTER(int,.label,cellLabel)
@@ -249,6 +251,7 @@
.def("getCellHasInterface",&TwoPhaseFlowEngine::cellHasInterface,"indicates whether a NW-W interface is present within the cell")
.def("getCellInSphereRadius",&TwoPhaseFlowEngine::cellInSphereRadius,"get the radius of the inscribed sphere in a pore unit")
.def("getCellVoidVolume",&TwoPhaseFlowEngine::cellVoidVolume,"get the volume of pore space in each pore unit")
+ .def("getCellPorosity",&TwoPhaseFlowEngine::cellPorosity,"get the porosity of individual cells.")
.def("setCellHasInterface",&TwoPhaseFlowEngine::setCellHasInterface,"change wheter a cell has a NW-W interface")
.def("savePoreNetwork",&TwoPhaseFlowEngine::savePoreNetwork,"Extract the pore network of the granular material")
.def("getCellLabel",&TwoPhaseFlowEngine::cellLabel,"get cell label. 0 for NW-reservoir; 1 for W-reservoir; others for disconnected W-clusters.")