rProfile_drho4 Function

public function rProfile_drho4(sf, rho) result(derivative)

evaluate the 4th derivative of a radial profile with respect to rho ~sqrt(magnetic flux)

Type Bound

c_rProfile

Arguments

Type IntentOptional Attributes Name
class(c_rProfile) :: sf

self

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

rho position rho ~sqrt(magnetic flux)

Return Value real(kind=wp)

4th derivative of a radial profile with respect to rho ~sqrt(magnetic flux).


Calls

proc~~rprofile_drho4~~CallsGraph proc~rprofile_drho4 c_rProfile%rProfile_drho4 eval_at_rho2 eval_at_rho2 proc~rprofile_drho4->eval_at_rho2 proc~rho2_derivative rho2_derivative proc~rprofile_drho4->proc~rho2_derivative proc~poly_derivative_prefactor poly_derivative_prefactor proc~rho2_derivative->proc~poly_derivative_prefactor

Called by

proc~~rprofile_drho4~~CalledByGraph proc~rprofile_drho4 c_rProfile%rProfile_drho4 proc~rprofile_eval_at_rho c_rProfile%rProfile_eval_at_rho proc~rprofile_eval_at_rho->proc~rprofile_drho4 proc~evaluate_profile evaluate_profile proc~evaluate_profile->proc~rprofile_eval_at_rho proc~init_boozer init_boozer proc~init_boozer->proc~rprofile_eval_at_rho proc~init_la_from_solution Init_LA_from_Solution proc~init_la_from_solution->proc~rprofile_eval_at_rho proc~initprofilesgp InitProfilesGP proc~initprofilesgp->proc~rprofile_eval_at_rho proc~initvmec InitVMEC proc~initvmec->proc~rprofile_eval_at_rho proc~vmec1d_visu VMEC1D_visu proc~vmec1d_visu->proc~rprofile_eval_at_rho proc~writestatetoascii WriteStateToASCII proc~writestatetoascii->proc~rprofile_eval_at_rho interface~writestate WriteState interface~writestate->proc~writestatetoascii proc~analyze Analyze proc~analyze->proc~vmec1d_visu proc~initsolutionmhd3d t_functional_mhd3d%InitSolutionMHD3D proc~initsolutionmhd3d->proc~init_la_from_solution proc~initsolutionmhd3d->proc~initprofilesgp proc~initsolutionmhd3d->interface~writestate program~gvec_post GVEC_POST program~gvec_post->proc~initprofilesgp proc~initsolution InitSolution proc~initsolution->proc~initsolutionmhd3d proc~minimizemhd3d_descent t_minimizer_mhd3d%MinimizeMHD3D_descent proc~minimizemhd3d_descent->interface~writestate proc~rungvec rungvec proc~rungvec->proc~initsolutionmhd3d proc~minimizemhd3d t_functional_mhd3d%MinimizeMHD3D proc~rungvec->proc~minimizemhd3d proc~minimizemhd3d->proc~minimizemhd3d_descent proc~start_rungvec start_rungvec proc~start_rungvec->proc~rungvec program~gvec GVEC program~gvec->proc~rungvec proc~minimize minimize proc~minimize->proc~minimizemhd3d

Source Code

  FUNCTION rProfile_drho4(sf, rho) RESULT(derivative)
    ! INPUT VARIABLES -------------------------!
    CLASS(c_rProfile) :: sf !! self
    REAL(wp), INTENT(IN) :: rho                !! rho position rho ~sqrt(magnetic flux)
    ! OUTPUT VARIABLES -------------------------!
    REAL(wp) :: derivative   !! 4th derivative of a radial profile with respect to rho ~sqrt(magnetic flux).
    ! LOCAL VARIABLES -------------------------!
    REAL(wp) :: rho2
    ! CODE --------------------------------------------------------------------------------------------------------------------------!
    rho2 = rho2_derivative(rho,deriv=0)
    ! d^4/dx^4 f(g(x)) = f''''(g(x))g'(x)**4
    !                   + 6f'''(g(x))g''(x)g'(x)^2
    !                   + 3f''(g(x))g''(x)^2
    !                   + 4f''(g(x))g'''(x)g'(x)
    !                   + f'(g(x))g''''(x)
    derivative =    sf%eval_at_rho2(rho2, deriv=4)*rho2_derivative(rho,deriv=1)**4 &
                + 6*sf%eval_at_rho2(rho2, deriv=3)*rho2_derivative(rho,deriv=2)*rho2_derivative(rho,deriv=1)**2 &
                + 3*sf%eval_at_rho2(rho2, deriv=2)*rho2_derivative(rho,deriv=2)**2 &
                + 4*sf%eval_at_rho2(rho2, deriv=2)*rho2_derivative(rho,deriv=3)*rho2_derivative(rho,deriv=1) &
                +   sf%eval_at_rho2(rho2, deriv=1)*rho2_derivative(rho,deriv=4)
  END FUNCTION rProfile_drho4