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

This module contains all that is required to perform compositional modelling. NOTE THAT THIS FUNCTIONALITY HAS NEVER BEEN FULLY IMPLEMENTED ONLY INERT COMPOSITIONAL WORKS CURRENTLY. More...

Functions/Subroutines

subroutine calculate_componentabsorptionterm (packed_state, icomp, cv_ndgln, Mdims, denold, volfra_pore, mass_ele, comp_absorb)
 Calculate compositional model linkage between the phase expressed in COMP_ABSORB. Use values from the previous time step so its easier to converge. alpha_beta is the scaling coeff. of the compositional model e.g. =1.0. More...
 
subroutine calculate_componentdiffusionterm (packed_state, Mdims, CV_GIdims, CV_funs, mat_ndgln, u_ndgln, x_ndgln, ncomp_diff_coef, comp_diffusion_opt, comp_diff_coef, comp_diffusion)
 Calculate the diffusion coefficient COMP_DIFFUSION for current composition... based on page 136 in Reservoir-Simulation-Mathematical-Techniques-In-Oil-Recovery-(2007).pdf COMP_DIFFUSION_OPT, integer option defining diffusion coeff NCOMP_DIFF_COEF, integer defining how many coeff's are needed to define the diffusion COMP_DIFF_COEF( Mdimsncomp, NCOMP_DIFF_COEF, Mdimsnphase ) More...
 
subroutine proj_u2mat (COMP_DIFFUSION_OPT, Mdims, CV_GIdims, CV_funs, COMP_DIFFUSION, NCOMP_DIFF_COEF, COMP_DIFF_COEF, X_ALL, NU, NV, NW, MAT_NDGLN, U_NDGLN, X_NDGLN, MAT_U)
 Determine MAT_U from NU,NV,NW which are variables mapped to material mesh. More...
 
subroutine calc_comp_dif_ten (NDIM, UD, DIFF_molecular, DIFF_longitudinal, DIFF_transverse, DIFF_TEN)
 Calculate the diffusion coefficient COMP_DIFFUSION for current composition... based on page 136 in Reservoir-Simulation-Mathematical-Techniques-In-Oil-Recovery-(2007).pdf. More...
 
subroutine calc_kcomp2 (cv_nonods, nphase, icomp, KComp_Sigmoid, Satura, K_Comp, max_k, min_k, K_Comp2)
 Method to flash components. More...
 
real function sigmoid_function (Y, Y0, Width, LowMag, UpMag)
 Width: width of the sigmoid function. The sigmoid function, varies between ( LowMag, UpMag ). Y is the variable of the function and Y0 is the centre of the function. More...
 
real function exprep (M)
 
subroutine cal_comp_sum2one_sou (packed_state, Mdims)
 make sure the composition sums to 1.0 More...
 

Detailed Description

This module contains all that is required to perform compositional modelling. NOTE THAT THIS FUNCTIONALITY HAS NEVER BEEN FULLY IMPLEMENTED ONLY INERT COMPOSITIONAL WORKS CURRENTLY.

Function/Subroutine Documentation

◆ cal_comp_sum2one_sou()

subroutine compositional_terms::cal_comp_sum2one_sou ( type( state_type ), intent(inout)  packed_state,
type( multi_dimensions ), intent(in)  Mdims 
)

make sure the composition sums to 1.0

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calc_comp_dif_ten()

subroutine compositional_terms::calc_comp_dif_ten ( integer, intent(in)  NDIM,
real, dimension( : ), intent(in)  UD,
real, intent(in)  DIFF_molecular,
real, intent(in)  DIFF_longitudinal,
real, intent(in)  DIFF_transverse,
real, dimension( :, : ), intent(inout)  DIFF_TEN 
)

Calculate the diffusion coefficient COMP_DIFFUSION for current composition... based on page 136 in Reservoir-Simulation-Mathematical-Techniques-In-Oil-Recovery-(2007).pdf.

Here is the caller graph for this function:

◆ calc_kcomp2()

subroutine compositional_terms::calc_kcomp2 ( integer, intent(in)  cv_nonods,
integer, intent(in)  nphase,
integer, intent(in)  icomp,
logical, intent(in)  KComp_Sigmoid,
real, dimension( :, : ), intent(in)  Satura,
real, dimension( :, :, : ), intent(in)  K_Comp,
real, intent(in)  max_k,
real, intent(in)  min_k,
real, dimension( :, :, :, : ), intent(inout)  K_Comp2 
)

Method to flash components.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calculate_componentabsorptionterm()

subroutine compositional_terms::calculate_componentabsorptionterm ( type( state_type ), intent(inout)  packed_state,
integer, intent(in)  icomp,
integer, dimension( : ), intent(in)  cv_ndgln,
type(multi_dimensions), intent(in)  Mdims,
real, dimension( :, :, : ), intent(in)  denold,
real, dimension( :, : ), intent(in)  volfra_pore,
real, dimension( : ), intent(in)  mass_ele,
real, dimension( :, :, : ), intent(inout)  comp_absorb 
)

Calculate compositional model linkage between the phase expressed in COMP_ABSORB. Use values from the previous time step so its easier to converge. alpha_beta is the scaling coeff. of the compositional model e.g. =1.0.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ calculate_componentdiffusionterm()

subroutine compositional_terms::calculate_componentdiffusionterm ( type( state_type ), intent(inout)  packed_state,
type(multi_dimensions), intent(in)  Mdims,
type(multi_gi_dimensions), intent(in)  CV_GIdims,
type(multi_shape_funs), intent(in)  CV_funs,
integer, dimension( : ), intent(in)  mat_ndgln,
integer, dimension( : ), intent(in)  u_ndgln,
integer, dimension( : ), intent(in)  x_ndgln,
integer, intent(in)  ncomp_diff_coef,
integer, intent(in)  comp_diffusion_opt,
real, dimension( :, : ), intent(in)  comp_diff_coef,
real, dimension( :, :, :, : ), intent(inout)  comp_diffusion 
)

Calculate the diffusion coefficient COMP_DIFFUSION for current composition... based on page 136 in Reservoir-Simulation-Mathematical-Techniques-In-Oil-Recovery-(2007).pdf COMP_DIFFUSION_OPT, integer option defining diffusion coeff NCOMP_DIFF_COEF, integer defining how many coeff's are needed to define the diffusion COMP_DIFF_COEF( Mdimsncomp, NCOMP_DIFF_COEF, Mdimsnphase )

Here is the call graph for this function:
Here is the caller graph for this function:

◆ exprep()

real function compositional_terms::exprep ( real  M)
Here is the caller graph for this function:

◆ proj_u2mat()

subroutine compositional_terms::proj_u2mat ( integer, intent(in)  COMP_DIFFUSION_OPT,
type(multi_dimensions), intent(in)  Mdims,
type(multi_gi_dimensions), intent(in)  CV_GIdims,
type(multi_shape_funs), intent(in)  CV_funs,
real, dimension( :, :, :, : ), intent(in)  COMP_DIFFUSION,
integer, intent(in)  NCOMP_DIFF_COEF,
real, dimension( :, : ), intent(in)  COMP_DIFF_COEF,
real, dimension( :, : ), intent(in)  X_ALL,
real, dimension( : ), intent(in)  NU,
real, dimension( : ), intent(in)  NV,
real, dimension( : ), intent(in)  NW,
integer, dimension( : ), intent(in)  MAT_NDGLN,
integer, dimension( : ), intent(in)  U_NDGLN,
integer, dimension( : ), intent(in)  X_NDGLN,
real, dimension( :), intent(inout)  MAT_U 
)

Determine MAT_U from NU,NV,NW which are variables mapped to material mesh.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ sigmoid_function()

real function compositional_terms::sigmoid_function ( real  Y,
real  Y0,
real  Width,
real  LowMag,
real  UpMag 
)

Width: width of the sigmoid function. The sigmoid function, varies between ( LowMag, UpMag ). Y is the variable of the function and Y0 is the centre of the function.

The function looks like:

/

/

Here is the call graph for this function:
Here is the caller graph for this function: