|
CP2K 2.4 (Revision 12889)
|
Routines to efficently handle dense polynomial in 3 variables up to a given degree. Multiplication, partial evalution, affine transform (change of reference system), differentiation are efficiently implemented. some functions accept or return several polynomial together, these have to have all the same size, and are stored one after the other in an unique 1d array. This gives them an easy handling and even seem to be faster than the transposed layout. More...
Functions | |
| subroutine | init_d3_poly_module () |
| initialization of the cache, is called by functions in this module that use cached values | |
| INTEGER, public | poly_size1 (maxgrad) |
| size of a polynomial in x up to the given degree | |
| INTEGER, public | poly_size2 (maxgrad) |
| size of a polynomial in x,y up to the given degree | |
| INTEGER, public | poly_size3 (maxgrad) |
| size of a polynomial in x,y,z up to the given degree | |
| INTEGER, public | grad_size1 (n) |
| max grad for a polynom of the given size | |
| INTEGER, public | grad_size2 (n) |
| max grad for a polynom of the given size | |
| INTEGER, public | grad_size3 (n) |
| max grad for a polynom of the given size | |
| INTEGER | mono_index1 (i) |
| 0-based index of monomial of the given degree | |
| INTEGER | mono_index2 (i, j) |
| 0-based index of monomial of the given degree | |
| INTEGER | mono_index3 (i, j, k) |
| 0-based index of monomial of the given degree | |
| INTEGER | mono_exp1 (ii) |
| exponents of the monomial at the given 0-based index | |
| INTEGER, dimension(2) | mono_exp2 (ii) |
| exponents of the monomial at the given 0-based index | |
| INTEGER, dimension(3) | mono_exp3 (n) |
| exponents of the monomial at the given 0-based index | |
| INTEGER | mono_mult1 (ii, ij) |
| the index of the result of the multiplication of the two monomials | |
| INTEGER | mono_mult2 (ii, ij) |
| the index of the result of the multiplication of the two monomials | |
| INTEGER | mono_mult3 (ii, ij) |
| the index of the result of the multiplication of the two monomials | |
| subroutine, public | poly_mult1 (p1, p2, pRes, np1, sumUp, error) |
| multiplies the polynomials p1 with p2 using pRes to store the result | |
| subroutine, public | poly_mult2 (p1, p2, pRes, np1, sumUp, error) |
| multiplies p1 with p2 using pRes to store the result | |
| subroutine, public | poly_mult3 (p1, p2, pRes, np1, sumUp, error) |
| multiplies p1 with p2 using pRes to store the result | |
| subroutine | poly_mult3b (p1, size_p1, grad1, p2, size_p2, grad2, pRes, size_pRes, np1, sumUp) |
| low level routine of poly_mult3 without checks | |
| subroutine | poly_mult3ab (p1, size_p1, grad1, p2, pRes, size_pRes, np1, sumUp) |
| low level routine that multiplies with a polynomial of grad 1 | |
| subroutine, public | poly_write1 (p, out_f) |
| writes out a 1d polynomial in a human readable form | |
| subroutine, public | poly_write2 (p, out_f) |
| writes out a 2d polynomial in a human readable form | |
| subroutine, public | poly_write3 (p, out_f) |
| writes out the polynomial in a human readable form | |
| INTEGER, public | poly_random (p, maxSize, minSize, error) |
| random poly with coeffiecents that are easy to print exactly, of the given maximum size (for testing purposes) | |
| subroutine, public | poly_affine_t3t (p, m, b, pRes, npoly, error) |
| returns in the polynomials pRes the transpose of the affine transformation x -> m*x+b of p | |
| subroutine, public | poly_affine_t3 (p, m, b, pRes, npoly, error) |
| returns in the polynomials pRes the affine transformation x -> m*x+b of p | |
| subroutine, public | poly_p_eval3 (p, x, pRes, npoly, error) |
| evaluates the 3d polymial at x (the result is a polynomial in two variables) | |
| subroutine, public | poly_p_eval3b (p, size_p, x, pRes, size_pRes, npoly, grad, xi) |
| low level routine of poly_p_eval3 without checks | |
| subroutine, public | poly_padd_uneval3 (p, x, pRes, npoly, error) |
| unevaluates a 2d polymial to a 3d polynomial at x p(a,b,c)=p(a,b,c)+sum(pRes(b,c)*(x*a)^i,i), this is *not* the inverse of poly_p_eval3 adds to p | |
| subroutine, public | poly_padd_uneval3b (p, size_p, x, pRes, size_pRes, npoly, grad, xi) |
| low level routine of poly_padd_uneval3 without checks | |
| subroutine, public | poly_p_eval2 (p, x, pRes, npoly, error) |
| evaluates the 2d polynomial at x (the result is a polynomial in one variable) | |
| subroutine, public | poly_p_eval2b (p, size_p, x, pRes, size_pRes, npoly, grad, xi) |
| low level routine of poly_p_eval2 without checks | |
| subroutine, public | poly_padd_uneval2 (p, x, pRes, npoly, error) |
| unevaluates a 1d polynomial to 2d at x p(a,b)=sum(pRes(b)*(x*a)^i,i), this is *not* the inverse of poly_p_eval2 overwrites p | |
| subroutine, public | poly_padd_uneval2b (p, size_p, x, pRes, size_pRes, npoly, grad, xi) |
| low level routine of poly_p_uneval2 without checks | |
| subroutine, public | poly_eval1 (p, x, pRes, npoly, error) |
| evaluates the 1d polynomial at the given place, results are stored contiguosly | |
| subroutine, public | poly_eval2 (p, x, y, pRes, npoly, error) |
| evaluates the 2d polynomial at the given place, results are stored contiguosly | |
| subroutine, public | poly_eval3 (p, x, y, z, pRes, npoly, error) |
| evaluates the 3d polynomial at the given place, results are stored contiguosly | |
| subroutine, public | poly_derive3 (p, pRes, npoly, sumUp, error) |
| returns an array with all dp/dx, the all dp/dy, and finally all dp/dz | |
| subroutine, public | poly_cp2k2d3 (poly_cp2k, grad, poly_d3, error) |
| subroutine that converts from the cp2k poly format to the d3 poly format | |
| subroutine, public | poly_d32cp2k (poly_cp2k, grad, poly_d3, error) |
| subroutine that converts from the d3 poly format to the cp2k poly format | |
Variables | |
| CHARACTER(len=*), parameter, private | moduleN = 'd3_poly' |
| INTEGER, parameter, public | max_grad2 = 5 |
| INTEGER, parameter, public | max_grad3 = 3 |
| INTEGER, parameter, public | cached_dim1 = max_grad2+1 |
| INTEGER, parameter, public | cached_dim2 = (max_grad2+1)*(max_grad2+2)/2 |
| INTEGER, parameter, public | cached_dim3 = (max_grad3+1)*(max_grad3+2)*(max_grad3+3)/6 |
| LOGICAL, save, private | module_initialized = .FALSE. |
| INTEGER, dimension(2, cached_dim2), save | a_mono_exp2 |
| INTEGER, dimension(3, cached_dim3), save | a_mono_exp3 |
| INTEGER, dimension(cached_dim3), save | a_reduce_idx3 |
| INTEGER, dimension(3, cached_dim3), save | a_deriv_idx3 |
| INTEGER, dimension(cached_dim2, cached_dim2), save | a_mono_mult2 |
| INTEGER, dimension(cached_dim3, cached_dim3), save | a_mono_mult3 |
| INTEGER, dimension(4, cached_dim3), save | a_mono_mult3a |
Routines to efficently handle dense polynomial in 3 variables up to a given degree. Multiplication, partial evalution, affine transform (change of reference system), differentiation are efficiently implemented. some functions accept or return several polynomial together, these have to have all the same size, and are stored one after the other in an unique 1d array. This gives them an easy handling and even seem to be faster than the transposed layout.
max grad for a polynom of the given size
Definition at line 173 of file d3_poly.f90.
Referenced by poly_mult1(), and poly_padd_uneval2().
Here is the caller graph for this function:max grad for a polynom of the given size
Definition at line 183 of file d3_poly.f90.
Referenced by poly_eval2(), poly_mult2(), poly_p_eval2(), and poly_padd_uneval3().
Here is the caller graph for this function:max grad for a polynom of the given size
Definition at line 193 of file d3_poly.f90.
Referenced by gauss_colloc::calc_max_r2(), gauss_colloc::calcRadius2(), poly_affine_t3(), poly_affine_t3t(), poly_derive3(), poly_eval3(), poly_mult3(), and poly_p_eval3().
Here is the caller graph for this function:| subroutine d3_poly::init_d3_poly_module | ( | ) | [private] |
initialization of the cache, is called by functions in this module that use cached values
Definition at line 70 of file d3_poly.f90.
References a_deriv_idx3, a_mono_exp2, a_mono_exp3, a_mono_mult2, a_mono_mult3, a_mono_mult3a, a_reduce_idx3, cached_dim2, cached_dim3, max_grad2, max_grad3, module_initialized, mono_index2(), and mono_index3().
Referenced by poly_affine_t3(), poly_affine_t3t(), poly_derive3(), poly_eval2(), poly_eval3(), poly_mult1(), poly_mult2(), poly_mult3(), poly_mult3ab(), poly_mult3b(), poly_p_eval2(), poly_p_eval2b(), poly_p_eval3(), poly_p_eval3b(), poly_padd_uneval2(), poly_padd_uneval2b(), poly_padd_uneval3(), poly_padd_uneval3b(), poly_random(), poly_write2(), and poly_write3().
Here is the call graph for this function:
Here is the caller graph for this function:exponents of the monomial at the given 0-based index
Definition at line 249 of file d3_poly.f90.
exponents of the monomial at the given 0-based index
Definition at line 259 of file d3_poly.f90.
Referenced by mono_mult2(), and poly_write2().
Here is the caller graph for this function:exponents of the monomial at the given 0-based index
Definition at line 273 of file d3_poly.f90.
Referenced by mono_mult3(), and poly_write3().
Here is the caller graph for this function:0-based index of monomial of the given degree
Definition at line 212 of file d3_poly.f90.
0-based index of monomial of the given degree
Definition at line 222 of file d3_poly.f90.
Referenced by init_d3_poly_module(), and mono_mult2().
Here is the caller graph for this function:| INTEGER d3_poly::mono_index3 | ( | INTEGER,intent(in) | i, |
| INTEGER,intent(in) | j, | ||
| INTEGER,intent(in) | k | ||
| ) | [private] |
0-based index of monomial of the given degree
Definition at line 235 of file d3_poly.f90.
Referenced by init_d3_poly_module(), mono_mult3(), and poly_eval3().
Here is the caller graph for this function:the index of the result of the multiplication of the two monomials
Definition at line 293 of file d3_poly.f90.
the index of the result of the multiplication of the two monomials
Definition at line 303 of file d3_poly.f90.
References mono_exp2(), and mono_index2().
Here is the call graph for this function:the index of the result of the multiplication of the two monomials
Definition at line 316 of file d3_poly.f90.
References mono_exp3(), and mono_index3().
Here is the call graph for this function:| subroutine,public d3_poly::poly_affine_t3 | ( | REAL(dp),dimension(:),intent(in) | p, |
| REAL(dp),dimension(3, 3),intent(in) | m, | ||
| REAL(dp),dimension(3),intent(in) | b, | ||
| REAL(dp),dimension(:),intent(out) | pRes, | ||
| INTEGER,intent(in),optional | npoly, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
returns in the polynomials pRes the affine transformation x -> m*x+b of p
Definition at line 954 of file d3_poly.f90.
References CPPostconditionNoFail, CPPreconditionNoFail, grad_size3(), init_d3_poly_module(), module_initialized, poly_mult3ab(), and poly_size3().
Referenced by gauss_colloc::calc_max_r2().
Here is the call graph for this function:
Here is the caller graph for this function:| subroutine,public d3_poly::poly_affine_t3t | ( | REAL(dp),dimension(:),intent(in) | p, |
| REAL(dp),dimension(3, 3),intent(in) | m, | ||
| REAL(dp),dimension(3),intent(in) | b, | ||
| REAL(dp),dimension(:),intent(out) | pRes, | ||
| INTEGER,intent(in),optional | npoly, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
returns in the polynomials pRes the transpose of the affine transformation x -> m*x+b of p
Definition at line 792 of file d3_poly.f90.
References CPPostconditionNoFail, CPPreconditionNoFail, grad_size3(), init_d3_poly_module(), module_initialized, poly_mult3ab(), and poly_size3().
Here is the call graph for this function:| subroutine,public d3_poly::poly_cp2k2d3 | ( | REAL(dp),dimension(:),intent(in) | poly_cp2k, |
| INTEGER,intent(in) | grad, | ||
| REAL(dp),dimension(:),intent(out) | poly_d3, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
subroutine that converts from the cp2k poly format to the d3 poly format
Definition at line 1786 of file d3_poly.f90.
Referenced by collocate_general_subpatch(), and collocate_general_wings().
Here is the caller graph for this function:| subroutine,public d3_poly::poly_d32cp2k | ( | REAL(dp),dimension(:),intent(out) | poly_cp2k, |
| INTEGER,intent(in) | grad, | ||
| REAL(dp),dimension(:),intent(in) | poly_d3, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
subroutine that converts from the d3 poly format to the cp2k poly format
Definition at line 1839 of file d3_poly.f90.
Referenced by integrate_general_subpatch(), and integrate_general_wings().
Here is the caller graph for this function:| subroutine,public d3_poly::poly_derive3 | ( | REAL(dp),dimension(:),intent(in) | p, |
| REAL(dp),dimension(:),intent(inout) | pRes, | ||
| INTEGER,intent(in),optional | npoly, | ||
| LOGICAL,intent(in),optional | sumUp, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
returns an array with all dp/dx, the all dp/dy, and finally all dp/dz
Definition at line 1702 of file d3_poly.f90.
References a_deriv_idx3, a_mono_exp3, cached_dim3, CPPreconditionNoFail, grad_size3(), init_d3_poly_module(), max_grad3, module_initialized, and poly_size3().
Here is the call graph for this function:| subroutine,public d3_poly::poly_eval1 | ( | REAL(dp),dimension(:),intent(in) | p, |
| REAL(dp),intent(in) | x, | ||
| REAL(dp),dimension(:),intent(inout) | pRes, | ||
| INTEGER,intent(in),optional | npoly, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
evaluates the 1d polynomial at the given place, results are stored contiguosly
Definition at line 1526 of file d3_poly.f90.
References CPPreconditionNoFail.
| subroutine,public d3_poly::poly_eval2 | ( | REAL(dp),dimension(:),intent(in) | p, |
| REAL(dp),intent(in) | x, | ||
| REAL(dp),intent(in) | y, | ||
| REAL(dp),dimension(:),intent(inout) | pRes, | ||
| INTEGER,intent(in),optional | npoly, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
evaluates the 2d polynomial at the given place, results are stored contiguosly
Definition at line 1560 of file d3_poly.f90.
References a_mono_exp2, cached_dim2, CPPostconditionNoFail, CPPreconditionNoFail, grad_size2(), init_d3_poly_module(), max_grad2, and module_initialized.
Here is the call graph for this function:| subroutine,public d3_poly::poly_eval3 | ( | REAL(dp),dimension(:),intent(in) | p, |
| REAL(dp),intent(in) | x, | ||
| REAL(dp),intent(in) | y, | ||
| REAL(dp),intent(in) | z, | ||
| REAL(dp),dimension(:),intent(inout) | pRes, | ||
| INTEGER,intent(in),optional | npoly, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
evaluates the 3d polynomial at the given place, results are stored contiguosly
Definition at line 1627 of file d3_poly.f90.
References a_mono_exp3, cached_dim3, CPPostconditionNoFail, CPPreconditionNoFail, grad_size3(), init_d3_poly_module(), max_grad3, module_initialized, and mono_index3().
Referenced by gauss_colloc::collocGauss_safe().
Here is the call graph for this function:
Here is the caller graph for this function:| subroutine,public d3_poly::poly_mult1 | ( | REAL(dp),dimension(:),intent(in) | p1, |
| REAL(dp),dimension(:),intent(in) | p2, | ||
| REAL(dp),dimension(:),intent(inout) | pRes, | ||
| INTEGER,intent(in),optional | np1, | ||
| LOGICAL,intent(in),optional | sumUp, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
multiplies the polynomials p1 with p2 using pRes to store the result
Definition at line 329 of file d3_poly.f90.
References CPPreconditionNoFail, grad_size1(), init_d3_poly_module(), module_initialized, and poly_size1().
Here is the call graph for this function:| subroutine,public d3_poly::poly_mult2 | ( | REAL(dp),dimension(:),intent(in) | p1, |
| REAL(dp),dimension(:),intent(in) | p2, | ||
| REAL(dp),dimension(:),intent(inout) | pRes, | ||
| INTEGER,intent(in),optional | np1, | ||
| LOGICAL,intent(in),optional | sumUp, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
multiplies p1 with p2 using pRes to store the result
Definition at line 373 of file d3_poly.f90.
References a_mono_mult2, cached_dim2, CPPreconditionNoFail, grad_size2(), init_d3_poly_module(), max_grad2, module_initialized, and poly_size2().
Here is the call graph for this function:| subroutine,public d3_poly::poly_mult3 | ( | REAL(dp),dimension(:),intent(in) | p1, |
| REAL(dp),dimension(:),intent(in) | p2, | ||
| REAL(dp),dimension(:),intent(inout) | pRes, | ||
| INTEGER,intent(in),optional | np1, | ||
| LOGICAL,intent(in),optional | sumUp, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
multiplies p1 with p2 using pRes to store the result
Definition at line 451 of file d3_poly.f90.
References CPPreconditionNoFail, grad_size3(), init_d3_poly_module(), module_initialized, poly_mult3b(), and poly_size3().
Here is the call graph for this function:| subroutine d3_poly::poly_mult3ab | ( | REAL(dp),dimension(if_check(size_p1, *)),intent(in) | p1, |
| INTEGER,intent(in) | size_p1, | ||
| INTEGER,intent(in) | grad1, | ||
| REAL(dp),dimension(if_check(4, *)),intent(in) | p2, | ||
| REAL(dp),dimension(if_check(size_pres, *)),intent(inout) | pRes, | ||
| INTEGER,intent(in) | size_pRes, | ||
| INTEGER,intent(in) | np1, | ||
| LOGICAL,intent(in) | sumUp | ||
| ) | [private] |
low level routine that multiplies with a polynomial of grad 1
Definition at line 585 of file d3_poly.f90.
References a_mono_mult3a, cached_dim3, init_d3_poly_module(), max_grad3, and module_initialized.
Referenced by poly_affine_t3(), and poly_affine_t3t().
Here is the call graph for this function:
Here is the caller graph for this function:| subroutine d3_poly::poly_mult3b | ( | REAL(dp),dimension(if_check(size_p1, *)),intent(in) | p1, |
| INTEGER,intent(in) | size_p1, | ||
| INTEGER,intent(in) | grad1, | ||
| REAL(dp),dimension(if_check(size_p2, *)),intent(in) | p2, | ||
| INTEGER,intent(in) | size_p2, | ||
| INTEGER,intent(in) | grad2, | ||
| REAL(dp),dimension(if_check(size_pres, *)),intent(inout) | pRes, | ||
| INTEGER,intent(in) | size_pRes, | ||
| INTEGER,intent(in) | np1, | ||
| LOGICAL,intent(in) | sumUp | ||
| ) | [private] |
low level routine of poly_mult3 without checks
Definition at line 483 of file d3_poly.f90.
References a_mono_mult3, cached_dim3, init_d3_poly_module(), max_grad3, and module_initialized.
Referenced by poly_mult3().
Here is the call graph for this function:
Here is the caller graph for this function:| subroutine,public d3_poly::poly_p_eval2 | ( | REAL(dp),dimension(:),intent(in) | p, |
| REAL(dp),intent(in) | x, | ||
| REAL(dp),dimension(:),intent(inout) | pRes, | ||
| INTEGER,intent(in),optional | npoly, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
evaluates the 2d polynomial at x (the result is a polynomial in one variable)
Definition at line 1327 of file d3_poly.f90.
References CPPostconditionNoFail, CPPreconditionNoFail, grad_size2(), init_d3_poly_module(), module_initialized, poly_p_eval2b(), and poly_size1().
Here is the call graph for this function:| subroutine,public d3_poly::poly_p_eval2b | ( | REAL(dp),dimension(if_check(size_p, *)),intent(in) | p, |
| INTEGER,intent(in) | size_p, | ||
| REAL(dp),intent(in) | x, | ||
| REAL(dp),dimension(if_check(size_pres, *)),intent(inout) | pRes, | ||
| INTEGER,intent(in) | size_pRes, | ||
| INTEGER,intent(in) | npoly, | ||
| INTEGER | grad, | ||
| REAL(dp),dimension(if_check(grad+1, *)) | xi | ||
| ) |
low level routine of poly_p_eval2 without checks
Definition at line 1359 of file d3_poly.f90.
References a_mono_exp2, cached_dim2, init_d3_poly_module(), max_grad2, and module_initialized.
Referenced by poly_p_eval2().
Here is the call graph for this function:
Here is the caller graph for this function:| subroutine,public d3_poly::poly_p_eval3 | ( | REAL(dp),dimension(:),intent(in) | p, |
| REAL(dp),intent(in) | x, | ||
| REAL(dp),dimension(:),intent(inout) | pRes, | ||
| INTEGER,intent(in),optional | npoly, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
evaluates the 3d polymial at x (the result is a polynomial in two variables)
Definition at line 1116 of file d3_poly.f90.
References CPPostconditionNoFail, CPPreconditionNoFail, grad_size3(), init_d3_poly_module(), module_initialized, poly_p_eval3b(), and poly_size2().
Here is the call graph for this function:| subroutine,public d3_poly::poly_p_eval3b | ( | REAL(dp),dimension(if_check(size_p, *)),intent(in) | p, |
| INTEGER,intent(in) | size_p, | ||
| REAL(dp),intent(in) | x, | ||
| REAL(dp),dimension(if_check(size_pres, *)),intent(inout) | pRes, | ||
| INTEGER,intent(in) | size_pRes, | ||
| INTEGER,intent(in) | npoly, | ||
| INTEGER,intent(in) | grad, | ||
| REAL(dp),dimension(if_check(grad+1, *)),intent(inout) | xi | ||
| ) |
low level routine of poly_p_eval3 without checks
Definition at line 1148 of file d3_poly.f90.
References a_mono_exp3, a_reduce_idx3, cached_dim3, init_d3_poly_module(), max_grad3, and module_initialized.
Referenced by poly_p_eval3().
Here is the call graph for this function:
Here is the caller graph for this function:| subroutine,public d3_poly::poly_padd_uneval2 | ( | REAL(dp),dimension(:),intent(inout) | p, |
| REAL(dp),intent(in) | x, | ||
| REAL(dp),dimension(:),intent(in) | pRes, | ||
| INTEGER,intent(in),optional | npoly, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
unevaluates a 1d polynomial to 2d at x p(a,b)=sum(pRes(b)*(x*a)^i,i), this is *not* the inverse of poly_p_eval2 overwrites p
Definition at line 1427 of file d3_poly.f90.
References CPPostconditionNoFail, CPPreconditionNoFail, grad_size1(), init_d3_poly_module(), module_initialized, poly_padd_uneval2b(), poly_size1(), and poly_size2().
Here is the call graph for this function:| subroutine,public d3_poly::poly_padd_uneval2b | ( | REAL(dp),dimension(if_check(size_p, *)),intent(inout) | p, |
| INTEGER,intent(in) | size_p, | ||
| REAL(dp),intent(in) | x, | ||
| REAL(dp),dimension(if_check(size_pres, *)),intent(in) | pRes, | ||
| INTEGER,intent(in) | size_pRes, | ||
| INTEGER,intent(in) | npoly, | ||
| INTEGER | grad, | ||
| REAL(dp),dimension(if_check(grad+1, *)) | xi | ||
| ) |
low level routine of poly_p_uneval2 without checks
Definition at line 1459 of file d3_poly.f90.
References a_mono_exp2, cached_dim2, init_d3_poly_module(), max_grad2, and module_initialized.
Referenced by poly_padd_uneval2().
Here is the call graph for this function:
Here is the caller graph for this function:| subroutine,public d3_poly::poly_padd_uneval3 | ( | REAL(dp),dimension(:),intent(inout) | p, |
| REAL(dp),intent(in) | x, | ||
| REAL(dp),dimension(:),intent(in) | pRes, | ||
| INTEGER,intent(in),optional | npoly, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
unevaluates a 2d polymial to a 3d polynomial at x p(a,b,c)=p(a,b,c)+sum(pRes(b,c)*(x*a)^i,i), this is *not* the inverse of poly_p_eval3 adds to p
Definition at line 1222 of file d3_poly.f90.
References CPPostconditionNoFail, CPPreconditionNoFail, grad_size2(), init_d3_poly_module(), module_initialized, poly_padd_uneval3b(), poly_size2(), and poly_size3().
Here is the call graph for this function:| subroutine,public d3_poly::poly_padd_uneval3b | ( | REAL(dp),dimension(if_check(size_p, *)),intent(inout) | p, |
| INTEGER,intent(in) | size_p, | ||
| REAL(dp),intent(in) | x, | ||
| REAL(dp),dimension(if_check(size_pres, *)),intent(in) | pRes, | ||
| INTEGER,intent(in) | size_pRes, | ||
| INTEGER,intent(in) | npoly, | ||
| INTEGER,intent(in) | grad, | ||
| REAL(dp),dimension(if_check(grad+1, *)),intent(inout) | xi | ||
| ) |
low level routine of poly_padd_uneval3 without checks
Definition at line 1255 of file d3_poly.f90.
References a_mono_exp3, a_reduce_idx3, cached_dim3, init_d3_poly_module(), max_grad3, and module_initialized.
Referenced by poly_padd_uneval3().
Here is the call graph for this function:
Here is the caller graph for this function:| INTEGER,public d3_poly::poly_random | ( | REAL(dp),dimension(:),intent(out) | p, |
| INTEGER,intent(in) | maxSize, | ||
| INTEGER,intent(in),optional | minSize, | ||
| TYPE(cp_error_type),intent(inout) | error | ||
| ) |
random poly with coeffiecents that are easy to print exactly, of the given maximum size (for testing purposes)
Definition at line 759 of file d3_poly.f90.
References CPPreconditionNoFail, init_d3_poly_module(), and module_initialized.
Here is the call graph for this function:size of a polynomial in x up to the given degree
Definition at line 143 of file d3_poly.f90.
Referenced by poly_mult1(), poly_p_eval2(), and poly_padd_uneval2().
Here is the caller graph for this function:size of a polynomial in x,y up to the given degree
Definition at line 153 of file d3_poly.f90.
Referenced by poly_mult2(), poly_p_eval3(), poly_padd_uneval2(), and poly_padd_uneval3().
Here is the caller graph for this function:size of a polynomial in x,y,z up to the given degree
Definition at line 163 of file d3_poly.f90.
Referenced by gauss_colloc::calc_max_r2(), poly_affine_t3(), poly_affine_t3t(), poly_derive3(), poly_mult3(), and poly_padd_uneval3().
Here is the caller graph for this function:| subroutine,public d3_poly::poly_write1 | ( | REAL(dp),dimension(:),intent(in) | p, |
| INTEGER,intent(in) | out_f | ||
| ) |
writes out a 1d polynomial in a human readable form
Definition at line 683 of file d3_poly.f90.
| subroutine,public d3_poly::poly_write2 | ( | REAL(dp),dimension(:),intent(in) | p, |
| INTEGER,intent(in) | out_f | ||
| ) |
writes out a 2d polynomial in a human readable form
Definition at line 705 of file d3_poly.f90.
References init_d3_poly_module(), module_initialized, and mono_exp2().
Here is the call graph for this function:| subroutine,public d3_poly::poly_write3 | ( | REAL(dp),dimension(:),intent(in) | p, |
| INTEGER,intent(in) | out_f | ||
| ) |
writes out the polynomial in a human readable form
Definition at line 731 of file d3_poly.f90.
References init_d3_poly_module(), module_initialized, and mono_exp3().
Here is the call graph for this function:| INTEGER,dimension(3,cached_dim3),save d3_poly::a_deriv_idx3 |
Definition at line 58 of file d3_poly.f90.
Referenced by init_d3_poly_module(), and poly_derive3().
| INTEGER,dimension(2,cached_dim2),save d3_poly::a_mono_exp2 |
Definition at line 55 of file d3_poly.f90.
Referenced by init_d3_poly_module(), poly_eval2(), poly_p_eval2b(), and poly_padd_uneval2b().
| INTEGER,dimension(3,cached_dim3),save d3_poly::a_mono_exp3 |
Definition at line 56 of file d3_poly.f90.
Referenced by init_d3_poly_module(), poly_derive3(), poly_eval3(), poly_p_eval3b(), and poly_padd_uneval3b().
| INTEGER,dimension(cached_dim2,cached_dim2),save d3_poly::a_mono_mult2 |
Definition at line 59 of file d3_poly.f90.
Referenced by init_d3_poly_module(), and poly_mult2().
| INTEGER,dimension(cached_dim3,cached_dim3),save d3_poly::a_mono_mult3 |
Definition at line 60 of file d3_poly.f90.
Referenced by init_d3_poly_module(), and poly_mult3b().
| INTEGER,dimension(4,cached_dim3),save d3_poly::a_mono_mult3a |
Definition at line 61 of file d3_poly.f90.
Referenced by init_d3_poly_module(), and poly_mult3ab().
| INTEGER,dimension(cached_dim3),save d3_poly::a_reduce_idx3 |
Definition at line 57 of file d3_poly.f90.
Referenced by init_d3_poly_module(), poly_p_eval3b(), and poly_padd_uneval3b().
| INTEGER,parameter,public d3_poly::cached_dim1 = max_grad2+1 |
Definition at line 48 of file d3_poly.f90.
| INTEGER,parameter,public d3_poly::cached_dim2 = (max_grad2+1)*(max_grad2+2)/2 |
Definition at line 49 of file d3_poly.f90.
Referenced by init_d3_poly_module(), poly_eval2(), poly_mult2(), poly_p_eval2b(), and poly_padd_uneval2b().
| INTEGER,parameter,public d3_poly::cached_dim3 = (max_grad3+1)*(max_grad3+2)*(max_grad3+3)/6 |
Definition at line 50 of file d3_poly.f90.
Referenced by init_d3_poly_module(), poly_derive3(), poly_eval3(), poly_mult3ab(), poly_mult3b(), poly_p_eval3b(), and poly_padd_uneval3b().
| INTEGER,parameter,public d3_poly::max_grad2 = 5 |
Definition at line 46 of file d3_poly.f90.
Referenced by init_d3_poly_module(), poly_eval2(), poly_mult2(), poly_p_eval2b(), and poly_padd_uneval2b().
| INTEGER,parameter,public d3_poly::max_grad3 = 3 |
Definition at line 47 of file d3_poly.f90.
Referenced by init_d3_poly_module(), poly_derive3(), poly_eval3(), poly_mult3ab(), poly_mult3b(), poly_p_eval3b(), and poly_padd_uneval3b().
| LOGICAL,save,private d3_poly::module_initialized = .FALSE. |
Definition at line 54 of file d3_poly.f90.
Referenced by init_d3_poly_module(), poly_affine_t3(), poly_affine_t3t(), poly_derive3(), poly_eval2(), poly_eval3(), poly_mult1(), poly_mult2(), poly_mult3(), poly_mult3ab(), poly_mult3b(), poly_p_eval2(), poly_p_eval2b(), poly_p_eval3(), poly_p_eval3b(), poly_padd_uneval2(), poly_padd_uneval2b(), poly_padd_uneval3(), poly_padd_uneval3b(), poly_random(), poly_write2(), and poly_write3().
| CHARACTER(len=*),parameter,private d3_poly::moduleN = 'd3_poly' |
Definition at line 44 of file d3_poly.f90.
1.7.3