sll_s_spline_matrix_new Subroutine

public subroutine sll_s_spline_matrix_new(matrix, matrix_type, n, kl, ku)

Arguments

Type IntentOptional Attributes Name
class(sll_c_spline_matrix), intent(out), allocatable :: matrix
character(len=*), intent(in) :: matrix_type
integer, intent(in) :: n
integer, intent(in) :: kl
integer, intent(in) :: ku

Calls

proc~~sll_s_spline_matrix_new~~CallsGraph proc~sll_s_spline_matrix_new sll_s_spline_matrix_new init init proc~sll_s_spline_matrix_new->init proc~sll_s_error_handler sll_s_error_handler proc~sll_s_spline_matrix_new->proc~sll_s_error_handler interface~c_abort~2 c_abort proc~sll_s_error_handler->interface~c_abort~2 proc~errout errout proc~sll_s_error_handler->proc~errout

Called by

proc~~sll_s_spline_matrix_new~~CalledByGraph proc~sll_s_spline_matrix_new sll_s_spline_matrix_new proc~interpolate_cubic_spline interpolate_cubic_spline proc~interpolate_cubic_spline->proc~sll_s_spline_matrix_new proc~s_spline_interpolator_1d__init sll_t_spline_interpolator_1d%s_spline_interpolator_1d__init proc~s_spline_interpolator_1d__init->proc~sll_s_spline_matrix_new proc~sbase_init t_sBase%sBase_init proc~sbase_init->proc~sll_s_spline_matrix_new proc~sbase_test sBase_test proc~sbase_init->proc~sbase_test proc~sbase_copy t_sBase%sBase_copy proc~sbase_copy->proc~sbase_init proc~sbase_new sBase_new proc~sbase_new->proc~sbase_init proc~base_copy t_base%base_copy proc~base_copy->proc~sbase_copy proc~base_new Base_new proc~base_new->proc~sbase_new proc~readstatefilefromascii ReadStateFileFromASCII proc~readstatefilefromascii->proc~sbase_new proc~readstatefilefromascii->proc~base_new proc~sbase_test->proc~sbase_new interface~readstate ReadState interface~readstate->proc~readstatefilefromascii proc~init_base Init_Base proc~init_base->proc~base_new proc~initmhd3d t_functional_mhd3d%InitMHD3D proc~initmhd3d->proc~base_new proc~transform_sfl_init t_transform_sfl%transform_SFL_init proc~transform_sfl_init->proc~base_new proc~init Init proc~init->proc~initmhd3d proc~init_gvec_to_jorek init_gvec_to_jorek proc~init_gvec_to_jorek->interface~readstate proc~init_gvec_to_jorek->proc~init_base proc~restartfromstate RestartFromState proc~restartfromstate->interface~readstate proc~rungvec rungvec proc~rungvec->proc~initmhd3d proc~transform_sfl_new transform_sfl_new proc~transform_sfl_new->proc~transform_sfl_init program~gvec_post GVEC_POST program~gvec_post->proc~initmhd3d proc~start_rungvec start_rungvec proc~start_rungvec->proc~rungvec program~gvec GVEC program~gvec->proc~rungvec

Source Code

  subroutine sll_s_spline_matrix_new( matrix, matrix_type, n, kl, ku )
    class( sll_c_spline_matrix ), allocatable, intent(  out) :: matrix
    character(len=*)                         , intent(in   ) :: matrix_type
    integer                                  , intent(in   ) :: n
    integer                                  , intent(in   ) :: kl
    integer                                  , intent(in   ) :: ku

    character(len=*), parameter :: this_sub_name = "sll_s_spline_matrix_new"
    character(len=256) :: msg

    ! Allocate correct linear solver type
    select case ( matrix_type )

    case ( "dense" )
      allocate( sll_t_spline_matrix_dense  :: matrix )

    case ( "banded" )
      allocate( sll_t_spline_matrix_banded :: matrix )

!    case ( "periodic_banded" )
!      allocate( sll_t_spline_matrix_periodic_banded :: matrix )

    case default
      msg = "Unrecognized matrix type: " // trim( matrix_type )
      SLL_ERROR( this_sub_name, msg )

    end select

    ! Initialize matrix (and linear solver)
    select type ( matrix )

    type is ( sll_t_spline_matrix_dense )
      call matrix % init( n )

    type is ( sll_t_spline_matrix_banded )
      call matrix % init( n, kl, ku )

!    type is ( sll_t_spline_matrix_periodic_banded )
!      if (kl /= ku) then
!        msg = "Periodic banded matrix: Schur complement solver requires kl=ku, using their maximum instead."
!        SLL_WARNING( this_sub_name, msg )
!        call matrix % init( n, max(kl,ku), max(kl,ku) )
!      else
!        call matrix % init( n, kl, ku )
!      end if

    end select

  end subroutine sll_s_spline_matrix_new