dumux-repositories issueshttps://git.iws.uni-stuttgart.de/groups/dumux-repositories/-/issues2023-12-11T14:53:06Zhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1301[porousmediumflow][2pncmin] Use correct time step size for problem file2023-12-11T14:53:06ZAnna Mareike Kostelecky[porousmediumflow][2pncmin] Use correct time step size for problem fileIn the [2pncmin](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/test/porousmediumflow/2pncmin/nonisothermal) test the time step size is used in the [problem](https://git.iws.uni-stuttgart.de/dumux-repositories/du...In the [2pncmin](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/test/porousmediumflow/2pncmin/nonisothermal) test the time step size is used in the [problem](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/test/porousmediumflow/2pncmin/nonisothermal/problem.hh?ref_type=heads#L331) for calculating the amount of precipitating salt per time. For this the time step is set in the [main file](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/test/porousmediumflow/2pncmin/nonisothermal/main.cc?ref_type=heads#L140) at the beginning of each new time step. For this case this works so far.
However, @Simon Grether pointed out that for simulations where the [newton solver](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/blob/master/dumux/nonlinear/newtonsolver.hh?ref_type=heads#L340) does not converge and hence reduces the time step, this is not correctly implemented. This modification of the time step is not accounted for in the problem file, when just setting the time step once in the time loop.
Hence this would be nice to adapt already in the 2pncmin test, such that if this test case is copied and gets modified there is one possible error source less.3.9https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1290Add convenience function to construct default gridgeometry given a discretiza...2023-08-01T21:59:07ZTimo Kochtimokoch@math.uio.noAdd convenience function to construct default gridgeometry given a discretization scheme`makeGridGeometry<DiscMethod>(gridView, ...)``makeGridGeometry<DiscMethod>(gridView, ...)`https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1259Add an example for calculating fluxes over codim-1 regions2023-07-26T08:41:31ZBernd FlemischAdd an example for calculating fluxes over codim-1 regionshttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1258An example for "upscaling of two-phase flow properties using pore network"2023-12-13T09:54:51ZMaziar VeyskaramiAn example for "upscaling of two-phase flow properties using pore network"Since many people use pore network for upscaling purposes, there is a need to have a well-designed and documented example of how it can be done using the pore network in DUMUX. Although we already have an example for upscaling of a singl...Since many people use pore network for upscaling purposes, there is a need to have a well-designed and documented example of how it can be done using the pore network in DUMUX. Although we already have an example for upscaling of a single-phase flow system, having another example for upscaling of a two-phase system to obtain capillary-saturation and relative permeability-saturation curves is desirable.Maziar VeyskaramiMaziar Veyskaramihttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1257[ff-pm] Generalize ff-pm coupling - allow different schemes and generalize sl...2024-03-26T09:28:33ZMartin Schneider[ff-pm] Generalize ff-pm coupling - allow different schemes and generalize slip condition- [x] The current implementation for coupling free-flow with porous medium flow is restricted to cctpfa-staggered coupling, this should be generalized to also allow other coupling schemes.
- [x] Generalization of slip condition !3762- [x] The current implementation for coupling free-flow with porous medium flow is restricted to cctpfa-staggered coupling, this should be generalized to also allow other coupling schemes.
- [x] Generalization of slip condition !37623.9Martin SchneiderMartin Schneiderhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1256[porousmedia] Energy balance implementation2024-03-25T10:31:55ZTimo Kochtimokoch@math.uio.no[porousmedia] Energy balance implementationWe currently have some inconsistencies in the energy balance for porous media. For thermal equilibrium models, we implement
```math
\frac{\partial \left( n_s \rho_s u_s + n_f \rho_f u_f \right)}{\partial t} =
- \nabla\cdot{\left( \rho...We currently have some inconsistencies in the energy balance for porous media. For thermal equilibrium models, we implement
```math
\frac{\partial \left( n_s \rho_s u_s + n_f \rho_f u_f \right)}{\partial t} =
- \nabla\cdot{\left( \rho_f h_f \boldsymbol{v}_f \right)} + \nabla\cdot{\left( \left\lbrace n_f \lambda_f + n_s \lambda_s \right\rbrace \nabla T \right)}.
```
but the correct balance would be
```math
\frac{\partial \left( n_s \rho_s u_s + n_f \rho_f \left\lbrace u_f - g z \right\rbrace \right)}{\partial t} =
- \nabla\cdot{\left( \left\lbrace \rho_f h_f - \rho_f g z\right\rbrace \boldsymbol{v}_f \right)} + \nabla\cdot{\left( \left\lbrace n_f \lambda_f + n_s \lambda_s \right\rbrace \nabla T \right)}.
```
This might seem like a small change but the difference actually shows some inconsistency. It's not just an omitted term.
Only looking at the fluid balance, the gravity term can also be written like this
```math
\frac{\partial \left( n_f \rho_f u_f \right)}{\partial t} = - \nabla\cdot{\left( \rho_f h_f \boldsymbol{v}_f \right)} + \nabla\cdot{\left(n_f \lambda_f \nabla T \right)} + \rho_f \boldsymbol{v}_f \cdot \boldsymbol{g} = - \nabla\cdot{\left( (\rho_f u_f + p) \boldsymbol{v}_f \right)} + \nabla\cdot{\left(n_f \lambda_f \nabla T \right)} + \rho_f \boldsymbol{v}_f \cdot \boldsymbol{g}.
```
Essentially, if we consider gravity in Darcy's law, we should also consider the corresponding term in the energy balance for consistency.
Subtracting the momentum balance multiplied by the velocity gives the balance of internal energy (non-conservative because only total energy is conserved):
```math
\frac{\partial \left( n_f \rho_f u_f \right)}{\partial t} = - \nabla\cdot{\left( \rho_f u_f \boldsymbol{v}_f \right)} + \nabla\cdot{\left(n_f \lambda_f \nabla T \right)} \underbrace{- p \left(\nabla\cdot{\boldsymbol{v}_f}\right)}_{\text{volume work}} \underbrace{+ \mu_f \boldsymbol{K}^{-1} \boldsymbol{v}_f \cdot \boldsymbol{v}_f}_{\text{viscous dissipation}}
```
This shows that there are conversion terms resulting in modification of the internal energy. Even if we assume that one of these is small, or both of these are small, we don't arrive at the implemented equation. If we don't have the gravity/potential energy term in the original balance, there would be an additional gravity term popping up here that mingles with the other energy conversion terms.
The gravity term vanishes if the fluid only moves perpendicular to the gravity field. However, for scenarios with strong upward/downward movement, this should have an effect.3.9Tufan GhoshTufan Ghoshhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1255Potential inconsistency in component enthalpies of ideal gases2024-03-19T12:43:26ZDennis GläserPotential inconsistency in component enthalpies of ideal gasesFor ideal gases, enthalpy is independent of pressure (see last paragraph of the introduction [here](https://en.wikipedia.org/wiki/Enthalpy) or [here](https://chem.libretexts.org/Bookshelves/Physical_and_Theoretical_Chemistry_Textbook_Map...For ideal gases, enthalpy is independent of pressure (see last paragraph of the introduction [here](https://en.wikipedia.org/wiki/Enthalpy) or [here](https://chem.libretexts.org/Bookshelves/Physical_and_Theoretical_Chemistry_Textbook_Maps/Physical_Chemistry_(LibreTexts)/22%3A_Helmholtz_and_Gibbs_Energies/22.04%3A_The_Enthalpy_of_an_Ideal_Gas)). We end up with
```math
dH = c_p dT
```
for enthalpy changes as function of temperature.
Some components implement
```cpp
static const Scalar gasEnthalpy(Scalar temperature, Scalar pressure)
{ return gasHeatCapacity(temperature, pressure) * temperature; }
```
However, with the above equation we should actually from a reference temperature (or state) to the given temperature.
Some Observations:
- `CH4` implements this:
```cpp
// method of Joback
const Scalar cpVapA = 19.25;
const Scalar cpVapB = 0.05213;
const Scalar cpVapC = 1.197e-5;
const Scalar cpVapD = -1.132e-8;
return
1/molarMass()* // conversion from [J/(mol*K)] to [J/(kg*K)]
(cpVapA + T*
(cpVapB/2 + T*
(cpVapC/3 + T*
(cpVapD/4))));
```
it says this is according to the method of Joback but I am having trouble finding out where the magic numbers come from. I cannot relate them to the Joback tables (e.g. Appendix C of [1]). Also, the equation looks as if this actually returns the average cp (integration of cp from 0 to T and then division by T). Sampling enthalpy values at specific temperatures also verifies that, as one gets closer to reported values when one removes the divisors (`/2`, `/3, `/4`)...
If we cannot find out where exactly these values come from, we could use Appendix A, Table Section C, row 26 of [1] for enthalpy computations. Seems to match reported values.
- The current implementation (`cp*T`) vs integration led to differences between 15% and > 30% in for
`150 < T < 600`
I suggest the following for all ideal gases that have this kind of implementation:
- (1) Use Appendix A from [1] or properly implement & cite the Joback method (i.e. Appendix C from [1]) for the heat capacities
- (2) integrate the enthalpy from a reference state to the given temperature using eq 3-1.5 of [1]
- (3) (maybe) re-evaluate the validity bounds (temperature, but also species) of the Joback method, and maybe emit a warning when one leaves the validity range? (Tricky, because it could happen in some Newton iterations but be fine at the end of the solve...)
- [1] also shows other methods than Joback, we could have a look if they provide advantages...
[1] B. Poling et al. (2001, fifth edition, pp A.35) - https://www.eng.uc.edu/~beaucag/Classes/ChEThermoBeaucage/Books/Bruce%20E.%20Poling,%20John%20M.%20Prausnitz,%20John%20P.%20O%27Connell%20-%20The%20properties%20of%20gases%20and%20liquids-McGraw-Hill%20Professional%20(2000).pdf3.9Dennis GläserDennis Gläserhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/-/issues/47Making DuMux-course reuse compliant2023-09-07T12:35:03ZHamza OukiliMaking DuMux-course reuse compliantDuMux course license is insufficient. It needs to be reuse compliant like DuMux. See [MR=dumux:3442](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/3442)DuMux course license is insufficient. It needs to be reuse compliant like DuMux. See [MR=dumux:3442](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/3442)Mathis KelmMathis Kelmhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/-/issues/44Improve Material exercise2024-03-25T10:34:21ZLeon KeimImprove Material exerciseIn the course people referred to this exercise as a little on the too difficult side.
While talking to people I noticed a few things.
Proposed changes:
1. [ ] In the slides it is extensively written how one can get from components to p...In the course people referred to this exercise as a little on the too difficult side.
While talking to people I noticed a few things.
Proposed changes:
1. [ ] In the slides it is extensively written how one can get from components to phases and a Fluidsystem. However in the exercise one uses a almost predefined Fluidsystem and just adds a component to that. It would be at least for a exercise better to use single components and build a simple Fluidsystem from scratch. https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/-/blob/master/exercises/exercise-fluidsystem/2p2cproperties.hh#L79
2. [ ] Maybe a exercise with a Vapor-Liquid system instead of Liquid-Liquid is more intuitive for the non Multiphase expert.
3. [ ] One could start with a single Phase system. Some people might not even be interested in Multiphase systems.
4. [ ] State more clearly where in the Dumux procedure of solving a PDE this is located (i.e. link to volVars)
5. [ ] isGas should return false https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/-/blob/master/exercises/exercise-fluidsystem/fluidsystems/h2omycompressiblecomponent.hh#L127
6. [ ] Should a Liquid-Liquid two phase system fail because no vapor pressure is given? Is this related to how dumux works?Dumux Course Summer 2024https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/-/issues/43Changes to an exercise are not transferred to the solution2023-04-28T14:08:44ZBernd FlemischChanges to an exercise are not transferred to the solutionIt's error-prone that changes to an exercise don't get transfered to the corresponding solution. Find ways to
- check if the solution matches the exercise by, for example, maintaining a patch describing the change from exercise to solut...It's error-prone that changes to an exercise don't get transfered to the corresponding solution. Find ways to
- check if the solution matches the exercise by, for example, maintaining a patch describing the change from exercise to solution and integrate the patch application and check in the CI.
- automate from the solution to the exercise or vice versa.https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/-/issues/42Pore-network model exercise2024-03-25T10:34:17ZNed ColtmanPore-network model exercisePore-networks are becoming more and more popular in our group and our user base.
At the moment we only have tests and exercises going through this content.
It would be great to have an exercise going through the various aspects of po...Pore-networks are becoming more and more popular in our group and our user base.
At the moment we only have tests and exercises going through this content.
It would be great to have an exercise going through the various aspects of pore-network models.Dumux Course Summer 2024https://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/-/issues/36Place property stuff earlier2023-04-04T11:40:44ZDennis GläserPlace property stuff earlierMaybe it would help to put the property stuff in the beginning of the course, otherwise people see properties in the first exercises without knowing what that is.
On the other hand, the properties is what people usually don't understand...Maybe it would help to put the property stuff in the beginning of the course, otherwise people see properties in the first exercises without knowing what that is.
On the other hand, the properties is what people usually don't understand. Maybe we should change the presentation such that
- we start with the syntax, how it looks, and what it does - without explaining how the mechanism work
- leave out the details as optional or self studyhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/-/issues/35Iterating over grid, compute boundary fluxes2023-04-02T23:43:03ZTimo Kochtimokoch@math.uio.noIterating over grid, compute boundary fluxesAdd some slides/exercise on how to do thatAdd some slides/exercise on how to do thathttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux-course/-/issues/34Clear copyright for images2023-04-02T23:33:22ZTimo Kochtimokoch@math.uio.noClear copyright for imagesWe want to make this available under an open license. Need to check if all images are suitable.We want to make this available under an open license. Need to check if all images are suitable.https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1222In DuneVectorType add a check for blockLevel requirements or implement recurs...2023-02-22T11:18:02ZTimo Kochtimokoch@math.uio.noIn DuneVectorType add a check for blockLevel requirements or implement recursivelyThe following discussion from !3385 should be addressed:
- [ ] @DennisGlaeser started a [discussion](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/3385#note_84501): (+2 comments)
> I think it could be ...The following discussion from !3385 should be addressed:
- [ ] @DennisGlaeser started a [discussion](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/3385#note_84501): (+2 comments)
> I think it could be good to statically check that the vector has a depth of 2 here, since this seems to be the case? Otherwise one gets a surprising result for vectors of different depth (although unlikely, and it would probably not compile due to "misuse" of the resulting vector type in other places)...
We could either add a static_assert or try to do the same recursion as for multitypevector to recursively use the template to convert block types.https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1221Anisotropic permeability Law2024-03-25T10:38:56ZJohannes HommelAnisotropic permeability Law**What does this feature / why does DuMux need it**:
An anisotropic permeability law is needed to account for precipitation having a different impact on the permeability in different directions. This is necessary for modeling a developi...**What does this feature / why does DuMux need it**:
An anisotropic permeability law is needed to account for precipitation having a different impact on the permeability in different directions. This is necessary for modeling a developing anisotropy due to precipitation as observed in the microfluidic experiments of the CRC1313, Project C04 by Felix Weinhardt.
My goal would be to have a permeability Law that used different exponents in a power law for each of the directions:
kxxFactor = (poro/refPoro)^exponentX
kyyFactor = (poro/refPoro)^exponentY
K = kxxFactor * Kxx_0 0
0 kyyFactor * Kyy_0
I guess the easiest would be to have a matrix multiplication of the initial permeability K_0 with a "factor matrix" F:
K = K_0 * F
with
K_0 = Kxx_0 0
0 Kyy_0
and
F = kxxFactor 0
0 kyyFactor
**Which issue does this feature fix (if any)**
This issue/feature does not fix any other open issues.
**Anything else we need to know?**:
I would like to discuss whether there is an elegant, general solution for implementing anisotropic permeability laws recycling the current permeability laws (assuming isotropic permeability change) or whether I should just implement a new permeability law for my specific case.
Also, my question would be how to do this potentially even more generalized for 2D and 3D in one permeability law, if possible.3.9Johannes HommelJohannes Hommelhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1218Code quality report Gitlab+cppcheck2023-02-10T16:26:51ZTimo Kochtimokoch@math.uio.noCode quality report Gitlab+cppcheckUsing this tool https://gitlab.com/ahogen/cppcheck-codequality
we might be able to integrate the cppcheck report with GitlabUsing this tool https://gitlab.com/ahogen/cppcheck-codequality
we might be able to integrate the cppcheck report with Gitlabhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1217Parallel computing for Navier-Stokes2023-02-28T15:08:26ZMojtaba BarzegariParallel computing for Navier-StokesHi,
I have difficulty finding proper examples of parallel execution of coupled Navier-Stokes problems (like https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/tree/master/test/freeflow/navierstokes/channel/3d_nonuniform). When ...Hi,
I have difficulty finding proper examples of parallel execution of coupled Navier-Stokes problems (like https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/tree/master/test/freeflow/navierstokes/channel/3d_nonuniform). When I apply the typical workflow for enabling parallel run (as described in the handbook, by including `<dumux/linear/amgbackend.hh>` and replacing the sequential solver with `using LinearSolver = AMGBiCGSTABBackend<LinearSolverTraits<GridGeometry>>; auto linearSolver = std::make_shared<LinearSolver>(leafGridView, gridGeometry->dofMapper());`), I face a couple of errors similar to this:
`/dune-istl/dune/istl/novlpschwarz.hh:80:42: error: no type named ‘ConstColIterator’ in ‘class Dune::MultiTypeBlockMatrix<Dune::MultiTypeBlockVector<Dune::BCRSMatrix<Dune::FieldMatrix<double, 3, 3>, std::allocator<Dune::FieldMatrix<double, 3, 3> > >, Dune::BCRSMatrix<Dune::FieldMatrix<double, 3, 1>, std::allocator<Dune::FieldMatrix<double, 3, 1> > > >, Dune::MultiTypeBlockVector<Dune::BCRSMatrix<Dune::FieldMatrix<double, 1, 3>, std::allocator<Dune::FieldMatrix<double, 1, 3> > >, Dune::BCRSMatrix<Dune::FieldMatrix<double, 1, 1>, std::allocator<Dune::FieldMatrix<double, 1, 1> > > > >’
`
I checked it with both `MomentumGridGeometry` and `MassGridGeometry`, both resulting in the same error. I see that there are quite a few examples and tests for `AMGBiCGSTABBackend` for Stokes free flow and flow in porous media, but I couldn't find any relevant thing for NS where mass and momentum equations are coupled. Is parallel AMG backend not supported for such coupled problems?
I'm checking all these things with DuMux 3.6.https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1213Metadata collection2023-10-20T13:57:37ZMartin SchneiderMetadata collectionImprove metadata collection of dumux.
TODOs:
- [ ] Add test case that collects metadata from dumux objects
- [ ] Add parameter tree to collectorImprove metadata collection of dumux.
TODOs:
- [ ] Add test case that collects metadata from dumux objects
- [ ] Add parameter tree to collector3.9Hamza OukiliHamza Oukilihttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/issues/1212License text2023-02-19T16:36:58ZTimo Kochtimokoch@math.uio.noLicense textOur default header license text mentions COPYING but that file has been removed. We should also clearly state how to reuse DUmux files, i.e. what text needs to be provided
I think the license headaer should refer to Authors and say some...Our default header license text mentions COPYING but that file has been removed. We should also clearly state how to reuse DUmux files, i.e. what text needs to be provided
I think the license headaer should refer to Authors and say something like copyright "the dumux developers". (And in Authors there should be a headline "the dumux developers")