init_gvec_to_jorek Subroutine

public subroutine init_gvec_to_jorek()

Uses

  • proc~~init_gvec_to_jorek~~UsesGraph proc~init_gvec_to_jorek init_gvec_to_jorek module~modgvec_globals MODgvec_Globals proc~init_gvec_to_jorek->module~modgvec_globals module~modgvec_gvec_to_jorek_vars MODgvec_gvec_to_jorek_Vars proc~init_gvec_to_jorek->module~modgvec_gvec_to_jorek_vars module~modgvec_readstate MODgvec_ReadState proc~init_gvec_to_jorek->module~modgvec_readstate module~modgvec_readstate_vars MODgvec_ReadState_Vars proc~init_gvec_to_jorek->module~modgvec_readstate_vars iso_fortran_env iso_fortran_env module~modgvec_globals->iso_fortran_env module~modgvec_gvec_to_jorek_vars->module~modgvec_globals module~modgvec_base MODgvec_base module~modgvec_gvec_to_jorek_vars->module~modgvec_base module~modgvec_fbase MODgvec_fBase module~modgvec_gvec_to_jorek_vars->module~modgvec_fbase module~modgvec_readstate->module~modgvec_globals module~modgvec_readstate_vars->module~modgvec_globals module~modgvec_readstate_vars->module~modgvec_base module~modgvec_hmap MODgvec_hmap module~modgvec_readstate_vars->module~modgvec_hmap module~modgvec_sbase MODgvec_sBase module~modgvec_readstate_vars->module~modgvec_sbase module~modgvec_sgrid MODgvec_sGrid module~modgvec_readstate_vars->module~modgvec_sgrid module~modgvec_base->module~modgvec_globals module~modgvec_base->module~modgvec_fbase module~modgvec_base->module~modgvec_sbase module~modgvec_base->module~modgvec_sgrid module~modgvec_fbase->module~modgvec_globals module~modgvec_c_hmap MODgvec_c_hmap module~modgvec_hmap->module~modgvec_c_hmap module~modgvec_hmap_axisnb MODgvec_hmap_axisNB module~modgvec_hmap->module~modgvec_hmap_axisnb module~modgvec_hmap_cyl MODgvec_hmap_cyl module~modgvec_hmap->module~modgvec_hmap_cyl module~modgvec_hmap_frenet MODgvec_hmap_frenet module~modgvec_hmap->module~modgvec_hmap_frenet module~modgvec_hmap_knot MODgvec_hmap_knot module~modgvec_hmap->module~modgvec_hmap_knot module~modgvec_hmap_rz MODgvec_hmap_RZ module~modgvec_hmap->module~modgvec_hmap_rz module~modgvec_sbase->module~modgvec_globals module~modgvec_sbase->module~modgvec_sgrid module~sll_m_bsplines sll_m_bsplines module~modgvec_sbase->module~sll_m_bsplines module~sll_m_spline_interpolator_1d sll_m_spline_interpolator_1d module~modgvec_sbase->module~sll_m_spline_interpolator_1d module~sll_m_spline_matrix sll_m_spline_matrix module~modgvec_sbase->module~sll_m_spline_matrix module~modgvec_sgrid->module~modgvec_globals module~modgvec_c_hmap->module~modgvec_globals module~modgvec_hmap_axisnb->module~modgvec_globals module~modgvec_hmap_axisnb->module~modgvec_fbase module~modgvec_hmap_axisnb->module~modgvec_c_hmap module~modgvec_io_netcdf MODgvec_IO_NETCDF module~modgvec_hmap_axisnb->module~modgvec_io_netcdf module~modgvec_hmap_cyl->module~modgvec_globals module~modgvec_hmap_cyl->module~modgvec_c_hmap module~modgvec_hmap_frenet->module~modgvec_globals module~modgvec_hmap_frenet->module~modgvec_c_hmap module~modgvec_hmap_knot->module~modgvec_globals module~modgvec_hmap_knot->module~modgvec_c_hmap module~modgvec_hmap_rz->module~modgvec_globals module~modgvec_hmap_rz->module~modgvec_c_hmap module~sll_m_assert sll_m_assert module~sll_m_bsplines->module~sll_m_assert module~sll_m_bsplines_base sll_m_bsplines_base module~sll_m_bsplines->module~sll_m_bsplines_base module~sll_m_bsplines_non_uniform sll_m_bsplines_non_uniform module~sll_m_bsplines->module~sll_m_bsplines_non_uniform module~sll_m_bsplines_uniform sll_m_bsplines_uniform module~sll_m_bsplines->module~sll_m_bsplines_uniform module~sll_m_errors sll_m_errors module~sll_m_bsplines->module~sll_m_errors module~sll_m_working_precision sll_m_working_precision module~sll_m_bsplines->module~sll_m_working_precision module~sll_m_spline_interpolator_1d->module~sll_m_spline_matrix module~sll_m_spline_interpolator_1d->module~sll_m_assert module~sll_m_boundary_condition_descriptors sll_m_boundary_condition_descriptors module~sll_m_spline_interpolator_1d->module~sll_m_boundary_condition_descriptors module~sll_m_spline_interpolator_1d->module~sll_m_bsplines_base module~sll_m_spline_interpolator_1d->module~sll_m_errors module~sll_m_spline_1d sll_m_spline_1d module~sll_m_spline_interpolator_1d->module~sll_m_spline_1d module~sll_m_spline_interpolator_1d->module~sll_m_working_precision module~sll_m_spline_matrix->module~sll_m_errors module~sll_m_spline_matrix_banded sll_m_spline_matrix_banded module~sll_m_spline_matrix->module~sll_m_spline_matrix_banded module~sll_m_spline_matrix_base sll_m_spline_matrix_base module~sll_m_spline_matrix->module~sll_m_spline_matrix_base module~sll_m_spline_matrix_dense sll_m_spline_matrix_dense module~sll_m_spline_matrix->module~sll_m_spline_matrix_dense module~sll_m_spline_matrix->module~sll_m_working_precision module~modgvec_io_netcdf->module~modgvec_globals module~sll_m_boundary_condition_descriptors->module~sll_m_working_precision module~sll_m_bsplines_base->module~sll_m_assert module~sll_m_bsplines_base->module~sll_m_working_precision module~sll_m_bsplines_non_uniform->module~sll_m_assert module~sll_m_bsplines_non_uniform->module~sll_m_bsplines_base module~sll_m_bsplines_non_uniform->module~sll_m_working_precision module~sll_m_bsplines_uniform->module~sll_m_assert module~sll_m_bsplines_uniform->module~sll_m_bsplines_base module~sll_m_bsplines_uniform->module~sll_m_errors module~sll_m_bsplines_uniform->module~sll_m_working_precision module~sll_m_errors->iso_fortran_env module~sll_m_spline_1d->module~sll_m_assert module~sll_m_spline_1d->module~sll_m_bsplines_base module~sll_m_spline_1d->module~sll_m_working_precision module~sll_m_spline_matrix_banded->iso_fortran_env module~sll_m_spline_matrix_banded->module~sll_m_assert module~sll_m_spline_matrix_banded->module~sll_m_errors module~sll_m_spline_matrix_banded->module~sll_m_spline_matrix_base module~sll_m_spline_matrix_banded->module~sll_m_working_precision module~sll_m_spline_matrix_base->module~sll_m_working_precision module~sll_m_spline_matrix_dense->iso_fortran_env module~sll_m_spline_matrix_dense->module~sll_m_assert module~sll_m_spline_matrix_dense->module~sll_m_errors module~sll_m_spline_matrix_dense->module~sll_m_spline_matrix_base module~sll_m_spline_matrix_dense->module~sll_m_working_precision

Initialize Module

Arguments

None

Calls

proc~~init_gvec_to_jorek~~CallsGraph proc~init_gvec_to_jorek init_gvec_to_jorek interface~gvec_to_jorek_prepare gvec_to_jorek_prepare proc~init_gvec_to_jorek->interface~gvec_to_jorek_prepare interface~readstate ReadState proc~init_gvec_to_jorek->interface~readstate proc~init_base Init_Base proc~init_gvec_to_jorek->proc~init_base interface~gvec_to_jorek_prepare->interface~gvec_to_jorek_prepare proc~readstatefilefromascii ReadStateFileFromASCII interface~readstate->proc~readstatefilefromascii proc~base_new Base_new proc~init_base->proc~base_new proc~base_test Base_test proc~base_new->proc~base_test proc~sbase_new sBase_new proc~base_new->proc~sbase_new proc~readstatefilefromascii->proc~base_new interface~getfreeunit GETFREEUNIT proc~readstatefilefromascii->interface~getfreeunit proc~hmap_new hmap_new proc~readstatefilefromascii->proc~hmap_new proc~sbase_evaldof_s t_sBase%sBase_evalDOF_s proc~readstatefilefromascii->proc~sbase_evaldof_s proc~sbase_initdof t_sBase%sBase_initDOF proc~readstatefilefromascii->proc~sbase_initdof proc~readstatefilefromascii->proc~sbase_new proc~sgrid_init t_sGrid%sGrid_init proc~readstatefilefromascii->proc~sgrid_init interface~getfreeunit->interface~getfreeunit proc~base_test->proc~sbase_initdof proc~base_evaldof t_base%base_evalDOF proc~base_test->proc~base_evaldof interface~enter_subregion enter_subregion proc~hmap_new->interface~enter_subregion interface~exit_subregion exit_subregion proc~hmap_new->interface~exit_subregion proc~sbase_eval t_sBase%sBase_eval proc~sbase_evaldof_s->proc~sbase_eval proc~sbase_evaldof_base t_sBase%sBase_evalDOF_base proc~sbase_evaldof_s->proc~sbase_evaldof_base compute_interpolant compute_interpolant proc~sbase_initdof->compute_interpolant proc~sbase_init t_sBase%sBase_init proc~sbase_new->proc~sbase_init proc~sgrid_test sGrid_test proc~sgrid_init->proc~sgrid_test interface~enter_subregion->interface~enter_subregion interface~exit_subregion->interface~exit_subregion proc~fbase_evaldof_ip_tens t_fBase%fBase_evalDOF_IP_tens proc~base_evaldof->proc~fbase_evaldof_ip_tens eval_basis eval_basis proc~sbase_eval->eval_basis eval_basis_and_n_derivs eval_basis_and_n_derivs proc~sbase_eval->eval_basis_and_n_derivs lagrangeinterpolationpolys lagrangeinterpolationpolys proc~sbase_eval->lagrangeinterpolationpolys proc~sgrid_find_elem t_sGrid%sGrid_find_elem proc~sbase_eval->proc~sgrid_find_elem add_element add_element proc~sbase_init->add_element barycentricweights barycentricweights proc~sbase_init->barycentricweights dmatip dmatip proc~sbase_init->dmatip proc~sbase_init->eval_basis proc~sbase_init->eval_basis_and_n_derivs eval_deriv eval_deriv proc~sbase_init->eval_deriv factorize factorize proc~sbase_init->factorize get_interp_points get_interp_points proc~sbase_init->get_interp_points init init proc~sbase_init->init initializevandermonde initializevandermonde proc~sbase_init->initializevandermonde legendregaussnodesandweights legendregaussnodesandweights proc~sbase_init->legendregaussnodesandweights mthpolynomialderivativematrix mthpolynomialderivativematrix proc~sbase_init->mthpolynomialderivativematrix proc~getlu getLU proc~sbase_init->proc~getlu proc~inv INV proc~sbase_init->proc~inv proc~sbase_alloc sBase_alloc proc~sbase_init->proc~sbase_alloc proc~sbase_test sBase_test proc~sbase_init->proc~sbase_test proc~sll_s_bsplines_new sll_s_bsplines_new proc~sbase_init->proc~sll_s_bsplines_new proc~sll_s_spline_matrix_new sll_s_spline_matrix_new proc~sbase_init->proc~sll_s_spline_matrix_new proc~solvemat SOLVEMAT proc~sbase_init->proc~solvemat xiip xiip proc~sbase_init->xiip proc~sgrid_test->proc~sgrid_init proc~sgrid_compare t_sGrid%sGrid_compare proc~sgrid_test->proc~sgrid_compare proc~sgrid_test->proc~sgrid_find_elem dgemm dgemm proc~fbase_evaldof_ip_tens->dgemm proc~fbase_evaldof_xn t_fBase%fBase_evalDOF_xn proc~fbase_evaldof_ip_tens->proc~fbase_evaldof_xn dgetrf dgetrf proc~getlu->dgetrf proc~inv->dgetrf dgetri dgetri proc~inv->dgetri proc~sbase_alloc->dmatip proc~sbase_alloc->xiip wbaryip wbaryip proc~sbase_alloc->wbaryip proc~sbase_test->proc~sbase_evaldof_s proc~sbase_test->proc~sbase_initdof proc~sbase_test->proc~sbase_new proc~sbase_test->proc~sbase_eval proc~sbase_test->proc~sbase_evaldof_base proc~sbase_applybctodof_lgm t_sBase%sBase_applyBCtoDOF_LGM proc~sbase_test->proc~sbase_applybctodof_lgm proc~sbase_change_base t_sBase%sBase_change_base proc~sbase_test->proc~sbase_change_base proc~sbase_compare t_sBase%sBase_compare proc~sbase_test->proc~sbase_compare proc~sbase_evaldof_gp t_sBase%sBase_evalDOF_GP proc~sbase_test->proc~sbase_evaldof_gp proc~sll_s_bsplines_new->init proc~sll_s_spline_matrix_new->init proc~sll_s_error_handler sll_s_error_handler proc~sll_s_spline_matrix_new->proc~sll_s_error_handler proc~solvemat->dgetrf dgetrs dgetrs proc~solvemat->dgetrs dgemv dgemv proc~fbase_evaldof_xn->dgemv proc~fbase_eval_xn t_fBase%fBase_eval_xn proc~fbase_evaldof_xn->proc~fbase_eval_xn proc~solve SOLVE proc~sbase_applybctodof_lgm->proc~solve proc~sbase_change_base->proc~sbase_initdof proc~sbase_change_base->proc~sbase_compare eval eval proc~sbase_change_base->eval evalDOF_base evalDOF_base proc~sbase_change_base->evalDOF_base proc~sbase_compare->proc~sgrid_compare interface~c_abort~2 c_abort proc~sll_s_error_handler->interface~c_abort~2 proc~errout errout proc~sll_s_error_handler->proc~errout proc~solve->dgetrf proc~solve->dgetrs

Source Code

SUBROUTINE init_gvec_to_jorek()
! MODULES
USE MODgvec_Globals,ONLY: TWOPI
USE MODgvec_ReadState         ,ONLY: ReadState
USE MODgvec_ReadState_vars    ,ONLY: X1_base_r,X2_base_r,LA_base_r
USE MODgvec_ReadState_vars    ,ONLY: LA_r,X1_r,X2_r
!USE MODgvec_transform_sfl_vars,ONLY: X1sfl_base,X1sfl,X2sfl_base,X2sfl ,GZsfl_base,GZsfl
!USE MODgvec_transform_sfl     ,ONLY: BuildTransform_SFL
USE MODgvec_gvec_to_jorek_vars
IMPLICIT NONE
!-----------------------------------------------------------------------------------------------------------------------------------
! INPUT VARIABLES
!-----------------------------------------------------------------------------------------------------------------------------------
! INPUT/OUTPUT VARIABLES
!-----------------------------------------------------------------------------------------------------------------------------------
! OUTPUT VARIABLES
!-----------------------------------------------------------------------------------------------------------------------------------
! LOCAL VARIABLES
INTEGER  :: i
REAL(wp) :: r
INTEGER  :: seed=1139           ! Random seed for test data
REAL(wp) :: phi_direction=1     ! direction of phi in JOREK and GVEC is clockwise, so direction does not need to be flipped
!===================================================================================================================================
  SWRITE(UNIT_stdOut,'(A)')'INIT GVEC-TO-CASTOR3D ...'

  ! Initialize grid variables from GVEC restart file
  CALL ReadState(TRIM(gvecfileName))

  mn_max_out(1)    = MAXVAL((/X1_base_r%f%mn_max(1),X2_base_r%f%mn_max(1),LA_base_r%f%mn_max(1)/))
  mn_max_out(2)    = MAXVAL((/X1_base_r%f%mn_max(2),X2_base_r%f%mn_max(2),LA_base_r%f%mn_max(2)/))
  nfp_out          = X1_base_r%f%nfp
  ! increase modal respresentation of the computed fields
  mn_max_out(1) = NINT(mn_max_out(1)*factorField)
  mn_max_out(2) = NINT(mn_max_out(2)*factorField)
  fac_nyq_fields=4 !hard coded for now

  IF((X1_base_r%f%sin_cos.EQ._COS_).AND.(X2_base_r%f%sin_cos.EQ._SIN_).AND.(LA_base_r%f%sin_cos.EQ._SIN_))THEN
    asym_out = 0 !R~cos,Z~sin,lambda~sin
  ELSE
    asym_out = 1 !full fourier
  END IF

  ! Initialize sample points in s, theta, zeta. s and theta can be randomly sampled for testing purposes.
  ALLOCATE(s_pos(Ns_out))
  !ALLOCATE(data_1D(nVar1D,Ns_out))
  IF (generate_test_data) THEN
    call RANDOM_SEED(seed)
    DO i=1,Ns_out
      call RANDOM_NUMBER(r)
      WRITE(*,*) "Random number: ", r
      s_pos(i) = (1.0 - 1.0e-12_wp - 1.0e-08_wp) * r + 1.0e-08_wp
      !s_pos(i) = r
    END DO
    IF (Ns_out .eq. 1) s_pos(1) = 1.0
  ELSE
    s_pos(1)=1.0e-08_wp !avoid axis
    DO i=2,Ns_out-1
        s_pos(i) = REAL(i-1,wp)/REAL(Ns_out-1,wp)
    END DO !i
    s_pos(Ns_out)=1. - 1.0e-12_wp !avoid edge
  END IF

  IF(Nthet_out.EQ.-1) THEN !overwrite with default from factorFourier
    Nthet_out = npfactor*mn_max_out(1)
  END IF
  IF(Nthet_out .LT. 4*mn_max_out(1)) WRITE(UNIT_StdOut,'(A)')'WARNING: number of poloidal points for output should be >=4*m_max!'
  Nzeta_out = MAX(1,fac_nyq_fields*mn_max_out(2)) !if n=0, output 1 point

  ALLOCATE(thet_pos(Nthet_out))
  ALLOCATE(zeta_pos(Nzeta_out))
  IF (generate_test_data) THEN
   DO i=1,Nthet_out
     call RANDOM_NUMBER(r)
     thet_pos(i)=r
   END DO
   IF (Nthet_out .eq. 1) thet_pos(1) =0.0
  ELSE
    DO i=1,Nthet_out
      thet_pos(i)=(REAL((i-1),wp))/REAL(Nthet_out,wp)
    END DO
  END IF
  DO i=1,Nzeta_out
    zeta_pos(i)=phi_direction * (TWOPI*REAL((i-0.5),wp))/REAL((Nzeta_out*nfp_out),wp)
  END DO

  CALL Init_Base(mn_max_out,fac_nyq_fields)

  n_modes      = fbase_zeta%modes
  sin_range(:) = fbase_zeta%sin_range(:)
  cos_range(:) = fbase_zeta%cos_range(:)
  ALLOCATE(data_scalar2D(Nthet_out,  Ns_out,n_modes,nVarScalar2D))
  ALLOCATE(data_scalar3D(Nthet_out,Nzeta_out,Ns_out,nVarscalar3D))
  !ALLOCATE(data_vector3D(3,Nthet_out,Nzeta_out,Ns_out,nVarvector3D))

  SWRITE(UNIT_stdOut,'(A,3I6)')'  Number OF N_s,N_theta,N_zeta evaluation points:',Ns_out,Nthet_out,Nzeta_out
  SWRITE(UNIT_stdOut,'(A)')'... DONE'
  SWRITE(UNIT_stdOut,fmt_sep)


  SELECT CASE(SFLcoord)
  CASE(0) ! GVEC coordinates - toroidal coordinate is the cylindrical toroidal direction
    CALL gvec_to_jorek_prepare(X1_base_r,X1_r,X2_base_r,X2_r,LA_base_r,LA_r)
  CASE DEFAULT
    SWRITE(UNIT_StdOut,*)'This SFLcoord is not yet implemented',SFLcoord
    STOP
  END SELECT
END SUBROUTINE init_gvec_to_jorek