version 0.6.0
Loading...
Searching...
No Matches
mod_extrapolation_computer Module Reference

Computer for evaluating Extrapolation Schemes. More...

Functions/Subroutines

double precision function ext_compute_from_values (scheme, ext_step, steps, values)
 Compute the extrapolation via the scheme by giving the associated field values.
 
double precision function ext_compute_from_scheme (scheme, values)
 Compute the extrapolation of the scheme by giving the associated field values.
 
double precision function ext_compute_from_field (scheme, ext_step, x_step_array, y_step_array, z_step_array, field, i, j, k, axis)
 Compute the extrapolation via the scheme by giving the associated field, the step arrays for each dimension, the indices (position) and the direction (x,y or z).
 
double precision function ext_compute_from_face_field (scheme, ext_step, x_step_array, y_step_array, z_step_array, field, i, j, k, axis)
 Compute the extrapolation via the scheme by giving the associated face field, the step arrays for each dimension, the indices (position) and the direction (x,y or z).
 
double precision function ext_compute_with_neumann (scheme, ext_step, steps, values, derivative_value)
 Compute the extrapolation of the scheme by giving the associated field values and the derivative value (ie. Neumann constraint).
 
double precision function new_ext_compute_from_field (scheme, ext_step, x_step_array, y_step_array, z_step_array, field, i, j, k, axis, direction)
 Compute the extrapolation via the scheme by giving the associated field, the step arrays for each dimension, the indices (position) and the direction (x,y or z).
 
double precision function ext_rec_compute_from_field (scheme, ext_step, x_cv_array, y_cv_array, z_cv_array, field, i, j, k, axis, direction)
 Compute the extrapolation with reconstruction via the scheme by giving the associated field, the step arrays for each dimension, the indices (position) and the direction (x,y or z).
 

Detailed Description

All the methods defined here are used to effectively compute/evaluate extrapolations. They take as argument a scheme that is built through the various schemes of the module (see mod_extrapolation_scheme_o1 for example).

Function/Subroutine Documentation

◆ ext_compute_from_face_field()

double precision function mod_extrapolation_computer::ext_compute_from_face_field ( class(t_ext_scheme), intent(inout) scheme,
double precision, intent(in) ext_step,
double precision, dimension(:), intent(in) x_step_array,
double precision, dimension(:), intent(in) y_step_array,
double precision, dimension(:), intent(in) z_step_array,
type(t_face_field), intent(in) field,
integer, intent(in) i,
integer, intent(in) j,
integer, intent(in) k,
integer, intent(in) axis )
Parameters
[in]schemethe extrapolation scheme
[in]ext_stepthe extrapolation step (gap)
[in]x_step_arraythe discretization step array in the x direction ; x_step_array(i) is the distance from face(i+1) to face(i) (different from the cell field definition)
[in]y_step_arraythe discretization step array in the y direction
[in]z_step_arraythe discretization step array in the z direction
[in]fieldthe field \(\phi\) to which to apply the scheme at the given indices.
[in]i,j,kthe indices where to compute the FD
[in]axisthe axis (direction) \(axis={1,2,3}\) for \({x,y,z}\)
Returns
the value of the scheme evaluated with the input values
Warning
This function is not the most efficient, especialy when used in a i,j,k loop, because it switches for each direction!

◆ ext_compute_from_field()

double precision function mod_extrapolation_computer::ext_compute_from_field ( class(t_ext_scheme), intent(inout) scheme,
double precision, intent(in) ext_step,
double precision, dimension(:), intent(in) x_step_array,
double precision, dimension(:), intent(in) y_step_array,
double precision, dimension(:), intent(in) z_step_array,
double precision, dimension(:,:,:), intent(in) field,
integer, intent(in) i,
integer, intent(in) j,
integer, intent(in) k,
integer, intent(in) axis )
Parameters
[in]schemethe extrapolation scheme
[in]ext_stepthe extrapolation step (gap)
[in]x_step_arraythe discretization step array in the x direction ; x_step_array(i) is the distance from cell(i) to cell(i-1)
[in]y_step_arraythe discretization step array in the y direction
[in]z_step_arraythe discretization step array in the z direction
[in]fieldthe field \(\phi\) to which to apply the scheme at the given indices.
[in]i,j,kthe indices where to compute the FD
[in]axisthe axis (direction) \(axis={1,2,3}\) for \({x,y,z}\)
Returns
the value of the scheme evaluated with the input values
Warning
This function is not the most efficient, especialy when used in a i,j,k loop, because it switches for each direction!

◆ ext_compute_from_scheme()

double precision function mod_extrapolation_computer::ext_compute_from_scheme ( class(t_ext_scheme), intent(inout) scheme,
double precision, dimension(:), intent(in) values )
Parameters
[in]schemethe extrapolation scheme (previously defined)
[in]valuesthe field values to which to apply the scheme. They must be of the same dimension as the scheme
Returns
the value of the scheme evaluated with the input values
Precondition
the scheme has already been init and filled!

◆ ext_compute_from_values()

double precision function mod_extrapolation_computer::ext_compute_from_values ( class(t_ext_scheme), intent(inout) scheme,
double precision, intent(in) ext_step,
double precision, dimension(:), intent(in) steps,
double precision, dimension(:), intent(in) values )
Parameters
[in]schemethe extrapolation scheme
[in]ext_stepthe extrapolation step (gap)
[in]stepsthe discretization steps, with size(steps)==size(values)-1
[in]valuesthe field values to which to apply the scheme. They must be of the same dimension as the scheme
Returns
the value of the scheme evaluated with the input values
Precondition
the scheme has already been init

◆ ext_compute_with_neumann()

double precision function mod_extrapolation_computer::ext_compute_with_neumann ( class(t_ext_neumann_scheme), intent(inout) scheme,
double precision, intent(in) ext_step,
double precision, dimension(:), intent(in) steps,
double precision, dimension(:), intent(in) values,
double precision, intent(in) derivative_value )
Warning
Of course, only first derivative backward/forward schemes can be used! See
See also
Extrapolation documentation for the method's principle.
Parameters
[in]schemethe extrapolation scheme
[in]ext_stepthe extrapolation step (gap)
[in]stepsthe discretization steps excluding the extrapolation step included, hence with size(steps)==size(values)-1
[in]valuesthe known function values to which to apply the scheme
[in]derivative_valuethe value of the derivative at the extrapolated point
Returns
the extrapolated value
Precondition
the scheme has already been init
the scheme has to be forward or backward, starting or ending exactly at index==0

◆ ext_rec_compute_from_field()

double precision function mod_extrapolation_computer::ext_rec_compute_from_field ( class(t_rec_scheme), intent(inout) scheme,
double precision, intent(in) ext_step,
double precision, dimension(:), intent(in) x_cv_array,
double precision, dimension(:), intent(in) y_cv_array,
double precision, dimension(:), intent(in) z_cv_array,
double precision, dimension(:,:,:), intent(in) field,
integer, intent(in) i,
integer, intent(in) j,
integer, intent(in) k,
integer, intent(in) axis,
integer, intent(in) direction )
Parameters
[in]schemethe extrapolation scheme
[in]ext_stepthe extrapolation step (gap) between the last/first node (depending on the direction)
[in]x_cv_arraythe control volumes array in the x direction
[in]y_cv_arraythe control volumesp array in the y direction
[in]z_cv_arraythe control volumes array in the z direction
[in]fieldthe field \(\phi\) to which to apply the scheme at the given indices.
[in]i,j,kthe base indices of the stencil. This has to be the last (direction=-1) or first (direction=+1) node.
[in]axisthe axis (direction) \(axis={1,2,3}\) for \({x,y,z}\)
[in]directionthe direction of extrapolation \(direction={-1,+1}\) for backward and forward
Returns
the value of the scheme evaluated with the input values
Warning
This function is not the most efficient, especialy when used in a i,j,k loop, because it switches for each axis!
Example
If you want to extrapolate with a 2nd order scheme, starting from node (i,j,k), at a distance of dx towards the left, you should use: ext_rec_compute_from_field( rec...o2_instance, -dx, dx_u_array, dy_v_array, dz_w_array, field, i,j,k, 1, -1 ) \par Example\ilinebr If you want to extrapolate with a 2nd order scheme, starting from node (i,j,k), at a distance of 3*dy towards the top, you should use: ext_rec_compute_from_field( rec...o2_instance, +3*dx, dx_u_array, dy_v_array, dz_w_array, field, i,j,k, 2, +1 )

◆ new_ext_compute_from_field()

double precision function mod_extrapolation_computer::new_ext_compute_from_field ( class(t_int_scheme), intent(inout) scheme,
double precision, intent(in) ext_step,
double precision, dimension(:), intent(in) x_step_array,
double precision, dimension(:), intent(in) y_step_array,
double precision, dimension(:), intent(in) z_step_array,
double precision, dimension(:,:,:), intent(in) field,
integer, intent(in) i,
integer, intent(in) j,
integer, intent(in) k,
integer, intent(in) axis,
integer, intent(in) direction )
Parameters
[in]schemethe extrapolation scheme
[in]ext_stepthe extrapolation step (gap) between the last/first node (depending on the direction)
[in]x_step_arraythe discretization step array in the x direction ; x_step_array(i) is the distance from cell(i) to cell(i-1)
[in]y_step_arraythe discretization step array in the y direction
[in]z_step_arraythe discretization step array in the z direction
[in]fieldthe field \(\phi\) to which to apply the scheme at the given indices.
[in]i,j,kthe base indices of the stencil. This has to be the last (direction=-1) or first (direction=+1) node.
[in]axisthe axis \(axis={1,2,3}\) for \({x,y,z}\)
[in]directionthe direction of extrapolation \(direction={-1,+1}\) for backward and forward
Returns
the value of the scheme evaluated with the input values
Note
x_step_array(i+1) is the distance between node i and node i+1. This corresponds to dx_u for cells
Warning
This function is not the most efficient, especialy when used in a i,j,k loop, because it switches for each axis!
Example
If you want to extrapolate with a 2nd order scheme, starting from node (i,j,k), at a distance of dx towards the left, you should use: new_ext_compute_from_field( int...o2_instance, -dx, dx_array, dy_array, dz_array, field, i,j,k, 1, -1 ) \par Example\ilinebr If you want to extrapolate with a 2nd order scheme, starting from node (i,j,k), at a distance of 3*dy towards the top, you should use: new_ext_compute_from_field( int...o2_instance, +3*dx, dx_array, dy_array, dz_array, field, i,j,k, 2, +1 )