HPC#

This module contains the High Performance Computing (HPC) functions. The module uses Numba to create a compiled version of the solve and plotter. The code is separated into different files, each containing a different set of functions.

The compiled function utilizes parallel processing to speed up the computation.

These functions are not to be called from the user directly, but are used by the other functions in the package.

Solver functions#

Notes

This module contains the HPC solve functions.

andfn.hpc.hpc_solve.build_head_matrix(fractures_struc_array, element_struc_array, discharge_elements, discharge_int, head_matrix, z_int)[source]#

Builds the head matrix for the DFN and stores it.

Parameters:
  • fractures_struc_array (np.ndarray[fracture_dtype]) – Array of fractures

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements

  • discharge_elements (np.ndarray[element_dtype]) – The discharge elements

  • discharge_int (int) – The number of integration points

  • head_matrix (np.ndarray[dtype_head_matrix]) – The head matrix

  • z_int (np.ndarray[dtype_z_arrays]) – The z arrays for the discharge elements

Returns:

matrix – The head matrix

Return type:

np.ndarray

andfn.hpc.hpc_solve.element_solver(num_elements, element_struc_array, fracture_struc_array, work_array, max_error, nit, cnt_error)[source]#
andfn.hpc.hpc_solve.element_solver2(num_elements, element_struc_array, fracture_struc_array, work_array, max_error, nit, cnt_error, max_coef_ratio, max_coef, coef_increase)[source]#

Solves the elements and updates the coefficients in the work array. :param num_elements: The number of elements :type num_elements: int :param element_struc_array: Array of elements :type element_struc_array: np.ndarray[element_dtype] :param fracture_struc_array: Array of fractures :type fracture_struc_array: np.ndarray[fracture_dtype] :param work_array: The work array :type work_array: np.ndarray[dtype_work] :param max_error: The maximum error :type max_error: float :param nit: The number of iterations :type nit: int :param cnt_error: The number of errors :type cnt_error: int :param max_coef_ratio: The coefficient ratio :type max_coef_ratio: float :param max_coef: The maximum number of coefficients :type max_coef: int :param coef_increase: The coefficient increase :type coef_increase: int

Returns:

cnt – The number of elements that were solved

Return type:

int

andfn.hpc.hpc_solve.get_bnd_error(num_elements, fracture_struc_array, element_struc_array, work_array, discharge_int, bnd_error, z_int, nit, max_error, constants)[source]#

Builds the head matrix for the DFN and stores it.

Parameters:
  • num_elements (int) – The number of elements

  • fracture_struc_array (np.ndarray[fracture_dtype]) – Array of fractures

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements

  • work_array (np.ndarray[dtype_work]) – The work array

  • discharge_int (int) – The number of integration points

  • bnd_error (np.ndarray[dtype_head_matrix]) – The error matrix for the boundary conditions

  • z_int (np.ndarray[dtype_z_arrays]) – The z arrays for the discharge elements

  • nit (int) – The number of iterations

  • max_error (float) – The maximum error

  • constants (np.ndarray[constants_dtype]) – The constants for the solver and dfn.

Returns:

matrix – The head matrix

Return type:

np.ndarray

andfn.hpc.hpc_solve.get_discharge_elements(element_struc_array)[source]#

Get the discharge elements from the element array.

Parameters:

element_struc_array (np.ndarray[element_dtype]) – The array of elements

Returns:

discharge_elements – The array of discharge elements

Return type:

np.ndarray[element_dtype]

andfn.hpc.hpc_solve.get_error(element_struc_array)[source]#

Get the maximum error from the elements and the element that it is associated with.

Parameters:

element_struc_array (np.ndarray[element_dtype]) – The array of elements

Returns:

  • error (float) – The maximum error

  • id_ (int) – The id of the element with the maximum error

andfn.hpc.hpc_solve.get_max_min_phi(element_struc_array, fracture_struc_array, ids, frac_id, z_int, discharge_int)[source]#

Get the maximum and minimum phi values from the elements.

Parameters:
  • element_struc_array (np.ndarray[element_dtype]) – The array of elements

  • fracture_struc_array (np.ndarray[fracture_dtype]) – The array of fractures

  • ids (np.ndarray) – The ids of the elements to check

  • frac_id (int) – The id of the fracture to check

  • z_int (np.ndarray[dtype_z_arrays]) – The z arrays for the discharge elements

  • discharge_int (int) – The number of integration points

Returns:

  • max_phi (float) – The maximum phi value

  • min_phi (float) – The minimum phi value

andfn.hpc.hpc_solve.get_z_int_array(z_int, elements, discharge_int)[source]#
andfn.hpc.hpc_solve.post_matrix_solve(fractures_struc_array, element_struc_array, discharge_elements, discharges)[source]#

Solves the discharge matrix for the DFN and stores the discharges and constants in the elements and fractures.

Parameters:
  • fractures_struc_array (np.ndarray[fracture_dtype]) – Array of fractures

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements

  • discharge_elements (np.ndarray[element_dtype]) – The discharge elements

  • discharges (np.ndarray) – The discharges

Returns:

  • fractures_struc_array (np.ndarray[fracture_dtype]) – The array of fractures

  • element_struc_array (np.ndarray[element_dtype]) – The array of elements

andfn.hpc.hpc_solve.pre_matrix_solve(fractures_struc_array, element_struc_array, discharge_elements, discharge_int, head_matrix, z_int)[source]#

Solves the discharge matrix for the DFN and stores the discharges and constants in the elements and fractures.

Parameters:
  • fractures_struc_array (np.ndarray[fracture_dtype]) – Array of fractures

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements

  • discharge_elements (np.ndarray[element_dtype]) – The discharge elements

  • discharge_int (int) – The number of integration points

  • head_matrix (np.ndarray[dtype_head_matrix]) – The head matrix

  • z_int (np.ndarray[dtype_z_arrays]) – The z arrays for the discharge elements

Returns:

  • fractures_struc_array (np.ndarray[fracture_dtype]) – The array of fractures

  • element_struc_array (np.ndarray[element_dtype]) – The array of elements

andfn.hpc.hpc_solve.set_new_ncoef(self_, n, nint_mult=2)[source]#

Increase the number of coefficients in the asymptotic expansion.

Parameters:
  • self (np.ndarray[element_dtype]) – The element to increase the number of coefficients.

  • n (int) – The new number of coefficients.

  • nint_mult (int) – The multiplier for the number of integration points.

andfn.hpc.hpc_solve.solve(fracture_struc_array, element_struc_array, discharge_matrix, discharge_int, constants)[source]#

Solves the DFN.

Parameters:
  • fracture_struc_array (np.ndarray[fracture_dtype]) – Array of fractures

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements

  • discharge_matrix (np.ndarray) – The discharge matrix

  • discharge_int (int) – The number of integration points

  • constants (np.ndarray[constants_dtype]) – The constants for the solver and dfn.

Returns:

element_struc_array – The array of elements

Return type:

np.ndarray[element_dtype]

andfn.hpc.hpc_solve.solve_discharge_matrix(fractures_struc_array, element_struc_array, discharge_elements, discharge_int, head_matrix, discharges, z_int, lu_matrix)[source]#

Solves the discharge matrix for the DFN and stores the discharges and constants in the elements and fractures.

Parameters:
  • fractures_struc_array (np.ndarray[fracture_dtype]) – Array of fractures

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements

  • discharge_elements (np.ndarray[element_dtype]) – The discharge elements

  • discharge_int (int) – The number of integration points

  • head_matrix (np.ndarray[dtype_head_matrix]) – The head matrix

  • discharges (np.ndarray) – The discharges to be solved

  • z_int (np.ndarray[dtype_z_arrays]) – The z arrays for the discharge elements

  • lu_matrix (scipy.sparse.linalg.splu) – The LU factorization of the discharge matrix

Returns:

  • fractures_struc_array (np.ndarray[fracture_dtype]) – The array of fractures

  • element_struc_array (np.ndarray[element_dtype]) – The array of elements

Fracture functions#

Notes

This module contains the HPC fracture functions.

andfn.hpc.hpc_fracture.calc_flow_net(self_, n_points, margin, element_struc_array)[source]#

Calculates the flow net for the fracture.

Parameters:
  • self (np.ndarray[fracture_dtype]) – The fracture element.

  • n_points (int) – Number of points in the flow net.

  • margin (float) – Margin for the flow net.

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements.

Returns:

flow_net – The flow net for the fracture.

Return type:

np.ndarray[complex]

andfn.hpc.hpc_fracture.calc_heads(self_, n_points, margin, element_struc_array)[source]#

Calculates the head net for the fracture.

Parameters:
  • self (np.ndarray[fracture_dtype]) – The fracture element.

  • n_points (int) – Number of points in the flow net.

  • margin (float) – Margin for the flow net.

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements.

Returns:

heads – The head net for the fracture.

Return type:

np.ndarray[complex]

andfn.hpc.hpc_fracture.calc_omega(self_, z, element_struc_array, exclude=-1)[source]#

Calculates the omega for the fracture excluding element “exclude”.

Parameters:
  • self (np.ndarray[fracture_dtype]) – The fracture element.

  • z (complex) – A point in the complex z plane.

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements.

  • exclude (int) – Label of element to exclude from the omega calculation.

Returns:

omega – The complex potential for the fracture.

Return type:

complex

andfn.hpc.hpc_fracture.calc_w(self_, z, element_struc_array, exclude=-1)[source]#

Calculates the omega for the fracture excluding element “exclude”.

Parameters:
  • self (np.ndarray[fracture_dtype]) – The fracture element.

  • z (complex) – A point in the complex z plane.

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements.

  • exclude (int) – Label of element to exclude from the omega calculation.

Returns:

w – The complex potential for the fracture.

Return type:

complex

andfn.hpc.hpc_fracture.get_flow_nets(fracture_struc_array, n_points, margin, element_struc_array)[source]#

Get the flow nets for all fractures.

Parameters:
  • fracture_struc_array (np.ndarray[fracture_dtype]) – The fracture structure array.

  • n_points (int) – Number of points in the flow net.

  • margin (float) – Margin for the flow net.

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements.

Returns:

flow_nets – List of flow nets for each fracture.

Return type:

list[np.ndarray[complex]]

andfn.hpc.hpc_fracture.get_heads(fracture_struc_array, n_points, margin, element_struc_array)[source]#

Get the heads for all fractures.

Parameters:
  • fracture_struc_array (np.ndarray[fracture_dtype]) – The fracture structure array.

  • n_points (int) – Number of points in the flow net.

  • margin (float) – Margin for the flow net.

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements.

Returns:

heads – List of heads for each fracture.

Return type:

list[np.ndarray[complex]]

andfn.hpc.hpc_fracture.head_from_phi(self_, phi)[source]#

Calculates the head net for the fracture.

Parameters:
  • self (np.ndarray[fracture_dtype]) – The fracture element.

  • phi (float) – The discharge potential for the fracture.

Returns:

head – The head net for the fracture.

Return type:

np.ndarray[complex]

Bounding circle functions#

andfn.hpc.hpc_bounding_circle.calc_omega(self_, z)[source]#

Calculates the omega for the bounding circle.

Parameters:
  • self (np.ndarray[element_dtype]) – The bounding circle element

  • z (complex) – A point in the complex z plane.

Returns:

omega – The complex potential for the bounding circle.

Return type:

complex

andfn.hpc.hpc_bounding_circle.calc_w(self_, z)[source]#

Calculates the omega for the bounding circle.

Parameters:
  • self (np.ndarray[element_dtype]) – The bounding circle element

  • z (complex) – A point in the complex z plane.

Returns:

omega – The complex potential for the bounding circle.

Return type:

complex

andfn.hpc.hpc_bounding_circle.check_boundary_condition(self_, fracture_struc_array, element_struc_array, n=10)[source]#

Check if the bounding circle satisfies the boundary conditions.

Parameters:
  • self (np.ndarray[element_dtype]) – The bounding circle element

  • fracture_struc_array (np.ndarray[fracture_dtype]) – The array of fractures

  • element_struc_array (np.ndarray[element_dtype]) – The array of elements

  • n (int) – The number of points to check the boundary condition

Returns:

error – The error in the boundary condition

Return type:

np.float64

andfn.hpc.hpc_bounding_circle.get_chi(self_, z)[source]#

Maps the complex z plane to the complex chi plane for the bounding circle.

Parameters:
  • self (np.ndarray[element_dtype]) – The bounding circle element

  • z (complex)

Returns:

chi – The mapped point in the chi plane.

Return type:

complex

andfn.hpc.hpc_bounding_circle.solve(self_, fracture_struc_array, element_struc_array, work_array)[source]#

Solves the bounding circle element.

Parameters:
  • self (np.ndarray[element_dtype]) – The bounding circle element

  • fracture_struc_array (np.ndarray[fracture_dtype]) – The array of fractures

  • element_struc_array (np.ndarray[element_dtype]) – The array of elements

  • work_array (np.ndarray[dtype_work]) – The work array

Return type:

Edits the self_ array and works_array in place.

andfn.hpc.hpc_bounding_circle.z_array(self_, n)[source]#

Returns an array of points in the complex z plane.

Parameters:
  • self (np.ndarray[element_dtype]) – The bounding circle element

  • n (int) – The number of points to return.

Returns:

z – The array of points in the complex z plane.

Return type:

np.ndarray[complex]

Constant head line functions#

Notes

This module contains the HPC Constant head functions.

andfn.hpc.hpc_const_head_line.calc_omega(self_, z)[source]#

Function that calculates the omega function for a given point z and fracture.

Parameters:
  • self (np.ndarray[element_dtype]) – The intersection element

  • z (complex) – An array of points in the complex z-plane

Returns:

omega – The resulting value for the omega function

Return type:

complex

andfn.hpc.hpc_const_head_line.calc_w(self_, z)[source]#

Calculate the complex discharge vector for the constant head line.

Parameters:
  • self (np.ndarray[element_dtype]) – The constant head line element

  • z (np.ndarray) – The points to calculate the complex discharge vector at

Returns:

The complex discharge vector

Return type:

np.ndarray

andfn.hpc.hpc_const_head_line.solve(self_, fracture_struc_array, element_struc_array, work_array)[source]#

Solves the constant head line element.

Parameters:
  • self (np.ndarray element_dtype) – The constant head line element.

  • fracture_struc_array (np.ndarray) – The array of fractures.

  • element_struc_array (np.ndarray[element_dtype]) – The array of elements.

  • work_array (np.ndarray[work_dtype]) – The work array.

Return type:

Edits the self_ array and works_array in place.

andfn.hpc.hpc_const_head_line.z_array(self_, n)[source]#

Returns an array of n points along the constant head line.

Parameters:
  • self (np.ndarray[element_dtype]) – The constant head line element

  • n (int) – The number of points to return.

Returns:

z – An array of n points on the well.

Return type:

np.ndarray[complex]

Intersection functions#

Notes

This module contains the HPC Intersection functions.

andfn.hpc.hpc_intersection.calc_omega(self_, z, frac_is_id)[source]#

Function that calculates the omega function for a given point z and fracture.

Parameters:
  • self (np.ndarray[element_dtype]) – The intersection element

  • z (complex) – An array of points in the complex z-plane

  • frac_is_id (np.int64) – The fracture that the point is in

Returns:

omega – The resulting value for the omega function

Return type:

complex

andfn.hpc.hpc_intersection.calc_w(self_, z, frac_is_id)[source]#

Calculate the complex discharge vector for the intersection.

Parameters:
  • self (np.ndarray[element_dtype]) – The intersection element

  • z (complex) – An array of points in the complex z-plane

  • frac_is_id (np.int64) – The fracture that the point is in

Returns:

w – The complex discharge vector

Return type:

np.ndarray

andfn.hpc.hpc_intersection.solve(self_, fracture_struc_array, element_struc_array, work_array)[source]#

Solves the intersection element.

Parameters:
  • self (np.ndarray element_dtype) – The intersection element.

  • fracture_struc_array (np.ndarray) – The array of fractures.

  • element_struc_array (np.ndarray[element_dtype]) – The array of elements.

  • work_array (np.ndarray[work_dtype]) – The work array.

Return type:

Edits the self_ array and works_array in place.

andfn.hpc.hpc_intersection.z_array(self_, n, frac_is)[source]#

Well functions#

Notes

This module contains the HPC well functions.

andfn.hpc.hpc_well.calc_omega(self_, z)[source]#

Calculates the omega for the well. If z is inside the well, the omega is set to nan + nan*1j.

Parameters:
  • self (np.ndarray[element_dtype]) – The well element.

  • z (complex) – A point in the complex z plane.

Returns:

omega – The complex potential for the well.

Return type:

complex

andfn.hpc.hpc_well.calc_w(self_, z)[source]#

Calculates the omega for the well. If z is inside the well, the omega is set to nan + nan*1j.

Parameters:
  • self (np.ndarray[element_dtype]) – The well element.

  • z (complex) – A point in the complex z plane.

Returns:

omega – The complex potential for the well.

Return type:

complex

andfn.hpc.hpc_well.z_array(self_, n)[source]#

Returns an array of n points on the well.

Parameters:
  • self (np.ndarray[element_dtype]) – The well element

  • n (int) – The number of points to return.

Returns:

z – An array of n points on the well.

Return type:

np.ndarray[complex]

Mathematical functions#

Notes

This module contains some general mathematical functions.

andfn.hpc.hpc_math_functions.asym_expansion(chi, coef)[source]#

Function that calculates the asymptotic expansion starting from 0 for a given point chi and an array of coefficients.

Parameters:
  • chi (complex) – A point in the complex chi-plane

  • coef (np.ndarray[np.complex128]) – An array of coefficients

Returns:

res – The resulting value for the asymptotic expansion

Return type:

complex

andfn.hpc.hpc_math_functions.asym_expansion_d1(chi, coef)[source]#

Function that calculates the asymptotic expansion starting from 0 for a given point chi and an array of coefficients.

Parameters:
  • chi (complex) – A point in the complex chi-plane

  • coef (np.ndarray) – An array of coefficients

Returns:

res – The resulting value for the asymptotic expansion

Return type:

complex

andfn.hpc.hpc_math_functions.calc_error(coef, coef_ref)[source]#

Function that calculates the error between two sets of coefficients.

Parameters:
  • coef (np.ndarray) – The coefficients to compare

  • coef_ref (np.ndarray) – The reference coefficients

Returns:

error – The error

Return type:

float

andfn.hpc.hpc_math_functions.calc_thetas(n, type_, thetas)[source]#

Function that calculates the thetas for the unit circle.

Parameters:
  • n (int) – The number of thetas to calculate

  • type (int) – The element type. 0 for bounding circle, 1 for constant head line, 3 for intersection.

  • thetas (np.ndarray) – The array to fill with the thetas

Returns:

Fills the thetas array with the values of thetas

Return type:

None

andfn.hpc.hpc_math_functions.cauchy_integral_domega(n, m, dpsi_corr, frac0, element_id_, element_struc_array, radius, center, work_array, coef)[source]#

FUnction that calculates the Cauchy integral with the stream function for a given array of thetas.

Parameters:
  • n (np.int64) – Number of integration points

  • m (np.int64) – Number of coefficients

  • dpsi_corr (np.ndarray[np.complex128]) – Correction for the stream function

  • frac0 (np.ndarray[fracture_dtype]) – The fracture

  • element_id (np.int64) – The element id

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements

  • radius (np.float64) – The radius of the bounding circle

  • center (np.complex128) – The center of the bounding circle

  • work_array (np.ndarray[work_array_dtype]) – The work array

  • coef (np.ndarray[np.complex128]) – The coefficients that will be filled

Returns:

coef – Array of coefficients

Return type:

np.ndarray[np.complex128]

andfn.hpc.hpc_math_functions.cauchy_integral_domega_line(n, m, dpsi_corr, frac0, element_id_, element_struc_array, endpoints0, work_array, coef)[source]#

FUnction that calculates the Cauchy integral with the stream function for a given array of thetas.

Parameters:
  • n (int) – Number of integration points

  • m (int) – Number of coefficients

  • dpsi_corr (np.ndarray[np.complex128]) – Correction for the stream function

  • frac0 (np.ndarray) – The fracture

  • element_id (int) – The element id

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements

  • endpoints0 (np.ndarray[np.complex128]) – The endpoints of the line

  • work_array (np.ndarray[work_array_dtype]) – The work array

  • coef (np.ndarray[np.complex128]) – The coefficients that will be filled

Returns:

coef – Array of coefficients

Return type:

np.ndarray

andfn.hpc.hpc_math_functions.cauchy_integral_real(n, m, thetas, frac0, element_id_, element_struc_array, endpoints0, work_array, coef)[source]#

FUnction that calculates the Cauchy integral with the discharge potential for a given array of thetas.

Parameters:
  • n (int) – Number of integration points

  • m (int) – Number of coefficients

  • thetas (np.ndarray) – Array with thetas along the unit circle

  • frac0 (np.ndarray) – The fracture

  • element_id (int) – The element id

  • element_struc_array (np.ndarray[element_dtype]) – Array of elements

  • endpoints0 (np.ndarray[np.complex128]) – The endpoints of the constant head line

  • work_array (np.ndarray[work_array_dtype]) – The work array

  • coef (np.ndarray[np.complex128]) – The coefficients that will be filled

Returns:

coef – Array of coefficients

Return type:

np.ndarray[np.complex128]

andfn.hpc.hpc_math_functions.cut_trail(f_str)[source]#
andfn.hpc.hpc_math_functions.fill_exp_array(n, thetas, exp_array, sign)[source]#

Function that fills the exp_array with the values of exp(-1j * thetas). :param n: The number of thetas to calculate :type n: int :param thetas: The thetas :type thetas: np.ndarray :param exp_array: The array to fill with the values of exp(sign * 1j * thetas) :type exp_array: np.ndarray :param sign: The sign of the exponent. 1 for positive, -1 for negative. :type sign: int

Returns:

Fills the exp_array with the values of exp(-1j * thetas)

Return type:

None

andfn.hpc.hpc_math_functions.find_branch_cuts(self_, z_pos, fracture_struc_array, element_struc_array, work_array)[source]#

Find the branch cuts for the fracture.

Parameters:
  • self (np.ndarray[element_dtype]) – The bounding circle element

  • z_pos (np.ndarray[np.complex128]) – The positions in the complex plane

  • fracture_struc_array (np.ndarray[fracture_dtype]) – The array of fractures

  • element_struc_array (np.ndarray[element_dtype]) – The array of elements

  • work_array (np.ndarray[dtype_work]) – The work array

Returns:

dpsi_corr – The correction to the potential due to the branch cuts

Return type:

np.ndarray[np.float64]

andfn.hpc.hpc_math_functions.float2str(value)[source]#
andfn.hpc.hpc_math_functions.get_dpsi_corr(self_, fracture_struc_array, element_struc_array, work_array)[source]#

Get the correction to the stream function due to the branch cuts.

Parameters:
  • self (np.ndarray[element_dtype]) – The bounding circle element

  • fracture_struc_array (np.ndarray[fracture_dtype]) – The array of fractures

  • element_struc_array (np.ndarray[element_dtype]) – The array of elements

  • work_array (np.ndarray[dtype_work]) – The work array

Returns:

Edits the self_ array in place.

Return type:

None

andfn.hpc.hpc_math_functions.get_sign(self_, work_array, cnt, chi0, chi1, sign_default)[source]#
andfn.hpc.hpc_math_functions.taylor_series(chi, coef)[source]#

Function that calculates the Taylor series starting from 0 for a given point chi and an array of coefficients.

Parameters:
  • chi (complex) – A point in the complex chi-plane

  • coef (np.ndarray) – An array of coefficients

Returns:

res – The resulting value for the asymptotic expansion

Return type:

complex

andfn.hpc.hpc_math_functions.taylor_series_d1(chi, coef)[source]#

Function that calculates the Taylor series starting from 0 for a given point chi and an array of coefficients.

Parameters:
  • chi (complex) – A point in the complex chi-plane

  • coef (np.ndarray) – An array of coefficients

Returns:

res – The resulting value for the asymptotic expansion

Return type:

complex

andfn.hpc.hpc_math_functions.well_chi(chi, q)[source]#

Function that return the complex potential for a well as a function of chi.

\[\omega =\]

rac{q}{2 pi} log(chi)

chicomplex

A point in the complex chi plane

qnp.float64

The discharge eof the well.

omegacomplex

The complex discharge potential

Geometry functions#

Notes

This module contains some geometrical functions.

andfn.hpc.hpc_geometry_functions.map_chi_to_z_circle(chi, r, center=0.0)[source]#

Function that maps the unit circle in the complex chi-plane to a circle in the complex z-plane.

Parameters:
  • chi (np.complex128) – A point in the complex chi-plane

  • r (float) – Radius of the circle

  • center (np.complex128) – Center point of the circle

Returns:

z – The corresponding point in the complex z-plane

Return type:

np.complex128

andfn.hpc.hpc_geometry_functions.map_chi_to_z_line(chi, endpoints)[source]#

Function that maps the exterior of the unit circle in the complex chi-plane onto the exterior of a line in the complex z-plane.

Parameters:
  • chi (complex) – A point in the complex chi-plane

  • endpoints (np.ndarray[np.complex128]) – Endpoints of the line in the complex z-plane

Returns:

z – The corresponding point in the complex z-plane

Return type:

complex

andfn.hpc.hpc_geometry_functions.map_z_circle_to_chi(z, r, center=0.0)[source]#

Function that maps a circle in the complex z-plane onto a unit circle in the complex chi-plane.

Parameters:
  • z (complex) – A point in the complex z-plane

  • r (float) – Radius of the circle

  • center (np.complex128) – Center point of the circle in the complex z-plane

Returns:

chi – The corresponding point in the complex chi-plane

Return type:

complex

andfn.hpc.hpc_geometry_functions.map_z_line_to_chi(z, endpoints)[source]#

Function that maps the exterior of a line in the complex z-plane onto the exterior of the unit circle in the complex chi-plane.

Parameters:
  • z (complex) – A complex point in the complex z-plane

  • endpoints (np.ndarray) – Endpoints of the line in the complex z-plane

Returns:

chi – The corresponding point in the complex chi-plane

Return type:

complex