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

SHAPE FUNCTIONS SUBRTS. More...

Data Types

interface  detnlxr_plus_u
 Subroutine to compute the derivatives of the inputed shape functions. More...
 

Functions/Subroutines

subroutine shape_cv_n (ndim, cv_ele_type, cv_ngi, cv_nloc, u_nloc, cvn, cvweigh, n, nlx, nly, nlz, un, unlx, unly, unlz)
 SHAPESV AND RELATED SUBRTS & FUNCTIONS Shape functions associated with volume integration using both CV basis functions CVN as well as FEM basis functions N (and its derivatives NLX, NLY, NLZ) also for velocity basis functions UN, UNLX, UNLY, UNLZ. More...
 
subroutine cv_fem_shape_funs (shape_fun, Mdims, GIdims, cv_ele_type, QUAD_OVER_WHOLE_ELE)
 This subrt defines the sub-control volume and FEM shape functions. Shape functions associated with volume integration using both CV basis functions CVN as well as FEM basis functions CVFEN (and its derivatives CVFENLX, CVFENLY, CVFENLZ) More...
 
subroutine det_suf_ele_shape (SCVNGI, NFACE, CVFEM_ON_FACE, CV_NLOC, SCVFEN, SCVFENSLX, SCVFENSLY, SCVFEWEIGH, SCVFENLX, SCVFENLY, SCVFENLZ, U_NLOC, SUFEN, SUFENSLX, SUFENSLY, SUFENLX, SUFENLY, SUFENLZ, SBCVNGI, SBCVFEN, SBCVFENSLX, SBCVFENSLY, SBCVFEWEIGH, SBCVFENLX, SBCVFENLY, SBCVFENLZ, SBUFEN, SBUFENSLX, SBUFENSLY, SBUFENLX, SBUFENLY, SBUFENLZ, CV_SLOCLIST, U_SLOCLIST, CV_SNLOC, U_SNLOC, NDIM, CV_ELE_TYPE)
 this subroutine generates the FE basis functions, weights and the derivatives of the shape functions for a variety of elements on the control volume boundaries. The routine also generates the shape functions and derivatives associated with the CV surfaces and also the FV basis functions. More...
 
subroutine scvfen_2_sbcvfen (cv_nloc, cv_snloc, scvngi, sbcvngi, cv_nloc_cells, cv_snloc_cells, cvfem_on_face, sbcvfen, sbcvfenslx, sbcvfensly, sbcvfenlx, sbcvfenly, sbcvfenlz, sbcvfeweigh, scvfen, scvfenslx, scvfensly, scvfenlx, scvfenly, scvfenlz, scvfeweigh)
 Compute SBCVFEN from SCVFEN. More...
 
subroutine shapesv_fem_plus (scvngi, cv_neiloc, cv_on_face, cvfem_on_face, ufem_on_face, cv_ele_type, cv_nloc, scvfen, scvfenslx, scvfensly, scvfeweigh, scvfenlx, scvfenly, scvfenlz, u_nloc, sufen, sufenslx, sufensly, sufenlx, sufenly, sufenlz, ndim)
 This subroutine generates the FE basis functions, weights and the derivatives of the shape functions for a variety of elements on the control volume boundaries. The routine also generates the shape functions and derivatives associated with the CV surfaces and also the FV basis functions. More...
 
subroutine fv_1d_quad (SCVNGI, CV_NLOC, SCVFEN, SCVFENSLX, SCVFENSLY, SCVFEWEIGH, SCVFENLX, SCVFENLY, SCVFENLZ)
 this subroutine generates the FE basis functions, weights and the derivatives of the shape functions for a variety of elements. The routine also generates the shape functions and derivatives associated with the CV surfaces and also the FV basis functions. More...
 
subroutine fvquad (NGI, NLOC, SVNGI, M, SVN, SVNLX, SVWEIGH)
 this routine generates the shape functions associated with the FV's i.e. their surfaces and volume shape functions and derivatives. The surface shape functions are the values of the FE volume shape functions evaluated on the surfaces of the CV's. More...
 
subroutine fvhex (NGI, NLOC, SVNGI, M, SVN, SVNLX, SVNLY, SVWEIGH)
 this routine generates the shape functions associated with the FV's i.e. their surfaces and volume shape functions and derivatives. More...
 
subroutine fvqquad (NGI, NLOC, SVNGI, M, SVN, SVNLX, SVWEIGH)
 this routine generates the shape functions associated with the FV's i.e. their surfaces and volume shape functions and derivatives. The surface shape functions are the values of the FE volume shape functions evaluated on the surfaces of the CV's. More...
 
subroutine fvqhex (NGI, NLOC, SVNGI, M, SVN, SVNLX, SVNLY, SVWEIGH)
 this routine generates the shape functions associated with the FV's i.e. their surfaces and volume shape functions and derivatives. The surface shape functions are the values of the FE volume shape functions evaluated on the surfaces of the CV's. More...
 
subroutine volnei (NEILOC, FEM_NEILOC, NLOC, SVNGI, CV_ELE_TYPE)
 this subroutine calculates NEILOC which is the array containing information given a local node and an integration point what is the other opposing local node. It contains -1 if on the boundary of of the element. More...
 
subroutine u_volnei (cv_ele_type, cv_nloc, u_nloc, scvngi, cv_neiloc, u_on_face)
 This subroutine calculates U_ON_FACE, a logical that works -! in a similar way of CV_ON_FACE. -! More...
 
subroutine gaussiloc (FINDGPTS, COLGPTS, NCOLGPTS, NEILOC, NLOC, SVNGI)
 This subroutine calculates FINDGPTS,COLGPTS,NCOLGPTS which contains given a local node ILOC the Gauss pts that are used to integrate around this local node. More...
 
subroutine detnlxr_plus_u1 (ELE, X_ALL, XONDGL, weight, cvshape, cvshapelx, ushapelx, DevFuns)
 Subroutine to compute the derivatives of the inputed shape functions. More...
 
subroutine detnlxr_plus_u2 (ELE, X, Y, Z, XONDGL, TOTELE, NONODS, X_NLOC, CV_NLOC, NGI, N, NLX, NLY, NLZ, WEIGHT, DETWEI, RA, VOLUME, D1, D3, DCYL, NX_ALL, U_NLOC, UNLX, UNLY, UNLZ, UNX_ALL)
 Subroutine to compute the derivatives of the inputed shape functions. More...
 

Detailed Description

SHAPE FUNCTIONS SUBRTS.

Function/Subroutine Documentation

◆ cv_fem_shape_funs()

subroutine shape_functions_prototype::cv_fem_shape_funs ( type(multi_shape_funs), intent(inout)  shape_fun,
type (multi_dimensions), intent(in)  Mdims,
type (multi_gi_dimensions), intent(in)  GIdims,
integer, intent(in)  cv_ele_type,
logical, intent(in)  QUAD_OVER_WHOLE_ELE 
)

This subrt defines the sub-control volume and FEM shape functions. Shape functions associated with volume integration using both CV basis functions CVN as well as FEM basis functions CVFEN (and its derivatives CVFENLX, CVFENLY, CVFENLZ)

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

◆ det_suf_ele_shape()

subroutine shape_functions_prototype::det_suf_ele_shape ( integer, intent(in)  SCVNGI,
integer, intent(in)  NFACE,
logical, dimension( cv_nloc, scvngi ), intent(in)  CVFEM_ON_FACE,
integer, intent(in)  CV_NLOC,
real, dimension( cv_nloc, scvngi ), intent(in)  SCVFEN,
real, dimension( cv_nloc, scvngi ), intent(in)  SCVFENSLX,
real, dimension( cv_nloc, scvngi ), intent(in)  SCVFENSLY,
real, dimension( scvngi ), intent(inout)  SCVFEWEIGH,
real, dimension( cv_nloc, scvngi ), intent(in)  SCVFENLX,
real, dimension( cv_nloc, scvngi ), intent(in)  SCVFENLY,
real, dimension( cv_nloc, scvngi ), intent(in)  SCVFENLZ,
integer, intent(in)  U_NLOC,
real, dimension( u_nloc, scvngi ), intent(in)  SUFEN,
real, dimension( u_nloc, scvngi ), intent(in)  SUFENSLX,
real, dimension( u_nloc, scvngi ), intent(in)  SUFENSLY,
real, dimension( u_nloc, scvngi ), intent(in)  SUFENLX,
real, dimension( u_nloc, scvngi ), intent(in)  SUFENLY,
real, dimension( u_nloc, scvngi ), intent(in)  SUFENLZ,
integer, intent(in)  SBCVNGI,
real, dimension( cv_snloc, sbcvngi ), intent(inout)  SBCVFEN,
real, dimension( cv_snloc, sbcvngi ), intent(inout)  SBCVFENSLX,
real, dimension( cv_snloc, sbcvngi ), intent(inout)  SBCVFENSLY,
real, dimension( sbcvngi ), intent(inout)  SBCVFEWEIGH,
real, dimension( cv_snloc, sbcvngi ), intent(inout)  SBCVFENLX,
real, dimension( cv_snloc, sbcvngi ), intent(inout)  SBCVFENLY,
real, dimension( cv_snloc, sbcvngi ), intent(inout)  SBCVFENLZ,
real, dimension( u_snloc, sbcvngi ), intent(inout)  SBUFEN,
real, dimension( u_snloc, sbcvngi ), intent(inout)  SBUFENSLX,
real, dimension( u_snloc, sbcvngi ), intent(inout)  SBUFENSLY,
real, dimension( u_snloc, sbcvngi ), intent(inout)  SBUFENLX,
real, dimension( u_snloc, sbcvngi ), intent(inout)  SBUFENLY,
real, dimension( u_snloc, sbcvngi ), intent(inout)  SBUFENLZ,
integer, dimension( nface, cv_snloc ), intent(inout)  CV_SLOCLIST,
integer, dimension( nface, u_snloc ), intent(inout)  U_SLOCLIST,
integer, intent(in)  CV_SNLOC,
integer, intent(in)  U_SNLOC,
integer, intent(in)  NDIM,
integer, intent(in)  CV_ELE_TYPE 
)

this subroutine generates the FE basis functions, weights and the derivatives of the shape functions for a variety of elements on the control volume boundaries. The routine also generates the shape functions and derivatives associated with the CV surfaces and also the FV basis functions.

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

◆ detnlxr_plus_u1()

subroutine shape_functions_prototype::detnlxr_plus_u1 ( integer, intent(in)  ELE,
real, dimension(:,:), intent(in)  X_ALL,
integer, dimension( : ), intent(in)  XONDGL,
real, dimension(:), intent(in)  weight,
real, dimension(:,:), intent(in)  cvshape,
real, dimension(:,:,:), intent(in)  cvshapelx,
real, dimension(:,:,:), intent(in)  ushapelx,
type (multi_dev_shape_funs DevFuns 
)

Subroutine to compute the derivatives of the inputed shape functions.

◆ detnlxr_plus_u2()

subroutine shape_functions_prototype::detnlxr_plus_u2 ( integer, intent(in)  ELE,
real, dimension( : ), intent(in)  X,
real, dimension( : ), intent(in)  Y,
real, dimension( : ), intent(in)  Z,
integer, dimension( : ), intent(in)  XONDGL,
integer, intent(in)  TOTELE,
integer, intent(in)  NONODS,
integer, intent(in)  X_NLOC,
integer, intent(in)  CV_NLOC,
integer, intent(in)  NGI,
real, dimension( :, : ), intent(in)  N,
real, dimension( :, : ), intent(in)  NLX,
real, dimension( :, : ), intent(in)  NLY,
real, dimension( :, : ), intent(in)  NLZ,
real, dimension( : ), intent(in)  WEIGHT,
real, dimension(:), intent(inout)  DETWEI,
real, dimension(:), intent(inout)  RA,
real, intent(inout)  VOLUME,
logical, intent(in)  D1,
logical, intent(in)  D3,
logical, intent(in)  DCYL,
real, dimension(:,:,:), intent(inout)  NX_ALL,
integer, intent(in)  U_NLOC,
real, dimension( :, : ), intent(in)  UNLX,
real, dimension( :, : ), intent(in)  UNLY,
real, dimension( :, : ), intent(in)  UNLZ,
real, dimension(:,:,:), intent(inout)  UNX_ALL 
)

Subroutine to compute the derivatives of the inputed shape functions.

◆ fv_1d_quad()

subroutine shape_functions_prototype::fv_1d_quad ( integer, intent(in)  SCVNGI,
integer, intent(in)  CV_NLOC,
real, dimension( cv_nloc, scvngi ), intent(inout)  SCVFEN,
real, dimension( cv_nloc, scvngi ), intent(inout)  SCVFENSLX,
real, dimension( cv_nloc, scvngi ), intent(inout)  SCVFENSLY,
real, dimension( scvngi ), intent(inout)  SCVFEWEIGH,
real, dimension( cv_nloc, scvngi ), intent(inout)  SCVFENLX,
real, dimension( cv_nloc, scvngi ), intent(inout)  SCVFENLY,
real, dimension( cv_nloc, scvngi ), intent(inout)  SCVFENLZ 
)

this subroutine generates the FE basis functions, weights and the derivatives of the shape functions for a variety of elements. The routine also generates the shape functions and derivatives associated with the CV surfaces and also the FV basis functions.

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

◆ fvhex()

subroutine shape_functions_prototype::fvhex ( integer  NGI,
integer  NLOC,
integer  SVNGI,
real, dimension(nloc,ngi)  M,
real, dimension(nloc,svngi)  SVN,
real, dimension(nloc,svngi)  SVNLX,
real, dimension(nloc,svngi)  SVNLY,
real, dimension(svngi)  SVWEIGH 
)

this routine generates the shape functions associated with the FV's i.e. their surfaces and volume shape functions and derivatives.

Here is the caller graph for this function:

◆ fvqhex()

subroutine shape_functions_prototype::fvqhex ( integer  NGI,
integer  NLOC,
integer  SVNGI,
real, dimension(nloc,ngi)  M,
real, dimension(nloc,svngi)  SVN,
real, dimension(nloc,svngi)  SVNLX,
real, dimension(nloc,svngi)  SVNLY,
real, dimension(svngi)  SVWEIGH 
)

this routine generates the shape functions associated with the FV's i.e. their surfaces and volume shape functions and derivatives. The surface shape functions are the values of the FE volume shape functions evaluated on the surfaces of the CV's.

Here is the caller graph for this function:

◆ fvqquad()

subroutine shape_functions_prototype::fvqquad ( integer  NGI,
integer  NLOC,
integer  SVNGI,
real, dimension(nloc,ngi)  M,
real, dimension(nloc,svngi)  SVN,
real, dimension(nloc,svngi)  SVNLX,
real, dimension(svngi)  SVWEIGH 
)

this routine generates the shape functions associated with the FV's i.e. their surfaces and volume shape functions and derivatives. The surface shape functions are the values of the FE volume shape functions evaluated on the surfaces of the CV's.

Here is the caller graph for this function:

◆ fvquad()

subroutine shape_functions_prototype::fvquad ( integer  NGI,
integer  NLOC,
integer  SVNGI,
real, dimension(nloc,ngi)  M,
real, dimension(nloc,svngi)  SVN,
real, dimension(nloc,svngi)  SVNLX,
real, dimension(svngi)  SVWEIGH 
)

this routine generates the shape functions associated with the FV's i.e. their surfaces and volume shape functions and derivatives. The surface shape functions are the values of the FE volume shape functions evaluated on the surfaces of the CV's.

Here is the caller graph for this function:

◆ gaussiloc()

subroutine shape_functions_prototype::gaussiloc ( integer, dimension( nloc + 1 ), intent(inout)  FINDGPTS,
integer, dimension( nloc * svngi ), intent(inout)  COLGPTS,
integer, intent(inout)  NCOLGPTS,
integer, dimension( nloc, svngi ), intent(in)  NEILOC,
integer, intent(in)  NLOC,
integer, intent(in)  SVNGI 
)

This subroutine calculates FINDGPTS,COLGPTS,NCOLGPTS which contains given a local node ILOC the Gauss pts that are used to integrate around this local node.

Here is the caller graph for this function:

◆ scvfen_2_sbcvfen()

subroutine shape_functions_prototype::scvfen_2_sbcvfen ( integer, intent(in)  cv_nloc,
integer, intent(in)  cv_snloc,
integer, intent(in)  scvngi,
integer, intent(in)  sbcvngi,
integer, intent(in)  cv_nloc_cells,
integer, intent(in)  cv_snloc_cells,
logical, dimension( cv_nloc_cells, scvngi ), intent(in)  cvfem_on_face,
real, dimension( cv_snloc, sbcvngi ), intent(inout)  sbcvfen,
real, dimension( cv_snloc, sbcvngi ), intent(inout)  sbcvfenslx,
real, dimension( cv_snloc, sbcvngi ), intent(inout)  sbcvfensly,
real, dimension( cv_snloc, sbcvngi ), intent(inout)  sbcvfenlx,
real, dimension( cv_snloc, sbcvngi ), intent(inout)  sbcvfenly,
real, dimension( cv_snloc, sbcvngi ), intent(inout)  sbcvfenlz,
real, dimension( sbcvngi ), intent(inout)  sbcvfeweigh,
real, dimension( cv_nloc, scvngi ), intent(in)  scvfen,
real, dimension( cv_nloc, scvngi ), intent(in)  scvfenslx,
real, dimension( cv_nloc, scvngi ), intent(in)  scvfensly,
real, dimension( cv_nloc, scvngi ), intent(in)  scvfenlx,
real, dimension( cv_nloc, scvngi ), intent(in)  scvfenly,
real, dimension( cv_nloc, scvngi ), intent(in)  scvfenlz,
real, dimension( scvngi ), intent(in)  scvfeweigh 
)

Compute SBCVFEN from SCVFEN.

Here is the caller graph for this function:

◆ shape_cv_n()

subroutine shape_functions_prototype::shape_cv_n ( integer, intent(in)  ndim,
integer, intent(in)  cv_ele_type,
integer, intent(in)  cv_ngi,
integer, intent(in)  cv_nloc,
integer, intent(in)  u_nloc,
real, dimension( cv_nloc, cv_ngi ), intent(inout)  cvn,
real, dimension( cv_ngi ), intent(inout)  cvweigh,
real, dimension( cv_nloc, cv_ngi ), intent(inout)  n,
real, dimension( cv_nloc, cv_ngi ), intent(inout)  nlx,
real, dimension( cv_nloc, cv_ngi ), intent(inout)  nly,
real, dimension( cv_nloc, cv_ngi ), intent(inout)  nlz,
real, dimension( u_nloc, cv_ngi ), intent(inout)  un,
real, dimension( u_nloc, cv_ngi ), intent(inout)  unlx,
real, dimension( u_nloc, cv_ngi ), intent(inout)  unly,
real, dimension( u_nloc, cv_ngi ), intent(inout)  unlz 
)

SHAPESV AND RELATED SUBRTS & FUNCTIONS Shape functions associated with volume integration using both CV basis functions CVN as well as FEM basis functions N (and its derivatives NLX, NLY, NLZ) also for velocity basis functions UN, UNLX, UNLY, UNLZ.

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

◆ shapesv_fem_plus()

subroutine shape_functions_prototype::shapesv_fem_plus ( integer, intent(in)  scvngi,
integer, dimension( cv_nloc, scvngi ), intent(inout)  cv_neiloc,
logical, dimension( cv_nloc, scvngi ), intent(inout)  cv_on_face,
logical, dimension( cv_nloc, scvngi ), intent(inout)  cvfem_on_face,
logical, dimension( u_nloc, scvngi ), intent(inout)  ufem_on_face,
integer, intent(in)  cv_ele_type,
integer, intent(in)  cv_nloc,
real, dimension( cv_nloc, scvngi ), intent(inout)  scvfen,
real, dimension( cv_nloc, scvngi ), intent(inout)  scvfenslx,
real, dimension( cv_nloc, scvngi ), intent(inout)  scvfensly,
real, dimension( scvngi ), intent(inout)  scvfeweigh,
real, dimension( cv_nloc, scvngi ), intent(inout)  scvfenlx,
real, dimension( cv_nloc, scvngi ), intent(inout)  scvfenly,
real, dimension( cv_nloc, scvngi ), intent(inout)  scvfenlz,
integer, intent(in)  u_nloc,
real, dimension( u_nloc, scvngi ), intent(inout)  sufen,
real, dimension( u_nloc, scvngi ), intent(inout)  sufenslx,
real, dimension( u_nloc, scvngi ), intent(inout)  sufensly,
real, dimension( u_nloc, scvngi ), intent(inout)  sufenlx,
real, dimension( u_nloc, scvngi ), intent(inout)  sufenly,
real, dimension( u_nloc, scvngi ), intent(inout)  sufenlz,
integer, intent(in)  ndim 
)

This subroutine generates the FE basis functions, weights and the derivatives of the shape functions for a variety of elements on the control volume boundaries. The routine also generates the shape functions and derivatives associated with the CV surfaces and also the FV basis functions.

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

◆ u_volnei()

subroutine shape_functions_prototype::u_volnei ( integer, intent(in)  cv_ele_type,
integer, intent(in)  cv_nloc,
integer, intent(in)  u_nloc,
integer, intent(in)  scvngi,
integer, dimension( cv_nloc, scvngi ), intent(in)  cv_neiloc,
logical, dimension( u_nloc, scvngi ), intent(inout)  u_on_face 
)

This subroutine calculates U_ON_FACE, a logical that works -! in a similar way of CV_ON_FACE. -!

◆ volnei()

subroutine shape_functions_prototype::volnei ( integer, dimension( nloc, svngi ), intent(inout)  NEILOC,
integer, dimension( nloc, svngi ), intent(inout)  FEM_NEILOC,
integer, intent(in)  NLOC,
integer, intent(in)  SVNGI,
integer, intent(in)  CV_ELE_TYPE 
)

this subroutine calculates NEILOC which is the array containing information given a local node and an integration point what is the other opposing local node. It contains -1 if on the boundary of of the element.

Here is the caller graph for this function: