fBase_initDOF Function

private function fBase_initDOF(sf, g_IP, thet_zeta_start) result(DOFs)

take values interpolated at sf%s_IP positions and project onto fourier basis by integration

Type Bound

t_fBase

Arguments

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

self

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

interpolation values at theta_IP zeta_IP positions

real(kind=wp), intent(in), optional :: thet_zeta_start(2)

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

projection to fourier base


Calls

proc~~fbase_initdof~~CallsGraph proc~fbase_initdof t_fBase%fBase_initDOF proc~fbase_projectiptodof_tens t_fBase%fBase_projectIPtoDOF_tens proc~fbase_initdof->proc~fbase_projectiptodof_tens proc~fbase_projectxntodof t_fBase%fBase_projectxntoDOF proc~fbase_initdof->proc~fbase_projectxntodof __adgemm_tn __adgemm_tn proc~fbase_projectiptodof_tens->__adgemm_tn __dgemm_nt __dgemm_nt proc~fbase_projectiptodof_tens->__dgemm_nt __pamatvec_t __pamatvec_t proc~fbase_projectxntodof->__pamatvec_t proc~fbase_eval_xn t_fBase%fBase_eval_xn proc~fbase_projectxntodof->proc~fbase_eval_xn

Called by

proc~~fbase_initdof~~CalledByGraph proc~fbase_initdof t_fBase%fBase_initDOF proc~bff_convert_to_modes t_boundaryFromFile%bff_convert_to_modes proc~bff_convert_to_modes->proc~fbase_initdof proc~fbase_new fBase_new proc~bff_convert_to_modes->proc~fbase_new proc~fbase_test fBase_test proc~fbase_test->proc~fbase_initdof proc~fbase_init t_fBase%fBase_init proc~fbase_test->proc~fbase_init proc~get_field Get_Field proc~get_field->proc~fbase_initdof proc~gvec_to_jorek_prepare gvec_to_jorek_prepare proc~gvec_to_jorek_prepare->proc~fbase_initdof proc~gvec_to_jorek_prepare->proc~get_field proc~hmap_axisnb_init_params hmap_axisNB_init_params proc~hmap_axisnb_init_params->proc~fbase_initdof proc~hmap_axisnb_init_params->proc~fbase_new proc~initaverageaxis InitAverageAxis proc~initaverageaxis->proc~fbase_initdof proc~transform_angles_3d Transform_Angles_3d proc~transform_angles_3d->proc~fbase_initdof 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 proc~buildtransform_sfl t_transform_sfl%BuildTransform_SFL proc~buildtransform_sfl->proc~transform_angles_3d proc~get_boozer_sinterp t_sfl_boozer%Get_Boozer_sinterp proc~buildtransform_sfl->proc~get_boozer_sinterp proc~transform_angles_sinterp Transform_Angles_sinterp proc~buildtransform_sfl->proc~transform_angles_sinterp proc~fbase_init->proc~fbase_test proc~hmap_axisnb_init->proc~hmap_axisnb_init_params proc~initmhd3d t_functional_mhd3d%InitMHD3D proc~initmhd3d->proc~bff_convert_to_modes proc~base_new Base_new proc~initmhd3d->proc~base_new proc~initsolution InitSolution proc~initsolution->proc~initaverageaxis proc~fbase_copy t_fBase%fBase_copy proc~fbase_copy->proc~fbase_init proc~fbase_new->proc~fbase_init proc~initsolutionmhd3d t_functional_mhd3d%InitSolutionMHD3D proc~initsolutionmhd3d->proc~initsolution proc~base_new->proc~fbase_new proc~get_boozer_sinterp->proc~fbase_new proc~init_base Init_Base proc~init_base->proc~fbase_new proc~init_base->proc~base_new proc~sfl_boozer_new sfl_boozer_new proc~sfl_boozer_new->proc~fbase_new proc~transform_angles_sinterp->proc~fbase_new proc~get_boozer get_boozer proc~get_boozer->proc~get_boozer_sinterp proc~init_gvec_to_jorek init_gvec_to_jorek proc~init_gvec_to_jorek->proc~init_base interface~readstate ReadState proc~init_gvec_to_jorek->interface~readstate 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 interface~readstate->proc~readstatefilefromascii proc~transform_sfl_new transform_sfl_new proc~transform_sfl_new->proc~transform_sfl_init proc~restartfromstate RestartFromState proc~restartfromstate->interface~readstate

Source Code

FUNCTION fBase_initDOF( sf , g_IP,thet_zeta_start) RESULT(DOFs)
! MODULES
IMPLICIT NONE
!-----------------------------------------------------------------------------------------------------------------------------------
! INPUT VARIABLES
  CLASS(t_fBase), INTENT(IN   ) :: sf    !! self
  REAL(wp)      , INTENT(IN   ) :: g_IP(:)  !!  interpolation values at theta_IP zeta_IP positions
  REAL(wp),INTENT(IN),OPTIONAL :: thet_zeta_start(2) !theta,zeta value of first point (points must remain equidistant and of size mn_nyq(1),mn_nyq(2))
!-----------------------------------------------------------------------------------------------------------------------------------
! OUTPUT VARIABLES
  REAL(wp)                      :: DOFs(1:sf%modes)  !! projection to fourier base
!-----------------------------------------------------------------------------------------------------------------------------------
! LOCAL VARIABLES
  REAL(wp)                      :: x_IP_shift(2,sf%mn_IP)
!===================================================================================================================================
  IF(SIZE(g_IP,1).NE.sf%mn_IP) CALL abort(__STAMP__, &
       'nDOF not correct when calling fBase_initDOF' )
  IF(.NOT.(PRESENT(thet_zeta_start)))THEN
    CALL sf%projectIPtoDOF(.FALSE.,(sf%d_thet*sf%d_zeta),0,g_IP,DOFs)
  ELSE
    x_IP_shift(1,:)=sf%x_IP(1,:)-sf%x_IP(1,1)+thet_zeta_start(1)
    x_IP_shift(2,:)=sf%x_IP(2,:)-sf%x_IP(2,1)+thet_zeta_start(2)
    CALL sf%projectxntoDOF(.FALSE.,(sf%d_thet*sf%d_zeta),0,sf%mn_IP,x_IP_shift,g_IP,DOFs)
  END IF
  DOFs(:)=sf%snorm_base(:)*DOFs(:)  !normalize with inverse mass matrix diagonal
END FUNCTION fBase_initDOF