Skip to content
Permalink
Browse files

Merge pull request #13293 from cpgr/pf_frontpage

Update PorousFlow landing page
  • Loading branch information...
permcody committed Apr 24, 2019
2 parents 6c76e1d + e0a8d48 commit 20f6c3043f7bb602ed94f219c4a42a708ee1ecc7
@@ -0,0 +1,51 @@
# Additional MOOSE objects

The PorousFlow module also includes a number of additional MOOSE objects to aid
users, whether to assist in extracting calculated values for visualizing results,
implement advanced capabilities, or to simplify the input files.

## Actions

The `Actions` system allows programatic addition of various input file objects, significantly
simplifying the input files for various simulations.

- [PorousFlowBasicTHM](PorousFlowBasicTHM.md): Fully-saturated, single-phase, single-component fluid flow
- [PorousFlowFullySaturated](PorousFlowFullySaturated.md): Fully-saturated, single-phase fluid flow
- [PorousFlowUnsaturated](PorousFlowUnsaturated.md): Saturated-unsaturated, single-phase fluid flow

## AuxKernels

The following `AuxKernels` can be used to save properties and data to `AuxVariables`,
which can then be used as input for other MOOSE objects, or saved to output files and
used to visualise results.

- [PorousFlowDarcyVelocityComponent](PorousFlowDarcyVelocityComponent.md):
Calculates the Darcy velocity of the fluid
- [PorousFlowDarcyVelocityComponentLowerDimensional](PorousFlowDarcyVelocityComponentLowerDimensional.md):
Calculates the Darcy velocity of the fluid in a lower-dimensional element
- [PorousFlowPropertyAux](PorousFlowPropertyAux.md):
Extracts material properties from the model

## Initial conditions

Some models that use persistent primary variables also include initial condition objects to calculate
the initial value of these persistent primary variables for a given set of porepressure and temperature.

- [PorousFlowFluidStateIC](PorousFlowFluidStateIC.md): Calculates total mass fraction of component

## Postprocessors

A number of `Postprocessors` are available:

- [PorousFlowFluidMass](PorousFlowFluidMass.md): Calculates the mass
of a fluid component $\kappa$
- [PorousFlowHeatEnergy](PorousFlowHeatEnergy.md): Calculates the heat energy
- [PorousFlowPlotQuantity](PorousFlowPlotQuantity.md): Records the flow into/out of a sink during time step

## UserObjects

The following `UserObjects` are provided:

- [PorousFlowDictator](PorousFlowDictator.md): Provides information to all other objects
- [PorousFlowSumQuantity](PorousFlowSumQuantity.md): Records the total flow into/out of a sink
- [PorousFlowAdvectiveCalculator](kt.md): Used in [Kuzmin-Turek](kt.md) stabilization
@@ -0,0 +1,11 @@
# The PorousFlowDictator

The [PorousFlowDictator](PorousFlowDictator.md) is a `UserObject`
that holds information about the nonlinear variables used in the PorousFlow module,
as well as the number of fluid phases and fluid components in each simulation.

Other PorousFlow objects, such as `Kernels` or `Materials` query the PorousFlowDictator
to make sure that only valid fluid components or phases are used.

!alert note
A PorousFlowDictator must be present in all simulations!
@@ -0,0 +1,17 @@
# Available flow models

The PorousFlow module is designed to enable simulations with any number of fluid
components in any number of fluid phases. Several specialized flow models are available
in PorousFlow to simulate some common scenarios.

General formulations are provided for immiscible single and multiphase models:

- [Single phase](singlephase.md)
- [Multiphase](multiphase.md)

Specialized formulations for miscible two-phase flow are also provided, that use
a [persistent](persistent_variables.md) set of primary variables and a [compositional flash](compositional_flash.md) to calculate the partitioning
of fluid components amongst fluid phases:

- [Water and non-condensable gas](waterncg.md)
- [Brine and CO$_2$](brineco2.md)
@@ -1,10 +1,14 @@
# Using the Fluid Properties module
# Fluid equations of state

## Implementation
PorousFlow uses formulations contained in the [Fluid Properties](/fluid_properties/index.md) module to
calculate fluid properties such as density or viscosity.

## Using the Fluid Properties module

### Implementation

PorousFlow can use any of the UserObjects in the [Fluid Properties](/fluid_properties/index.md)
module that use the pressure-temperature formulation. A fluid is included in the input file by adding the
following block
module. A specific fluid can be included in the input file by adding the following block

!listing modules/porous_flow/test/tests/fluids/h2o.i block=Modules/FluidProperties

@@ -22,17 +26,17 @@ for details).
Multiple fluids can be included by simply adding additional fluids to the `Modules` block and
corresponding `PorousFlowSingleComponentFluid` entries in the `Materials` block.

Due to this design, it is trivial to change the fluid used by simply swapping out the
Due to this design, it is trivial to change the fluid in any simulation by simply swapping out the
[Fluid Properties](/fluid_properties/index.md) UserObjects.

!alert note
The fluid properties UserObjects expect temperature in Kelvin.

If the input file uses temperature in Celcius, the `temperature_unit` option in
If the input file uses temperature in Celsius, the `temperature_unit` option in
[`PorousFlowSingleComponentFluid`](/PorousFlowSingleComponentFluid.md)
+must+ be set to `Celcius`.
+must+ be set to `Celsius`.

## Performance
### Performance

Computing fluid properties such as density and viscosity can be expensive when using
detailed fluid equations of state (such as [Water97FluidProperties](/Water97FluidProperties.md) or
@@ -52,3 +56,7 @@ achieve the maximum benefit from [TabulatedFluidProperties](/TabulatedFluidPrope
should ensure that both density and viscosity are calculated by interpolation, by either providing
them in the supplied properties file, or making sure that both are specified in the
`interpolated_properties` input parameter if no data file exists.

### Available fluids

The full list of available fluids is provided in the [Fluid Properties](/fluid_properties/index.md) module.
@@ -1,172 +1,65 @@
# Porous Flow
# PorousFlow module

The PorousFlow module is a library of physics for fluid and heat flow in porous
media. It is formulated in an extremely general manner, so is capable of solving
problems with an arbitrary number of phases and fluid components.
problems with an arbitrary number of phases (gas, liquid, etc) and fluid components (species present in
each fluid phase), using any set of primary variables.

By simply adding pieces of physics together in an input file, the PorousFlow
module enables the user to model problems with any combination of fluid, heat
and geomechanics.

## Other sources of information
!row!
!col! small=12 medium=4 large=4 icon=device_hub

This documentation is based on earlier latex documentation, and we are still in the process of transferring the latex into the online format. You may find the latex documentation and its associated PDF files at `porous_flow/doc/theory`, `porous_flow/doc/tests` and in the `porous_flow/test/tests` directories.
### Module overview class=center style=font-weight:200;

## Theoretical foundation
- [Governing equations](porous_flow/governing_equations.md)
- [Material laws](porous_flow/material_laws.md)
- [Fluid equations of state](porous_flow/fluids.md)
- [Boundaries](porous_flow/boundaries.md)
- [Point and line sources and sinks](porous_flow/sinks.md)
- [Flow models](porous_flow/flow_models.md)
- [Additional objects](porous_flow/additional_objects.md)
- [Full system documentation](porous_flow/systems.md)

The equations governing motion of fluid and heat in porous media that are implemented
in `Kernels` in the PorousFlow module.
!col-end!

- [Governing equations](governing_equations.md)
!col! small=12 medium=4 large=4 icon=school

## Available models
### Tutorial and examples class=center style=font-weight:200;

Several different flow models are available in PorousFlow.
- [PorousFlow tutorial](porous_flow/tutorial_00.md)
- [Flow in fractures](porous_flow/flow_through_fractured_media.md)
- [Underground mining](porous_flow/coal_mining.md)
- [CO$_2$ storage benchmark problems](porous_flow/co2_intercomparison.md)
- [Restarting from previous simulation](porous_flow/restart.md)
- [QA tests](porous_flow/tests.md)

General formulations for the following cases are possible:
!col-end!

- [Single phase](singlephase.md)
- [Multiphase](multiphase.md)
!col! small=12 medium=4 large=4 icon=storage

Specialised formulations for miscible two-phase flow are also provided, that use
a [persistent](persistent_variables.md) set of primary variables and a [compositional flash](compositional_flash.md) to calculate the partitioning
of fluid components amongst fluid phases:
### Implementation details class=center style=font-weight:200;

- [Water and non-condensable gas](waterncg.md)
- [Brine and CO$_2$](brineco2.md)
- [PorousFlowDictator](porous_flow/dictator.md)
- [Numerical stabilization](porous_flow/stabilization.md)
- [Preconditioning and solvers](porous_flow/solvers.md)
- [Convergence criteria](porous_flow/convergence.md)
- [Nonlinear convergence problems](porous_flow/nonlinear_convergence_problems.md)
- [Persistent variables](porous_flow/persistent_variables.md)
- [Compositional flash](porous_flow/compositional_flash.md)

## Material laws
!col-end!
!row-end!

Material laws implemented in PorousFlow.
## Become a developer

- [Capillary pressure](capillary_pressure.md)
- [Relative permeability](relative_permeability.md)
- [Permeability](porous_flow/permeability.md)
- [Porosity](porosity.md)
- [Diffusivity](diffusivity.md)
The PorousFlow module is being developed by users at national laboratories
and universities around the world. The developers can be contacted through the
[moose-users email list](help/contact_us.md optional=True).

## Fluid equation of states

PorousFlow uses formulations contained in the [Fluid Properties](/fluid_properties/index.md) module to calculate fluid properties
such as density or viscosity.

- [Using fluid properties](fluids.md)
- [Available fluids](/fluid_properties/index.md)

## Boundary conditions

Several boundary conditions useful for many simulations are provided.

- [Boundaries](boundaries.md)

## Point and line sources and sinks

A number of fluid and/or heat sources/sinks are available for use in PorousFlow.

- [Point and line sources and sinks](sinks.md)

## Implementation details

Details about numerical issues.

- [Numerical stabilization page](stabilization.md)
- [Numerical stabilization: Mass lumping](mass_lumping.md)
- [Numerical stabilization: full upwinding](upwinding.md)
- [Numerical stabilization: Kuzmin-Turek](kt.md)
- [Numerical stabilization: numerical diffusion](numerical_diffusion.md)
- [Numerical stabilization: A worked example of Kuzmin-Turek stabilization](kt_worked.md)
- [Preconditioning and solvers](solvers.md)
- [Convergence criteria](convergence.md)
- [Nonlinear convergence problems](nonlinear_convergence_problems.md)

## The Dictator

The [`PorousFlowDictator`](PorousFlowDictator.md) is a `UserObject`
that holds information about the nonlinear variables used in the PorousFlow module,
as well as the number of fluid phases and fluid components in each simulation.

Other PorousFlow objects, such as `Kernels` or `Materials` query the `PorousFlowDictator`
to make sure that only valid fluid components or phases are used.

!alert note
A `PorousFlowDictator` must be present in all simulations!

## Examples

We are currently in the process of building a few key examples of PorousFlow.

- [PorousFlow tutorial](tutorial_00.md)
- [Flow through an explicitly fractured medium and flow through a fracture network](flow_through_fractured_media.md)
- [Cold CO$_{2}$ injection into an elastic reservoir --- a THM problem](co2_example.md)
- [Underground mining - an HM problem](coal_mining.md)
- [CO$_2$ storage benchmark problems](co2_intercomparison.md)
- [Restarting from a previous simulation](restart.md)

## Additional MOOSE objects

The PorousFlow module also includes a number of additional MOOSE objects to aid
users in extracting calculated values for visualising results.

### AuxKernels

The following `AuxKernels` can be used to save properties and data to `AuxVariables`,
which can then be used as input for other MOOSE objects, or saved to output files and
used to visualise results.

- [`PorousFlowDarcyVelocityComponent`](PorousFlowDarcyVelocityComponent.md):
Calculates the Darcy velocity of the fluid

- [`PorousFlowPropertyAux`](PorousFlowPropertyAux.md):
Extracts properties from the model.

### Postprocessors

A number of `Postprocessors` are available:

- [`PorousFlowFluidMass`](PorousFlowFluidMass.md): Calculates the mass
of a fluid component $\kappa$
- [`PorousFlowHeatEnergy`](PorousFlowHeatEnergy.md): Calculates the heat energy

## QA tests of PorousFlow

There are over 500 unit and quality-assurance tests in the PorousFlow test suite. The pages below describe some of the more non-trivial tests.

- [Infiltration and drainage](tests/infiltration_and_drainage/infiltration_and_drainage_tests.md)
- [Heat and fluid responses in finite 1D bars subject to various boundary conditions](tests/newton_cooling/newton_cooling_tests.md)
- [Poroelasticity](tests/poro_elasticity/poro_elasticity_tests.md)
- [Boundary sinks and sources](tests/sinks/sinks_tests.md)
- [Point and line sources, pumping tests, boreholes](tests/dirackernels/dirackernels_tests.md)
- [Multi-phase, multi-component radial injection, using fluidstate](tests/fluidstate/fluidstate_tests.md)
- [Injection ala Buckley and Leverett](tests/buckley_leverett/buckley_leverett_tests.md)
- [Evolution of a pressure pulse](tests/pressure_pulse/pressure_pulse_tests.md)
- [Heat conduction](tests/heat_conduction/heat_conduction_tests.md)
- [Heat advection](tests/heat_advection/heat_advection_tests.md)
- [Fluid mass computation and conservation](tests/mass_conservation/mass_conservation_tests.md)
- [Establishment of gravitational head](tests/gravity/gravity_tests.md)
- [Dispersion and diffusion](tests/dispersion/dispersion_tests.md)
- [Heating from inelastic deformation](tests/plastic_heating/plastic_heating_tests.md)
- [Tests of the Jacobian](tests/jacobian/jacobian_tests.md)

Many of the PorousFlow tests were created before MOOSE's current documentation system was established. Therefore, we are still in the process of documenting the tests. The following pages need to be completed.

- [actions](tests/actions/actions_tests.md)
- [fluids](tests/fluids/fluids_tests.md)
- [numerical_diffusion](tests/numerical_diffusion/numerical_diffusion_tests.md)
- [adv_diff_bcs](tests/adv_diff_bcs/adv_diff_bcs_tests.md)
- [aux_kernels](tests/aux_kernels/aux_kernels_tests.md)
- [flux_limited_TVD_advection](tests/flux_limited_TVD_advection/flux_limited_TVD_advection_tests.md)
- [basic_advection](tests/basic_advection/basic_advection_tests.md)
- [flux_limited_TVD_pflow](tests/flux_limited_TVD_pflow/flux_limited_TVD_pflow_tests.md)
- [poroperm](tests/poroperm/poroperm_tests.md)
- [functions](tests/functions/functions_tests.md)
- [radioactive_decay](tests/radioactive_decay/radioactive_decay_tests.md)
- [capillary_pressure](tests/capillary_pressure/capillary_pressure_tests.md)
- [relperm](tests/relperm/relperm_tests.md)
- [chemistry](tests/chemistry/chemistry_tests.md)
- [density](tests/density/density_tests.md)
- [heterogeneous_materials](tests/heterogeneous_materials/heterogeneous_materials_tests.md)
- [desorption](tests/desorption/desorption_tests.md)
- [thermal_conductivity](tests/thermal_conductivity/thermal_conductivity_tests.md)
- [thm_rehbinder](tests/thm_rehbinder/thm_rehbinder_tests.md)
- [energy_conservation](tests/energy_conservation/energy_conservation_tests.md)
- [non_thermal_equilibrium](tests/non_thermal_equilibrium/non_thermal_equilibrium_tests.md)
All users of PorousFlow are encouraged to assist in the development of this module. There are
a large number of possible enhancements that can be implemented, and better documentation that could
be contributed, so consider becoming a developer yourself. Follow the MOOSE standards for [contributing code](framework_development/contributing.md optional=True) and
[documentation](MooseDocs/generate.md optional=True).
@@ -0,0 +1,10 @@
# Material laws

Several important material properties and constitutive equations are implemented in PorousFlow.
Detailed descriptions of these are provided in the following:

- [Capillary pressure](capillary_pressure.md)
- [Relative permeability](relative_permeability.md)
- [Permeability](porous_flow/permeability.md)
- [Porosity](porosity.md)
- [Diffusivity](diffusivity.md)
@@ -0,0 +1 @@
!syntax complete groups=PorousFlowApp
Oops, something went wrong.

0 comments on commit 20f6c30

Please sign in to comment.
You can’t perform that action at this time.