rProfile_drho3 Function

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

evaluate the 3rd 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)

3rd derivative of a radial profile with respect to rho ~sqrt(magnetic flux)


Calls

proc~~rprofile_drho3~~CallsGraph proc~rprofile_drho3 c_rProfile%rProfile_drho3 eval_at_rho2 eval_at_rho2 proc~rprofile_drho3->eval_at_rho2 proc~rho2_derivative rho2_derivative proc~rprofile_drho3->proc~rho2_derivative proc~poly_derivative_prefactor poly_derivative_prefactor proc~rho2_derivative->proc~poly_derivative_prefactor

Called by

proc~~rprofile_drho3~~CalledByGraph proc~rprofile_drho3 c_rProfile%rProfile_drho3 proc~rprofile_eval_at_rho c_rProfile%rProfile_eval_at_rho proc~rprofile_eval_at_rho->proc~rprofile_drho3 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~2 InitSolution proc~initsolution~2->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_drho3(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          !! 3rd 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^3/dx^3 f(g(x)) = 3g'(x) * f''(g(x)) * g''(x) + [g'(x)]^3*f'''(g(x)) + f'(x) * g'''(x)
    derivative = 3*rho2_derivative(rho,deriv=1)*   sf%eval_at_rho2(rho2, deriv=2)*rho2_derivative(rho,deriv=2) &
                +  rho2_derivative(rho,deriv=1)**3*sf%eval_at_rho2(rho2, deriv=3) &
                +  rho2_derivative(rho,deriv=3)*   sf%eval_at_rho2(rho2, deriv=1)
  END FUNCTION rProfile_drho3