ICFERST  22-06
Reservoir simulator based on DCVFEM, Dynamic Mesh optimisation and Surface-based modelling
Modules List
Here is a list of all modules with brief descriptions:
 Ncompositional_termsThis module contains all that is required to perform compositional modelling. NOTE THAT THIS FUNCTIONALITY HAS NEVER BEEN FULLY IMPLEMENTED ONLY INERT COMPOSITIONAL WORKS CURRENTLY
 Ncopy_outof_stateThis module enables the multiphase prototype code to interact with state by copying everything required from state to ICFERST, adaptive time-stepping, outfluxes computation, tunneled BCs and Darcy velocity
 Ncv_advectionThis module contains all the tools to assemble and solve the equations and fields associated with the CV mesh, i.e. transport equation, continuity equation, DCVFE gradient matrix and the Laplacian system for the zeta-potential
 NiphreeqcIPHREEQC module from the PHREEQC project, needed to interact with PHREEQCRM
 Nmatrix_operationsThis module contain subroutines to deal with the ICFERST matrices format. This includes MATVECS and MATMAT operations All of this should be replaced by PETSc
 Nmulti_data_typesThis module contains all the ICFERST structures and associated subroutines (allocate/deallocate) Use it also to identify what a variable means since here they are described
 Nmulti_interpolationThis module contains the conservative mesh to mesh interpollation for DG fields, as described in Adam et al. 2016 doi: http://dx.doi.org/10.1016/j.jcp.2016.05.058
 Nmulti_machine_learningModule to load and call a XGBoost model
 Nmulti_phreeqcAll the subroutines required to handle the connection with PHREEQCRM
 Nmulti_pipesThis module contains all the subroutines to assemble and solve for pipes
 Nmulti_spThis module contains all the necessary subroutines to deal with self Potential in ICFERST
 Nmulti_surface_tensionThis module contains the subroutines to include surface tension. Currently only used for INERTIA
 Nmulti_toolsThis module contains the generic subroutines required by ICFERST, for example quicksort
 Nmultiphase_1d_engineThis module contain all the necessary subroutines to deal with FE-wise equations and fields. Assembling and solving of the momentum equation and associated fields such as capillary pressure, hydrostatic pressure solver, and stabilisation techniques. Also includes the assembly and solving of a Laplacian system (for zeta potential mainly)
 Nmultiphase_eosThis module contains subroutines related to the equations of state and other properties such as relative permeabilities, capillary, flash, etc
 Nmultiphase_time_loopTime-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
 NphreeqcrmFortran Documentation for the geochemical reaction module PhreeqcRM
 Nsetbasicfortrancallbackf
 Nshape_functions_linear_quadraticShape function subroutines for multi-dimensions for Quadrilaterals, Triangles, Hexaedra and Tetrahedra
 Nshape_functions_ndimThis module contains subroutines to generate the shape functions for multi dimensions
 Nshape_functions_prototypeSHAPE FUNCTIONS SUBRTS
 Nsolvers_moduleAll the subroutines associated to solving non-linear systems, Schur complement, etc
 NspactSparsity for the Matrices?
 Nsparsity_1dSubroutines associated with the CSR storage used for 1D
 Nsparsity_ndSubroutines associated with the CSR storage used in ICFERST
 Nxgb_interfaceInterface to call XGBoost library C API from fortran