sll_m_spline_interpolator_1d Module


Copyright INRIA Authors : CALVI project team

This code SeLaLib (for Semi-Lagrangian-Library) is a parallel library for simulating the plasma turbulence in a tokamak.

This software is governed by the CeCILL-B license under French law and abiding by the rules of distribution of free software. You can use, modify and redistribute the software under the terms of the CeCILL-B license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info".


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                        PRIVATE SUBROUTINES

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                   PRIVATE SUBROUTINES, UNIFORM

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

                   PRIVATE SUBROUTINES, NON-UNIFORM

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


Uses

  • module~~sll_m_spline_interpolator_1d~~UsesGraph module~sll_m_spline_interpolator_1d sll_m_spline_interpolator_1d module~sll_m_assert sll_m_assert module~sll_m_spline_interpolator_1d->module~sll_m_assert module~sll_m_boundary_condition_descriptors sll_m_boundary_condition_descriptors module~sll_m_spline_interpolator_1d->module~sll_m_boundary_condition_descriptors module~sll_m_bsplines_base sll_m_bsplines_base module~sll_m_spline_interpolator_1d->module~sll_m_bsplines_base module~sll_m_errors sll_m_errors module~sll_m_spline_interpolator_1d->module~sll_m_errors module~sll_m_spline_1d sll_m_spline_1d module~sll_m_spline_interpolator_1d->module~sll_m_spline_1d module~sll_m_spline_matrix sll_m_spline_matrix module~sll_m_spline_interpolator_1d->module~sll_m_spline_matrix module~sll_m_working_precision sll_m_working_precision module~sll_m_spline_interpolator_1d->module~sll_m_working_precision module~sll_m_boundary_condition_descriptors->module~sll_m_working_precision module~sll_m_bsplines_base->module~sll_m_assert module~sll_m_bsplines_base->module~sll_m_working_precision iso_fortran_env iso_fortran_env module~sll_m_errors->iso_fortran_env module~sll_m_spline_1d->module~sll_m_assert module~sll_m_spline_1d->module~sll_m_bsplines_base module~sll_m_spline_1d->module~sll_m_working_precision module~sll_m_spline_matrix->module~sll_m_errors module~sll_m_spline_matrix->module~sll_m_working_precision module~sll_m_spline_matrix_banded sll_m_spline_matrix_banded module~sll_m_spline_matrix->module~sll_m_spline_matrix_banded module~sll_m_spline_matrix_base sll_m_spline_matrix_base module~sll_m_spline_matrix->module~sll_m_spline_matrix_base module~sll_m_spline_matrix_dense sll_m_spline_matrix_dense module~sll_m_spline_matrix->module~sll_m_spline_matrix_dense module~sll_m_spline_matrix_banded->module~sll_m_assert module~sll_m_spline_matrix_banded->module~sll_m_errors module~sll_m_spline_matrix_banded->module~sll_m_working_precision module~sll_m_spline_matrix_banded->iso_fortran_env module~sll_m_spline_matrix_banded->module~sll_m_spline_matrix_base module~sll_m_spline_matrix_base->module~sll_m_working_precision module~sll_m_spline_matrix_dense->module~sll_m_assert module~sll_m_spline_matrix_dense->module~sll_m_errors module~sll_m_spline_matrix_dense->module~sll_m_working_precision module~sll_m_spline_matrix_dense->iso_fortran_env module~sll_m_spline_matrix_dense->module~sll_m_spline_matrix_base

Used by

  • module~~sll_m_spline_interpolator_1d~~UsedByGraph module~sll_m_spline_interpolator_1d sll_m_spline_interpolator_1d module~modgvec_sbase MODgvec_sBase module~modgvec_sbase->module~sll_m_spline_interpolator_1d proc~sbase_init t_sBase%sBase_init proc~sbase_init->module~sll_m_spline_interpolator_1d module~modgvec_base MODgvec_base module~modgvec_base->module~modgvec_sbase module~modgvec_readstate_vars MODgvec_ReadState_Vars module~modgvec_readstate_vars->module~modgvec_sbase module~modgvec_readstate_vars->module~modgvec_base proc~readstatefilefromascii ReadStateFileFromASCII proc~readstatefilefromascii->module~modgvec_sbase proc~readstatefilefromascii->module~modgvec_base proc~readstatefilefromascii->module~modgvec_readstate_vars module~modgvec_gvec_to_jorek_vars MODgvec_gvec_to_jorek_Vars module~modgvec_gvec_to_jorek_vars->module~modgvec_base module~modgvec_mhd3d_vars MODgvec_MHD3D_Vars module~modgvec_mhd3d_vars->module~modgvec_base module~modgvec_py_state MODgvec_py_state module~modgvec_py_state->module~modgvec_base module~modgvec_transform_sfl MODgvec_Transform_SFL module~modgvec_transform_sfl->module~modgvec_base proc~applyprecond ApplyPrecond proc~applyprecond->module~modgvec_base proc~buildtransform_sfl t_transform_sfl%BuildTransform_SFL proc~buildtransform_sfl->module~modgvec_base proc~eval_prof_r eval_prof_r proc~eval_prof_r->module~modgvec_readstate_vars proc~evaluate_base_list_stz_all evaluate_base_list_stz_all proc~evaluate_base_list_stz_all->module~modgvec_base proc~evaluate_base_list_tz evaluate_base_list_tz proc~evaluate_base_list_tz->module~modgvec_base proc~evaluate_base_list_tz_all evaluate_base_list_tz_all proc~evaluate_base_list_tz_all->module~modgvec_base proc~evaluate_base_select evaluate_base_select proc~evaluate_base_select->module~modgvec_base proc~evaluate_base_tens evaluate_base_tens proc~evaluate_base_tens->module~modgvec_base proc~evaluate_base_tens_all evaluate_base_tens_all proc~evaluate_base_tens_all->module~modgvec_base proc~finalize_readstate Finalize_ReadState proc~finalize_readstate->module~modgvec_readstate_vars proc~get_boozer get_boozer proc~get_boozer->module~modgvec_base proc~get_boozer->module~modgvec_mhd3d_vars proc~get_boozer_sinterp t_sfl_boozer%Get_Boozer_sinterp proc~get_boozer_sinterp->module~modgvec_base proc~get_field Get_Field proc~get_field->module~modgvec_readstate_vars proc~get_field->module~modgvec_gvec_to_jorek_vars proc~get_integration_points get_integration_points proc~get_integration_points->module~modgvec_base proc~get_integration_points_num get_integration_points_num proc~get_integration_points_num->module~modgvec_base proc~gvec_to_jorek_prepare gvec_to_jorek_prepare proc~gvec_to_jorek_prepare->module~modgvec_base proc~gvec_to_jorek_prepare->module~modgvec_readstate_vars proc~gvec_to_jorek_prepare->module~modgvec_gvec_to_jorek_vars proc~init_base Init_Base proc~init_base->module~modgvec_base proc~init_base->module~modgvec_readstate_vars proc~init_base->module~modgvec_gvec_to_jorek_vars proc~init_gvec_to_jorek init_gvec_to_jorek proc~init_gvec_to_jorek->module~modgvec_readstate_vars proc~init_gvec_to_jorek->module~modgvec_gvec_to_jorek_vars proc~initmhd3d t_functional_mhd3d%InitMHD3D proc~initmhd3d->module~modgvec_base proc~initmhd3d->module~modgvec_mhd3d_vars proc~lambda_solve Lambda_solve proc~lambda_solve->module~modgvec_base proc~readstate ReadState proc~readstate->module~modgvec_readstate_vars proc~restartfromstate RestartFromState proc~restartfromstate->module~modgvec_base proc~restartfromstate->module~modgvec_readstate_vars proc~restartfromstate->module~modgvec_mhd3d_vars proc~select_base select_base proc~select_base->module~modgvec_base proc~select_base->module~modgvec_mhd3d_vars proc~select_base_dofs select_base_dofs proc~select_base_dofs->module~modgvec_base proc~select_base_dofs->module~modgvec_mhd3d_vars proc~transform_angles_3d Transform_Angles_3d proc~transform_angles_3d->module~modgvec_base proc~transform_angles_sinterp Transform_Angles_sinterp proc~transform_angles_sinterp->module~modgvec_base proc~transform_sfl_init t_transform_sfl%transform_SFL_init proc~transform_sfl_init->module~modgvec_base program~gvec_post GVEC_POST program~gvec_post->module~modgvec_readstate_vars module~modgvec_gvec_to_castor3d_vars MODgvec_gvec_to_castor3d_Vars module~modgvec_gvec_to_castor3d_vars->module~modgvec_transform_sfl module~modgvec_gvec_to_gene_vars MODgvec_gvec_to_gene_Vars module~modgvec_gvec_to_gene_vars->module~modgvec_transform_sfl module~modgvec_gvec_to_hopr_vars MODgvec_gvec_to_hopr_vars module~modgvec_gvec_to_hopr_vars->module~modgvec_transform_sfl proc~addboundaryperturbation AddBoundaryPerturbation proc~addboundaryperturbation->module~modgvec_mhd3d_vars proc~analyze Analyze proc~analyze->module~modgvec_mhd3d_vars proc~applybc_fstrong ApplyBC_Fstrong proc~applybc_fstrong->module~modgvec_mhd3d_vars proc~buildprecond BuildPrecond proc~buildprecond->module~modgvec_mhd3d_vars proc~evalaux EvalAux proc~evalaux->module~modgvec_mhd3d_vars proc~evalenergy EvalEnergy proc~evalenergy->module~modgvec_mhd3d_vars proc~evalforce EvalForce proc~evalforce->module~modgvec_mhd3d_vars proc~evaluate_hmap evaluate_hmap proc~evaluate_hmap->module~modgvec_mhd3d_vars proc~evaluate_hmap_derivs evaluate_hmap_derivs proc~evaluate_hmap_derivs->module~modgvec_mhd3d_vars proc~evaluate_hmap_only evaluate_hmap_only proc~evaluate_hmap_only->module~modgvec_mhd3d_vars proc~evaluate_hmap_only_pw evaluate_hmap_only_pw proc~evaluate_hmap_only_pw->module~modgvec_mhd3d_vars proc~evaluate_hmap_pw evaluate_hmap_pw proc~evaluate_hmap_pw->module~modgvec_mhd3d_vars proc~evaluate_jac_h_derivs evaluate_jac_h_derivs proc~evaluate_jac_h_derivs->module~modgvec_mhd3d_vars proc~evaluate_jac_h_derivs_pw evaluate_jac_h_derivs_pw proc~evaluate_jac_h_derivs_pw->module~modgvec_mhd3d_vars proc~evaluate_metric_derivs evaluate_metric_derivs proc~evaluate_metric_derivs->module~modgvec_mhd3d_vars proc~evaluate_profile evaluate_profile proc~evaluate_profile->module~modgvec_mhd3d_vars proc~evaluate_rho2_profile evaluate_rho2_profile proc~evaluate_rho2_profile->module~modgvec_mhd3d_vars proc~finalize_gvec_to_jorek finalize_gvec_to_jorek proc~finalize_gvec_to_jorek->module~modgvec_gvec_to_jorek_vars proc~finalizemhd3d t_functional_mhd3d%FinalizeMHD3D proc~finalizemhd3d->module~modgvec_mhd3d_vars proc~finalizemhd3d_evalfunc FinalizeMHD3D_EvalFunc proc~finalizemhd3d_evalfunc->module~modgvec_mhd3d_vars proc~find_pest_angles_2d find_pest_angles_2D proc~find_pest_angles_2d->module~modgvec_mhd3d_vars proc~find_pest_angles_2d->module~modgvec_transform_sfl proc~get_cla_gvec_to_jorek get_CLA_gvec_to_jorek proc~get_cla_gvec_to_jorek->module~modgvec_gvec_to_jorek_vars proc~gvec_to_jorek_writetofile_ascii gvec_to_jorek_writeToFile_ASCII proc~gvec_to_jorek_writetofile_ascii->module~modgvec_gvec_to_jorek_vars proc~init Init proc~init->module~modgvec_mhd3d_vars proc~init_boozer init_boozer proc~init_boozer->module~modgvec_mhd3d_vars proc~init_la_from_solution Init_LA_from_Solution proc~init_la_from_solution->module~modgvec_mhd3d_vars proc~initaverageaxis InitAverageAxis proc~initaverageaxis->module~modgvec_mhd3d_vars proc~initializemhd3d_evalfunc InitializeMHD3D_evalFunc proc~initializemhd3d_evalfunc->module~modgvec_mhd3d_vars proc~initprofilesgp InitProfilesGP proc~initprofilesgp->module~modgvec_mhd3d_vars proc~initsolutionmhd3d t_functional_mhd3d%InitSolutionMHD3D proc~initsolutionmhd3d->module~modgvec_mhd3d_vars proc~initsolution~2 InitSolution proc~initsolution~2->module~modgvec_mhd3d_vars proc~minimize minimize proc~minimize->module~modgvec_mhd3d_vars proc~minimizemhd3d t_functional_mhd3d%MinimizeMHD3D proc~minimizemhd3d->module~modgvec_mhd3d_vars proc~writestatetoascii WriteStateToASCII proc~writestatetoascii->module~modgvec_mhd3d_vars

Variables

Type Visibility Attributes Name Initial
integer, private, parameter :: wp = f64

Working precision

integer, private, parameter :: allowed_bcs(1:3) = [sll_p_periodic, sll_p_hermite, sll_p_greville]

Allowed boundary conditions


Derived Types

type, public ::  sll_t_spline_interpolator_1d

1D spline interpolator

Components

Type Visibility Attributes Name Initial
class(sll_c_bsplines), private, pointer :: bspl => null()
integer, private :: bc_xmin
integer, private :: bc_xmax
integer, private :: nbc_xmin
integer, private :: nbc_xmax
integer, private :: odd
real(kind=wp), private :: dx
real(kind=wp), private, allocatable :: tau(:)
class(sll_c_spline_matrix), private, allocatable :: matrix

Type-Bound Procedures

procedure, public :: init => s_spline_interpolator_1d__init
procedure, public :: free => s_spline_interpolator_1d__free
procedure, public :: get_interp_points => s_spline_interpolator_1d__get_interp_points
procedure, public :: compute_interpolant => s_spline_interpolator_1d__compute_interpolant

Subroutines

public subroutine sll_s_spline_1d_compute_num_cells(degree, bc_xmin, bc_xmax, nipts, ncells)

Calculate number of cells from number of interpolation points calculate the number of grid cells that yields the desired number of interpolation points

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: degree

spline degree

integer, intent(in) :: bc_xmin

boundary condition type at left boundary (x=xmin)

integer, intent(in) :: bc_xmax

boundary condition type at right boundary (x=xmax)

integer, intent(in) :: nipts

desired number of interpolation points

integer, intent(out) :: ncells

calculated number of cells in domain

private subroutine s_spline_interpolator_1d__init(self, bspl, bc_xmin, bc_xmax)

Initialize a 1D spline interpolator object

Read more…

Arguments

Type IntentOptional Attributes Name
class(sll_t_spline_interpolator_1d), intent(out) :: self

1D spline interpolator

class(sll_c_bsplines), intent(in), target :: bspl

B-splines (basis)

integer, intent(in) :: bc_xmin

boundary condition at xmin

integer, intent(in) :: bc_xmax

boundary condition at xmax

private subroutine s_spline_interpolator_1d__free(self)

Destroy local objects and free allocated memory

Read more…

Arguments

Type IntentOptional Attributes Name
class(sll_t_spline_interpolator_1d), intent(inout) :: self

1D spline interpolator

private subroutine s_spline_interpolator_1d__get_interp_points(self, tau)

Get coordinates of interpolation points (1D grid)

Read more…

Arguments

Type IntentOptional Attributes Name
class(sll_t_spline_interpolator_1d), intent(in) :: self

1D spline interpolator

real(kind=wp), intent(out), allocatable :: tau(:)

private subroutine s_spline_interpolator_1d__compute_interpolant(self, bcoef, gtau, derivs_xmin, derivs_xmax)

Compute interpolating 1D spline values on grid. If Hermite BCs are used, function derivatives at appropriate boundary are also needed.

Read more…

Arguments

Type IntentOptional Attributes Name
class(sll_t_spline_interpolator_1d), intent(in) :: self

1D spline interpolator

real(kind=wp), intent(out) :: bcoef(1-MERGE(1+self%bspl%degree/2,0,self%bspl%periodic):self%bspl%nbasis+MERGE(1+self%bspl%degree/2,0,self%bspl%periodic))
real(kind=wp), intent(in) :: gtau(:)
real(kind=wp), intent(in), optional :: derivs_xmin(:)
real(kind=wp), intent(in), optional :: derivs_xmax(:)

private subroutine s_build_system(self, matrix)

Private subroutine for assembling and factorizing linear system for any kind of boundary conditions at xmin and xmax

Read more…

Arguments

Type IntentOptional Attributes Name
class(sll_t_spline_interpolator_1d), intent(in) :: self

1D spline interpolator object

class(sll_c_spline_matrix), intent(inout) :: matrix

generic 'spline' matrix (dense/banded/periodic-banded)

private subroutine s_compute_interpolation_points_uniform(self, tau)

Arguments

Type IntentOptional Attributes Name
class(sll_t_spline_interpolator_1d), intent(in) :: self
real(kind=wp), intent(out), allocatable :: tau(:)

private subroutine s_compute_num_diags_uniform(self, kl, ku)

Arguments

Type IntentOptional Attributes Name
class(sll_t_spline_interpolator_1d), intent(in) :: self
integer, intent(out) :: kl
integer, intent(out) :: ku

private subroutine s_compute_interpolation_points_non_uniform(self, tau)

Arguments

Type IntentOptional Attributes Name
class(sll_t_spline_interpolator_1d), intent(in) :: self
real(kind=wp), intent(out), allocatable :: tau(:)

private subroutine s_compute_num_diags_non_uniform(self, kl, ku)

Arguments

Type IntentOptional Attributes Name
class(sll_t_spline_interpolator_1d), intent(in) :: self
integer, intent(out) :: kl
integer, intent(out) :: ku