OpenCMISS-Iron Internal API Documentation
basis_routines Module Reference

This module contains all basis function routines. More...

Data Types

interface  basis_collapsed_xi_set
 Sets/changes the collapsed Xi flags for a basis. More...
 
interface  basis_evaluate_xi
 Evaluates the appropriate partial derivative index for the specificied basis function at a Xi location. More...
 
interface  basis_gauss_points_calculate
 Evaluates the list of gauss points and weights for a given basis type and order. More...
 
interface  basis_interpolate_gauss
 Interpolates the appropriate partial derivative index of the elements parameters for basis function at a Gauss point. More...
 
interface  basis_interpolate_local_face_gauss
 Interpolates the requested partial derivative index(ices) of the element parameters for basis function at a face Gauss point. More...
 
interface  basis_interpolate_xi
 Interpolates the appropriate partial derivative index of the elements parameters for basis function at Xi location. More...
 
interface  basis_interpolation_xi_set
 Sets/changes the interpolation type in each Xi direction for a basis. More...
 
interface  basis_lhtp_basis_evaluate
 Evaluates the Lagrange/Hermite/Fourier tensor product basis function for the given basis. More...
 
interface  basis_number_of_xi_set
 Sets/changes the number of Xi directions for a basis. More...
 
interface  basis_quadrature_order_set
 Sets/changes the order of a quadrature for a basis quadrature. More...
 
interface  basis_quadrature_type_set
 Sets/changes the quadrature type for a basis. More...
 
interface  basis_type_set
 Sets/changes the type for a basis. More...
 
interface  simplex_cubic_evaluate
 
interface  simplex_linear_evaluate
 
interface  simplex_quadratic_evaluate
 

Functions/Subroutines

subroutine, public bases_finalise (ERR, ERROR,)
 Finalises the bases and deallocates all memory. More...
 
subroutine, public bases_initialise (ERR, ERROR,)
 Initialises the bases. More...
 
subroutine, public basis_create_finish (BASIS, ERR, ERROR,)
 Finishes the creation of a new basis. More...
 
subroutine, public basis_create_start (USER_NUMBER, BASIS, ERR, ERROR,)
 Starts the creation of a new basis The default values of the BASIS attributes are: More...
 
recursive subroutine basis_destroy_number (USER_NUMBER, ERR, ERROR,)
 Destroys a basis identified by its basis user number. More...
 
recursive subroutine, public basis_destroy (BASIS, ERR, ERROR,)
 Destroys a basis. More...
 
real(dp) function basis_evaluate_xi_dp (BASIS, ELEMENT_PARAMETER_INDEX, PARTIAL_DERIV_INDEX, XI, ERR, ERROR)
 Evaluates the appropriate partial derivative index at position XI for the basis for double precision arguments. Note for simplex basis functions the XI coordinates should exclude the last area coordinate. More...
 
subroutine basis_gauss_points_calculate_dp (basis, order, numCoords, numberGaussPoints, gaussPoints, gaussWeights, err, error,)
 Calculates the gauss points and weights for a basis function of a particular order. More...
 
recursive subroutine basis_family_destroy (USER_NUMBER, FAMILY_NUMBER, ERR, ERROR,)
 Destroys a basis identified by its basis user number and family number. Called from the library visible routine BASIS_DESTROY. More...
 
recursive subroutine basis_family_number_find (USER_NUMBER, FAMILY_NUMBER, BASIS, ERR, ERROR,)
 Finds and returns in BASIS a pointer to the basis with the given USER_NUMBER and FAMILY_NUMBER. If no basis with that number and family number exists then BASIS is returned nullified. More...
 
subroutine basis_finalise (BASIS, ERR, ERROR,)
 Finalises a basis and deallocates all memory. More...
 
subroutine basis_initialise (BASIS, ERR, ERROR,)
 Initialises a basis. More...
 
real(dp) function basis_interpolate_gauss_dp (BASIS, PARTIAL_DERIV_INDEX, QUADRATURE_SCHEME, GAUSS_POINT_NUMBER, ELEMENT_PARAMETERS, ERR, ERROR)
 Interpolates the appropriate partial derivative index of the element parameters at a gauss point for the basis for double precision arguments. Note the interpolated value returned needs to be adjusted for the particular >coordinate system with COORDINATE_INTERPOLATE_ADJUST. More...
 
real(dp) function basis_interpolate_local_face_gauss_dp (BASIS, PARTIAL_DERIV_INDEX, QUADRATURE_SCHEME, LOCAL_FACE_NUMBER, GAUSS_POINT_NUMBER, FACE_PARAMETERS, ERR, ERROR)
 Interpolates the appropriate partial derivative index of the element local face parameters at a face gauss point for the basis for double precision arguments. Note the interpolated value returned needs to be adjusted for the particular >coordinate system with COORDINATE_INTERPOLATE_ADJUST. More...
 
real(dp) function basis_interpolate_xi_dp (BASIS, PARTIAL_DERIV_INDEX, XI, ELEMENT_PARAMETERS, ERR, ERROR)
 Interpolates the appropriate partial derivative index of the element parameters at position XI for the basis for double precision arguments. Note the interpolated value returned needs to be adjusted for the particular coordinate system with COORDINATE_INTERPOLATE_ADJUST. Note for simplex basis functions the XI coordinates should exclude the last area coordinate. More...
 
subroutine, public basis_interpolation_xi_get (BASIS, INTERPOLATION_XI, ERR, ERROR,)
 Gets/changes the interpolation type in each xi directions for a basis identified by a pointer. More...
 
subroutine basis_interpolation_xi_set_number (USER_NUMBER, INTERPOLATION_XI, ERR, ERROR,)
 Sets/changes the interpolation type in each xi directions where the basis is identified by user number. More...
 
subroutine basis_interpolation_xi_set_ptr (BASIS, INTERPOLATION_XI, ERR, ERROR,)
 Sets/changes the interpolation type in each xi directions for a basis identified by a pointer. More...
 
subroutine basis_lhtpbasiscreate (basis, err, error,)
 Creates and initialises a Lagrange-Hermite tensor product basis that has already been allocated BASIS_CREATE_START. More...
 
real(dp) function basis_lhtp_basis_evaluate_dp (BASIS, NODE_NUMBER, DERIVATIVE_NUMBER, PARTIAL_DERIV_INDEX, XI, ERR, ERROR)
 Evaluates the double precision Lagrange/Hermite/Fourier tensor product basis function for the given BASIS. More...
 
subroutine basis_lhtp_family_create (BASIS, ERR, ERROR,)
 Creates and initialises a Lagrange-Hermite tensor product basis family that has already been allocated by BASIS_CREATE_START. More...
 
subroutine basis_radial_family_create (BASIS, ERR, ERROR,)
 Creates and initialises a Radial basis family that has already been allocated by BASIS_CREATE_START. More...
 
subroutine, public basis_local_node_xi_calculate (BASIS, LOCAL_NODE_NUMBER, XI, ERR, ERROR,)
 Calculates the xi location of a local node in a basis. More...
 
subroutine, public basis_number_of_local_nodes_get (BASIS, NUMBER_OF_LOCAL_NODES, ERR, ERROR,)
 Returns the number of local nodes in the specified basis. More...
 
subroutine, public basis_number_of_xi_get (BASIS, NUMBER_OF_XI, ERR, ERROR,)
 Gets the number of xi directions for a basis. More...
 
subroutine basis_number_of_xi_set_number (USER_NUMBER, NUMBER_OF_XI, ERR, ERROR,)
 Sets/changes the number of xi directions where the basis is identified by user number. More...
 
subroutine basis_number_of_xi_set_ptr (BASIS, NUMBER_OF_XI, ERR, ERROR,)
 Sets/changes the number of xi directions for a basis identified by a pointer. More...
 
subroutine basis_quadrature_create (BASIS, ERR, ERROR,)
 Creates the quadrature and quadrature schemes on a basis. More...
 
subroutine, public basis_quadrature_destroy (QUADRATURE, ERR, ERROR,)
 Destroys a quadrature on a given basis and deallocates all memory. More...
 
subroutine basis_quadrature_finalise (BASIS, ERR, ERROR,)
 Finalises a quadrature on a given basis and deallocates all memory. More...
 
subroutine basis_quadrature_initialise (BASIS, ERR, ERROR,)
 Initialises a quadrature on the given basis. More...
 
subroutine, public basis_quadrature_number_of_gauss_xi_get (BASIS, QUADRATURE_NUMBER_OF_GAUSS_XI, ERR, ERROR,)
 Get the number of Gauss points in each xi direction on a basis quadrature identified by a pointer. More...
 
subroutine, public basis_quadrature_number_of_gauss_xi_set (BASIS, NUMBER_OF_GAUSS_XI, ERR, ERROR,)
 Sets/changes the number of Gauss points in each xi direction on a basis quadrature identified by a pointer. More...
 
subroutine, public basis_quadrature_single_gauss_xi_get (BASIS, SCHEME, GAUSS_POINT, GAUSS_XI, ERR, ERROR,)
 Returns the xi positions of a Gauss point on a basis quadrature identified by a pointer. More...
 
subroutine, public basis_quadrature_multiple_gauss_xi_get (BASIS, SCHEME, GAUSS_POINTS, GAUSS_XI, ERR, ERROR,)
 Returns the xi positions of Gauss points on a basis quadrature identified by a pointer. If no Gauss points are specified then xi positions of all Gauss points are returned. More...
 
subroutine, public basis_quadrature_order_get (BASIS, QUADRATURE_ORDER, ERR, ERROR,)
 Get the order of a quadrature for a basis quadrature identified by a pointer. More...
 
subroutine basis_quadrature_order_set_number (USER_NUMBER, ORDER, ERR, ERROR,)
 Sets/changes the order of a quadrature for a basis quadrature identified by a user number. More...
 
subroutine basis_quadrature_order_set_ptr (BASIS, ORDER, ERR, ERROR,)
 Sets/changes the order of a quadrature for a basis quadrature identified by a pointer. More...
 
subroutine, public basis_quadrature_type_get (BASIS, QUADRATURE_TYPE, ERR, ERROR,)
 get the quadrature type on a basis identified by a pointer. More...
 
subroutine basis_quadrature_type_set_number (USER_NUMBER, TYPE, ERR, ERROR,)
 Sets/changes the quadrature type for a basis quadrature identified by a user number. More...
 
subroutine basis_quadrature_type_set_ptr (BASIS, TYPE, ERR, ERROR,)
 Sets/changes the quadrature type on a basis identified by a pointer. More...
 
subroutine, public basis_quadraturelocalfacegaussevaluateset (BASIS, FACE_GAUSS_EVALUATE, ERR, ERROR,)
 Sets/changes the local face Gauss evaluation flag on a basis. More...
 
subroutine basis_simplex_basis_create (BASIS, ERR, ERROR,)
 Creates and initialises a simplex basis that has already been allocated BASIS_CREATE_START. More...
 
subroutine basis_simplex_family_create (BASIS, ERR, ERROR,)
 Creates and initialises a simplex basis family that has already been allocated by BASIS_CREATE_START. More...
 
real(dp) function basis_simplex_basis_evaluate (BASIS, NODE_NUMBER, PARTIAL_DERIV_INDEX, XL, ERR, ERROR)
 Evaluates a simplex basis function and its derivatives with respect to external $\mathbf{\xi}$ coordinates. For Simplex line elements there are two area coordinates which are a function of $\xi_1$ : $L_1 = 1 - \xi_1$ and $L_2 = \xi_1 - 1$.The derivatives wrt to external coordinates are then given by $\frac{\partial\mathbf{N}}{\partial\xi_1}= \frac{\partial\mathbf(x)}{\partial L_2}-\frac{\partial \mathbf{N}}{\partial L_1}$ and $\frac{\partial^2\mathbf{N}}{ \partial \xi_1^2} = \frac{\partial^2\mathbf{N}}{\partial L_1^2}-2\frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_2}+ \frac{\partial^2\mathbf{N}}{\partial L_2^2}$. For Simplex triangle elements there are three area coordinates which are a function of $\xi_1$ and $\xi_2$ : $L_1 = 1 - \xi_1$, $L_2 = 1 - \xi_2$ and $L_3=\xi_1 + \xi_2 - 1$. The derivatives wrt to external coordinates are then given by $\frac{\partial \mathbf{N}}{\partial\xi_1}=\frac{\partial\mathbf(N)}{\partial L_3}- \frac{\partial \mathbf{N}}{\partial L_1}$, $\frac{\partial \mathbf{N}}{\partial\xi_2}=\frac{\partial\mathbf(x)}{ \partial L_3}-\frac{\partial \mathbf{N}}{\partial L_2}$, $\frac{\partial^2\mathbf{N}}{\partial \xi_1^2} = \frac{\partial^2\mathbf{N}}{\partial L_1^2}-2\frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_3}+ \frac{\partial^2\mathbf{N}}{\partial L_3^2}$, $\frac{\partial^2\mathbf{N}}{\partial \xi_2^2} = \frac{\partial^2\mathbf{N}}{\partial L_2^2}-2\frac{\partial^2\mathbf{N}}{\partial L_2 \partial L_3}+ \frac{\partial^2\mathbf{N}}{\partial L_3^2}$ and $\frac{\partial^2\mathbf{N}}{\partial \xi_1 \partial \xi_2} = \frac{\partial^2\mathbf{N}}{\partial L_3^2}-\frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_3}- \frac{\partial^2\mathbf{N}}{\partial L_2 \partial L_3}+\frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_2}$. For Simplex tetrahedral elements there are four area coordinates which are a function of $\xi_1$, $\xi_2$ and $\xi_3$ : $L_1 = 1 - \xi_1$, $L_2 = 1 - \xi_2$, $L_3 = 1 - \xi_3$ and $L_4 = \xi_1 + \xi_2 + \xi_3 - 1$. The derivatives wrt to external coordinates are then given by $\frac{\partial \mathbf{N}}{\partial\xi_1}=\frac{\partial\mathbf(x)}{\partial L_4}- \frac{\partial \mathbf{N}}{\partial L_1}$, $\frac{\partial \mathbf{N}}{\partial\xi_2}=\frac{\partial\mathbf(x)}{\partial L_4}- \frac{\partial \mathbf{N}}{\partial L_2}$, $\frac{\partial \mathbf{N}}{\partial\xi_3}=\frac{\partial\mathbf(x)}{\partial L_4}- \frac{\partial \mathbf{N}}{\partial L_3}$, $\frac{\partial^2\mathbf{N}}{\partial \xi_1^2} = \frac{\partial^2\mathbf{N}}{\partial L_1^2}- 2\frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_4}+\frac{\partial^2\mathbf{N}}{\partial L_4^2}$, $\frac{\partial^2\mathbf{N}}{\partial \xi_2^2} = \frac{\partial^2\mathbf{N}}{\partial L_2^2}- 2\frac{\partial^2\mathbf{N}}{\partial L_2 \partial L_4}+\frac{\partial^2\mathbf{N}}{\partial L_4^2}$ $\frac{\partial^2\mathbf{N}}{\partial \xi_3^2} = \frac{\partial^2\mathbf{N}}{\partial L_3^2}- 2\frac{\partial^2\mathbf{N}}{\partial L_3 \partial L_4}+\frac{\partial^2\mathbf{N}}{\partial L_4^2}$, $\frac{\partial^2\mathbf{N}}{\partial\xi_1\partial \xi_2}=\frac{\partial^2\mathbf{N}}{\partial L_4^2}- \frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_4}-\frac{\partial^2\mathbf{N}}{\partial L_2 \partial L_4}+ \frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_2}$, $\frac{\partial^2\mathbf{N}}{\partial\xi_1\partial\xi_3}=\frac{\partial^2\mathbf{N}}{\partial L_4^2}- \frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_4}-\frac{\partial^2\mathbf{N}}{\partial L_3 \partial L_4}+ \frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_3}$, $\frac{\partial^2\mathbf{N}}{\partial\xi_2\partial\xi_3}=\frac{\partial^2\mathbf{N}}{\partial L_4^2}- \frac{\partial^2\mathbf{N}}{\partial L_2 \partial L_4}-\frac{\partial^2\mathbf{N}}{\partial L_3 \partial L_4}+ \frac{\partial^2\mathbf{N}}{\partial L_2 \partial L_3}$ and $\frac{\partial^3\mathbf{N}}{\partial \xi_1 \partial \xi_2 \partial \xi_3} = \frac{\partial^3\mathbf{N}}{\partial L_4^3}- \frac{\partial^3\mathbf{N}}{\partial L_1 \partial L_4^2}-\frac{\partial^3\mathbf{N}}{\partial L_2 \partial L_4^2}- \frac{\partial^3\mathbf{N}}{\partial L_3 \partial L_4^2}+\frac{\partial^3\mathbf{N}}{\partial L_1 \partial 2 \partial L_4}+ \frac{\partial^3\mathbf{N}}{\partial L_1 \partial L_3 \partial L_4}+\frac{\partial^3\mathbf{N}}{\partial L_2 \partial L_3 \partial L_4}-\frac{\partial^3\mathbf{N}}{\partial L_1 \partial L_2 \partial L_3}$. More...
 
real(dp) function basis_simplex_basis_derivative_evaluate (BASIS, NODE_NUMBER, PARTIAL_DERIV_INDEX, XL, ERR, ERROR)
 Evaluates partial derivatives of a simplex basis function with respect to area coordinates. More...
 
subroutine basis_sub_basis_create (PARENT_BASIS, NUMBER_OF_XI, XI_DIRECTIONS, SUB_BASIS, ERR, ERROR,)
 Creates a sub-basis on a parent basis. More...
 
subroutine, public basis_type_get (BASIS, TYPE, ERR, ERROR,)
 get the type for a basis is identified by a a pointer. More...
 
subroutine basis_type_set_number (USER_NUMBER, TYPE, ERR, ERROR,)
 Sets/changes the type for a basis is identified by a user number. More...
 
subroutine basis_type_set_ptr (BASIS, TYPE, ERR, ERROR,)
 Sets/changes the type for a basis is identified by a a pointer. More...
 
subroutine, public basis_collapsed_xi_get (BASIS, COLLAPSED_XI, ERR, ERROR,)
 Gets the collapsed xi flags for a basis is identified by a a pointer. More...
 
subroutine basis_collapsed_xi_set_number (USER_NUMBER, COLLAPSED_XI, ERR, ERROR,)
 Sets/changes the collapsed xi flags for a basis is identified by a user number. More...
 
subroutine basis_collapsed_xi_set_ptr (BASIS, COLLAPSED_XI, ERR, ERROR,)
 Sets/changes the collapsed xi flags for a basis is identified by a a pointer. More...
 
subroutine, public basis_user_number_find (USER_NUMBER, BASIS, ERR, ERROR,)
 Finds and returns in BASIS a pointer to the basis with the number given in USER_NUMBER. If no basis with that number exits BASIS is left nullified. More...
 
subroutine gauss_legendre (N, ALPHA, BETA, X, W, ERR, ERROR,)
 This routine calculates the weights and abscissae for a Gauss-Legendre quadrature scheme. More...
 
subroutine gauss_simplex (ORDER, NUMBER_OF_VERTICES, N, X, W, ERR, ERROR,)
 This routine calculates the weights and abscissae for a Gauss quadrature scheme for simplex elements. More...
 
real(dp) function hermite_cubic_evaluate (NODE_INDEX, NODE_DERIVATIVE_INDEX, PARTIAL_DERIVATIVE_INDEX, XI, ERR, ERROR)
 Evaluates a 1D cubic Hermite basis function. More...
 
real(dp) function hermite_quadratic_evaluate (NODE_INDEX, NODE_DERIVATIVE_INDEX, PARTIAL_DERIVATIVE_INDEX, SPECIAL_NODE_INDEX, XI, ERR, ERROR)
 Evaluates a 1D quadratic Hermite basis function. More...
 
real(dp) function lagrange_cubic_evaluate (NODE_INDEX, PARTIAL_DERIVATIVE_INDEX, XI, ERR, ERROR)
 Evaluates a 1D cubic Lagrange basis function. More...
 
real(dp) function lagrange_linear_evaluate (NODE_INDEX, PARTIAL_DERIVATIVE_INDEX, XI, ERR, ERROR)
 Evaluates a 1D linear Lagrange basis function. More...
 
real(dp) function lagrange_quadratic_evaluate (NODE_INDEX, PARTIAL_DERIVATIVE_INDEX, XI, ERR, ERROR)
 Evaluates a 1D quadratic Lagrange basis function. More...
 
real(dp) function simplex_cubic_evaluate_dp (NODE_INDEX, PARTIAL_DERIVATIVE_INDEX, XL, ERR, ERROR)
 Evaluates a cubic simpelx basis function at a specificed area position and node index and with a given partial derivative index with respect to area coordinates for double precision arguments. More...
 
real(dp) function simplex_linear_evaluate_dp (NODE_INDEX, PARTIAL_DERIVATIVE_INDEX, XL, ERR, ERROR)
 Evaluates a linear simpelx basis function at a specificed area position and node index and with a given partial derivative index with respect to area coordinates for double precision arguments. More...
 
real(dp) function simplex_quadratic_evaluate_dp (NODE_INDEX, PARTIAL_DERIVATIVE_INDEX, XL, ERR, ERROR)
 Evaluates a quadratic simpelx basis function at a specificed area position and node index and with a given partial derivative index with respect to area coordinates for double precision arguments. More...
 

Variables

integer(intg), parameter, public basis_lagrange_hermite_tp_type =1
 Lagrange-Hermite tensor product basis type. More...
 
integer(intg), parameter, public basis_simplex_type =2
 Simplex basis type. More...
 
integer(intg), parameter, public basis_serendipity_type =3
 Serendipity basis type. More...
 
integer(intg), parameter, public basis_auxilliary_type =4
 Auxillary basis type. More...
 
integer(intg), parameter, public basis_b_spline_tp_type =5
 B-spline basis type. More...
 
integer(intg), parameter, public basis_fourier_lagrange_hermite_tp_type =6
 Fourier-Lagrange tensor product basis type. More...
 
integer(intg), parameter, public basis_extended_lagrange_tp_type =7
 Extendend Lagrange tensor product basis type. More...
 
integer(intg), parameter, public basis_radial_type =7
 Radial basis typee. More...
 
integer(intg), parameter, public basis_linear_lagrange_interpolation =1
 Linear Lagrange interpolation specification. More...
 
integer(intg), parameter, public basis_quadratic_lagrange_interpolation =2
 Quadratic Lagrange interpolation specification. More...
 
integer(intg), parameter, public basis_cubic_lagrange_interpolation =3
 Cubic Lagrange interpolation specification. More...
 
integer(intg), parameter, public basis_cubic_hermite_interpolation =4
 Cubic Hermite interpolation specification. More...
 
integer(intg), parameter, public basis_quadratic1_hermite_interpolation =5
 Quadratic Hermite (no derivative at xi=0) interpolation specification. More...
 
integer(intg), parameter, public basis_quadratic2_hermite_interpolation =6
 Quadratic Hermite (no derivative at xi=1) interpolation specification. More...
 
integer(intg), parameter, public basis_linear_simplex_interpolation =7
 Linear Simplex interpolation specification. More...
 
integer(intg), parameter, public basis_quadratic_simplex_interpolation =8
 Quadratic Simplex interpolation specification. More...
 
integer(intg), parameter, public basis_cubic_simplex_interpolation =9
 Cubic Simplex interpolation specification. More...
 
integer(intg), parameter, public basis_gaussian_radial_interpolation =10
 Gaussian Radial interpolation specification. More...
 
integer(intg), parameter, public basis_multiquartic_radial_interpolation =11
 Multiquartic Radial interpolation specification. More...
 
integer(intg), parameter basis_lagrange_interpolation =1
 Lagrange interpolation. More...
 
integer(intg), parameter basis_hermite_interpolation =2
 Hermite interpolation. More...
 
integer(intg), parameter basis_simplex_interpolation =3
 Simplex interpolation. More...
 
integer(intg), parameter basis_serendipity_interpolation =4
 Serendipity interpolation. More...
 
integer(intg), parameter basis_transition_interpolation =5
 Transition interpolation. More...
 
integer(intg), parameter basis_singular_interpolation =6
 Singular interpolation. More...
 
integer(intg), parameter basis_fourier_interpolation =7
 Fourier interpolation. More...
 
integer(intg), parameter basis_radial_interpolation =8
 Radial interpolation. More...
 
integer(intg), parameter, public basis_linear_interpolation_order =1
 Linear interpolation order. More...
 
integer(intg), parameter, public basis_quadratic_interpolation_order =2
 Quadratic interpolation order. More...
 
integer(intg), parameter, public basis_cubic_interpolation_order =3
 Cubic interpolation order. More...
 
integer(intg), parameter, public basis_quadratic1_interpolation_order =4
 Quadratic (no derivative at xi=0) interpolation order. More...
 
integer(intg), parameter, public basis_quadratic2_interpolation_order =5
 Quadratic (no derivative at xi=1) interpolation order. More...
 
integer(intg), parameter basis_number_of_quadrature_scheme_types =4
 The number of currently defined quadrature schemes. More...
 
integer(intg), parameter, public basis_default_quadrature_scheme =1
 Identifier for the default quadrature scheme. More...
 
integer(intg), parameter, public basis_low_quadrature_scheme =2
 Identifier for a low order quadrature scheme. More...
 
integer(intg), parameter, public basis_mid_quadrature_scheme =3
 Identifier for a mid order quadrature scheme. More...
 
integer(intg), parameter, public basis_high_quadrature_scheme =4
 Identifier for a high order quadrature scheme. More...
 
integer(intg), parameter, public basis_gauss_legendre_quadrature =1
 Gauss-Legendre quadrature. More...
 
integer(intg), parameter, public basis_gauss_laguerre_quadrature =2
 Gauss-Laguerre quadrature. More...
 
integer(intg), parameter, public basis_guass_hermite_quadrature =3
 Gauss-Hermite quadrature. More...
 
integer(intg), parameter, public basis_adaptive_gauss_legendre_quadrature =4
 Adaptive Gauss-Legendre quadrature. More...
 
integer(intg), parameter, public basis_gauss_simplex_quadrature =5
 Gauss-Legendre for Simplex elements quadrature. More...
 
integer(intg), parameter, public basis_xi_collapsed =1
 The Xi direction is collapsed. More...
 
integer(intg), parameter, public basis_collapsed_at_xi0 =2
 The Xi direction at the xi=0 end of this Xi direction is collapsed. More...
 
integer(intg), parameter, public basis_collapsed_at_xi1 =3
 The Xi direction at the xi=1 end of this Xi direction is collapsed. More...
 
integer(intg), parameter, public basis_not_collapsed =4
 The Xi direction is not collapsed. More...
 
type(basis_functions_type), public basis_functions
 The tree of defined basis functions. More...
 

Detailed Description

This module contains all basis function routines.

Function/Subroutine Documentation

subroutine, public basis_routines::bases_finalise ( integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Finalises the bases and deallocates all memory.

Parameters
[out]errThe error code
[out]errorThe error string

Definition at line 318 of file basis_routines.f90.

References basis_destroy(), basis_functions, base_routines::enters(), and base_routines::exits().

Referenced by cmiss::cmfe_finalise_().

subroutine, public basis_routines::bases_initialise ( integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Initialises the bases.

Parameters
[out]errThe error code
[out]errorThe error string

Definition at line 347 of file basis_routines.f90.

References basis_functions, base_routines::enters(), and base_routines::exits().

Referenced by cmiss::cmfe_initialise_().

subroutine, public basis_routines::basis_collapsed_xi_get ( type(basis_type), pointer  BASIS,
integer(intg), dimension(:), intent(out)  COLLAPSED_XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Gets the collapsed xi flags for a basis is identified by a a pointer.

See also
OPENCMISS::CMISSBasisCollapsedXiGet
Parameters
basisA pointer to the basis
[out]collapsed_xiCOLLAPSED_XI(ni). On return, the collapse parameter for each Xi direction.
See also
BASIS_ROUTINES::XiCollapse
Parameters
[out]errThe error code
[out]errorThe error string

Definition at line 5620 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

Referenced by fieldml_output_routines::fieldml_output_create_basis_reference(), and fieldml_output_routines::fieldml_output_get_connectivity_ensemble().

subroutine basis_routines::basis_collapsed_xi_set_number ( integer(intg), intent(in)  USER_NUMBER,
integer(intg), dimension(:), intent(in)  COLLAPSED_XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Sets/changes the collapsed xi flags for a basis is identified by a user number.

Parameters
[in]user_numberThe user number of the basis to be set
[in]collapsed_xiCOLLAPSED_XI(ni). The collapse parameter for each Xi direction.
See also
BASIS_ROUTINES::XiCollapse
Parameters
[out]errThe error code
[out]errorThe error string

Definition at line 5660 of file basis_routines.f90.

References basis_collapsed_xi_set_ptr(), basis_user_number_find(), base_routines::enters(), and base_routines::exits().

subroutine basis_routines::basis_collapsed_xi_set_ptr ( type(basis_type), pointer  BASIS,
integer(intg), dimension(:), intent(in)  COLLAPSED_XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Sets/changes the collapsed xi flags for a basis is identified by a a pointer.

See also
OPENCMISS::CMISSBasisCollapsedXiSet
Parameters
basisA pointer to the basis
[in]collapsed_xiCOLLAPSED_XI(ni). The collapse parameter for each Xi direction.
See also
BASIS_ROUTINES::XiCollapse
Parameters
[out]errThe error code
[out]errorThe error string

Definition at line 5686 of file basis_routines.f90.

References basis_collapsed_at_xi0, basis_collapsed_at_xi1, basis_cubic_hermite_interpolation, basis_lagrange_hermite_tp_type, basis_not_collapsed, basis_quadratic1_hermite_interpolation, basis_quadratic2_hermite_interpolation, basis_xi_collapsed, base_routines::enters(), base_routines::exits(), constants::other_xi_directions2, and constants::other_xi_directions3.

Referenced by basis_collapsed_xi_set_number().

subroutine, public basis_routines::basis_create_finish ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Finishes the creation of a new basis.

See also
BASIS_ROUTINES::BASIS_CREATE_START,OPENCMISS::BasisCreateFinish
Parameters
basisA pointer to the basis to finish the creation of
[out]errThe error code
[out]errorThe error string

Definition at line 371 of file basis_routines.f90.

References basis_lagrange_hermite_tp_type, basis_lhtp_family_create(), basis_radial_family_create(), basis_radial_type, basis_simplex_family_create(), basis_simplex_type, base_routines::diagnostic_output_type, base_routines::diagnostics1, base_routines::enters(), and base_routines::exits().

Referenced by field_io_routines::field_io_import_global_mesh().

subroutine, public basis_routines::basis_create_start ( integer(intg), intent(in)  USER_NUMBER,
type(basis_type), pointer  BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Starts the creation of a new basis The default values of the BASIS attributes are:

  • TYPE: 1 (BASIS_LAGRANGE_HERMITE_TP_TYPE)
  • NUMBER_OF_XI: 3
  • INTERPOLATION_XI: (1,1,1) (BASIS_LINEAR_LAGRANGE_INTERPOLATIONs)
  • INTERPOLATION_TYPE: (1,1,1) (BASIS_LAGRANGE_INTERPOLATIONs)
  • INTERPOLATION_ORDER: (1,1,1) (BASIS_LINEAR_INTERPOLATION_ORDERs)
  • DEGENERATE: false
  • COLLAPSED_XI: (4,4,4) (BASIS_NOT_COLLAPSEDs)
  • QUADRATURE:
    • TYPE: 1 (BASIS_LAGRANGE_HERMITE_TP_TYPE)
    • NUMBER_OF_GAUSS_XI: (2,2,2)
    • GAUSS_ORDER: 0
Parameters
[in]user_numberThe user number of the basis to start the creation of
basisA pointer to the created basis. Must not be associated on entry.
[out]errThe error code
[out]errorThe error string

Definition at line 575 of file basis_routines.f90.

References basis_destroy(), basis_functions, basis_initialise(), basis_lagrange_hermite_tp_type, basis_linear_lagrange_interpolation, basis_not_collapsed, basis_quadrature_initialise(), basis_user_number_find(), base_routines::enters(), and base_routines::exits().

Referenced by field_io_routines::field_io_import_global_mesh(), and fieldml_input_routines::fieldml_input_basis_create_start().

recursive subroutine, public basis_routines::basis_destroy ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Destroys a basis.

See also
BASIS_ROUTINES::BASIS_DESTROY_FAMILY,OPENCMISS::CMISSBasisDestroy
Parameters
basisA pointer to the basis to destroy
[out]errThe error code
[out]errorThe error string

Definition at line 679 of file basis_routines.f90.

References basis_family_destroy(), base_routines::enters(), and base_routines::exits().

Referenced by bases_finalise(), and basis_create_start().

recursive subroutine basis_routines::basis_destroy_number ( integer(intg), intent(in)  USER_NUMBER,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Destroys a basis identified by its basis user number.

See also
BASIS_ROUTINES::BASIS_DESTROY_FAMILY,OPENCMISS::CMISSBasisDestroy
Parameters
[in]user_numberThe user number of the basis to destroy
[out]errThe error code
[out]errorThe error string

Definition at line 655 of file basis_routines.f90.

References basis_family_destroy(), base_routines::enters(), and base_routines::exits().

real(dp) function basis_routines::basis_evaluate_xi_dp ( type(basis_type), pointer  BASIS,
integer(intg), intent(in)  ELEMENT_PARAMETER_INDEX,
integer(intg), intent(in)  PARTIAL_DERIV_INDEX,
real(dp), dimension(:), intent(in)  XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Evaluates the appropriate partial derivative index at position XI for the basis for double precision arguments. Note for simplex basis functions the XI coordinates should exclude the last area coordinate.

Parameters
basisA pointer to the basis
[in]element_parameter_indexThe element parameter index to evaluate i.e., the local basis index within the element basis.
[in]partial_deriv_indexThe partial derivative index to evaluate
See also
CONSTANTS::PartialDerivativeConstants
Parameters
[in]xiThe Xi position to evaluate the basis function at
[out]errThe error code
[out]errorThe error string

Definition at line 711 of file basis_routines.f90.

References basis_lagrange_hermite_tp_type, basis_radial_type, basis_simplex_basis_evaluate(), basis_simplex_type, base_routines::enters(), and base_routines::exits().

recursive subroutine basis_routines::basis_family_destroy ( integer(intg), intent(in)  USER_NUMBER,
integer(intg), intent(in)  FAMILY_NUMBER,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Destroys a basis identified by its basis user number and family number. Called from the library visible routine BASIS_DESTROY.

See also
BASIS_ROUTINES::BASIS_DESTROY
Parameters
[in]user_numberThe user number of the basis to destroy
[in]family_numberThe family number of the basis to destroy
[out]errThe error code
[out]errorThe error string

Definition at line 890 of file basis_routines.f90.

References basis_family_number_find(), basis_finalise(), basis_functions, base_routines::enters(), and base_routines::exits().

Referenced by basis_destroy(), basis_destroy_number(), basis_lhtp_family_create(), and basis_simplex_family_create().

recursive subroutine basis_routines::basis_family_number_find ( integer(intg), intent(in)  USER_NUMBER,
integer(intg), intent(in)  FAMILY_NUMBER,
type(basis_type), pointer  BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Finds and returns in BASIS a pointer to the basis with the given USER_NUMBER and FAMILY_NUMBER. If no basis with that number and family number exists then BASIS is returned nullified.

See also
BASIS_ROUTINES::BASIS_USER_NUMBER_FIND
Parameters
[in]user_numberThe user number of the basis to find
[in]family_numberThe family number of the basis to find
basisOn exit, A pointer to the basis. If no basis with the specified user and family numbers can be found the pointer is not associated.
[out]errThe error code
[out]errorThe error string

Definition at line 982 of file basis_routines.f90.

References basis_functions, base_routines::enters(), and base_routines::exits().

Referenced by basis_family_destroy(), and basis_user_number_find().

subroutine basis_routines::basis_finalise ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Finalises a basis and deallocates all memory.

Parameters
basisA pointer to the basis to finalise
[out]errThe error code
[out]errorThe error string

Definition at line 1030 of file basis_routines.f90.

References basis_quadrature_finalise(), base_routines::enters(), and base_routines::exits().

Referenced by basis_family_destroy().

subroutine basis_routines::basis_gauss_points_calculate_dp ( type(basis_type), pointer  basis,
integer(intg), intent(in)  order,
integer(intg), intent(in)  numCoords,
integer(intg), intent(out)  numberGaussPoints,
real(dp), dimension(:,:), intent(out), allocatable  gaussPoints,
real(dp), dimension(:), intent(out), allocatable  gaussWeights,
integer(intg), intent(out)  err,
type(varying_string), intent(out)  error 
)
private

Calculates the gauss points and weights for a basis function of a particular order.

Parameters
basisA pointer to the basis
[in]orderThe order (for Simplex) or the number of gauss points in a direction (for LHTP)
[in]numcoordsThe number of coordinate directions of the system in which to calculate gauss points (1D, 2D, 3D)
[out]numbergausspointson return, the number of gauss points calculated
[out]gausspointsOn return, the calculated gauss point coordinates gaussPoints(nj,ng)
[out]gaussweightsgaussWeights(ng) gauss weight for particular gauss point
[out]errThe error code
[out]errorThe error string

Definition at line 776 of file basis_routines.f90.

References basis_lagrange_hermite_tp_type, basis_simplex_type, base_routines::enters(), base_routines::exits(), gauss_legendre(), and gauss_simplex().

subroutine basis_routines::basis_initialise ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Initialises a basis.

Parameters
basisA pointer to the basis to initialise
[out]errThe error code
[out]errorThe error string

Definition at line 1085 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

Referenced by basis_create_start().

real(dp) function basis_routines::basis_interpolate_gauss_dp ( type(basis_type), pointer  BASIS,
integer(intg), intent(in)  PARTIAL_DERIV_INDEX,
integer(intg), intent(in)  QUADRATURE_SCHEME,
integer(intg), intent(in)  GAUSS_POINT_NUMBER,
real(dp), dimension(:), intent(in)  ELEMENT_PARAMETERS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Interpolates the appropriate partial derivative index of the element parameters at a gauss point for the basis for double precision arguments. Note the interpolated value returned needs to be adjusted for the particular >coordinate system with COORDINATE_INTERPOLATE_ADJUST.

Parameters
basisA pointer to the basis
[in]partial_deriv_indexThe partial derivative index to interpolate
See also
CONSTANTS::PartialDerivativeConstants
Parameters
[in]quadrature_schemeThe quadrature scheme to use
See also
BASIS_ROUTINE_QuadratureSchemes
Parameters
[in]gauss_point_numberThe Gauss point number in the scheme to interpolte
[in]element_parametersThe element parameters to interpolate
[out]errThe error code
[out]errorThe error string

Definition at line 1135 of file basis_routines.f90.

References basis_number_of_quadrature_scheme_types, base_routines::enters(), and base_routines::exits().

real(dp) function basis_routines::basis_interpolate_local_face_gauss_dp ( type(basis_type), pointer  BASIS,
integer(intg), intent(in)  PARTIAL_DERIV_INDEX,
integer(intg), intent(in)  QUADRATURE_SCHEME,
integer(intg), intent(in)  LOCAL_FACE_NUMBER,
integer(intg), intent(in)  GAUSS_POINT_NUMBER,
real(dp), dimension(:), intent(in)  FACE_PARAMETERS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Interpolates the appropriate partial derivative index of the element local face parameters at a face gauss point for the basis for double precision arguments. Note the interpolated value returned needs to be adjusted for the particular >coordinate system with COORDINATE_INTERPOLATE_ADJUST.

Parameters
basisA pointer to the basis
[in]partial_deriv_indexThe partial derivative index to interpolate
See also
CONSTANTS::PartialDerivativeConstants
Parameters
[in]quadrature_schemeThe quadrature scheme to use
See also
BASIS_ROUTINE_QuadratureSchemes
Parameters
[in]local_face_numberThe index number of the face to interpolate on
[in]gauss_point_numberThe face Gauss point number in the scheme to interpolate
[in]face_parametersThe face parameters to interpolate (in 3D coordinates)
[out]errThe error code
[out]errorThe error string

Definition at line 1199 of file basis_routines.f90.

References basis_number_of_quadrature_scheme_types, base_routines::enters(), and base_routines::exits().

real(dp) function basis_routines::basis_interpolate_xi_dp ( type(basis_type), pointer  BASIS,
integer(intg), intent(in)  PARTIAL_DERIV_INDEX,
real(dp), dimension(:), intent(in)  XI,
real(dp), dimension(:), intent(in)  ELEMENT_PARAMETERS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Interpolates the appropriate partial derivative index of the element parameters at position XI for the basis for double precision arguments. Note the interpolated value returned needs to be adjusted for the particular coordinate system with COORDINATE_INTERPOLATE_ADJUST. Note for simplex basis functions the XI coordinates should exclude the last area coordinate.

Parameters
basisA pointer to the basis
[in]partial_deriv_indexThe partial derivative index to interpolate
See also
CONSTANTS::PartialDerivativeConstants
Parameters
[in]xiThe Xi position to interpolate the basis function at
[in]element_parametersThe element parameters to interpolate
[out]errThe error code
[out]errorThe error string

Definition at line 1272 of file basis_routines.f90.

References basis_lagrange_hermite_tp_type, basis_radial_type, basis_simplex_basis_evaluate(), basis_simplex_type, base_routines::enters(), and base_routines::exits().

subroutine, public basis_routines::basis_interpolation_xi_get ( type(basis_type), pointer  BASIS,
integer(intg), dimension(:), intent(out)  INTERPOLATION_XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Gets/changes the interpolation type in each xi directions for a basis identified by a pointer.

Parameters
basisA pointer to the basis to get the interpolation xi
[out]interpolation_xiOn return, the interpolation xi parameters for each Xi direction
See also
BASIS_ROUTINES::InterpolationSpecifications
Parameters
[out]errThe error code
[out]errorThe error string

Definition at line 1337 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

Referenced by fieldml_output_routines::fieldml_output_create_basis_reference(), and fieldml_output_routines::fieldml_output_get_connectivity_ensemble().

subroutine basis_routines::basis_interpolation_xi_set_number ( integer(intg), intent(in)  USER_NUMBER,
integer(intg), dimension(:), intent(in)  INTERPOLATION_XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Sets/changes the interpolation type in each xi directions where the basis is identified by user number.

See also
OPENCMISS::CMISSBasisInterpolationXiSet
Parameters
[in]user_numberThe user number of the basis to set the interpolation xi
[in]interpolation_xiThe interpolation xi parameters for each Xi direction
See also
BASIS_ROUTINES::InterpolationSpecifications
Parameters
[out]errThe error code
[out]errorThe error string

Definition at line 1378 of file basis_routines.f90.

References basis_user_number_find(), base_routines::enters(), and base_routines::exits().

subroutine basis_routines::basis_interpolation_xi_set_ptr ( type(basis_type), pointer  BASIS,
integer(intg), dimension(:), intent(in)  INTERPOLATION_XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Sets/changes the interpolation type in each xi directions for a basis identified by a pointer.

See also
OPENCMISS::CMISSBasisInterpolationXiSet
Parameters
basisA pointer to the basis to set the interpolation xi
[in]interpolation_xiThe interpolation xi parameters for each Xi direction
See also
BASIS_ROUTINES::InterpolationSpecifications
Parameters
[out]errThe error code
[out]errorThe error string

Definition at line 1404 of file basis_routines.f90.

References basis_cubic_hermite_interpolation, basis_cubic_lagrange_interpolation, basis_cubic_simplex_interpolation, basis_lagrange_hermite_tp_type, basis_linear_lagrange_interpolation, basis_linear_simplex_interpolation, basis_quadratic1_hermite_interpolation, basis_quadratic2_hermite_interpolation, basis_quadratic_lagrange_interpolation, basis_quadratic_simplex_interpolation, basis_simplex_type, base_routines::enters(), and base_routines::exits().

real(dp) function basis_routines::basis_lhtp_basis_evaluate_dp ( type(basis_type), pointer  BASIS,
integer(intg), intent(in)  NODE_NUMBER,
integer(intg), intent(in)  DERIVATIVE_NUMBER,
integer(intg), intent(in)  PARTIAL_DERIV_INDEX,
real(dp), dimension(:), intent(in)  XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Evaluates the double precision Lagrange/Hermite/Fourier tensor product basis function for the given BASIS.

Parameters
basisA pointer to the basis to evaluate
[in]node_numberThe local node number of the tensor product basis to evaluate
[in]derivative_numberThe local derivative number of the tensor product basis to evaluate
[in]partial_deriv_indexThe partial derivative index to interpolate
See also
CONSTANTS::PartialDerivativeConstants
Parameters
[in]xiThe Xi position to evaluate the basis function at
[out]errThe error code
[out]errorThe error string
Returns
On return the evaluated basis funtion.

Definition at line 2266 of file basis_routines.f90.

References basis_cubic_interpolation_order, basis_hermite_interpolation, basis_lagrange_interpolation, basis_linear_interpolation_order, basis_quadratic1_interpolation_order, basis_quadratic2_interpolation_order, basis_quadratic_interpolation_order, basis_xi_collapsed, base_routines::enters(), base_routines::exits(), hermite_cubic_evaluate(), hermite_quadratic_evaluate(), lagrange_cubic_evaluate(), lagrange_linear_evaluate(), lagrange_quadratic_evaluate(), and constants::partial_derivative_index.

subroutine basis_routines::basis_lhtp_family_create ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Creates and initialises a Lagrange-Hermite tensor product basis family that has already been allocated by BASIS_CREATE_START.

See also
BASIS_ROUTINES::BASIS_LHTP_CREATE
Parameters
basisA pointer to the basis to create
[out]errThe error code
[out]errorThe error string

Definition at line 2397 of file basis_routines.f90.

References basis_family_destroy(), basis_lhtpbasiscreate(), basis_sub_basis_create(), base_routines::enters(), base_routines::exits(), and constants::other_xi_directions3.

Referenced by basis_create_finish().

subroutine basis_routines::basis_lhtpbasiscreate ( type(basis_type), pointer  basis,
integer(intg), intent(out)  err,
type(varying_string), intent(out)  error 
)
private
subroutine, public basis_routines::basis_local_node_xi_calculate ( type(basis_type), pointer  BASIS,
integer(intg), intent(in)  LOCAL_NODE_NUMBER,
real(dp), dimension(:), intent(out)  XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Calculates the xi location of a local node in a basis.

Parameters
basisA pointer to the basis to calculate the xi for
[in]local_node_numberThe local node number to calculate the xi for
[out]xiXI(ni). On return, the xi position of the local node in the basis
[out]errThe error code
[out]errorThe error string

Definition at line 2536 of file basis_routines.f90.

References basis_auxilliary_type, basis_b_spline_tp_type, basis_extended_lagrange_tp_type, basis_fourier_lagrange_hermite_tp_type, basis_lagrange_hermite_tp_type, basis_serendipity_type, basis_simplex_type, base_routines::enters(), and base_routines::exits().

subroutine, public basis_routines::basis_number_of_local_nodes_get ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  NUMBER_OF_LOCAL_NODES,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Returns the number of local nodes in the specified basis.

See also
OPENCMISS::CMISSBasisNumberOfLocalNodesGet
Parameters
basisA pointer to the basis to get the number of nodes
[out]number_of_local_nodesOn return, the number of local nodes in the basis
[out]errThe error code
[out]errorThe error string

Definition at line 2610 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

subroutine, public basis_routines::basis_number_of_xi_get ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  NUMBER_OF_XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Gets the number of xi directions for a basis.

See also
OPENCMISS::CMISSBasisNumberOfXiGet
Parameters
basisA pointer to the basis function to change
[out]number_of_xiOn return, the number of Xi directions to get.
[out]errThe error code
[out]errorThe error string

Definition at line 2638 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

Referenced by fieldml_output_routines::fieldml_output_create_basis_reference(), and fieldml_output_routines::fieldml_output_get_connectivity_ensemble().

subroutine basis_routines::basis_number_of_xi_set_number ( integer(intg), intent(in)  USER_NUMBER,
integer(intg), intent(in)  NUMBER_OF_XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Sets/changes the number of xi directions where the basis is identified by user number.

Parameters
[in]user_numberThe user number of the basis
[in]number_of_xiThe number of Xi directions to be set.
[out]errThe error code
[out]errorThe error string

Definition at line 2670 of file basis_routines.f90.

References basis_user_number_find(), base_routines::enters(), and base_routines::exits().

subroutine basis_routines::basis_number_of_xi_set_ptr ( type(basis_type), pointer  BASIS,
integer(intg), intent(in)  NUMBER_OF_XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Sets/changes the number of xi directions for a basis identified by a pointer.

See also
OPENCMISS::CMISSBasisNumberOfXiSet
Parameters
basisA pointer to the basis function to change
[in]number_of_xiThe number of Xi directions to set.
[out]errThe error code
[out]errorThe error string

Definition at line 2696 of file basis_routines.f90.

References basis_lagrange_hermite_tp_type, basis_simplex_type, base_routines::enters(), and base_routines::exits().

subroutine basis_routines::basis_quadrature_create ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private
subroutine, public basis_routines::basis_quadrature_destroy ( type(quadrature_type), pointer  QUADRATURE,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Destroys a quadrature on a given basis and deallocates all memory.

Todo:
fix all this basis/quadrature into standard form.
Parameters
quadratureA pointer to the quadrature
[out]errThe error code
[out]errorThe error string

Definition at line 3187 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

subroutine basis_routines::basis_quadrature_finalise ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Finalises a quadrature on a given basis and deallocates all memory.

Parameters
basisA pointer to the basis
[out]errThe error code
[out]errorThe error string

Definition at line 3214 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

Referenced by basis_finalise(), and basis_type_set_ptr().

subroutine basis_routines::basis_quadrature_initialise ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private
subroutine, public basis_routines::basis_quadrature_multiple_gauss_xi_get ( type(basis_type), pointer  BASIS,
integer(intg), intent(in)  SCHEME,
integer(intg), dimension(:), intent(in)  GAUSS_POINTS,
real(dp), dimension(:,:), intent(out)  GAUSS_XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Returns the xi positions of Gauss points on a basis quadrature identified by a pointer. If no Gauss points are specified then xi positions of all Gauss points are returned.

See also
OPENCMISS::CMISSBasisQuadratureGaussXiGet
Parameters
basisA pointer to the basis
[in]schemeThe quadrature scheme to return the Gauss points for
[in]gauss_pointsThe Gauss points to return the element xi positions for.
[out]gauss_xiOn return, GAUSS_XI(xi_direction,Gauss_point) the Gauss xi positions for the specified quadrature scheme.
[out]errThe error code
[out]errorThe error string

Definition at line 3584 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

subroutine, public basis_routines::basis_quadrature_number_of_gauss_xi_get ( type(basis_type), pointer  BASIS,
integer(intg), dimension(:), intent(out)  QUADRATURE_NUMBER_OF_GAUSS_XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Get the number of Gauss points in each xi direction on a basis quadrature identified by a pointer.

See also
OPENCMISS::CMISSBasisQuadratureNumberOfGaussXiGet
Parameters
basisA pointer to the basis
[out]quadrature_number_of_gauss_xiOn return, the number of Gauss in each Xi direction
[out]errThe error code
[out]errorThe error string

Definition at line 3387 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

subroutine, public basis_routines::basis_quadrature_number_of_gauss_xi_set ( type(basis_type), pointer  BASIS,
integer(intg), dimension(:), intent(in)  NUMBER_OF_GAUSS_XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Sets/changes the number of Gauss points in each xi direction on a basis quadrature identified by a pointer.

See also
OPENCMISS::CMISSBasisQuadratureNumberOfGaussSet
Parameters
basisA pointer to the basis
[in]number_of_gauss_xiThe number of Gauss in each Xi direction
[out]errThe error code
[out]errorThe error string

Definition at line 3433 of file basis_routines.f90.

References basis_cubic_hermite_interpolation, basis_cubic_lagrange_interpolation, basis_linear_lagrange_interpolation, basis_linear_simplex_interpolation, basis_quadratic1_hermite_interpolation, basis_quadratic2_hermite_interpolation, basis_quadratic_lagrange_interpolation, basis_quadratic_simplex_interpolation, base_routines::enters(), and base_routines::exits().

subroutine, public basis_routines::basis_quadrature_order_get ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  QUADRATURE_ORDER,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Get the order of a quadrature for a basis quadrature identified by a pointer.

See also
OPENCMISS::CMISSBasisQuadratureOrderGet
Parameters
basisA pointer to the basis
[out]quadrature_orderOn return, the quadrature order for the specified basis.
[out]errThe error code
[out]errorThe error string

Definition at line 3656 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

subroutine basis_routines::basis_quadrature_order_set_number ( integer(intg), intent(in)  USER_NUMBER,
integer(intg), intent(in)  ORDER,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Sets/changes the order of a quadrature for a basis quadrature identified by a user number.

Parameters
[in]user_numberThe user number of the basis
[in]orderThe quadrature order to be set.
[out]errThe error code
[out]errorThe error string

Definition at line 3692 of file basis_routines.f90.

References basis_user_number_find(), base_routines::enters(), and base_routines::exits().

subroutine basis_routines::basis_quadrature_order_set_ptr ( type(basis_type), pointer  BASIS,
integer(intg), intent(in)  ORDER,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Sets/changes the order of a quadrature for a basis quadrature identified by a pointer.

See also
OPENCMISS::CMISSBasisQuadratureOrderSet
Parameters
basisA pointer to the basis
[in]orderThe quadrature order to be set.
[out]errThe error code
[out]errorThe error string

Definition at line 3718 of file basis_routines.f90.

References basis_simplex_type, base_routines::enters(), and base_routines::exits().

subroutine, public basis_routines::basis_quadrature_single_gauss_xi_get ( type(basis_type), pointer  BASIS,
integer(intg), intent(in)  SCHEME,
integer(intg), intent(in)  GAUSS_POINT,
real(dp), dimension(:), intent(out)  GAUSS_XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Returns the xi positions of a Gauss point on a basis quadrature identified by a pointer.

See also
OPENCMISS::CMISSBasisQuadratureGaussXiGet
Parameters
basisA pointer to the basis
[in]schemeThe quadrature scheme to return the Gauss points for
[in]gauss_pointThe Gauss point to return the element xi position for.
[out]gauss_xiOn return, GAUSS_XI(xi_direction) the xi position of the specified Gauss point for the specified quadrature scheme.
[out]errThe error code
[out]errorThe error string

Definition at line 3525 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

subroutine, public basis_routines::basis_quadrature_type_get ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  QUADRATURE_TYPE,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

get the quadrature type on a basis identified by a pointer.

See also
OPENCMISS::CMISSBasisQuadratureTypeGet
Parameters
basisA pointer to the basis
[out]quadrature_typeOn return, the quadrature type to be get
See also
BASIS_ROUTINES::QuadratureTypes
Parameters
[out]errThe error code
[out]errorThe error string

Definition at line 3765 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

subroutine basis_routines::basis_quadrature_type_set_number ( integer(intg), intent(in)  USER_NUMBER,
integer(intg), intent(in)  TYPE,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Sets/changes the quadrature type for a basis quadrature identified by a user number.

Parameters
[in]user_numberThe user number of the basis
[in]typeThe quadrature type to be set
See also
BASIS_ROUTINES::QuadratureTypes
Parameters
[out]errThe error code
[out]errorThe error string

Definition at line 3801 of file basis_routines.f90.

References basis_quadrature_type_set_ptr(), basis_user_number_find(), base_routines::enters(), and base_routines::exits().

subroutine basis_routines::basis_quadrature_type_set_ptr ( type(basis_type), pointer  BASIS,
integer(intg), intent(in)  TYPE,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Sets/changes the quadrature type on a basis identified by a pointer.

Parameters
basisA pointer to the basis
[in]typeThe quadrature type to be set
See also
BASIS_ROUTINES::QuadratureTypes
Parameters
[out]errThe error code
[out]errorThe error string

Definition at line 3827 of file basis_routines.f90.

References basis_gauss_laguerre_quadrature, basis_gauss_legendre_quadrature, basis_guass_hermite_quadrature, base_routines::enters(), and base_routines::exits().

Referenced by basis_quadrature_type_set_number().

subroutine, public basis_routines::basis_quadraturelocalfacegaussevaluateset ( type(basis_type), pointer  BASIS,
logical, intent(in)  FACE_GAUSS_EVALUATE,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Sets/changes the local face Gauss evaluation flag on a basis.

Parameters
basisA pointer to the basis
[in]face_gauss_evaluateface Gauss evaluation flag
[out]errThe error code
[out]errorThe error string

Definition at line 3876 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

subroutine basis_routines::basis_radial_family_create ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Creates and initialises a Radial basis family that has already been allocated by BASIS_CREATE_START.

See also
BASIS_ROUTINES::BASIS_RADIAL_CREATE
Parameters
basisA pointer to the basis to create
[out]errThe error code
[out]errorThe error string

Definition at line 2506 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

Referenced by basis_create_finish().

subroutine basis_routines::basis_simplex_basis_create ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Creates and initialises a simplex basis that has already been allocated BASIS_CREATE_START.

See also
BASIS_ROUTINES::BASIS_CREATE_START
Parameters
basisA pointer to the basis
[out]errThe error code
[out]errorThe error string

Definition at line 3909 of file basis_routines.f90.

References basis_cubic_interpolation_order, basis_cubic_simplex_interpolation, basis_linear_interpolation_order, basis_linear_simplex_interpolation, basis_quadratic_interpolation_order, basis_quadratic_simplex_interpolation, basis_quadrature_create(), basis_simplex_interpolation, basis_simplex_type, base_routines::enters(), base_routines::exits(), constants::first_part_deriv, and constants::no_part_deriv.

Referenced by basis_simplex_family_create().

real(dp) function basis_routines::basis_simplex_basis_derivative_evaluate ( type(basis_type), pointer  BASIS,
integer(intg), intent(in)  NODE_NUMBER,
integer(intg), intent(in)  PARTIAL_DERIV_INDEX,
real(dp), dimension(:), intent(in)  XL,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Evaluates partial derivatives of a simplex basis function with respect to area coordinates.

Parameters
basisA pointer to the basis function to evaluate.
[in]node_numberThe node number defines the actual basis function to evaluate.
[in]partial_deriv_indexThe partial derivative index in area coordinates of the basis to evaluate.
[in]xlXL(nic). The area coordinates to evaluate the basis function at.
[out]errThe error code
[out]errorThe error string
Returns
On return the evaluated basis function

Definition at line 5349 of file basis_routines.f90.

References basis_cubic_interpolation_order, basis_linear_interpolation_order, basis_quadratic_interpolation_order, base_routines::enters(), base_routines::exits(), and constants::partial_derivative_index.

Referenced by basis_simplex_basis_evaluate().

real(dp) function basis_routines::basis_simplex_basis_evaluate ( type(basis_type), pointer  BASIS,
integer(intg), intent(in)  NODE_NUMBER,
integer(intg), intent(in)  PARTIAL_DERIV_INDEX,
real(dp), dimension(:), intent(in)  XL,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Evaluates a simplex basis function and its derivatives with respect to external $\mathbf{\xi}$ coordinates. For Simplex line elements there are two area coordinates which are a function of $\xi_1$ : $L_1 = 1 - \xi_1$ and $L_2 = \xi_1 - 1$.The derivatives wrt to external coordinates are then given by $\frac{\partial\mathbf{N}}{\partial\xi_1}= \frac{\partial\mathbf(x)}{\partial L_2}-\frac{\partial \mathbf{N}}{\partial L_1}$ and $\frac{\partial^2\mathbf{N}}{ \partial \xi_1^2} = \frac{\partial^2\mathbf{N}}{\partial L_1^2}-2\frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_2}+ \frac{\partial^2\mathbf{N}}{\partial L_2^2}$. For Simplex triangle elements there are three area coordinates which are a function of $\xi_1$ and $\xi_2$ : $L_1 = 1 - \xi_1$, $L_2 = 1 - \xi_2$ and $L_3=\xi_1 + \xi_2 - 1$. The derivatives wrt to external coordinates are then given by $\frac{\partial \mathbf{N}}{\partial\xi_1}=\frac{\partial\mathbf(N)}{\partial L_3}- \frac{\partial \mathbf{N}}{\partial L_1}$, $\frac{\partial \mathbf{N}}{\partial\xi_2}=\frac{\partial\mathbf(x)}{ \partial L_3}-\frac{\partial \mathbf{N}}{\partial L_2}$, $\frac{\partial^2\mathbf{N}}{\partial \xi_1^2} = \frac{\partial^2\mathbf{N}}{\partial L_1^2}-2\frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_3}+ \frac{\partial^2\mathbf{N}}{\partial L_3^2}$, $\frac{\partial^2\mathbf{N}}{\partial \xi_2^2} = \frac{\partial^2\mathbf{N}}{\partial L_2^2}-2\frac{\partial^2\mathbf{N}}{\partial L_2 \partial L_3}+ \frac{\partial^2\mathbf{N}}{\partial L_3^2}$ and $\frac{\partial^2\mathbf{N}}{\partial \xi_1 \partial \xi_2} = \frac{\partial^2\mathbf{N}}{\partial L_3^2}-\frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_3}- \frac{\partial^2\mathbf{N}}{\partial L_2 \partial L_3}+\frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_2}$. For Simplex tetrahedral elements there are four area coordinates which are a function of $\xi_1$, $\xi_2$ and $\xi_3$ : $L_1 = 1 - \xi_1$, $L_2 = 1 - \xi_2$, $L_3 = 1 - \xi_3$ and $L_4 = \xi_1 + \xi_2 + \xi_3 - 1$. The derivatives wrt to external coordinates are then given by $\frac{\partial \mathbf{N}}{\partial\xi_1}=\frac{\partial\mathbf(x)}{\partial L_4}- \frac{\partial \mathbf{N}}{\partial L_1}$, $\frac{\partial \mathbf{N}}{\partial\xi_2}=\frac{\partial\mathbf(x)}{\partial L_4}- \frac{\partial \mathbf{N}}{\partial L_2}$, $\frac{\partial \mathbf{N}}{\partial\xi_3}=\frac{\partial\mathbf(x)}{\partial L_4}- \frac{\partial \mathbf{N}}{\partial L_3}$, $\frac{\partial^2\mathbf{N}}{\partial \xi_1^2} = \frac{\partial^2\mathbf{N}}{\partial L_1^2}- 2\frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_4}+\frac{\partial^2\mathbf{N}}{\partial L_4^2}$, $\frac{\partial^2\mathbf{N}}{\partial \xi_2^2} = \frac{\partial^2\mathbf{N}}{\partial L_2^2}- 2\frac{\partial^2\mathbf{N}}{\partial L_2 \partial L_4}+\frac{\partial^2\mathbf{N}}{\partial L_4^2}$ $\frac{\partial^2\mathbf{N}}{\partial \xi_3^2} = \frac{\partial^2\mathbf{N}}{\partial L_3^2}- 2\frac{\partial^2\mathbf{N}}{\partial L_3 \partial L_4}+\frac{\partial^2\mathbf{N}}{\partial L_4^2}$, $\frac{\partial^2\mathbf{N}}{\partial\xi_1\partial \xi_2}=\frac{\partial^2\mathbf{N}}{\partial L_4^2}- \frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_4}-\frac{\partial^2\mathbf{N}}{\partial L_2 \partial L_4}+ \frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_2}$, $\frac{\partial^2\mathbf{N}}{\partial\xi_1\partial\xi_3}=\frac{\partial^2\mathbf{N}}{\partial L_4^2}- \frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_4}-\frac{\partial^2\mathbf{N}}{\partial L_3 \partial L_4}+ \frac{\partial^2\mathbf{N}}{\partial L_1 \partial L_3}$, $\frac{\partial^2\mathbf{N}}{\partial\xi_2\partial\xi_3}=\frac{\partial^2\mathbf{N}}{\partial L_4^2}- \frac{\partial^2\mathbf{N}}{\partial L_2 \partial L_4}-\frac{\partial^2\mathbf{N}}{\partial L_3 \partial L_4}+ \frac{\partial^2\mathbf{N}}{\partial L_2 \partial L_3}$ and $\frac{\partial^3\mathbf{N}}{\partial \xi_1 \partial \xi_2 \partial \xi_3} = \frac{\partial^3\mathbf{N}}{\partial L_4^3}- \frac{\partial^3\mathbf{N}}{\partial L_1 \partial L_4^2}-\frac{\partial^3\mathbf{N}}{\partial L_2 \partial L_4^2}- \frac{\partial^3\mathbf{N}}{\partial L_3 \partial L_4^2}+\frac{\partial^3\mathbf{N}}{\partial L_1 \partial 2 \partial L_4}+ \frac{\partial^3\mathbf{N}}{\partial L_1 \partial L_3 \partial L_4}+\frac{\partial^3\mathbf{N}}{\partial L_2 \partial L_3 \partial L_4}-\frac{\partial^3\mathbf{N}}{\partial L_1 \partial L_2 \partial L_3}$.

Parameters
basisA pointer to the basis function to evaluate.
[in]node_numberThe node number defines the actual basis function to evaluate.
[in]partial_deriv_indexThe partial derivative index in Xi space of the basis to evaluate.
[in]xlXL(nic). The area coordinates to evaluate the basis function at.
[out]errThe error code
[out]errorThe error string
Returns
On return the evaluated basis function

Definition at line 5113 of file basis_routines.f90.

References basis_simplex_basis_derivative_evaluate(), basis_simplex_type, base_routines::enters(), base_routines::exits(), constants::no_part_deriv, constants::part_deriv_s1, constants::part_deriv_s1_s1, constants::part_deriv_s1_s2, constants::part_deriv_s1_s2_s3, constants::part_deriv_s1_s2_s4, constants::part_deriv_s1_s3, constants::part_deriv_s1_s3_s4, constants::part_deriv_s1_s4, constants::part_deriv_s1_s4_s4, constants::part_deriv_s2, constants::part_deriv_s2_s2, constants::part_deriv_s2_s3, constants::part_deriv_s2_s3_s4, constants::part_deriv_s2_s4, constants::part_deriv_s2_s4_s4, constants::part_deriv_s3, constants::part_deriv_s3_s3, constants::part_deriv_s3_s4, constants::part_deriv_s3_s4_s4, constants::part_deriv_s4, constants::part_deriv_s4_s4, and constants::part_deriv_s4_s4_s4.

Referenced by basis_evaluate_xi_dp(), basis_interpolate_xi_dp(), and basis_quadrature_create().

subroutine basis_routines::basis_simplex_family_create ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Creates and initialises a simplex basis family that has already been allocated by BASIS_CREATE_START.

See also
BASIS_ROUTINES::BASIS_SIMPLEX_BASIS_CREATE
Parameters
basisA pointer to the basis
[out]errThe error code
[out]errorThe error string

Definition at line 4953 of file basis_routines.f90.

References basis_family_destroy(), basis_simplex_basis_create(), basis_sub_basis_create(), base_routines::enters(), base_routines::exits(), and constants::other_xi_directions3.

Referenced by basis_create_finish().

subroutine basis_routines::basis_sub_basis_create ( type(basis_type), pointer  PARENT_BASIS,
integer(intg), intent(in)  NUMBER_OF_XI,
integer(intg), dimension(:), intent(in)  XI_DIRECTIONS,
type(basis_type), pointer  SUB_BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Creates a sub-basis on a parent basis.

Parameters
parent_basisA pointer to the parent basis
[in]number_of_xiThe number of Xi directions to create
[in]xi_directionsXI_DIRECTIONS(ni). Gives the Xi direction indices of the parent basis which are used to create the sub-basis
sub_basisOn return, a pointer to the created sub-basis. The pointer must be NULL on entry.
[out]errThe error code
[out]errorThe error string

Definition at line 5404 of file basis_routines.f90.

References basis_collapsed_at_xi0, basis_collapsed_at_xi1, basis_not_collapsed, basis_quadrature_initialise(), basis_xi_collapsed, base_routines::enters(), and base_routines::exits().

Referenced by basis_lhtp_family_create(), and basis_simplex_family_create().

subroutine, public basis_routines::basis_type_get ( type(basis_type), pointer  BASIS,
integer(intg), intent(out)  TYPE,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

get the type for a basis is identified by a a pointer.

See also
OPENCMISS::CMISSBasisTypeGet
Parameters
basisA pointer to the basis to get
[out]typeOn return, the type of the specified basis.
See also
BASIS_ROUTINES::BasisTypes
Parameters
[out]errThe error code
[out]errorThe error string

Definition at line 5515 of file basis_routines.f90.

References base_routines::enters(), and base_routines::exits().

Referenced by fieldml_output_routines::fieldml_output_create_basis_reference(), and fieldml_output_routines::fieldml_output_get_connectivity_ensemble().

subroutine basis_routines::basis_type_set_number ( integer(intg), intent(in)  USER_NUMBER,
integer(intg), intent(in)  TYPE,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Sets/changes the type for a basis is identified by a user number.

Parameters
[in]user_numberThe user number of the basis to set.
[in]typeThe type of the basis to set
See also
BASIS_ROUTINES::BasisTypes
Parameters
[out]errThe error code
[out]errorThe error string

Definition at line 5547 of file basis_routines.f90.

References basis_type_set_ptr(), basis_user_number_find(), base_routines::enters(), and base_routines::exits().

subroutine basis_routines::basis_type_set_ptr ( type(basis_type), pointer  BASIS,
integer(intg), intent(in)  TYPE,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Sets/changes the type for a basis is identified by a a pointer.

See also
OPENCMISS::CMISSBasisTypeGet
Parameters
basisA pointer to the basis to set
[in]typeThe type of the basis to be set.
See also
BASIS_ROUTINES::BasisTypes
Parameters
[out]errThe error code
[out]errorThe error string

Definition at line 5573 of file basis_routines.f90.

References basis_lagrange_hermite_tp_type, basis_linear_simplex_interpolation, basis_quadrature_finalise(), basis_quadrature_initialise(), basis_simplex_type, base_routines::enters(), and base_routines::exits().

Referenced by basis_type_set_number().

subroutine, public basis_routines::basis_user_number_find ( integer(intg), intent(in)  USER_NUMBER,
type(basis_type), pointer  BASIS,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)

Finds and returns in BASIS a pointer to the basis with the number given in USER_NUMBER. If no basis with that number exits BASIS is left nullified.

Parameters
[in]user_numberThe user number of the basis to find.
basisOn exit, a pointer to the found basis. If no basis with the given user number exists the pointer is NULL.
[out]errThe error code
[out]errorThe error string

Definition at line 5847 of file basis_routines.f90.

References basis_family_number_find(), base_routines::enters(), and base_routines::exits().

Referenced by basis_collapsed_xi_set_number(), basis_create_start(), basis_interpolation_xi_set_number(), basis_number_of_xi_set_number(), basis_quadrature_order_set_number(), basis_quadrature_type_set_number(), basis_type_set_number(), and fieldml_input_routines::fieldml_input_create_mesh_component().

subroutine basis_routines::gauss_legendre ( integer(intg), intent(in)  N,
real(dp), intent(in)  ALPHA,
real(dp), intent(in)  BETA,
real(dp), dimension(n), intent(out)  X,
real(dp), dimension(n), intent(out)  W,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

This routine calculates the weights and abscissae for a Gauss-Legendre quadrature scheme.

Todo:
Fix this.
Parameters
[in]nThe number of of Gauss points required.
[in]alphaThe lower limit of the integration scheme
[in]betaThe upper limit of the integration scheme
[out]xX(i). On exit the i'th Gauss point location
[out]wW(i). On exit the i'th Gauss point weight.
[out]errThe error code
[out]errorThe error string

Definition at line 5872 of file basis_routines.f90.

References base_routines::diagnostic_output_type, base_routines::diagnostics1, base_routines::diagnostics2, base_routines::enters(), and base_routines::exits().

Referenced by basis_gauss_points_calculate_dp(), and basis_quadrature_create().

subroutine basis_routines::gauss_simplex ( integer(intg), intent(in)  ORDER,
integer(intg), intent(in)  NUMBER_OF_VERTICES,
integer(intg), intent(out)  N,
real(dp), dimension(:,:), intent(out)  X,
real(dp), dimension(:), intent(out)  W,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

This routine calculates the weights and abscissae for a Gauss quadrature scheme for simplex elements.

Reference: Liu, Yen and Vinokur, Marcel. "Exact Integrations of Polynomials and Symmetric Quadrature Formulas over Arbitrary Polyhedral Grids", Journal of Computational Physics, 140:122-147 (1998).

Parameters
[in]orderThe desired order of the scheme. Currently, the maximum order is 5.
[in]number_of_verticesThe number of vertices. 2, 3 or 4 for lines, triangles or tetrahedra.
[out]nOn exit, the number of Gauss points
[out]xX(nj,ng). On exit, the returned positions in area coordinates.
[out]wW(ng). On exit, the returned weights.
[out]errThe error code
[out]errorThe error string

Definition at line 5960 of file basis_routines.f90.

References base_routines::diagnostic_output_type, base_routines::diagnostics1, base_routines::diagnostics2, base_routines::enters(), base_routines::exits(), and constants::twopi.

Referenced by basis_gauss_points_calculate_dp(), and basis_quadrature_create().

real(dp) function basis_routines::hermite_cubic_evaluate ( integer(intg), intent(in)  NODE_INDEX,
integer(intg), intent(in)  NODE_DERIVATIVE_INDEX,
integer(intg), intent(in)  PARTIAL_DERIVATIVE_INDEX,
real(dp), intent(in)  XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Evaluates a 1D cubic Hermite basis function.

Parameters
[in]node_indexThe local node number of the basis. Must be between 1 and 2.
[in]node_derivative_indexThe local derivative number of the basis. Must be between 1 and 2.
[in]partial_derivative_indexThe partial derivative index to evaluate.
[in]xiThe Xi location to evaluate the basis at.
[out]errThe error code
[out]errorThe error string
Returns
On exit the evaluated basis function.

Definition at line 6699 of file basis_routines.f90.

References base_routines::enters(), base_routines::exits(), constants::first_part_deriv, constants::no_part_deriv, and constants::second_part_deriv.

Referenced by basis_lhtp_basis_evaluate_dp().

real(dp) function basis_routines::hermite_quadratic_evaluate ( integer(intg), intent(in)  NODE_INDEX,
integer(intg), intent(in)  NODE_DERIVATIVE_INDEX,
integer(intg), intent(in)  PARTIAL_DERIVATIVE_INDEX,
integer(intg), intent(in)  SPECIAL_NODE_INDEX,
real(dp), intent(in)  XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Evaluates a 1D quadratic Hermite basis function.

Parameters
[in]node_indexThe local node number of the basis. Must be between 1 and 2.
[in]node_derivative_indexThe local derivative number of the basis. Must be between 1 and 2.
[in]partial_derivative_indexThe partial derivative index to evaluate.
[in]special_node_indexThe local node number with no derivative term.
[in]xiThe Xi location to evaluate the basis at.
[out]errThe error code
[out]errorThe error string

Definition at line 6810 of file basis_routines.f90.

References base_routines::enters(), base_routines::exits(), constants::first_part_deriv, constants::no_part_deriv, and constants::second_part_deriv.

Referenced by basis_lhtp_basis_evaluate_dp().

real(dp) function basis_routines::lagrange_cubic_evaluate ( integer(intg), intent(in)  NODE_INDEX,
integer(intg), intent(in)  PARTIAL_DERIVATIVE_INDEX,
real(dp), intent(in)  XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Evaluates a 1D cubic Lagrange basis function.

Parameters
[in]node_indexThe local node of the basis to evaluate. Must be between 1 and 4.
[in]partial_derivative_indexThe partial derivative to evaluate.
[in]xiThe Xi location to evaluate the basis at.
[out]errThe error code
[out]errorThe error string
Returns
On exit the evaluated basis function.

Definition at line 6991 of file basis_routines.f90.

References base_routines::enters(), base_routines::exits(), constants::first_part_deriv, constants::no_part_deriv, and constants::second_part_deriv.

Referenced by basis_lhtp_basis_evaluate_dp().

real(dp) function basis_routines::lagrange_linear_evaluate ( integer(intg), intent(in)  NODE_INDEX,
integer(intg), intent(in)  PARTIAL_DERIVATIVE_INDEX,
real(dp), intent(in)  XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Evaluates a 1D linear Lagrange basis function.

Parameters
[in]node_indexThe local node of the basis to evaluate. Must be between 1 and 2.
[in]partial_derivative_indexThe partial derivative to evaluate.
[in]xiThe Xi location to evaluate the basis at.
[out]errThe error code
[out]errorThe error string
Returns
On exit the evaluated basis function.

Definition at line 7061 of file basis_routines.f90.

References base_routines::enters(), base_routines::exits(), constants::first_part_deriv, constants::no_part_deriv, and constants::second_part_deriv.

Referenced by basis_lhtp_basis_evaluate_dp().

real(dp) function basis_routines::lagrange_quadratic_evaluate ( integer(intg), intent(in)  NODE_INDEX,
integer(intg), intent(in)  PARTIAL_DERIVATIVE_INDEX,
real(dp), intent(in)  XI,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Evaluates a 1D quadratic Lagrange basis function.

Parameters
[in]node_indexThe local node of the basis to evaluate. Must be between 1 and 3.
[in]partial_derivative_indexThe partial derivative to evaluate.
[in]xiThe Xi location to evaluate the basis at.
[out]errThe error code
[out]errorThe error string
Returns
On exit the evaluated basis function.

Definition at line 7119 of file basis_routines.f90.

References base_routines::enters(), base_routines::exits(), constants::first_part_deriv, constants::no_part_deriv, and constants::second_part_deriv.

Referenced by basis_lhtp_basis_evaluate_dp().

real(dp) function basis_routines::simplex_cubic_evaluate_dp ( integer(intg), intent(in)  NODE_INDEX,
integer(intg), intent(in)  PARTIAL_DERIVATIVE_INDEX,
real(dp), intent(in)  XL,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Evaluates a cubic simpelx basis function at a specificed area position and node index and with a given partial derivative index with respect to area coordinates for double precision arguments.

Parameters
[in]node_indexThe node index to evaluate
[in]partial_derivative_indexThe partial derivative index wrt area coordinates to evaluate
[in]xlThe area coordinate to evaluate at.
[out]errThe error code
[out]errorThe error string

Definition at line 7184 of file basis_routines.f90.

References base_routines::enters(), base_routines::exits(), constants::first_part_deriv, constants::no_part_deriv, constants::second_part_deriv, and constants::third_part_deriv.

real(dp) function basis_routines::simplex_linear_evaluate_dp ( integer(intg), intent(in)  NODE_INDEX,
integer(intg), intent(in)  PARTIAL_DERIVATIVE_INDEX,
real(dp), intent(in)  XL,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Evaluates a linear simpelx basis function at a specificed area position and node index and with a given partial derivative index with respect to area coordinates for double precision arguments.

Parameters
[in]node_indexThe node index to evaluate
[in]partial_derivative_indexThe partial derivative index wrt area coordinates to evaluate
[in]xlThe area coordinate to evaluate at.
[out]errThe error code
[out]errorThe error string

Definition at line 7269 of file basis_routines.f90.

References base_routines::enters(), base_routines::exits(), constants::first_part_deriv, constants::no_part_deriv, constants::second_part_deriv, and constants::third_part_deriv.

real(dp) function basis_routines::simplex_quadratic_evaluate_dp ( integer(intg), intent(in)  NODE_INDEX,
integer(intg), intent(in)  PARTIAL_DERIVATIVE_INDEX,
real(dp), intent(in)  XL,
integer(intg), intent(out)  ERR,
type(varying_string), intent(out)  ERROR 
)
private

Evaluates a quadratic simpelx basis function at a specificed area position and node index and with a given partial derivative index with respect to area coordinates for double precision arguments.

Parameters
[in]node_indexThe node index to evaluate
[in]partial_derivative_indexThe partial derivative index wrt area coordinates to evaluate
[in]xlThe area coordinate to evaluate at.
[out]errThe error code
[out]errorThe error string

Definition at line 7337 of file basis_routines.f90.

References base_routines::enters(), base_routines::exits(), constants::first_part_deriv, constants::no_part_deriv, constants::second_part_deriv, and constants::third_part_deriv.

Variable Documentation

type(basis_functions_type), public basis_routines::basis_functions