MFC
Exascale flow solver
Loading...
Searching...
No Matches
m_helper Module Reference

Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions. More...

Functions/Subroutines

subroutine, public s_comp_n_from_prim (vftmp, rtmp, ntmp, weights)
 Computes the bubble number density n from the primitive variables.
subroutine, public s_comp_n_from_cons (vftmp, nrtmp, ntmp, weights)
 Compute the bubble number density from the conservative void fraction and weighted bubble radii.
impure subroutine, public s_print_2d_array (a, div)
 Print a 2D real array to standard output, optionally dividing each element by a given scalar.
impure subroutine, public s_initialize_bubbles_model ()
 Initialize bubble model arrays for Euler or Lagrangian bubbles with polytropic or non-polytropic gas.
impure subroutine s_initialize_bubble_vars ()
 Set bubble physical parameters and nondimensional numbers from the input configuration.
impure subroutine, public s_initialize_nonpoly ()
 Initializes non-polydisperse bubble modeling.
elemental subroutine, public s_transcoeff (omega, peclet, re_trans, im_trans)
 Computes the transfer coefficient for the non-polytropic bubble compression process.
elemental subroutine, public s_int_to_str (i, res)
 Convert an integer to its trimmed string representation.
subroutine, public s_simpson (local_weight, local_r0)
 Computes the Simpson weights for quadrature.
pure real(wp) function, dimension(3), public f_cross (a, b)
 Compute the cross product of two vectors.
elemental subroutine, public s_swap (lhs, rhs)
 Swap two real numbers.
real(wp) function, dimension(1:4, 1:4), public f_create_transform_matrix (param, center)
 Create a transformation matrix.
subroutine, public s_transform_vec (vec, matrix)
 Transform a vector by a matrix.
subroutine, public s_transform_triangle (triangle, matrix, matrix_n)
 Transform a triangle by a matrix, one vertex at a time.
subroutine, public s_transform_model (model, matrix, matrix_n)
 Transform a model by a matrix, one triangle at a time.
type(t_bbox) function, public f_create_bbox (model)
 Create a bounding box for a model.
elemental logical function, public f_xor (lhs, rhs)
 Perform XOR on lhs and rhs.
elemental integer function, public f_logical_to_int (predicate)
 Convert a logical to 1 or 0.
real(wp) function, public real_ylm (theta, phi, l, m)
 Real spherical harmonic Y_lm(theta, phi). theta = polar angle from +z (acos(z/r)), phi = atan2(y,x). Uses associated Legendre P_l^|m|(cos theta). Standard normalisation.
recursive real(wp) function, public associated_legendre (x, l, m_order)
 Associated Legendre polynomial P_l^m(x) (Ferrers function, Condon-Shortley phase). Valid for integer l >= 0, 0 <= m <= l, and x in [-1,1]. Returns 0 for |m| > l or l < 0. Formulas: DLMF 14.10.3 (recurrence in degree), Wikipedia "Associated Legendre polynomials" (P_l^l and P_l^{l-1} identities). Recurrence: (l-m)P_l^m = (2l-1)x P_{l-1}^m - (l+m-1)P_{l-2}^m.
elemental integer(kind=int64_kind) function, public double_factorial (n_in)
 Calculate the double factorial of an integer.
elemental integer(kind=int64_kind) function, public factorial (n_in)
 Calculate the factorial of an integer.
real(wp) function, public f_cut_on (x, eps)
 Calculate a smooth cut-on function that is zero for x values smaller than zero and goes to one, for generating smooth initial conditions.
real(wp) function, public f_cut_off (x, eps)
 Calculate a smooth cut-off function that is one for x values smaller than zero and goes to zero, for generating smooth initial conditions.
real(wp) function f_gx (x)
 Helper function for f_cut_on and f_cut_off.
subroutine, public s_downsample_data (q_cons_vf, q_cons_temp, m_ds, n_ds, p_ds, m_glb_ds, n_glb_ds, p_glb_ds)
 Downsample conservative variable fields by a factor of 3 in each direction using volume averaging.
subroutine, public s_upsample_data (q_cons_vf, q_cons_temp)
 Upsample conservative variable fields from a coarsened grid back to the original resolution using interpolation.

Detailed Description

Utility routines for bubble model setup, coordinate transforms, array sampling, and special functions.

Function/Subroutine Documentation

◆ associated_legendre()

recursive real(wp) function, public m_helper::associated_legendre ( real(wp), intent(in) x,
integer, intent(in) l,
integer, intent(in) m_order )

Associated Legendre polynomial P_l^m(x) (Ferrers function, Condon-Shortley phase). Valid for integer l >= 0, 0 <= m <= l, and x in [-1,1]. Returns 0 for |m| > l or l < 0. Formulas: DLMF 14.10.3 (recurrence in degree), Wikipedia "Associated Legendre polynomials" (P_l^l and P_l^{l-1} identities). Recurrence: (l-m)P_l^m = (2l-1)x P_{l-1}^m - (l+m-1)P_{l-2}^m.

Parameters
xargument (typically cos(theta)), should be in [-1,1]
ldegree (>= 0)
m_orderorder (0 <= m_order <= l)

Definition at line 978 of file m_helper.fpp.f90.

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

◆ double_factorial()

elemental integer(kind=int64_kind) function, public m_helper::double_factorial ( integer, intent(in) n_in)

Calculate the double factorial of an integer.

Definition at line 1013 of file m_helper.fpp.f90.

Here is the caller graph for this function:

◆ f_create_bbox()

type(t_bbox) function, public m_helper::f_create_bbox ( type(t_model), intent(in) model)

Create a bounding box for a model.

Definition at line 898 of file m_helper.fpp.f90.

Here is the caller graph for this function:

◆ f_create_transform_matrix()

real(wp) function, dimension(1:4,1:4), public m_helper::f_create_transform_matrix ( type(ic_model_parameters), intent(in) param,
real(wp), dimension(1:3), intent(in), optional center )

Create a transformation matrix.

Definition at line 820 of file m_helper.fpp.f90.

Here is the caller graph for this function:

◆ f_cross()

pure real(wp) function, dimension(3), public m_helper::f_cross ( real(wp), dimension(3), intent(in) a,
real(wp), dimension(3), intent(in) b )

Compute the cross product of two vectors.

Definition at line 780 of file m_helper.fpp.f90.

Here is the caller graph for this function:

◆ f_cut_off()

real(wp) function, public m_helper::f_cut_off ( real(wp), intent(in) x,
real(wp), intent(in) eps )

Calculate a smooth cut-off function that is one for x values smaller than zero and goes to zero, for generating smooth initial conditions.

Definition at line 1049 of file m_helper.fpp.f90.

Here is the call graph for this function:

◆ f_cut_on()

real(wp) function, public m_helper::f_cut_on ( real(wp), intent(in) x,
real(wp), intent(in) eps )

Calculate a smooth cut-on function that is zero for x values smaller than zero and goes to one, for generating smooth initial conditions.

Definition at line 1038 of file m_helper.fpp.f90.

Here is the call graph for this function:

◆ f_gx()

real(wp) function m_helper::f_gx ( real(wp), intent(in) x)
private

Helper function for f_cut_on and f_cut_off.

Definition at line 1059 of file m_helper.fpp.f90.

Here is the caller graph for this function:

◆ f_logical_to_int()

elemental integer function, public m_helper::f_logical_to_int ( logical, intent(in) predicate)

Convert a logical to 1 or 0.

Definition at line 933 of file m_helper.fpp.f90.

◆ f_xor()

elemental logical function, public m_helper::f_xor ( logical, intent(in) lhs,
logical, intent(in) rhs )

Perform XOR on lhs and rhs.

Definition at line 923 of file m_helper.fpp.f90.

◆ factorial()

elemental integer(kind=int64_kind) function, public m_helper::factorial ( integer, intent(in) n_in)

Calculate the factorial of an integer.

Definition at line 1025 of file m_helper.fpp.f90.

Here is the caller graph for this function:

◆ real_ylm()

real(wp) function, public m_helper::real_ylm ( real(wp), intent(in) theta,
real(wp), intent(in) phi,
integer, intent(in) l,
integer, intent(in) m )

Real spherical harmonic Y_lm(theta, phi). theta = polar angle from +z (acos(z/r)), phi = atan2(y,x). Uses associated Legendre P_l^|m|(cos theta). Standard normalisation.

Definition at line 948 of file m_helper.fpp.f90.

Here is the call graph for this function:

◆ s_comp_n_from_cons()

subroutine, public m_helper::s_comp_n_from_cons ( real(wp), intent(in) vftmp,
real(wp), dimension(nb), intent(in) nrtmp,
real(wp), intent(out) ntmp,
real(wp), dimension(nb), intent(in) weights )

Compute the bubble number density from the conservative void fraction and weighted bubble radii.

Definition at line 374 of file m_helper.fpp.f90.

Here is the caller graph for this function:

◆ s_comp_n_from_prim()

subroutine, public m_helper::s_comp_n_from_prim ( real(wp), intent(in) vftmp,
real(wp), dimension(nb), intent(in) rtmp,
real(wp), intent(out) ntmp,
real(wp), dimension(nb), intent(in) weights )

Computes the bubble number density n from the primitive variables.

Definition at line 345 of file m_helper.fpp.f90.

◆ s_downsample_data()

subroutine, public m_helper::s_downsample_data ( type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf,
type(scalar_field), dimension(sys_size), intent(inout) q_cons_temp,
integer, intent(inout) m_ds,
integer, intent(inout) n_ds,
integer, intent(inout) p_ds,
integer, intent(inout) m_glb_ds,
integer, intent(inout) n_glb_ds,
integer, intent(inout) p_glb_ds )

Downsample conservative variable fields by a factor of 3 in each direction using volume averaging.

Definition at line 1073 of file m_helper.fpp.f90.

Here is the caller graph for this function:

◆ s_initialize_bubble_vars()

impure subroutine m_helper::s_initialize_bubble_vars
private

Set bubble physical parameters and nondimensional numbers from the input configuration.

Definition at line 609 of file m_helper.fpp.f90.

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

◆ s_initialize_bubbles_model()

impure subroutine, public m_helper::s_initialize_bubbles_model

Initialize bubble model arrays for Euler or Lagrangian bubbles with polytropic or non-polytropic gas.

Definition at line 433 of file m_helper.fpp.f90.

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

◆ s_initialize_nonpoly()

impure subroutine, public m_helper::s_initialize_nonpoly

Initializes non-polydisperse bubble modeling.

Definition at line 662 of file m_helper.fpp.f90.

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

◆ s_int_to_str()

elemental subroutine, public m_helper::s_int_to_str ( integer, intent(in) i,
character(len=*), intent(inout) res )

Convert an integer to its trimmed string representation.

Definition at line 729 of file m_helper.fpp.f90.

Here is the caller graph for this function:

◆ s_print_2d_array()

impure subroutine, public m_helper::s_print_2d_array ( real(wp), dimension(:,:), intent(in) a,
real(wp), intent(in), optional div )

Print a 2D real array to standard output, optionally dividing each element by a given scalar.

Definition at line 403 of file m_helper.fpp.f90.

◆ s_simpson()

subroutine, public m_helper::s_simpson ( real(wp), dimension(:), intent(inout) local_weight,
real(wp), dimension(:), intent(inout) local_r0 )

Computes the Simpson weights for quadrature.

Definition at line 740 of file m_helper.fpp.f90.

Here is the caller graph for this function:

◆ s_swap()

elemental subroutine, public m_helper::s_swap ( real(wp), intent(inout) lhs,
real(wp), intent(inout) rhs )

Swap two real numbers.

Definition at line 808 of file m_helper.fpp.f90.

◆ s_transcoeff()

elemental subroutine, public m_helper::s_transcoeff ( real(wp), intent(in) omega,
real(wp), intent(in) peclet,
real(wp), intent(out) re_trans,
real(wp), intent(out) im_trans )

Computes the transfer coefficient for the non-polytropic bubble compression process.

Definition at line 710 of file m_helper.fpp.f90.

Here is the caller graph for this function:

◆ s_transform_model()

subroutine, public m_helper::s_transform_model ( type(t_model), intent(inout) model,
real(wp), dimension(1:4,1:4), intent(in) matrix,
real(wp), dimension(1:4,1:4), intent(in) matrix_n )

Transform a model by a matrix, one triangle at a time.

Definition at line 885 of file m_helper.fpp.f90.

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

◆ s_transform_triangle()

subroutine, public m_helper::s_transform_triangle ( type(t_triangle), intent(inout) triangle,
real(wp), dimension(1:4,1:4), intent(in) matrix,
real(wp), dimension(1:4,1:4), intent(in) matrix_n )

Transform a triangle by a matrix, one vertex at a time.

Definition at line 870 of file m_helper.fpp.f90.

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

◆ s_transform_vec()

subroutine, public m_helper::s_transform_vec ( real(wp), dimension(1:3), intent(inout) vec,
real(wp), dimension(1:4,1:4), intent(in) matrix )

Transform a vector by a matrix.

Definition at line 858 of file m_helper.fpp.f90.

Here is the caller graph for this function:

◆ s_upsample_data()

subroutine, public m_helper::s_upsample_data ( type(scalar_field), dimension(sys_size), intent(inout) q_cons_vf,
type(scalar_field), dimension(sys_size), intent(inout) q_cons_temp )

Upsample conservative variable fields from a coarsened grid back to the original resolution using interpolation.

Definition at line 1115 of file m_helper.fpp.f90.