ICFERST  22-06
Reservoir simulator based on DCVFEM, Dynamic Mesh optimisation and Surface-based modelling
multiphase_time_loop Module Reference

Time-loop module of IC-FERST. This module contains the time-loop and the non-linear loop. The time-loop consists many steps: 1) Data initialisation including shape functions, memory allocation, sparsity, porous media properties, etc. 2) Initialisation of the actual time loop. 3) Non-linear loop. IC-FERST uses a modified Anderson-acceleration non-linear solver, which is based in a Picard iterative non-linear solver. In this way, the different equations are solved independently and coupled through the Anderson non-linear solver. First the momentum and continuity equations are assembled and solved for, next the different transport equations are solved, for example: saturation, temperature, concentration, etc. ActiveTracers and Species are solved within the non-linear solver while PassiveTracers are solved outside the non-linear solver. 4) Once the non-linear solver has converged, we proceed to jump to the next time-level but first we check if we need to adapt the mesh and/or generate a vtu file. etc. More...

Functions/Subroutines

subroutine, public multifluids_solvetimeloop (state, dt, nonlinear_iterations, dump_no)
 This is the main subroutine from which everything is called. It performs the time-loop and therefore calls all the necessary blocks to solve for the system of equations, adapt the mesh, etc. See Salinas et al. 2016 doi: 10.1002/fld.4357, for a description of the time-loop and non-linear solver. More...
 

Detailed Description

Time-loop module of IC-FERST. This module contains the time-loop and the non-linear loop. The time-loop consists many steps: 1) Data initialisation including shape functions, memory allocation, sparsity, porous media properties, etc. 2) Initialisation of the actual time loop. 3) Non-linear loop. IC-FERST uses a modified Anderson-acceleration non-linear solver, which is based in a Picard iterative non-linear solver. In this way, the different equations are solved independently and coupled through the Anderson non-linear solver. First the momentum and continuity equations are assembled and solved for, next the different transport equations are solved, for example: saturation, temperature, concentration, etc. ActiveTracers and Species are solved within the non-linear solver while PassiveTracers are solved outside the non-linear solver. 4) Once the non-linear solver has converged, we proceed to jump to the next time-level but first we check if we need to adapt the mesh and/or generate a vtu file. etc.

Function/Subroutine Documentation

◆ multifluids_solvetimeloop()

subroutine, public multiphase_time_loop::multifluids_solvetimeloop ( type(state_type), dimension(:), intent(inout), pointer  state,
real, intent(inout)  dt,
integer, intent(inout)  nonlinear_iterations,
integer, intent(inout)  dump_no 
)

This is the main subroutine from which everything is called. It performs the time-loop and therefore calls all the necessary blocks to solve for the system of equations, adapt the mesh, etc. See Salinas et al. 2016 doi: 10.1002/fld.4357, for a description of the time-loop and non-linear solver.

Parameters
state.Linked list type of memory where all the fields following Fluidity standard are stored
dump_no.Specify the initial number of the vtu files, has to be zero
nonlinear_iterations.Non-linear value. This is required just in case we adapt before the first time-step
dt.Time-step size
Return values
Here is the caller graph for this function: