ICFERST  22-06
Reservoir simulator based on DCVFEM, Dynamic Mesh optimisation and Surface-based modelling
multi_data_types.F90 File Reference
#include "fdebug.h"
Include dependency graph for multi_data_types.F90:

Data Types

interface  multi_data_types::allocate_multi_dev_shape_funs
 Allocates the required memory to store the derivatives of the shape functions. More...
 
interface  multi_data_types::allocate_multi_field
 Allocated a multi field type based on field name. More...
 
type  multi_data_types::multi_dimensions
 Data type storing all the dimensionrs describing the mesh, fields, nodes, etc. More...
 
type  multi_data_types::multi_discretization_opts
 This type includes the necessary information to choose from the different discretization options available They are a mistery even for the most advanced wizards of the realm... hopefully they can be removed in the future These parameters represent the degree of discretisation used, they are in general hardcoded based on the precision requested by the user so as said, to be removed in the future hopefully. More...
 
type  multi_data_types::multi_gi_dimensions
 Necessary information for perform gauss integration. More...
 
type  multi_data_types::multi_shape_funs
 Data structure to store all the shape functions to facilitate its movement throughtout the code. More...
 
type  multi_data_types::multi_dev_shape_funs
 Data structure to store the derivatives of the shape functions and conversors from reference element to local. More...
 
type  multi_data_types::multi_sparsity
 This type comprises the necessary variables to represent matrices using a CSR structure. More...
 
type  multi_data_types::multi_sparsities
 This data type contains all the sparsities necessary in the multiphase prototype code. More...
 
type  multi_data_types::multi_ndgln
 This type contains all the local to global conversors for the different fields we have. More...
 
type  multi_data_types::multi_matrices
 This type contains all the necessary information to solve =systems, matrices, RHS, limiters, colouring and also flags to decide which sort of matrices are generated. More...
 
type  multi_data_types::porous_adv_coefs
 Required values to compute the fluxes for porous media. Effectively the sigma terms from the papers Currently they are oversized since apart from the permeability they are not tensors, this should be changed! More...
 
type  multi_data_types::multi_field
 Type created to store absorption terms in a compacted way associated subroutines where created to be used with these fields. More...
 
type  multi_data_types::multi_absorption
 Comprises all the absorption terms that migth be required. More...
 
type  multi_data_types::multi_transport_scalar
 Contains all the information for generic scalar fields to solve for. More...
 
type  multi_data_types::multi_pipe_package
 Contains all the information required to model pipes. Many of these fields are unnecessary or even undesired... More...
 
type  multi_data_types::multi_outfluxes
 Contains variables to analyse the flux across the BCs that the user is interested. More...
 
type  multi_data_types::pipe_coords
 Type containing everything required to indentify and store which nodes contain a well/pipe. More...
 

Modules

module  multi_data_types
 This 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.
 

Functions/Subroutines

subroutine multi_data_types::deallocate_multi_field (mfield, and_destroy)
 Deallocation of a multi field type. More...
 
subroutine multi_data_types::deallocate_multi_absorption (multi_absorp, and_destroy)
 Deallocation of all of the multi field types within multi_absorp. More...
 
subroutine multi_data_types::get_multi_field (mfield, inode_in, output)
 Given a multi field returns an array with its values at inode_in. More...
 
subroutine multi_data_types::get_multi_field_inverse (mfield, inode_in, output)
 Given a multi field returns the inverse as an array with its values at inode_in. More...
 
subroutine multi_data_types::print_multi_field (mfield, inode_in, dimension)
 Given a multi field returns prints its values at inode_in. More...
 
subroutine multi_data_types::add_array_to_multi_field (mfield, b, xpos, ypos, inode)
 This subroutine performs the addition of an array and a multifield and returns the multifield mfield = mfield + b xpos and ypos are the starting positions for a full matrix they have to be one. More...
 
subroutine multi_data_types::add_multi_field_to_array (mfield, b, xpos, ypos, inode, a_in)
 This subroutine performs the addition of an array and a multifield and returns the array b = b + a * mfield xpos and ypos are the starting positions for a full matrix they have to be one. More...
 
subroutine multi_data_types::mult_multi_field_by_array (mfield, b, inode)
 This subroutine performs the multiplication of an array and a multifield and returns the multifield mfield = mfield * b. More...
 
subroutine multi_data_types::mult_multi_field_by_array_on_array (mfield, b, inode)
 This subroutine performs the multiplication of an array and a multifield and returns the array b = mfield * b. More...
 
subroutine multi_data_types::scale_multi_field (mfield, a, inode)
 This subroutine rescales a multifield mfield = a * mfield. More...
 
subroutine multi_data_types::linearise_multi_field (mfield, Mdims, ndgln)
 This subroutine linearises a multifield. i.e. takes it from P2 to P1. More...
 
subroutine multi_data_types::allocate_multi_shape_funs (shape_fun, Mdims, GIdims)
 This subroutine allocates and initialises to zero all the arrays in a multi_shape_funs data type It uses the Dimensions of the model and the gauss integration to be used to allocate the necessary shape functions. More...
 
subroutine multi_data_types::deallocate_multi_shape_funs (shape_fun)
 This subroutine deallocates and nullifies all the fields inside multi_shape_funs. More...
 
subroutine multi_data_types::deallocate_projection_matrices (shape_fun)
 This subroutine deallocates projection matrices CV2FE & FE2CV stored in shape_fun. More...
 
subroutine multi_data_types::allocate_multi_sparsities (Mspars, Mdims, mx_ncolacv, mx_ncoldgm_pha, mx_nct, mx_nc, mx_ncolm, mx_ncolph)
 This subroutine allocates part of the memory inside Mspars, i.e. sparsities of the different matrices IMPORTANT: Despite this subroutine can be called by itself it is highly recommended to be called ONLY through multi_sparsity/Get_Sparsity_Patterns. More...
 
subroutine multi_data_types::deallocate_multi_sparsities (Mspars)
 This subroutine deallocates all the memory inside Mspars. More...
 
subroutine multi_data_types::allocate_multi_ndgln (ndgln, Mdims)
 This subroutine allocates the global to local conversors. More...
 
subroutine multi_data_types::deallocate_multi_ndgln (ndgln)
 Deallocates Global to local fields NOTE that Only deallocates suf_cv, suf_p and suf_u since the others are pointers to state. More...
 
subroutine multi_data_types::destroy_multi_matrices (Mmat)
 Deallocates and nullifies the memory generated for the matrices, it is to be used after adapting the mesh. More...
 
subroutine multi_data_types::deallocate_multi_dev_shape_funs (DevFuns)
 Deallocates the required memory to store the derivatives of the shape functions. More...
 
subroutine multi_data_types::allocate_porous_adv_coefs (Mdims, upwnd)
 Allocates the memory for the advection coefficients for porous media. More...
 
subroutine multi_data_types::deallocate_porous_adv_coefs (upwnd)
 Deallocates the memory for the advection coefficients for porous media. More...
 
subroutine multi_data_types::allocate_multi_pipe_package (pipes, Mdims, Mspars)
 Allocates the necessary memory for multi_pipe_package. More...
 
subroutine multi_data_types::deallocate_multi_pipe_package (pipes)
 Deallocates the necessary memory for multi_pipe_package. More...
 
subroutine multi_data_types::initialize_multi_outfluxes (outfluxes)
 Read in the surface IDs of the boundaries (if any) that you wish to integrate over into the (integer vector) variable outfluxesoutlet_id and stores them into the multi_outfluxes field. More...
 
subroutine multi_data_types::allocate_multi_outfluxes (Mdims, outfluxes)
 Initialises memory for outfluxes. More...
 
subroutine multi_data_types::destroy_multi_outfluxes (outfluxes)
 Deallocates the multi_outfluxes field. More...