init Subroutine

public subroutine init(self)

建立光滑核函数句柄

Type Bound

smoothed_kernel_function_type

Arguments

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

Contents

Source Code


Source Code

    subroutine init(self)
        class(smoothed_kernel_function_type), intent(inout) :: self
        real(rk) :: hv(2)

        self%hsml = rgn_obj%hsml
        select case (spc_obj%smoothed_kernel_function)
        case ('cubic-spline')
            self%scale = 2
            self%kernel => cubic_spline_kernel
            self%factor = 15.0_rk/(7.0_rk*Pi*self%hsml*self%hsml)
        case ('quintic-spline')
            self%scale = 3
            self%kernel => quintic_spline_kernel
            self%factor = 7.0_rk/(478.0_rk*Pi*self%hsml*self%hsml)
        case default
            self%scale = 2
            self%kernel => cubic_spline_kernel
            self%factor = 15.0_rk/(7.0_rk*Pi*self%hsml*self%hsml)
            call terminal_obj%warning('Unknown kernel type, use cubic-spline kernel by default')
        end select
        call self%kernel(0.0_rk, [0.0_rk, 0.0_rk], self%selfden, hv)
        self%scale_hsml = self%hsml*self%scale

    end subroutine init