OpenCMISS-Iron Internal API Documentation
|
This module contains all mathematics support routines. More...
Data Types | |
interface | coth |
Returns hyperbolic cotangent of argument. More... | |
interface | cross_product |
Calculates the vector cross product of two vectors. More... | |
interface | crossproduct |
Calculates the vector cross product of two vectors. More... | |
interface | d_cross_product |
Calculates the the vector cross product of A*B in C and the N derivatives, D_C, of the vector cross product given the derivatives D_A and D_B of A and B. More... | |
interface | dcrossproduct |
Calculates the the vector cross product of a x b in c and the n derivatives, dc, of the vector cross product given the derivatives da and db of a and b. More... | |
interface | determinant |
Returns the determinant of a matrix. More... | |
interface | edp |
Calculates the elliptic integral of the second kind - E(m). More... | |
interface | eigenvalue |
Returns the eigenvalues of a matrix. More... | |
interface | eigenvector |
Returns the eigenvectors of a matrix. More... | |
interface | i0 |
Calculates the modified Bessel function of the first kind of order 0 using the approximation of Abromowitz and Stegun. More... | |
interface | i1 |
Calculates the modified Bessel function of the first kind of order 1 using the approximation of Abromowitz and Stegun. More... | |
interface | identitymatrix |
Returns the identity matrix. More... | |
interface | invert |
Returns the inverse of a matrix. More... | |
interface | k0 |
Calculates the modified Bessel function of the second kind of order 0 using the approximation of Abromowitz and Stegun. More... | |
interface | k1 |
Calculates the modified Bessel function of the second kind of order 1 using the approximation of Abromowitz and Stegun. More... | |
interface | kdp |
Calculates the elliptic integral of the first kind - K(m). More... | |
interface | l2norm |
Returns the L2 norm of a vector. More... | |
interface | matrix_product |
Calculates and returns the matrix-product A*B in the matrix C. More... | |
interface | matrix_transpose |
Returns the transpose of a matrix A in A^T. More... | |
interface | matrix_vector_product |
Calculates and returns the matrix-vector-product A*b in the vector c. More... | |
interface | matrixproduct |
Calculates and returns the matrix-product A*B in the matrix C. More... | |
interface | matrixproducttranspose |
Calculates and returns the matrix-product-transpose A*B^T in the matrix C. More... | |
interface | matrixtranspose |
Returns the transpose of a matrix A in A^T. More... | |
interface | matrixtransposeproduct |
Calculates and returns the matrix-transpose product A^T*B in the matrix C. More... | |
interface | matrixtransposevectorproduct |
Calculates and returns the matrix-transpose vector-product A^T*b in the vector c. More... | |
interface | matrixvectorproduct |
Calculates and returns the matrix-vector-product A*b in the vector c. More... | |
interface | norm_cross_product |
Calculates the normalised vector cross product of two vectors. More... | |
interface | normalise |
Normalises a vector. More... | |
interface | normcrossproduct |
Calculates the normalised vector cross product of two vectors. More... | |
interface | solve_small_linear_system |
Solves a small linear system Ax=b. More... | |
interface | solvesmalllinearsystem |
Solves a small linear system Ax=b. More... | |
Functions/Subroutines | |
subroutine | crossproductintg (a, b, c, err, error,) |
Calculates and returns the vector cross-product of the integer vectors a x b in c. More... | |
subroutine | crossproductsp (a, b, c, err, error,) |
Calculates and returns the vector cross-product of the single precision vectors a x b in c. More... | |
subroutine | crossproductdp (a, b, c, err, error,) |
Calculates and returns the vector cross-product of the double precision vectors a x b in c. More... | |
subroutine | dcrossproductintg (n, a, b, c, da, db, dc, err, error,) |
Calculates the the vector cross product of a x b in c and the n derivatives, dc, of the vector cross product given the derivatives da and db of a and b for integer vectors. More... | |
subroutine | dcrossproductsp (n, a, b, c, da, db, dc, err, error,) |
Calculates the the vector cross product of a x b in c and the n derivatives, dc, of the vector cross product given the derivatives da and db of a and b for single precision vectors. More... | |
subroutine | dcrossproductdp (n, a, b, c, da, db, dc, err, error,) |
Calculates the the vector cross product of a x b in c and the n derivatives, dc, of the vector cross product given the derivatives da and db of a and b for double precision vectors. More... | |
subroutine | matrixvectorproductsp (A, b, c, err, error,) |
Calculates and returns the matrix-vector product of the single precision vector A*b in c. More... | |
subroutine | matrixvectorproductdp (A, b, c, err, error,) |
Calculates and returns the matrix-vector product of the double precision vectir A*b in c. More... | |
subroutine | matrixtransposevectorproductsp (A, b, c, err, error,) |
Calculates and returns the matrix-transpose vector product of the single precision vector A^T*b in c. More... | |
subroutine | matrixtransposevectorproductdp (A, b, c, err, error,) |
Calculates and returns the matrix-transpose vector product of the double precision vector A^T*b in c. More... | |
integer(intg) function | determinantfullintg (A, err, error) |
Returns the determinant of a full integer matrix A. More... | |
real(sp) function | determinantfullsp (A, err, error) |
Returns the determinant of a full single precision matrix A. More... | |
real(dp) function | determinantfulldp (A, err, error) |
Returns the determinant of a full double precision matrix A. More... | |
pure real(dp) function | edpdp (x) |
Calculates the elliptic integral of the second kind - E(m), for a double precision argument. More... | |
pure real(sp) function | edpsp (x) |
Calculates the elliptic integral of the second kind - E(m), for a single precision argument. More... | |
subroutine | eigenvaluefullsp (A, eValues, err, error,) |
Returns the eigenvalues of a full single precision matrix A. More... | |
subroutine | eigenvaluefulldp (A, eValues, err, error,) |
Returns the eigenvalues of a full double precision matrix A. More... | |
subroutine | eigenvectorfullsp (A, eValue, eVector, err, error,) |
Returns the normalised eigenvector of a full single precision symmetric matrix A that corresponds to the eigenvalue eValue. More... | |
subroutine | eigenvectorfulldp (A, eValue, eVector, err, error,) |
Returns the normalised eigenvector of a full double precision symmetric matrix A that corresponds to the eigenvalue eValue. More... | |
pure real(dp) function | i0dp (x) |
Calculates the modified Bessel function of the first kind of order 0 using the approximation of Abromowitz and Stegun, for a double precision argument. More... | |
pure real(sp) function | i0sp (x) |
Calculates the modified Bessel function of the first kind of order 0 using the approximation of Abromowitz and Stegun, for a single precision argument. More... | |
pure real(dp) function | i1dp (x) |
Calculates the modified Bessel function of the first kind of order 1 using the approximation of Abromowitz and Stegun, for a double precision argument. More... | |
pure real(sp) function | i1sp (x) |
Calculates the modified Bessel function of the first kind of order 1 using the approximation of Abromowitz and Stegun, for a single precision argument. More... | |
subroutine | identitymatrixsp (A, err, error,) |
Returns an identity matrix. More... | |
subroutine | identitymatrixdp (A, err, error,) |
Returns an identity matrix. More... | |
subroutine | invertfullsp (A, B, det, err, error,) |
Inverts a full single precision matrix A to give matrix B and returns the determinant of A in det. More... | |
subroutine | invertfulldp (A, B, det, err, error,) |
Inverts a full double precision matrix A to give matrix B and returns the determinant of A in det. More... | |
pure real(dp) function | k0dp (x) |
Calculates the modified Bessel function of the second kind of order 1 using the approximation of Abromowitz and Stegun, for a double precision argument. More... | |
pure real(sp) function | k0sp (x) |
Calculates the modified Bessel function of the second kind of order 0 using the approximation of Abromowitz and Stegun, for a single precision argument. More... | |
pure real(dp) function | k1dp (x) |
Calculates the modified Bessel function of the second kind of order 1 using the approximation of Abromowitz and Stegun, for a double precision argument. More... | |
pure real(sp) function | k1sp (x) |
Calculates the modified Bessel function of the second kind of order 1 using the approximation of Abromowitz and Stegun, for a single precision argument. More... | |
pure real(dp) function | kdpdp (x) |
Calculates the elliptic integral of the first kind - K(m), for a double precision argument. More... | |
pure real(sp) function | kdpsp (x) |
Calculates the elliptic integral of the first kind - K(m), for a single precision argument. More... | |
pure real(sp) function | l2normsp (a) |
Returns the L2-norm of the single precision vector a. More... | |
real(dp) function | l2normdp (A) |
Returns the L2-norm of the double precision vector a. More... | |
subroutine | matrixproductsp (A, B, C, err, error,) |
Calculates and returns the matrix-product of the single precision matrix A*B in C for single precision arguments. More... | |
subroutine | matrixproductdp (A, B, C, err, error,) |
Calculates and returns the matrix-product of the double precision matrix A*B in C. More... | |
subroutine | matrixtransposeproductsp (A, B, C, err, error,) |
Calculates and returns the matrix-transpose product of the single precision matrix A^T*B in C for single precision arguments. More... | |
subroutine | matrixtransposeproductdp (A, B, C, err, error,) |
Calculates and returns the matrix-transpose product of the double precision matrix A^T*B in C for double precision arguments. More... | |
subroutine | matrixproducttransposesp (A, B, C, err, error,) |
Calculates and returns the matrix-product-transpose of the single precision matrix A*B^T in C for single precision arguments. More... | |
subroutine | matrixproducttransposedp (A, B, C, err, error,) |
Calculates and returns the matrix-product-transpose of the double precision matrix A*B^T in C. More... | |
subroutine | matrixtransposesp (A, AT, err, error,) |
Returns the transpose of a single precision matrix A in AT. More... | |
subroutine | matrixtransposedp (A, AT, err, error,) |
Returns the transpose of a double precision matrix A in AT. More... | |
real(sp) function, dimension(size(a, 1)) | normalisesp (a, err, error) |
Normalises a real single precision vector a. More... | |
real(dp) function, dimension(size(a, 1)) | normalisedp (a, err, error) |
Normalises a real double precision vector a. More... | |
subroutine | normcrossproductsp (a, b, c, err, error,) |
Calculates and returns the normalised vector cross-prouct of the single precision vectors a x b in c. More... | |
subroutine | normcrossproductdp (a, b, c, err, error,) |
Calculates and returns the normalised vector cross-prouct of the double precision vectors a x b in c. More... | |
subroutine | solvesmalllinearsystemsp (A, x, b, err, error,) |
Finds the solution to a small single precision linear system Ax=b. More... | |
subroutine | solvesmalllinearsystemdp (A, x, b, err, error,) |
Finds the solution to a small double precision linear system Ax=b. More... | |
real(sp) function | cothsp (a) |
Calculates single precision hyperbolic cotangent function. More... | |
real(dp) function | cothdp (a) |
Calculates double precision hyperbolic cotangent function. More... | |
subroutine, public | spline_cubic_set (n, t, y, ibcbeg, ybcbeg, ibcend, ybcend, ypp, err, error,) |
Calculates second derivatives of a cubic spline function for a tabulated function y(x). Call spline_cubic_val to evaluate at t values. algorithm adapted from John Burkhardt's spline_cubic_set routine from the SPLINE package (http://people.sc.fsu.edu/~jburkardt/f_src/spline/spline.html) More... | |
subroutine, public | s3_fs (a1, a2, a3, n, b, x, err, error,) |
S3_FS factors and solves a tridiagonal linear system. algorithm adapted from John Burkhardt's s3_fs routine from the SPLINE package (http://people.sc.fsu.edu/~jburkardt/f_src/spline/spline.html) More... | |
subroutine, public | spline_cubic_val (n, t, y, ypp, tval, yval, ypval, yppval, err, error,) |
Evaluates a cubic spline at a specified point. First call spline_cubic_set to calculate derivatives algorithm adapted from John Burkhardt's spline_cubic_val routine from the SPLINE package (http://people.sc.fsu.edu/~jburkardt/f_src/spline/spline.html) More... | |
This module contains all mathematics support routines.
|
private |
|
private |
|
private |
Calculates and returns the vector cross-product of the double precision vectors a x b in c.
[in] | a | The first vector in the cross product |
[in] | b | The second vector in the cross product |
[out] | c | On exit, the cross product of the first and second vectors |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 352 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates and returns the vector cross-product of the integer vectors a x b in c.
[in] | a | The first vector in the cross product |
[in] | b | The second vector in the cross product |
[out] | c | On exit, the cross product of the first and second vectors |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 270 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates and returns the vector cross-product of the single precision vectors a x b in c.
[in] | a | The first vector in the cross product |
[in] | b | The second vector in the cross product |
[out] | c | On exit, the cross product of the first and second vectors |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 311 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates the the vector cross product of a x b in c and the n derivatives, dc, of the vector cross product given the derivatives da and db of a and b for double precision vectors.
[in] | n | The number of derivatives |
[in] | a | The a vector |
[in] | b | The b vector |
[out] | c | On exit, the cross product of a x b |
[in] | da | The n derivatives of a |
[in] | db | The n derivatives of b |
[out] | dc | On exit, the derivatives of c |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 502 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates the the vector cross product of a x b in c and the n derivatives, dc, of the vector cross product given the derivatives da and db of a and b for integer vectors.
[in] | n | The number of derivatives |
[in] | a | The a vector |
[in] | b | The b vector |
[out] | c | On exit, the cross product of a x b |
[in] | da | The n derivatives of a |
[in] | db | The n derivatives of b |
[out] | dc | On exit, the derivatives of c |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 394 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates the the vector cross product of a x b in c and the n derivatives, dc, of the vector cross product given the derivatives da and db of a and b for single precision vectors.
[in] | n | The number of derivatives |
[in] | a | The a vector |
[in] | b | The b vector |
[out] | c | On exit, the cross product of a x b |
[in] | da | The n derivatives of a |
[in] | db | The n derivatives of b |
[out] | dc | On exit, the derivatives of c |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 448 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Returns the determinant of a full double precision matrix A.
[in] | a | The matrix to find the determinant of |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 801 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Returns the determinant of a full integer matrix A.
[in] | a | The matrix to find the determinant of |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 719 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Returns the determinant of a full single precision matrix A.
[in] | a | The matrix to find the determinant of |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 760 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
|
private |
|
private |
Returns the eigenvalues of a full double precision matrix A.
[in] | a | The matrix to find the eigenvalues of |
[out] | evalues | On exit, the eigenvalues of the matrix |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 993 of file maths.f90.
References base_routines::enters(), base_routines::exits(), constants::pi, and constants::zero_tolerance_dp.
|
private |
Returns the eigenvalues of a full single precision matrix A.
[in] | a | The matrix to find the eignenvalues for |
[out] | evalues | On exit, the eignevalues |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 905 of file maths.f90.
References base_routines::enters(), base_routines::exits(), and constants::zero_tolerance_sp.
|
private |
Returns the normalised eigenvector of a full double precision symmetric matrix A that corresponds to the eigenvalue eValue.
[in] | a | The matrix to find the eignevectors for |
[in] | evalue | The eigenvalue to find the eignevector for |
[out] | evector | On exit, the eigenvector corresponding the the eigenvalue |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 1168 of file maths.f90.
References base_routines::enters(), base_routines::exits(), and constants::zero_tolerance_dp.
|
private |
Returns the normalised eigenvector of a full single precision symmetric matrix A that corresponds to the eigenvalue eValue.
[in] | a | The matrix to find the eignevectors for |
[in] | evalue | The eigenvalue to find the eignevector for |
[out] | evector | On exit, the eigenvector corresponding the the eigenvalue |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 1081 of file maths.f90.
References base_routines::enters(), base_routines::exits(), and constants::zero_tolerance_sp.
|
private |
|
private |
|
private |
|
private |
|
private |
Returns an identity matrix.
[out] | a | On exit, the identity matrix |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 1431 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Returns an identity matrix.
[out] | a | On exit, the identity matrix |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 1379 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Inverts a full double precision matrix A to give matrix B and returns the determinant of A in det.
[in] | a | The matrix A to invert |
[out] | b | On exit, the inverse of A |
[out] | det | On exit, the determinant of A |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 1556 of file maths.f90.
References base_routines::enters(), base_routines::exits(), and constants::zero_tolerance_dp.
|
private |
Inverts a full single precision matrix A to give matrix B and returns the determinant of A in det.
[in] | a | The A matrix to invert |
[out] | b | On exit, the inverse of A |
[out] | det | On exit, the determinant of A |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 1483 of file maths.f90.
References base_routines::enters(), base_routines::exits(), and constants::zero_tolerance_sp.
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Calculates and returns the matrix-product of the double precision matrix A*B in C.
[in] | a | The A matrix |
[in] | b | The B matrix |
[out] | c | On exit, the product matrix C=A*B |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 1979 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates and returns the matrix-product of the single precision matrix A*B in C for single precision arguments.
[in] | a | The first matrix A |
[in] | b | The second matrix B |
[out] | c | On exit, the product matrix C=A*B |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 1929 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates and returns the matrix-product-transpose of the double precision matrix A*B^T in C.
[in] | a | The A matrix |
[in] | b | The B matrix |
[out] | c | On exit, the product matrix C=A*B^T |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2178 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates and returns the matrix-product-transpose of the single precision matrix A*B^T in C for single precision arguments.
[in] | a | The first matrix A |
[in] | b | The second matrix B |
[out] | c | On exit, the product matrix C=A*B^T |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2128 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Returns the transpose of a double precision matrix A in AT.
[in] | a | The matrix to take the transpose of |
[out] | at | On exit, the transpose of the matrix |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2277 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates and returns the matrix-transpose product of the double precision matrix A^T*B in C for double precision arguments.
[in] | a | The first matrix A |
[in] | b | The second matrix B |
[out] | c | On exit, the product matrix C=A^T*B |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2079 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates and returns the matrix-transpose product of the single precision matrix A^T*B in C for single precision arguments.
[in] | a | The first matrix A |
[in] | b | The second matrix B |
[out] | c | On exit, the product matrix C=A^T*B |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2029 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Returns the transpose of a single precision matrix A in AT.
[in] | a | The matrix to take the transpose of |
[out] | at | On exit, the transpose of the matrix |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2228 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates and returns the matrix-transpose vector product of the double precision vector A^T*b in c.
[in] | a | The A matrix |
[in] | b | The b vector |
[out] | c | On exit, the product vector c=A^T*b |
err | The error code | |
[out] | error | The error string |
Definition at line 678 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates and returns the matrix-transpose vector product of the single precision vector A^T*b in c.
[in] | a | The A matrix |
[in] | b | The b vector |
[out] | c | On exit, the product vector c=A^T*b |
err | The error code | |
[out] | error | The error string |
Definition at line 637 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates and returns the matrix-vector product of the double precision vectir A*b in c.
[in] | a | The A matrix |
[in] | b | The b vector |
[out] | c | On exit, the product vector c=A*b |
err | The error code | |
[out] | error | The error string |
Definition at line 596 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates and returns the matrix-vector product of the single precision vector A*b in c.
[in] | a | The A matrix |
[in] | b | The b vector |
[out] | c | On exit, the product vector c=A*b |
err | The error code | |
[out] | error | The error string |
Definition at line 555 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Normalises a real double precision vector a.
[in] | a | The vector to normalise |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2359 of file maths.f90.
References base_routines::enters(), base_routines::exits(), and constants::zero_tolerance_dp.
|
private |
Normalises a real single precision vector a.
[in] | a | The vector to normalise |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2326 of file maths.f90.
References base_routines::enters(), base_routines::exits(), and constants::zero_tolerance_sp.
|
private |
Calculates and returns the normalised vector cross-prouct of the double precision vectors a x b in c.
[in] | a | The first vector in the cross product |
[in] | b | The second vector in the cross product |
[out] | c | On exit, the normalised cross product of the first and second vectors |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2420 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Calculates and returns the normalised vector cross-prouct of the single precision vectors a x b in c.
[in] | a | The first vector in the cross product |
[in] | b | The second vector in the cross product |
[out] | c | On exit, the normalised cross product of the first and second vectors |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2392 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
subroutine, public maths::s3_fs | ( | real(dp), dimension(2:n), intent(inout) | a1, |
real(dp), dimension(1:n), intent(inout) | a2, | ||
real(dp), dimension(1:n-1), intent(inout) | a3, | ||
integer(intg), intent(in) | n, | ||
real(dp), dimension(n), intent(inout) | b, | ||
real(dp), dimension(n), intent(out) | x, | ||
integer(intg), intent(out) | err, | ||
type(varying_string), intent(out) | error | ||
) |
S3_FS factors and solves a tridiagonal linear system. algorithm adapted from John Burkhardt's s3_fs routine from the SPLINE package (http://people.sc.fsu.edu/~jburkardt/f_src/spline/spline.html)
[in,out] | a1 | IN: nonzero diagonal of linear system OUT: factorization info |
[in,out] | a2 | IN: nonzero diagonal of linear system OUT: factorization info |
[in,out] | a3 | IN: nonzero diagonal of linear system OUT: factorization info |
[in] | n | size of x,y arrays to interpolate values from |
[in,out] | b | IN: RHS of linear system OUT: factorization info |
[out] | x | solution of linear system |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2678 of file maths.f90.
References base_routines::enters(), base_routines::exits(), and constants::zero_tolerance.
Referenced by spline_cubic_set().
|
private |
Finds the solution to a small double precision linear system Ax=b.
[in] | a | The A matrix |
[out] | x | On exit, the solution vector x |
[in] | b | The RHS vector b |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2493 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
|
private |
Finds the solution to a small single precision linear system Ax=b.
[in] | a | The A matrix |
[out] | x | On exit, the solution vector x |
[in] | b | The RHS vector b |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2448 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
subroutine, public maths::spline_cubic_set | ( | integer(intg), intent(in) | n, |
real(dp), dimension(n), intent(in) | t, | ||
real(dp), dimension(n), intent(in) | y, | ||
integer(intg), intent(in) | ibcbeg, | ||
real(dp), intent(in) | ybcbeg, | ||
integer(intg), intent(in) | ibcend, | ||
real(dp), intent(in) | ybcend, | ||
real(dp), dimension(n), intent(out) | ypp, | ||
integer(intg), intent(out) | err, | ||
type(varying_string), intent(out) | error | ||
) |
Calculates second derivatives of a cubic spline function for a tabulated function y(x). Call spline_cubic_val to evaluate at t values. algorithm adapted from John Burkhardt's spline_cubic_set routine from the SPLINE package (http://people.sc.fsu.edu/~jburkardt/f_src/spline/spline.html)
[in] | n | size of x,y arrays to interpolate values from |
[in] | t | t array: known values |
[in] | y | y array: values to interpolate |
[in] | ibcbeg | left boundary condition flag |
[in] | ybcbeg | 1st derivative interpolating function at point 1 (left boundary) |
[in] | ibcend | right boundary condition flag |
[in] | ybcend | 1st derivative interpolating function at point n (right boundary) |
[out] | ypp | 2nd derivatives of interpolating function at x values |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2575 of file maths.f90.
References base_routines::enters(), base_routines::exits(), and s3_fs().
Referenced by navier_stokes_equations_routines::NavierStokes_PreSolveUpdateBoundaryConditions::navierstokes_presolveupdateboundaryconditions().
subroutine, public maths::spline_cubic_val | ( | integer(intg), intent(in) | n, |
real(dp), dimension(n), intent(in) | t, | ||
real(dp), dimension(n), intent(in) | y, | ||
real(dp), dimension(n), intent(in) | ypp, | ||
real(dp), intent(in) | tval, | ||
real(dp), intent(out) | yval, | ||
real(dp), intent(out) | ypval, | ||
real(dp), intent(out) | yppval, | ||
integer(intg), intent(out) | err, | ||
type(varying_string), intent(out) | error | ||
) |
Evaluates a cubic spline at a specified point. First call spline_cubic_set to calculate derivatives algorithm adapted from John Burkhardt's spline_cubic_val routine from the SPLINE package (http://people.sc.fsu.edu/~jburkardt/f_src/spline/spline.html)
[in] | n | size of t,y arrays to interpolate values from |
[in] | t | t array: known knot values |
[in] | y | y array: data values to interpolate at the knots |
[in] | ypp | 2nd derivatives of interpolating function at t values |
[in] | tval | point in t at which spline is to be evaluated |
[out] | yval | spline interpolated y value at tval |
[out] | ypval | first derivative of spline interpolated y value at tval |
[out] | yppval | second derivative of spline interpolated y value at tval |
[out] | err | The error code |
[out] | error | The error string |
Definition at line 2730 of file maths.f90.
References base_routines::enters(), and base_routines::exits().
Referenced by navier_stokes_equations_routines::NavierStokes_PreSolveUpdateBoundaryConditions::navierstokes_presolveupdateboundaryconditions().