ReadStateFileFromASCII Subroutine

private subroutine ReadStateFileFromASCII(fileString, hmap_in)

Uses

  • proc~~readstatefilefromascii~~UsesGraph proc~readstatefilefromascii ReadStateFileFromASCII module~modgvec_base MODgvec_base proc~readstatefilefromascii->module~modgvec_base module~modgvec_fbase MODgvec_fBase proc~readstatefilefromascii->module~modgvec_fbase module~modgvec_globals MODgvec_Globals proc~readstatefilefromascii->module~modgvec_globals module~modgvec_hmap MODgvec_hmap proc~readstatefilefromascii->module~modgvec_hmap module~modgvec_readstate_vars MODgvec_ReadState_Vars proc~readstatefilefromascii->module~modgvec_readstate_vars module~modgvec_sbase MODgvec_sBase proc~readstatefilefromascii->module~modgvec_sbase module~modgvec_sgrid MODgvec_sGrid proc~readstatefilefromascii->module~modgvec_sgrid module~modgvec_base->module~modgvec_fbase module~modgvec_base->module~modgvec_globals module~modgvec_base->module~modgvec_sbase module~modgvec_base->module~modgvec_sgrid module~modgvec_fbase->module~modgvec_globals iso_fortran_env iso_fortran_env module~modgvec_globals->iso_fortran_env 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_readstate_vars->module~modgvec_base module~modgvec_readstate_vars->module~modgvec_globals module~modgvec_readstate_vars->module~modgvec_hmap module~modgvec_readstate_vars->module~modgvec_sbase module~modgvec_readstate_vars->module~modgvec_sgrid 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_fbase module~modgvec_hmap_axisnb->module~modgvec_globals 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_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_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_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_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_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 netcdf netcdf module~modgvec_io_netcdf->netcdf module~sll_m_bsplines_base->module~sll_m_working_precision 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_bsplines_base module~sll_m_bsplines_uniform->module~sll_m_working_precision 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_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_spline_matrix_base module~sll_m_spline_matrix_dense->module~sll_m_working_precision

read an input solution and initialize U(0) (X1,X2,LA) of size X1/X2/LA_base , from an ascii .dat file if size of grid/X1/X2/LA not equal X1/X2/X3_base interpolate readin solution to the current base of Uin

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: fileString
type(PP_T_HMAP), optional, ALLOCATABLE :: hmap_in

type containing subroutines for evaluating the map h (Omega_p x S^1) --> Omega


Calls

proc~~readstatefilefromascii~~CallsGraph proc~readstatefilefromascii ReadStateFileFromASCII interface~getfreeunit GETFREEUNIT proc~readstatefilefromascii->interface~getfreeunit proc~base_new Base_new proc~readstatefilefromascii->proc~base_new 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~sbase_new sBase_new proc~readstatefilefromascii->proc~sbase_new proc~sgrid_init t_sGrid%sGrid_init proc~readstatefilefromascii->proc~sgrid_init interface~getfreeunit->interface~getfreeunit proc~base_new->proc~sbase_new proc~base_test Base_test proc~base_new->proc~base_test proc~fbase_new fBase_new proc~base_new->proc~fbase_new pp_t_hmap pp_t_hmap proc~hmap_new->pp_t_hmap 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 swrite swrite proc~sgrid_init->swrite proc~base_test->proc~sbase_initdof proc~base_test->swrite proc~base_evaldof t_base%base_evalDOF proc~base_test->proc~base_evaldof __perfoff __perfoff proc~fbase_new->__perfoff __perfon __perfon proc~fbase_new->__perfon proc~fbase_init t_fBase%fBase_init proc~fbase_new->proc~fbase_init 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 proc~sbase_init->swrite 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_test->swrite proc~sgrid_compare t_sGrid%sGrid_compare proc~sgrid_test->proc~sgrid_compare proc~sgrid_test->proc~sgrid_find_elem proc~base_evaldof->__perfoff proc~base_evaldof->__perfon proc~fbase_evaldof_ip_tens t_fBase%fBase_evalDOF_IP_tens proc~base_evaldof->proc~fbase_evaldof_ip_tens proc~fbase_init->swrite proc~fbase_alloc fBase_alloc proc~fbase_init->proc~fbase_alloc proc~fbase_test fBase_test proc~fbase_init->proc~fbase_test 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_test->swrite 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 sll_assert sll_assert proc~sll_s_bsplines_new->sll_assert proc~sll_s_spline_matrix_new->init sll_error sll_error proc~sll_s_spline_matrix_new->sll_error proc~solvemat->dgetrf dgetrs dgetrs proc~solvemat->dgetrs __dgemm_nn __dgemm_nn proc~fbase_evaldof_ip_tens->__dgemm_nn proc~fbase_evaldof_xn t_fBase%fBase_evalDOF_xn proc~fbase_evaldof_ip_tens->proc~fbase_evaldof_xn proc~fbase_test->swrite proc~fbase_test->proc~fbase_init proc~fbase_test->proc~fbase_evaldof_ip_tens proc~fbase_change_base t_fBase%fBase_change_base proc~fbase_test->proc~fbase_change_base proc~fbase_compare t_fBase%fBase_compare proc~fbase_test->proc~fbase_compare proc~fbase_evaldof_x t_fBase%fBase_evalDOF_x proc~fbase_test->proc~fbase_evaldof_x proc~fbase_test->proc~fbase_evaldof_xn proc~fbase_evaldof_xn_tens t_fBase%fBase_evalDOF_xn_tens proc~fbase_test->proc~fbase_evaldof_xn_tens proc~fbase_initdof t_fBase%fBase_initDOF proc~fbase_test->proc~fbase_initdof 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 proc~fbase_change_base->proc~fbase_compare proc~fbase_eval t_fBase%fBase_eval proc~fbase_evaldof_x->proc~fbase_eval __matvec_n __matvec_n proc~fbase_evaldof_xn->__matvec_n proc~fbase_eval_xn t_fBase%fBase_eval_xn proc~fbase_evaldof_xn->proc~fbase_eval_xn proc~fbase_evaldof_xn_tens->__dgemm_nn proc~fbase_eval1d_thet fBase_eval1d_thet proc~fbase_evaldof_xn_tens->proc~fbase_eval1d_thet proc~fbase_eval1d_zeta fBase_eval1d_zeta proc~fbase_evaldof_xn_tens->proc~fbase_eval1d_zeta 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 proc~solve->dgetrf proc~solve->dgetrs proc~fbase_eval->proc~fbase_eval_xn __adgemm_tn __adgemm_tn proc~fbase_projectiptodof_tens->__adgemm_tn __dgemm_nt __dgemm_nt proc~fbase_projectiptodof_tens->__dgemm_nt proc~fbase_projectxntodof->proc~fbase_eval_xn __pamatvec_t __pamatvec_t proc~fbase_projectxntodof->__pamatvec_t

Called by

proc~~readstatefilefromascii~~CalledByGraph proc~readstatefilefromascii ReadStateFileFromASCII interface~readstate ReadState interface~readstate->proc~readstatefilefromascii proc~init_gvec_to_jorek init_gvec_to_jorek proc~init_gvec_to_jorek->interface~readstate proc~restartfromstate RestartFromState proc~restartfromstate->interface~readstate

Source Code

SUBROUTINE ReadStateFileFromASCII(fileString,hmap_in)
! MODULES
USE MODgvec_ReadState_Vars
USE MODgvec_Globals,ONLY: Unit_stdOut,GETFREEUNIT,abort
USE MODgvec_sgrid,  ONLY: t_sgrid
USE MODgvec_base,   ONLY: t_base, base_new
USE MODgvec_sbase,  ONLY: sbase_new
USE MODgvec_fbase,  ONLY: sin_cos_map
USE MODgvec_hmap
IMPLICIT NONE
!-----------------------------------------------------------------------------------------------------------------------------------
! INPUT VARIABLES
  CHARACTER(LEN=*)    , INTENT(IN   ) :: fileString
#ifdef PP_WHICH_HMAP
  TYPE(PP_T_HMAP), OPTIONAL, ALLOCATABLE :: hmap_in     !! type containing subroutines for evaluating the map h (Omega_p x S^1) --> Omega
#else
  CLASS(PP_T_HMAP), OPTIONAL, ALLOCATABLE :: hmap_in     !! type containing subroutines for evaluating the map h (Omega_p x S^1) --> Omega
#endif

!-----------------------------------------------------------------------------------------------------------------------------------
! OUTPUT VARIABLES
!-----------------------------------------------------------------------------------------------------------------------------------
! LOCAL VARIABLES
  LOGICAL              :: file_exists
  INTEGER              :: ioUnit,iMode,is,nElems_r,grid_type_r,nfp_r,degGP_r,mn_nyq_r(2),which_hmap_r
  INTEGER              :: X1_nBase_r,X1_deg_r,X1_cont_r,X1_modes_r,X1_sin_cos_r,X1_excl_mn_zero_r
  INTEGER              :: X2_nBase_r,X2_deg_r,X2_cont_r,X2_modes_r,X2_sin_cos_r,X2_excl_mn_zero_r
  INTEGER              :: LA_nBase_r,LA_deg_r,LA_cont_r,LA_modes_r,LA_sin_cos_r,LA_excl_mn_zero_r
  INTEGER,ALLOCATABLE  :: X1_mn_r(:,:),X2_mn_r(:,:),LA_mn_r(:,:)
  REAL(wp),ALLOCATABLE :: sp_r(:),profiles_IP(:,:)
  INTEGER              :: X1_mn_max_r(2),X2_mn_max_r(2),LA_mn_max_r(2)

  INTEGER              :: iGP
  REAL                 :: chi_int, iota_int, phi_edge,  ds
  REAL(wp),ALLOCATABLE :: w_GP(:),s_GP(:), chi_IP(:)

!===================================================================================================================================
  IF(.NOT.MPIroot) CALL abort(__STAMP__, &
                       "ReadState should only be called by MPIroot!")
  WRITE(UNIT_stdOut,'(A)')'   READ STATEFILE    "'//TRIM(FileString)//'" ...'

  INQUIRE(FILE=TRIM(FileString), EXIST=file_exists)

  IF(.NOT.file_exists) CALL abort(__STAMP__, &
        TRIM("STATEFILE: "//TRIM(FileString)//" DOES NOT EXIST!!"))
  ioUnit=GETFREEUNIT()
  OPEN(UNIT     = ioUnit         ,&
     FILE     = TRIM(FileString) ,&
     STATUS   = 'OLD'            ,&
     ACTION   = 'READ'           ,&
     ACCESS   = 'SEQUENTIAL' )

  READ(ioUnit,*) !## MHD3D Solution file
  READ(ioUnit,*) outputLevel_r,fileID_r
  READ(ioUnit,*) !## grid: nElems, grid_type
  READ(ioUnit,*) nElems_r,grid_type_r
  ALLOCATE(sp_r(0:nElems_r))

  READ(ioUnit,*) !## grid: sp(0:nElems)
  READ(ioUnit,*)sp_r(:)
  READ(ioUnit,*) !## global: nfp, degGP, mn_nyq
  READ(ioUnit,*) nfp_r, degGP_r,mn_nyq_r,which_hmap_r
  READ(ioUnit,*) !## X1_base:
  READ(ioUnit,*) X1_nBase_r,X1_deg_r,X1_cont_r,X1_modes_r,X1_sin_cos_r,X1_excl_mn_zero_r
  READ(ioUnit,*) !## X2_base:
  READ(ioUnit,*) X2_nBase_r,X2_deg_r,X2_cont_r,X2_modes_r,X2_sin_cos_r,X2_excl_mn_zero_r
  READ(ioUnit,*) !## LA_base:
  READ(ioUnit,*) LA_nBase_r,LA_deg_r,LA_cont_r,LA_modes_r,LA_sin_cos_r,LA_excl_mn_zero_r

  ALLOCATE(X1_r(1:X1_nbase_r,1:X1_modes_r))
  ALLOCATE(X2_r(1:X2_nbase_r,1:X2_modes_r))
  ALLOCATE(LA_r(1:LA_nbase_r,1:LA_modes_r))

  ALLOCATE(profiles_IP(1:X1_nbase_r,5))
  ALLOCATE(X1_mn_r(2,1:X1_modes_r))
  ALLOCATE(X2_mn_r(2,1:X2_modes_r))
  ALLOCATE(LA_mn_r(2,1:LA_modes_r))
  READ(ioUnit,*) !## X1:
  DO iMode=1,X1_modes_r
    READ(ioUnit,*)X1_mn_r(:,iMode),X1_r(:,iMode)
  END DO
  READ(ioUnit,*) !## X2:
  DO iMode=1,X2_modes_r
    READ(ioUnit,*)X2_mn_r(:,iMode),X2_r(:,iMode)
  END DO
  READ(ioUnit,*) !## LA:
  DO iMode=1,LA_modes_r
    READ(ioUnit,*)LA_mn_r(:,iMode),LA_r(:,iMode)
  END DO
  READ(ioUnit,*) !## profiles at X1_base IP points : spos,phi,chi,iota,pressure
  DO is=1,X1_nbase_r
    READ(ioUnit,*)profiles_IP(is,:)
  END DO
  READ(ioUnit,*) !## a_minor,r_major,volume
  READ(ioUnit,*)a_minor,r_major,volume

  CLOSE(ioUnit)

  IF(.NOT. PRESENT(hmap_in))THEN
    CALL hmap_new(hmap_r,which_hmap_r)
  ELSE
    CALL hmap_new(hmap_r,which_hmap_r,hmap_in=hmap_in)
  END IF
  IF((hmap_r%nfp.NE.-1).AND.(hmap_r%nfp.NE.nfp_r)) CALL abort(__STAMP__,&
                        "nfp from restart file does not match to nfp used in hmap.")
  ! check if input has changed:

  CALL sgrid_r%init(nElems_r,grid_type_r,sp_r)

  !needed to build base of restart file
  X1_mn_max_r = (/MAXVAL(X1_mn_r(1,:)),MAXVAL(X1_mn_r(2,:))/nfp_r/)
  X2_mn_max_r = (/MAXVAL(X2_mn_r(1,:)),MAXVAL(X2_mn_r(2,:))/nfp_r/)
  LA_mn_max_r = (/MAXVAL(LA_mn_r(1,:)),MAXVAL(LA_mn_r(2,:))/nfp_r/)

  CALL sbase_new(sbase_prof,X1_deg_r,X1_cont_r,sgrid_r,degGP_r) !up to now, same base as X1 is used for profiles!
  CALL base_new(X1_base_r,X1_deg_r,X1_cont_r,sgrid_r,degGP_r,X1_mn_max_r,mn_nyq_r,nfp_r, &
                sin_cos_map(X1_sin_cos_r),(X1_excl_mn_zero_r.EQ.1))
  CALL base_new(X2_base_r,X2_deg_r,X2_cont_r,sgrid_r,degGP_r,X2_mn_max_r,mn_nyq_r,nfp_r, &
                sin_cos_map(X2_sin_cos_r),(X2_excl_mn_zero_r.EQ.1))
  CALL base_new(LA_base_r,LA_deg_r,LA_cont_r,sgrid_r,degGP_r,LA_mn_max_r,mn_nyq_r,nfp_r, &
                sin_cos_map(LA_sin_cos_r),(LA_excl_mn_zero_r.EQ.1))

  ALLOCATE(profiles_1d(1:X1_nbase_r,4))
  !convert to spline DOF
  profiles_1d(:,1) =X1_base_r%s%initDOF( profiles_IP(:,1+1) ) !phi
  !profiles_1d(:,2) =X1_base_r%s%initDOF( profiles_IP(:,1+2) ) !chi, NOT SAVE TO BE USED
  profiles_1d(:,3) =X1_base_r%s%initDOF( profiles_IP(:,1+3) ) !iota
  profiles_1d(:,4) =X1_base_r%s%initDOF( profiles_IP(:,1+4) ) !pressure

  ! Calculate Chi profile by quadrature Chi(s) = \int{x=0}^s Phi' iota dx , Phi'(s)=Phi_edge*s^2
  ALLOCATE(s_GP(1:degGP_r+1),w_GP(1:degGP_r+1))
  ALLOCATE(chi_IP(1:X1_nbase_r))
  phi_edge = sbase_prof%evalDOF_s(1.0_wp, 0 ,profiles_1d(:,1))
  chi_IP(1)=0.0_wp
  chi_int = 0.0_wp
  DO is=2, X1_nbase_r
    ds = profiles_IP(is, 1) - profiles_IP(is-1,1)

    w_GP(1:(degGP_r+1))=                       0.5_wp * sbase_prof%w_GPloc(:)        * ds
    s_GP(1:(degGP_r+1))= profiles_IP(is-1,1) + 0.5_wp * (sbase_prof%xi_GP(:)+1.0_wp) * ds

    DO iGP=1, degGP_r+1
      iota_int  = sbase_prof%evalDOF_s(s_GP(iGP), 0 ,profiles_1d(:,3))
      chi_int = chi_int + iota_int * 2.0_wp * s_GP(iGP) * phi_edge * w_GP(iGP)
    END DO
    chi_IP(is) = chi_int
  END DO
  profiles_1d(:, 2) = X1_base_r%s%initDOF(chi_IP)

  DEALLOCATE(s_GP, w_GP, chi_IP)

  DEALLOCATE(sp_r,profiles_IP)
  DEALLOCATE(X1_mn_r)
  DEALLOCATE(X2_mn_r)
  DEALLOCATE(LA_mn_r)


  WRITE(UNIT_stdOut,'(A)')'...DONE.'
END SUBROUTINE ReadStateFileFromASCII