fBase_eval_xn Function

private function fBase_eval_xn(sf, deriv, np, xn) result(base_xn)

evaluate all modes at a list of given points in theta and zeta

Type Bound

t_fBase

Arguments

Type IntentOptional Attributes Name
class(t_fBase), intent(in) :: sf

self

integer, intent(in) :: deriv

=0: base, =2: dthet , =3: dzeta

integer, intent(in) :: np

number of points in xn

real(kind=wp), intent(in) :: xn(2,1:np)

theta,zeta point positions

Return Value real(kind=wp), (1:np,sf%modes)


Called by

proc~~fbase_eval_xn~~CalledByGraph proc~fbase_eval_xn t_fBase%fBase_eval_xn proc~fbase_eval t_fBase%fBase_eval proc~fbase_eval->proc~fbase_eval_xn proc~fbase_evaldof_xn t_fBase%fBase_evalDOF_xn proc~fbase_evaldof_xn->proc~fbase_eval_xn proc~fbase_projectxntodof t_fBase%fBase_projectxntoDOF proc~fbase_projectxntodof->proc~fbase_eval_xn proc~bff_convert_to_modes t_boundaryFromFile%bff_convert_to_modes proc~bff_convert_to_modes->proc~fbase_evaldof_xn proc~fbase_initdof t_fBase%fBase_initDOF proc~bff_convert_to_modes->proc~fbase_initdof proc~evaluate_base_list_tz evaluate_base_list_tz proc~evaluate_base_list_tz->proc~fbase_evaldof_xn proc~evaluate_base_list_tz_all evaluate_base_list_tz_all proc~evaluate_base_list_tz_all->proc~fbase_evaldof_xn proc~evaluate_boozer_list_tz_all evaluate_boozer_list_tz_all proc~evaluate_boozer_list_tz_all->proc~fbase_evaldof_xn proc~fbase_evaldof_ip fBase_evalDOF_IP proc~fbase_evaldof_ip->proc~fbase_evaldof_xn proc~fbase_evaldof_ip_tens t_fBase%fBase_evalDOF_IP_tens proc~fbase_evaldof_ip_tens->proc~fbase_evaldof_xn proc~fbase_evaldof_x t_fBase%fBase_evalDOF_x proc~fbase_evaldof_x->proc~fbase_eval proc~fbase_initdof->proc~fbase_projectxntodof proc~fbase_test fBase_test proc~fbase_test->proc~fbase_evaldof_xn proc~fbase_test->proc~fbase_evaldof_ip_tens proc~fbase_test->proc~fbase_evaldof_x proc~fbase_test->proc~fbase_initdof proc~find_boozer_angles find_boozer_angles proc~find_boozer_angles->proc~fbase_evaldof_xn proc~find_pest_angles find_pest_angles proc~find_pest_angles->proc~fbase_evaldof_xn proc~get_booz_newton_dfr t_newton_Root2D_boozer%get_booz_newton_dFR proc~get_booz_newton_dfr->proc~fbase_eval proc~get_booz_newton_fr t_newton_Root2D_boozer%get_booz_newton_FR proc~get_booz_newton_fr->proc~fbase_eval proc~hmap_axisnb_eval_tnb_hat t_hmap_axisNB%hmap_axisNB_eval_TNB_hat proc~hmap_axisnb_eval_tnb_hat->proc~fbase_eval proc~transform_angles_3d Transform_Angles_3d proc~transform_angles_3d->proc~fbase_evaldof_xn proc~transform_angles_3d->proc~fbase_initdof proc~transform_angles_sinterp Transform_Angles_sinterp proc~transform_angles_sinterp->proc~fbase_eval proc~transform_angles_sinterp->proc~fbase_evaldof_ip_tens proc~base_evaldof t_base%base_evalDOF proc~base_evaldof->proc~fbase_evaldof_ip_tens proc~base_evaldof_all t_base%base_evalDOF_all proc~base_evaldof_all->proc~fbase_evaldof_ip_tens proc~base_evaldof_x t_base%base_evalDOF_x proc~base_evaldof_x->proc~fbase_evaldof_x proc~buildtransform_sfl t_transform_sfl%BuildTransform_SFL proc~buildtransform_sfl->proc~find_pest_angles proc~buildtransform_sfl->proc~transform_angles_3d proc~buildtransform_sfl->proc~transform_angles_sinterp proc~get_boozer_sinterp t_sfl_boozer%Get_Boozer_sinterp proc~buildtransform_sfl->proc~get_boozer_sinterp proc~self_find_boozer_angles t_sfl_boozer%self_find_boozer_angles proc~buildtransform_sfl->proc~self_find_boozer_angles proc~checkfieldperiodicity CheckFieldPeriodicity proc~checkfieldperiodicity->proc~hmap_axisnb_eval_tnb_hat proc~evaluate_base_list_stz_all evaluate_base_list_stz_all proc~evaluate_base_list_stz_all->proc~fbase_evaldof_x proc~fbase_init t_fBase%fBase_init proc~fbase_init->proc~fbase_test proc~find_pest_angles_2d find_pest_angles_2D proc~find_pest_angles_2d->proc~find_pest_angles proc~get_boozer_sinterp->proc~fbase_evaldof_ip_tens proc~get_field Get_Field proc~get_field->proc~fbase_evaldof_ip_tens proc~get_field->proc~fbase_evaldof_x proc~get_field->proc~fbase_initdof proc~gvec_to_jorek_prepare gvec_to_jorek_prepare proc~gvec_to_jorek_prepare->proc~fbase_evaldof_x proc~gvec_to_jorek_prepare->proc~fbase_initdof proc~gvec_to_jorek_prepare->proc~get_field proc~hmap_axisnb_eval t_hmap_axisNB%hmap_axisNB_eval proc~hmap_axisnb_eval->proc~hmap_axisnb_eval_tnb_hat proc~hmap_axisnb_eval_dxdq t_hmap_axisNB%hmap_axisNB_eval_dxdq proc~hmap_axisnb_eval_dxdq->proc~hmap_axisnb_eval_tnb_hat proc~hmap_axisnb_eval_gij t_hmap_axisNB%hmap_axisNB_eval_gij proc~hmap_axisnb_eval_gij->proc~hmap_axisnb_eval_tnb_hat proc~hmap_axisnb_eval_gij_dq t_hmap_axisNB%hmap_axisNB_eval_gij_dq proc~hmap_axisnb_eval_gij_dq->proc~hmap_axisnb_eval_tnb_hat proc~hmap_axisnb_eval_jh t_hmap_axisNB%hmap_axisNB_eval_Jh proc~hmap_axisnb_eval_jh->proc~hmap_axisnb_eval_tnb_hat proc~hmap_axisnb_eval_jh_dq t_hmap_axisNB%hmap_axisNB_eval_Jh_dq proc~hmap_axisnb_eval_jh_dq->proc~hmap_axisnb_eval_tnb_hat proc~hmap_axisnb_get_ddx_dqij t_hmap_axisNB%hmap_axisNB_get_ddx_dqij proc~hmap_axisnb_get_ddx_dqij->proc~hmap_axisnb_eval_tnb_hat proc~hmap_axisnb_get_dx_dqi t_hmap_axisNB%hmap_axisNB_get_dx_dqi proc~hmap_axisnb_get_dx_dqi->proc~hmap_axisnb_eval_tnb_hat proc~hmap_axisnb_init_aux hmap_axisNB_init_aux proc~hmap_axisnb_init_aux->proc~hmap_axisnb_eval_tnb_hat proc~hmap_axisnb_init_params hmap_axisNB_init_params proc~hmap_axisnb_init_params->proc~fbase_initdof proc~hmap_axisnb_init_params->proc~hmap_axisnb_eval_tnb_hat proc~hmap_axisnb_init_params->proc~checkfieldperiodicity proc~visu_axisnb Visu_axisNB proc~hmap_axisnb_init_params->proc~visu_axisnb proc~hmap_axisnb_test hmap_axisNB_test proc~hmap_axisnb_init_params->proc~hmap_axisnb_test proc~initaverageaxis InitAverageAxis proc~initaverageaxis->proc~fbase_evaldof_ip_tens proc~initaverageaxis->proc~fbase_initdof proc~initmhd3d t_functional_mhd3d%InitMHD3D proc~initmhd3d->proc~bff_convert_to_modes proc~base_new Base_new proc~initmhd3d->proc~base_new proc~lambda_solve Lambda_solve proc~lambda_solve->proc~fbase_evaldof_ip_tens proc~pest_newton_frdfr t_newton_Root1D_FdF_pest%pest_newton_FRdFR proc~pest_newton_frdfr->proc~fbase_evaldof_x proc~self_find_boozer_angles->proc~find_boozer_angles proc~self_find_boozer_angles_irho t_sfl_boozer%self_find_boozer_angles_irho proc~self_find_boozer_angles_irho->proc~find_boozer_angles proc~visu_axisnb->proc~hmap_axisnb_eval_tnb_hat interface~t_hmap_axisnb t_hmap_axisNB interface~t_hmap_axisnb->proc~hmap_axisnb_init_params proc~hmap_axisnb_init hmap_axisNB_init interface~t_hmap_axisnb->proc~hmap_axisnb_init interface~t_hmap_axisnb_auxvar t_hmap_axisNB_auxvar interface~t_hmap_axisnb_auxvar->proc~hmap_axisnb_init_aux proc~base_test Base_test proc~base_test->proc~base_evaldof proc~evalaux EvalAux proc~evalaux->proc~base_evaldof proc~evalaux->proc~base_evaldof_all proc~fbase_copy t_fBase%fBase_copy proc~fbase_copy->proc~fbase_init proc~fbase_new fBase_new proc~fbase_new->proc~fbase_init proc~get_boozer get_boozer proc~get_boozer->proc~get_boozer_sinterp proc~hmap_axisnb_init->proc~hmap_axisnb_init_params proc~hmap_axisnb_test->proc~hmap_axisnb_eval proc~hmap_axisnb_test->proc~hmap_axisnb_eval_dxdq proc~hmap_axisnb_test->proc~hmap_axisnb_eval_gij proc~hmap_axisnb_test->proc~hmap_axisnb_eval_gij_dq proc~hmap_axisnb_test->proc~hmap_axisnb_eval_jh proc~hmap_axisnb_test->proc~hmap_axisnb_eval_jh_dq proc~hmap_axisnb_test->proc~hmap_axisnb_get_ddx_dqij proc~hmap_axisnb_test->proc~hmap_axisnb_get_dx_dqi proc~hmap_axisnb_test->proc~hmap_axisnb_init_aux proc~init Init proc~init->proc~initmhd3d proc~init_la_from_solution Init_LA_from_Solution proc~init_la_from_solution->proc~lambda_solve proc~initsolution InitSolution proc~initsolution->proc~initaverageaxis proc~rungvec rungvec proc~rungvec->proc~initmhd3d proc~initsolutionmhd3d t_functional_mhd3d%InitSolutionMHD3D proc~rungvec->proc~initsolutionmhd3d proc~minimizemhd3d t_functional_mhd3d%MinimizeMHD3D proc~rungvec->proc~minimizemhd3d program~gvec_post GVEC_POST program~gvec_post->proc~initmhd3d proc~evalenergy EvalEnergy program~gvec_post->proc~evalenergy proc~evalforce EvalForce program~gvec_post->proc~evalforce interface~t_fbase t_fBase interface~t_fbase->proc~fbase_new proc~base_new->proc~base_test proc~evalenergy->proc~evalaux proc~evalforce->proc~evalaux proc~evaltotals EvalTotals proc~evaltotals->proc~evalaux proc~initsolutionmhd3d->proc~init_la_from_solution proc~initsolutionmhd3d->proc~initsolution proc~initsolutionmhd3d->proc~evalenergy proc~initsolutionmhd3d->proc~evalforce interface~writestate WriteState proc~initsolutionmhd3d->interface~writestate proc~minimizemhd3d_resetdescent t_minimizer_mhd3d%MinimizeMHD3d_ResetDescent proc~minimizemhd3d_resetdescent->proc~evalaux proc~minimizemhd3d_resetdescent->proc~evalenergy proc~minimizemhd3d_resetdescent->proc~evalforce proc~start_rungvec start_rungvec proc~start_rungvec->proc~rungvec program~gvec GVEC program~gvec->proc~rungvec proc~init_base Init_Base proc~init_base->proc~base_new proc~initsolution~2 InitSolution proc~initsolution~2->proc~initsolutionmhd3d proc~minimizemhd3d_descent t_minimizer_mhd3d%MinimizeMHD3D_descent proc~minimizemhd3d_descent->proc~evalenergy proc~minimizemhd3d_descent->proc~evalforce proc~minimizemhd3d_descent->proc~minimizemhd3d_resetdescent proc~minimizemhd3d_descent->interface~writestate proc~readstatefilefromascii ReadStateFileFromASCII proc~readstatefilefromascii->proc~base_new proc~transform_sfl_init t_transform_sfl%transform_SFL_init proc~transform_sfl_init->proc~base_new proc~writestatetoascii WriteStateToASCII proc~writestatetoascii->proc~evaltotals interface~readstate ReadState interface~readstate->proc~readstatefilefromascii interface~writestate->proc~writestatetoascii proc~init_gvec_to_jorek init_gvec_to_jorek proc~init_gvec_to_jorek->proc~init_base proc~init_gvec_to_jorek->interface~readstate proc~minimizemhd3d->proc~minimizemhd3d_descent proc~transform_sfl_new transform_sfl_new proc~transform_sfl_new->proc~transform_sfl_init proc~minimize minimize proc~minimize->proc~minimizemhd3d proc~restartfromstate RestartFromState proc~restartfromstate->interface~readstate

Source Code

FUNCTION fBase_eval_xn(sf,deriv,np,xn) RESULT(base_xn)
  ! MODULES
  IMPLICIT NONE
  ! INPUT VARIABLES -------------------------!
  CLASS(t_fBase), INTENT(IN   ) :: sf         !! self
  INTEGER       , INTENT(IN   ) :: deriv      !! =0: base, =2: dthet , =3: dzeta
  INTEGER       , INTENT(IN   ) :: np         !! number of points in xn
  REAL(wp)      , INTENT(IN   ) :: xn(2,1:np) !! theta,zeta point positions
  ! OUTPUT VARIABLES -------------------------!
  REAL(wp)                      :: base_xn(1:np,sf%modes)
  ! LOCAL VARIABLES -------------------------!
  INTEGER :: iMode
  ! CODE --------------------------------------------------------------------------------------------------------------------------!
  ASSOCIATE(sin_range=>sf%sin_range,cos_range=>sf%cos_range,Xmn=>sf%Xmn)
  SELECT CASE(deriv)
  CASE(0)
    DO iMode=sin_range(1)+1,sin_range(2)
      base_xn(:,iMode)=                       SIN(REAL(Xmn(1,iMode),wp)*xn(1,:)-REAL(Xmn(2,iMode),wp)*xn(2,:))
    END DO !iMode
    DO iMode=cos_range(1)+1,cos_range(2)
      base_xn(:,iMode)=                       COS(REAL(Xmn(1,iMode),wp)*xn(1,:)-REAL(Xmn(2,iMode),wp)*xn(2,:))
    END DO !iMode
  CASE(DERIV_THET)
    DO iMode=sin_range(1)+1,sin_range(2)
      base_xn(:,iMode)= REAL(Xmn(1,iMode),wp)*COS(REAL(Xmn(1,iMode),wp)*xn(1,:)-REAL(Xmn(2,iMode),wp)*xn(2,:))
    END DO !iMode
    DO iMode=cos_range(1)+1,cos_range(2)
      base_xn(:,iMode)=-REAL(Xmn(1,iMode),wp)*SIN(REAL(Xmn(1,iMode),wp)*xn(1,:)-REAL(Xmn(2,iMode),wp)*xn(2,:))
    END DO !iMode
  CASE(DERIV_ZETA)
    DO iMode=sin_range(1)+1,sin_range(2)
      base_xn(:,iMode)=-REAL(Xmn(2,iMode),wp)*COS(REAL(Xmn(1,iMode),wp)*xn(1,:)-REAL(Xmn(2,iMode),wp)*xn(2,:))
    END DO !iMode
    DO iMode=cos_range(1)+1,cos_range(2)
      base_xn(:,iMode)= REAL(Xmn(2,iMode),wp)*SIN(REAL(Xmn(1,iMode),wp)*xn(1,:)-REAL(Xmn(2,iMode),wp)*xn(2,:))
    END DO !iMode
  CASE(DERIV_THET_THET)
    DO iMode=sin_range(1)+1,sin_range(2)
      base_xn(:,iMode)=-REAL(Xmn(1,iMode)**2,wp)*SIN(REAL(Xmn(1,iMode),wp)*xn(1,:)-REAL(Xmn(2,iMode),wp)*xn(2,:))
    END DO !iMode
    DO iMode=cos_range(1)+1,cos_range(2)
      base_xn(:,iMode)=-REAL(Xmn(1,iMode)**2,wp)*COS(REAL(Xmn(1,iMode),wp)*xn(1,:)-REAL(Xmn(2,iMode),wp)*xn(2,:))
    END DO !iMode
  CASE(DERIV_THET_ZETA)
    DO iMode=sin_range(1)+1,sin_range(2)
      base_xn(:,iMode)= REAL(Xmn(1,iMode)*Xmn(2,iMode),wp)*SIN(REAL(Xmn(1,iMode),wp)*xn(1,:)-REAL(Xmn(2,iMode),wp)*xn(2,:))
    END DO !iMode
    DO iMode=cos_range(1)+1,cos_range(2)
      base_xn(:,iMode)= REAL(Xmn(1,iMode)*Xmn(2,iMode),wp)*COS(REAL(Xmn(1,iMode),wp)*xn(1,:)-REAL(Xmn(2,iMode),wp)*xn(2,:))
    END DO !iMode
  CASE(DERIV_ZETA_ZETA)
    DO iMode=sin_range(1)+1,sin_range(2)
      base_xn(:,iMode)=-REAL(Xmn(2,iMode)**2,wp)*SIN(REAL(Xmn(1,iMode),wp)*xn(1,:)-REAL(Xmn(2,iMode),wp)*xn(2,:))
    END DO !iMode
    DO iMode=cos_range(1)+1,cos_range(2)
      base_xn(:,iMode)=-REAL(Xmn(2,iMode)**2,wp)*COS(REAL(Xmn(1,iMode),wp)*xn(1,:)-REAL(Xmn(2,iMode),wp)*xn(2,:))
    END DO !iMode
  CASE DEFAULT
    CALL abort(__STAMP__, &
         "fbase_evalDOF_IP: derivative must be 0,DERIV_THET,_ZETA,_THET_THET,_THET_ZETA,_ZETA_ZETA!")
  END SELECT
  END ASSOCIATE
END FUNCTION fbase_eval_xn