sll_m_spline_1d Module

      given by the span of the given B-splines (basis functions).
      Therefore, initialization of a 1D spline object requires an existing
      B-splines object, to which a private (polymorphic) pointer is
      associated.
      The B-spline coefficients are stored in a public allocatable array;
      at initialization the array is allocated to the proper size and all
      values are set to zero.
      In most situations the B-spline coefficients are not set directly by
      the end user, but are computed by some other object (e.g., a Poisson
      solver or a spline interpolator).
      Various public methods allow the user to evaluate the 1D spline S(x)
      and its derivative S(x)/x any position x.

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".



Uses

  • module~~sll_m_spline_1d~~UsesGraph module~sll_m_spline_1d sll_m_spline_1d module~sll_m_assert sll_m_assert module~sll_m_spline_1d->module~sll_m_assert module~sll_m_bsplines_base sll_m_bsplines_base module~sll_m_spline_1d->module~sll_m_bsplines_base module~sll_m_working_precision sll_m_working_precision module~sll_m_spline_1d->module~sll_m_working_precision module~sll_m_bsplines_base->module~sll_m_assert module~sll_m_bsplines_base->module~sll_m_working_precision

Used by

  • module~~sll_m_spline_1d~~UsedByGraph module~sll_m_spline_1d sll_m_spline_1d module~sll_m_spline_interpolator_1d sll_m_spline_interpolator_1d module~sll_m_spline_interpolator_1d->module~sll_m_spline_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~initsolution InitSolution proc~initsolution->module~modgvec_mhd3d_vars proc~initsolutionmhd3d t_functional_mhd3d%InitSolutionMHD3D proc~initsolutionmhd3d->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


Derived Types

type, public ::  sll_t_spline_1d

1D spline

Components

Type Visibility Attributes Name Initial
real(kind=wp), public, allocatable :: bcoef(:)
class(sll_c_bsplines), private, pointer :: bspl => null()

Type-Bound Procedures

procedure, public :: init => s_spline_1d__init
procedure, public :: free => s_spline_1d__free
procedure, public :: belongs_to_space => f_spline_1d__belongs_to_space
procedure, public :: eval => f_spline_1d__eval
procedure, public :: eval_deriv => f_spline_1d__eval_deriv
procedure, public :: eval_array => s_spline_1d__eval_array
procedure, public :: eval_array_deriv => s_spline_1d__eval_array_deriv

Functions

private pure function f_spline_1d__belongs_to_space(self, bsplines) result(in_space)

Check if 1D spline belongs to span of given B-splines

Read more…

Arguments

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

1D spline

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

B-splines

Return Value logical

private pure function f_spline_1d__eval(self, x) result(y)

Evaluate value of 1D spline at location x: y=S(x)

Read more…

Arguments

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

1D spline

real(kind=wp), intent(in) :: x

evaluation point

Return Value real(kind=wp)

private pure function f_spline_1d__eval_deriv(self, x) result(y)

Evaluate derivative of 1D spline at location x: y=S'(x)

Read more…

Arguments

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

1D spline

real(kind=wp), intent(in) :: x

evaluation point

Return Value real(kind=wp)


Subroutines

private subroutine s_spline_1d__init(self, bsplines)

Initialize 1D spline object as element of span(B-splines)

Read more…

Arguments

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

1D spline: new element of 1D spline space

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

B-splines: given basis of 1D spline space

private subroutine s_spline_1d__free(self)

Destroy 1D spline (re-initialization is possible afterwards)

Read more…

Arguments

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

1D spline

private pure subroutine s_spline_1d__eval_array(self, x, y)

Evaluate value of 1D spline at all locations in array x

Read more…

Arguments

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

1D spline

real(kind=wp), intent(in) :: x(:)
real(kind=wp), intent(out) :: y(:)

private pure subroutine s_spline_1d__eval_array_deriv(self, x, y)

Evaluate derivative of 1D spline at all locations in array x

Read more…

Arguments

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

1D spline

real(kind=wp), intent(in) :: x(:)
real(kind=wp), intent(out) :: y(:)