fBase_projectxntoDOF Subroutine

private subroutine fBase_projectxntoDOF(sf, add, factor, deriv, np, xn, yn, DOFs)

project from any 2D set of interpolation points, at tensor-product of (theta,zeta) positions given by "xn", to all modes DOFs = addDOFs+ fac MATMUL(base_xn,yn)

Type Bound

t_fBase

Arguments

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

self

logical, intent(in) :: add

=F initialize DOFs , =T add to DOFs

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

scale result by factor, before adding to DOFs (should be =1.0_wp if not needed)

integer, intent(in) :: deriv

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

integer, intent(in) :: np

total number of 2D interpolation points

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

(theta=1,zeta=2) position of tensor-product interpolation points, [0,2pi]x[0,2pi/nfp],size(2,mn_IP)

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

value at interpolation points

real(kind=wp), intent(inout) :: DOFs(1:sf%modes)

array of all modes


Calls

proc~~fbase_projectxntodof~~CallsGraph proc~fbase_projectxntodof t_fBase%fBase_projectxntoDOF dgemv dgemv proc~fbase_projectxntodof->dgemv proc~fbase_eval_xn t_fBase%fBase_eval_xn proc~fbase_projectxntodof->proc~fbase_eval_xn

Called by

proc~~fbase_projectxntodof~~CalledByGraph proc~fbase_projectxntodof t_fBase%fBase_projectxntoDOF proc~fbase_initdof t_fBase%fBase_initDOF proc~fbase_initdof->proc~fbase_projectxntodof proc~bff_convert_to_modes t_boundaryFromFile%bff_convert_to_modes proc~bff_convert_to_modes->proc~fbase_initdof proc~fbase_test fBase_test proc~fbase_test->proc~fbase_initdof 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~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~fbase_init t_fBase%fBase_init 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~initsolution InitSolution proc~initsolution->proc~initaverageaxis 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~init Init proc~init->proc~initmhd3d proc~initsolutionmhd3d t_functional_mhd3d%InitSolutionMHD3D proc~initsolutionmhd3d->proc~initsolution proc~rungvec rungvec proc~rungvec->proc~initmhd3d proc~rungvec->proc~initsolutionmhd3d program~gvec_post GVEC_POST program~gvec_post->proc~initmhd3d interface~t_fbase t_fBase interface~t_fbase->proc~fbase_new proc~initsolution~2 InitSolution proc~initsolution~2->proc~initsolutionmhd3d proc~start_rungvec start_rungvec proc~start_rungvec->proc~rungvec program~gvec GVEC program~gvec->proc~rungvec

Source Code

SUBROUTINE fBase_projectxntoDOF(sf,add,factor,deriv,np,xn,yn,DOFs)
  ! MODULES
  IMPLICIT NONE
  ! INPUT VARIABLES -------------------------!
  CLASS(t_fBase), INTENT(IN   ) :: sf     !! self
  LOGICAL       , INTENT(IN   ) :: add    !! =F initialize DOFs , =T add to DOFs
  REAL(wp)      , INTENT(IN   ) :: factor !! scale result by factor, before adding to DOFs (should be =1.0_wp if not needed)
  INTEGER       , INTENT(IN   ) :: deriv  !! =0: base, =2: dthet , =3: dzeta
  INTEGER       , INTENT(IN   ) :: np     !! total number of 2D interpolation points
  REAL(wp)      , INTENT(IN   ) :: xn(2,1:np)  !!  (theta=1,zeta=2) position of tensor-product interpolation points, [0,2pi]x[0,2pi/nfp],size(2,mn_IP)
  REAL(wp)      , INTENT(IN   ) :: yn(1:np)  !! value at interpolation points
! OUTPUT VARIABLES -------------------------!
  REAL(wp)      , INTENT(INOUT) :: DOFs(1:sf%modes)  !! array of all modes
! LOCAL VARIABLES -------------------------!
  REAL(wp)                      :: radd
  REAL(wp)                      :: base_xn(1:np,1:sf%modes)
! CODE --------------------------------------------------------------------------------------------------------------------------!
  base_xn=sf%eval_xn(deriv,np,xn)
  radd=MERGE(1.0_wp,0.0_wp,add)
  __PAMATVEC_T(radd,DOFs,factor,base_xn,yn)
END SUBROUTINE fBase_projectxntoDOF