dumux issueshttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues2024-03-27T13:50:19Zhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1351[md][ffporenetwork][snappygridmanager] rename parameters to make clear that p...2024-03-27T13:50:19ZAnna Mareike Kostelecky[md][ffporenetwork][snappygridmanager] rename parameters to make clear that pore bodies are coupled to interface (not throat)In the [snappygridmanager.hh](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/multidomain/boundary/freeflowporenetwork/snappygridmanager.hh?ref_type=heads) the parameters `"Grid.CellsPerThroat"` and `"Grid.F...In the [snappygridmanager.hh](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/multidomain/boundary/freeflowporenetwork/snappygridmanager.hh?ref_type=heads) the parameters `"Grid.CellsPerThroat"` and `"Grid.FixedCellsBetweenThroats"` ([here](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/multidomain/boundary/freeflowporenetwork/snappygridmanager.hh?ref_type=heads#L577)) indicate that throats are coupled to the interface. However, `points[i].radius` (e.g used for specifying the width of the coupled free-flow cells [here](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/multidomain/boundary/freeflowporenetwork/snappygridmanager.hh?ref_type=heads#L589)) is the pore body radius (see [here](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/multidomain/boundary/freeflowporenetwork/snappygridmanager.hh?ref_type=heads#L185)).
I think it would be good to rename the parameters (and respective variables, error messages etc) to indicate clearly that pore bodies instead of throats are coupled to the free-flow cells.
Or did I not see something such that the current parameter names are meaningful?Anna Mareike KosteleckyAnna Mareike Kosteleckyhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1119Improve documentation of pore-network grid creator parameters2023-12-13T11:13:09ZKilian WeishauptImprove documentation of pore-network grid creator parametersThe generic pore-network grid creator comes with a lot of parameters which are not quite clear immediately.
We should document those properly.
See also !2996
Should this go into the generic `Parameters` documentation table? Not sure...The generic pore-network grid creator comes with a lot of parameters which are not quite clear immediately.
We should document those properly.
See also !2996
Should this go into the generic `Parameters` documentation table? Not sure if this is enough because they would probably be scattered all over the table. Maybe we also need a wiki entry for summary?
Just a brief explanation how the `StructuredLatticeGridCreator` works (based on https://link.springer.com/article/10.1007/s11242-009-9412-3):
1.) Create a regular, axis-parallel 2D or 3D host grid using YaspGrid (can also have grading)
2.) All 2D/3D element edges are considered as throats, connecting the pores located on the bulk element vertices
3.) Add additional throats by connecting the element vertices diagonally
4.) From this "fully-connected" network, delete throats by specifying a certain `DeletionProbability` for each spatial direction (x,y,z and diagonals). This allows to generate anisotropy.
When setting a value of one to the diagonals, a regular axis-aligned lattice grid is created.
5.) Run a sanitation algorithm to remove potential isolated clusters
6.) Assign parameters like `PoreInscribedRadius` to the remaining entities
__Collection of parameters for StructuredLatticeGridCreator__
* `Grid.RemoveThroatsOnBoundary`: Takes list of integers for specifying the side of a cubic domain (0 = xMin, 1 = xMax, 2 = yMin, 3 = yMax, 4 = zMin, 5 = zMax). Removes throats lying on the given sides, i.e. remove throats whose center touches the sides.
* `Grid.DeletionRandomNumberSeed`: Random number seed used when randomly deleting throats from the fully connected lattice. Needed for reproducibility.
* `Grid.RegularLattice`: When set to `true`, a regular axis-aligned lattice grid without any diagonal throats is created. Corresponds to setting `Grid.DeletionProbability`to `1.0` for all diagonal directions.
* `Grid.DeletionProbability` Takes list of doubles corresponding to the deletion probability of throats for each possible spatial direction.
The directions in 2D are : (1, 0), (0, 1), (1, 1) (1, -1)
Example: 0.0, 0.5, 1.0 , 1.0 will delete all diagonal throats and 50% of all throats in y-direction.
The directions in 3D are (1, 0, 0), (0, 1, 0), (0, 0, 1), (1, 1, 0), (1, -1, 0), (1, 0, 1), (1, 0, -1), (0, 1, 1), (0, 1, -1), (1, 1, 1), (1, 1, -1), (-1, 1, 1), (-1, -1, 1)
* `Grid.Positions`: The host grid positions when using tensor grid coordinates.
* `Grid.LowerLeft`: The host grid lower left
* `Grid.UpperRight`: The host grid upper right
* `Grid.NumPores`: The number of pores in each directions (equals hostGridElements + 1)
* `Grid.Grading`: The host grid grading when using tensor grid coordinates.
* `Grid.AllowIntersectingDiagonals`. If set `true`, diagonal throats in an host grid element may intersect. Default is `true`.
__Collection of parameters for ParametersForGeneratedGrid__
* `Grid.SubregionX.LowerLeft`: The lower left of a network subregion, for which individual parameters may be set. X is the subregion id (int).
* `Grid.SubregionX.UpperRight`: The upper right of a network subregion, for which individual parameters may be set. X is the subregion id (int).
* `Grid.PoreInscribedRadius`: Sets a fixed inscribed radius for all pores.
* `Grid.PoreVolume`. Sets a fixed volume for all pores. If not set, the value will be calculated automatically based on the pore geometry and inscribed radius.
* `Grid.ThroatInscribedRadius`. Sets a fixed inscribed radius for all throats. If not set, the value will be calculated automatically based on the throat length and the adjacent pore body radii.
* `Grid.ThroatLength`: Sets a fixed length for all throat. If not set the value will be calculated automatically based on the adjacent pore body centers and radii.
* `Grid.PriorityList`: Takes list of integers for specifying the side of a cubic domain (0 = xMin, 1 = xMax, 2 = yMin, 3 = yMax, 4 = zMin, 5 = zMax). Need to avoid ambiguities when setting the boundary pore labels for pores on corners. The order within the lists determines the precedence of labels.
* `Grid.BoundaryFaceMarker`: Takes a list of integers to specifiy the pore label at each boundary.
2D example: `Grid.BoundaryFaceMarker = 1 2 0 0` results in label(xMin) = 1, label(xMax) = 2, label(yMin) = 0, label(yMax) = 0
* `Grid.CapPoreRadii`. If set `true` (default), pore body inscribed radii are capped such that the pores do not intersect.
* `Grid.MinThroatLength`. Sets a minimum throat length (default 1e-9) in case pores are capped.
* `Grid.PoreLabelsToSetFixedRadius`. Takes a list of pore labels at which a certain fixed radius shall be set. Should probably be removed as we have `SubRegions`. Those could also be set based on labels instead of locations.
* `Grid.PoreLabelsToApplyFactorForRadius` Takes a list of pore labels at which the given pore radius shall be multiplied by a given factor. Should probably be removed as we have `SubRegions`. Those could also be set based on labels instead of locations.
* Grid.FixedPoreRadiusForLabel
* Grid.PoreRadiusFactorForLabel
* `Grid.ParameterRandomNumberSeed`: Random number seed for setting randomly generated parameter. Needed for reproducibility.
* `Grid.ParameterType (uniform / lognormal)`: Specifies the type of random number distribution for setting parameters.
* `Grid.PoreGeometry`: Sets the pore body geometry for all pores.
* `Grid.CapPoresOnBoundaries`: If set `true` pores on boundaries will be cut in half (affects volume).
* `Grid.PoreHeight`: Parameter needed if cylindrical or non-cubic/non-spherical pores are considered.
* `Grid.SubstractRadiiFromThroatLength`: If set true, the pore body inscribed radii will be subtracted from the throat length (which is the Euclidean distance between pore body centers). TODO: fix typo and deprecate!
* `Grid.MeanPoreInscribedRadius`: Sets the mean inscribed pore radius for random parameters.
* `Grid.StandardDeviationPoreInscribedRadius`: Sets the standard deviation of the inscribed pore radius for random parameters.
__Collection of parameters for GridManager__
* `Grid.File`: The grid file.
* `Grid.Sanitize`: If set `true`, isolated network clusters will be found and removed.
* `Grid.SanitationMode`: Options are `KeepLargestCluster` (default) and `UsePoreLabels` keeps all pores connected to a list of labels (`PruningSeedIndices`).
* `Grid.PruningSeedIndices` See `SanitationMode`. Default is (1)
__Collection of parameters for GridData__
* `Grid.NumSubregions`. The number of network subregions. Default is zero.https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1305Rename Parameter "GrainFouriersLaw.UseAdaptedVolumeForPyramid"2023-10-25T15:05:10ZAnna Mareike KosteleckyRename Parameter "GrainFouriersLaw.UseAdaptedVolumeForPyramid"Rename parameter `"GrainFouriersLaw.UseAdaptedVolumeForPyramid"` in [/flux/porenetwork/grainfourierslaw.hh](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/flux/porenetwork/grainfourierslaw.hh?ref_type=heads...Rename parameter `"GrainFouriersLaw.UseAdaptedVolumeForPyramid"` in [/flux/porenetwork/grainfourierslaw.hh](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/flux/porenetwork/grainfourierslaw.hh?ref_type=heads#L59) to a more self-explaining name.
E.g. use same as in [/test/multidomain/dualnetwork/fourierslaw.hh](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/test/multidomain/dualnetwork/fourierslaw.hh?ref_type=heads#L103) as it is exactly the same (`"Problem.UseVolumeEqualPyramid"`).Anna Mareike KosteleckyAnna Mareike Kosteleckyhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1254Dualnetwork model - add 'poreInscribedRadius' and 'poreExtendedRadius' for dg...2023-10-24T06:49:43ZAnna Mareike KosteleckyDualnetwork model - add 'poreInscribedRadius' and 'poreExtendedRadius' for dgf-file**Current state and "problem"**
Currently, the dualnetwork model uses the `poreIncribedRadius` (see e.g. [grainfourierslaw.hh](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/flux/porenetwork/grainfouriersl...**Current state and "problem"**
Currently, the dualnetwork model uses the `poreIncribedRadius` (see e.g. [grainfourierslaw.hh](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/flux/porenetwork/grainfourierslaw.hh#L46)) as well as the `poreExtendedRadius` (see e.g. [couplingmanager.hh](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/multidomain/dualnetwork/couplingmanager.hh#L610)). However, in the [openpnm2dgf.py](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/porenetwork/util/openpnm2dgf.py)-script, only the `poreExtendedRadius` (obtained e.g. by the snow-algorithm from porespy) is saved under the name `poreRadius` in the .dgf-file.
**Suggestion**
My suggestion would be to add the `poreIncribedRadius` as well as the `poreExtendedRadius` to the dgf-file for all networks as a porenetwork model also often needs a `poreInscribedRadius` in the current implementations.Anna Mareike KosteleckyAnna Mareike Kosteleckyhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/996[pnm] BoundaryFlux class only works for Dirichlet Boundaries2023-07-29T10:37:43ZKilian Weishaupt[pnm] BoundaryFlux class only works for Dirichlet BoundariesThe [BoundaryFlux class](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/porenetwork/common/boundaryflux.hh) for evaluating fluxes entering or leaving the network only works if Dirichlet conditions are set o...The [BoundaryFlux class](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/porenetwork/common/boundaryflux.hh) for evaluating fluxes entering or leaving the network only works if Dirichlet conditions are set on the relevant boundaries.
This is because the class evaluates the local residual at the respective DOFs. For Dirichlet BCs, the value is not zero but equals the boundary flux.
One could maybe check if a Dirichlet BC is set and proceed as before and just evaluate the `source` term instead otherwise.
Note: `source` corresponds to a `neumann` BC at the boundary. The PNM does not support `neumann` but requires a `source` instead because there are no boundary `scvfs`.3.5https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1243[PNM][util] Check for versions of porespy and openpnm in python scripts + upd...2023-07-26T21:36:20ZAnna Mareike Kostelecky[PNM][util] Check for versions of porespy and openpnm in python scripts + updating scripts to new versions**Problem**
The [extract_pore_network_with_porespy.py](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/porenetwork/util/extract_pore_network_with_porespy.py) and [openpnm2dgf.py](https://git.iws.uni-stuttga...**Problem**
The [extract_pore_network_with_porespy.py](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/porenetwork/util/extract_pore_network_with_porespy.py) and [openpnm2dgf.py](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/porenetwork/util/openpnm2dgf.py)- script can not be executed with the recent versions of porespy (v.2.2.2) and openpnm (v.3.1.2). And it is also not clear which versions were used for running those.
**Suggestion**
- find out, which versions of porespy and openpnm were used to run the scripts
- check for the right versions of porespy and openpnm in the scripts (or at least state in a comment which versions were used)
- add a `requirements.txt` in the `util` folder to be able to directly install the right versions of porespy and openpnm
- update scripts to use the most recent versions of porespy and openpnmHanchuan WuHanchuan Wuhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1095Pore network model needs dune-foamgrid to work2021-11-02T17:17:19ZMaziar VeyskaramiPore network model needs dune-foamgrid to workAdd dune-foamgrid to the dune-module list which needs to be installed in the [Dumux webpage](https://dumux.org/installation/) or mention it separately that to use pore network model you need to install dune-foamgrid.Add dune-foamgrid to the dune-module list which needs to be installed in the [Dumux webpage](https://dumux.org/installation/) or mention it separately that to use pore network model you need to install dune-foamgrid.3.5