ICFERST
22-06
Reservoir simulator based on DCVFEM, Dynamic Mesh optimisation and Surface-based modelling
|
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... | |
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.
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.
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 |