MODgvec_c_hmap Module

Module ** c_hmap **

contains only the abstract type to point to a specific map h (maps omega_p x S^1 --> omega)


Uses

  • module~~modgvec_c_hmap~~UsesGraph module~modgvec_c_hmap MODgvec_c_hmap module~modgvec_globals MODgvec_Globals module~modgvec_c_hmap->module~modgvec_globals iso_fortran_env iso_fortran_env module~modgvec_globals->iso_fortran_env

Used by

  • module~~modgvec_c_hmap~~UsedByGraph module~modgvec_c_hmap MODgvec_c_hmap module~modgvec_hmap MODgvec_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_hmap_axisnb->module~modgvec_c_hmap module~modgvec_hmap_cyl->module~modgvec_c_hmap module~modgvec_hmap_frenet->module~modgvec_c_hmap module~modgvec_hmap_knot->module~modgvec_c_hmap module~modgvec_hmap_rz->module~modgvec_c_hmap module~modgvec_mhd3d_vars MODgvec_MHD3D_Vars module~modgvec_mhd3d_vars->module~modgvec_hmap module~modgvec_readstate_vars MODgvec_ReadState_Vars module~modgvec_readstate_vars->module~modgvec_hmap module~modgvec_sfl_boozer MODgvec_SFL_Boozer module~modgvec_sfl_boozer->module~modgvec_hmap module~modgvec_transform_sfl MODgvec_Transform_SFL module~modgvec_transform_sfl->module~modgvec_hmap module~modgvec_transform_sfl->module~modgvec_sfl_boozer proc~evaluate_hmap evaluate_hmap proc~evaluate_hmap->module~modgvec_hmap proc~evaluate_hmap->module~modgvec_mhd3d_vars proc~evaluate_hmap_only evaluate_hmap_only proc~evaluate_hmap_only->module~modgvec_hmap proc~evaluate_hmap_only->module~modgvec_mhd3d_vars proc~evaluate_jac_h_derivs evaluate_jac_h_derivs proc~evaluate_jac_h_derivs->module~modgvec_hmap proc~evaluate_jac_h_derivs->module~modgvec_mhd3d_vars proc~evaluate_metric_derivs evaluate_metric_derivs proc~evaluate_metric_derivs->module~modgvec_hmap proc~evaluate_metric_derivs->module~modgvec_mhd3d_vars proc~init_la_from_solution Init_LA_from_Solution proc~init_la_from_solution->module~modgvec_hmap proc~init_la_from_solution->module~modgvec_mhd3d_vars proc~initmhd3d t_functional_mhd3d%InitMHD3D proc~initmhd3d->module~modgvec_hmap proc~initmhd3d->module~modgvec_mhd3d_vars proc~lambda_solve Lambda_solve proc~lambda_solve->module~modgvec_hmap proc~readstatefilefromascii ReadStateFileFromASCII proc~readstatefilefromascii->module~modgvec_hmap proc~readstatefilefromascii->module~modgvec_readstate_vars proc~sfl_boozer_new sfl_boozer_new proc~sfl_boozer_new->module~modgvec_hmap module~modgvec_gvec_to_castor3d_vars MODgvec_gvec_to_castor3d_Vars module~modgvec_gvec_to_castor3d_vars->module~modgvec_transform_sfl module~modgvec_gvec_to_gene_vars MODgvec_gvec_to_gene_Vars module~modgvec_gvec_to_gene_vars->module~modgvec_transform_sfl module~modgvec_gvec_to_hopr_vars MODgvec_gvec_to_hopr_vars module~modgvec_gvec_to_hopr_vars->module~modgvec_transform_sfl proc~addboundaryperturbation AddBoundaryPerturbation proc~addboundaryperturbation->module~modgvec_mhd3d_vars proc~analyze Analyze proc~analyze->module~modgvec_mhd3d_vars proc~applybc_fstrong ApplyBC_Fstrong proc~applybc_fstrong->module~modgvec_mhd3d_vars proc~buildprecond BuildPrecond proc~buildprecond->module~modgvec_mhd3d_vars proc~buildtransform_sfl t_transform_sfl%BuildTransform_SFL proc~buildtransform_sfl->module~modgvec_sfl_boozer proc~eval_prof_r eval_prof_r proc~eval_prof_r->module~modgvec_readstate_vars proc~evalaux EvalAux proc~evalaux->module~modgvec_mhd3d_vars proc~evalenergy EvalEnergy proc~evalenergy->module~modgvec_mhd3d_vars proc~evalforce EvalForce proc~evalforce->module~modgvec_mhd3d_vars proc~evaluate_boozer_list_tz_all evaluate_boozer_list_tz_all proc~evaluate_boozer_list_tz_all->module~modgvec_sfl_boozer proc~evaluate_hmap_only_pw evaluate_hmap_only_pw proc~evaluate_hmap_only_pw->module~modgvec_mhd3d_vars proc~evaluate_hmap_pw evaluate_hmap_pw proc~evaluate_hmap_pw->module~modgvec_mhd3d_vars proc~evaluate_jac_h_derivs_pw evaluate_jac_h_derivs_pw proc~evaluate_jac_h_derivs_pw->module~modgvec_mhd3d_vars proc~evaluate_profile evaluate_profile proc~evaluate_profile->module~modgvec_mhd3d_vars proc~evaluate_rho2_profile evaluate_rho2_profile proc~evaluate_rho2_profile->module~modgvec_mhd3d_vars proc~finalize_readstate Finalize_ReadState proc~finalize_readstate->module~modgvec_readstate_vars proc~finalizemhd3d t_functional_mhd3d%FinalizeMHD3D proc~finalizemhd3d->module~modgvec_mhd3d_vars proc~finalizemhd3d_evalfunc FinalizeMHD3D_EvalFunc proc~finalizemhd3d_evalfunc->module~modgvec_mhd3d_vars proc~get_boozer get_boozer proc~get_boozer->module~modgvec_mhd3d_vars proc~get_boozer->module~modgvec_sfl_boozer proc~get_field Get_Field proc~get_field->module~modgvec_readstate_vars proc~gvec_to_jorek_prepare gvec_to_jorek_prepare proc~gvec_to_jorek_prepare->module~modgvec_readstate_vars proc~init Init proc~init->module~modgvec_mhd3d_vars proc~init_base Init_Base proc~init_base->module~modgvec_readstate_vars proc~init_boozer init_boozer proc~init_boozer->module~modgvec_mhd3d_vars proc~init_boozer->module~modgvec_sfl_boozer proc~init_gvec_to_jorek init_gvec_to_jorek proc~init_gvec_to_jorek->module~modgvec_readstate_vars proc~initaverageaxis InitAverageAxis proc~initaverageaxis->module~modgvec_mhd3d_vars proc~initializemhd3d_evalfunc InitializeMHD3D_evalFunc proc~initializemhd3d_evalfunc->module~modgvec_mhd3d_vars proc~initprofilesgp InitProfilesGP proc~initprofilesgp->module~modgvec_mhd3d_vars proc~initsolution InitSolution proc~initsolution->module~modgvec_mhd3d_vars proc~initsolutionmhd3d t_functional_mhd3d%InitSolutionMHD3D proc~initsolutionmhd3d->module~modgvec_mhd3d_vars proc~minimizemhd3d t_functional_mhd3d%MinimizeMHD3D proc~minimizemhd3d->module~modgvec_mhd3d_vars proc~minimizemhd3d_descent MinimizeMHD3D_descent proc~minimizemhd3d_descent->module~modgvec_mhd3d_vars proc~readstate ReadState proc~readstate->module~modgvec_mhd3d_vars proc~readstate->module~modgvec_readstate_vars proc~restartfromstate RestartFromState proc~restartfromstate->module~modgvec_mhd3d_vars proc~restartfromstate->module~modgvec_readstate_vars proc~rungvec rungvec proc~rungvec->module~modgvec_mhd3d_vars proc~select_base select_base proc~select_base->module~modgvec_mhd3d_vars proc~select_base_dofs select_base_dofs proc~select_base_dofs->module~modgvec_mhd3d_vars proc~transform_sfl_init t_transform_sfl%transform_SFL_init proc~transform_sfl_init->module~modgvec_sfl_boozer proc~writestatetoascii WriteStateToASCII proc~writestatetoascii->module~modgvec_mhd3d_vars program~gvec_post GVEC_POST program~gvec_post->module~modgvec_mhd3d_vars program~gvec_post->module~modgvec_readstate_vars

Abstract Interfaces

abstract interface

  • public function i_fun_hmap_eval(sf, q_in) result(x_out)

    evaluate the mapping h q=(X^1,X^2,zeta) -> (x,y,z)

    Arguments

    Type IntentOptional Attributes Name
    class(c_hmap), intent(in) :: sf
    real(kind=wp), intent(in) :: q_in(3)

    Return Value real(kind=wp), (3)

abstract interface

  • public function i_fun_hmap_eval_dxdq(sf, q_in, q_vec) result(dxdq_qvec)

    evaluate total derivative of the mapping sum k=1,3 (dx(1:3)/dq^k) q_vec^k, where dx(1:3)/dq^k, k=1,2,3 is evaluated at q_in=(X^1,X^2,zeta) ,

    Arguments

    Type IntentOptional Attributes Name
    class(c_hmap), intent(in) :: sf
    real(kind=wp), intent(in) :: q_in(3)
    real(kind=wp), intent(in) :: q_vec(3)

    Return Value real(kind=wp), (3)

abstract interface

  • public function i_fun_hmap_eval_Jh(sf, q_in) result(Jh)

    evaluate Jacobian of mapping h: J_h=sqrt(det(G)) at q=(X^1,X^2,zeta)

    Arguments

    Type IntentOptional Attributes Name
    class(c_hmap), intent(in) :: sf
    real(kind=wp), intent(in) :: q_in(3)

    Return Value real(kind=wp)

abstract interface

  • public function i_fun_hmap_eval_Jh_dq(sf, q_in, q_vec) result(Jh_dq)

    evaluate derivative of Jacobian of mapping h: sum_k dJ_h(q)/dq^k q_vec^k, k=1,2 at q=(X^1,X^2,zeta)

    Arguments

    Type IntentOptional Attributes Name
    class(c_hmap), intent(in) :: sf
    real(kind=wp), intent(in) :: q_in(3)
    real(kind=wp), intent(in) :: q_vec(3)

    Return Value real(kind=wp)

abstract interface

  • public function i_fun_hmap_eval_gij(sf, qL_in, q_G, qR_in) result(g_ab)

    evaluate sum_ij (qL_i (G_ij(q_G)) qR_j) , where qL=(dX^1/dalpha,dX^2/dalpha ,dzeta/dalpha) and qR=(dX^1/dbeta,dX^2/dbeta ,dzeta/dbeta) and dzeta_dalpha then known to be either 0 of ds and dtheta and 1 for dzeta

    Arguments

    Type IntentOptional Attributes Name
    class(c_hmap), intent(in) :: sf
    real(kind=wp), intent(in) :: qL_in(3)
    real(kind=wp), intent(in) :: q_G(3)
    real(kind=wp), intent(in) :: qR_in(3)

    Return Value real(kind=wp)

abstract interface

  • public function i_fun_hmap_eval_gij_dq(sf, qL_in, q_G, qR_in, q_vec) result(g_ab_dq)

    evaluate sum_k sum_ij (qL_i d/dq^k(G_ij(q_G)) qR_j) q_vec^k, k=1,2,3 where qL=(dX^1/dalpha,dX^2/dalpha ,dzeta/dalpha) and qR=(dX^1/dbeta,dX^2/dbeta ,dzeta/dbeta) and dzeta_dalpha then known to be either 0 of ds and dtheta and 1 for dzeta

    Arguments

    Type IntentOptional Attributes Name
    class(c_hmap), intent(in) :: sf
    real(kind=wp), intent(in) :: qL_in(3)
    real(kind=wp), intent(in) :: q_G(3)
    real(kind=wp), intent(in) :: qR_in(3)
    real(kind=wp), intent(in) :: q_vec(3)

    Return Value real(kind=wp)

abstract interface

  • public subroutine i_sub_hmap_eval_all(sf, ndims, dim_zeta, xv, q1, q2, dX1_dt, dX2_dt, dX1_dz, dX2_dz, Jh, g_tt, g_tz, g_zz, Jh_dq1, g_tt_dq1, g_tz_dq1, g_zz_dq1, Jh_dq2, g_tt_dq2, g_tz_dq2, g_zz_dq2, g_t1, g_t2, g_z1, g_z2, Gh11, Gh22)

    Arguments

    Type IntentOptional Attributes Name
    class(c_hmap), intent(in) :: sf
    integer, intent(in) :: ndims(3)
    integer, intent(in) :: dim_zeta
    class(c_hmap_auxvar), intent(in) :: xv(ndims(dim_zeta))
    real(kind=wp), intent(in), DIMENSION(ndims(1),ndims(2),ndims(3)) :: q1
    real(kind=wp), intent(in), DIMENSION(ndims(1),ndims(2),ndims(3)) :: q2
    real(kind=wp), intent(in), DIMENSION(ndims(1),ndims(2),ndims(3)) :: dX1_dt
    real(kind=wp), intent(in), DIMENSION(ndims(1),ndims(2),ndims(3)) :: dX2_dt
    real(kind=wp), intent(in), DIMENSION(ndims(1),ndims(2),ndims(3)) :: dX1_dz
    real(kind=wp), intent(in), DIMENSION(ndims(1),ndims(2),ndims(3)) :: dX2_dz
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: Jh
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: g_tt
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: g_tz
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: g_zz
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: Jh_dq1
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: g_tt_dq1
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: g_tz_dq1
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: g_zz_dq1
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: Jh_dq2
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: g_tt_dq2
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: g_tz_dq2
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: g_zz_dq2
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: g_t1
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: g_t2
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: g_z1
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: g_z2
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: Gh11
    real(kind=wp), intent(out), DIMENSION(ndims(1),ndims(2),ndims(3)) :: Gh22

abstract interface

  • public subroutine i_sub_hmap_get_dx_dqi(sf, q_in, dx_dq1, dx_dq2, dx_dq3)

    evaluate all first derivatives dx(1:3)/dq^i, i=1,2,3 , at q_in=(X^1,X^2,zeta),

    Arguments

    Type IntentOptional Attributes Name
    class(c_hmap), intent(in) :: sf
    real(kind=wp), intent(in) :: q_in(3)
    real(kind=wp), intent(out) :: dx_dq1(3)
    real(kind=wp), intent(out) :: dx_dq2(3)
    real(kind=wp), intent(out) :: dx_dq3(3)

abstract interface

  • public subroutine i_sub_hmap_get_ddx_dqij(sf, q_in, ddx_dq11, ddx_dq12, ddx_dq13, ddx_dq22, ddx_dq23, ddx_dq33)

    evaluate all second derivatives d^2x(1:3)/(dq^i dq^j), i,j=1,2,3 is evaluated at q_in=(X^1,X^2,zeta),

    Arguments

    Type IntentOptional Attributes Name
    class(c_hmap), intent(in) :: sf
    real(kind=wp), intent(in) :: q_in(3)
    real(kind=wp), intent(out) :: ddx_dq11(3)
    real(kind=wp), intent(out) :: ddx_dq12(3)
    real(kind=wp), intent(out) :: ddx_dq13(3)
    real(kind=wp), intent(out) :: ddx_dq22(3)
    real(kind=wp), intent(out) :: ddx_dq23(3)
    real(kind=wp), intent(out) :: ddx_dq33(3)

Derived Types

type, public, ABSTRACT ::  c_hmap

Components

Type Visibility Attributes Name Initial
integer, public :: which_hmap

points to hmap (1: MHD3D)

integer, public :: nfp = -1

number of field periods used in hmap. If =-1, its not used

Type-Bound Procedures

procedure(i_sub_hmap_eval_all), public, deferred :: eval_all
procedure(i_fun_hmap_eval), public, deferred :: eval
procedure, public :: eval_aux => hmap_eval_aux
procedure, public :: eval_aux_all => hmap_eval_aux_all
procedure(i_fun_hmap_eval_dxdq), public, deferred :: eval_dxdq
procedure, public :: eval_dxdq_aux => hmap_eval_dxdq_aux
procedure, public :: eval_dxdq_aux_all => hmap_eval_dxdq_aux_all
procedure(i_fun_hmap_eval_Jh), public, deferred :: eval_Jh
procedure, public :: eval_Jh_aux => hmap_eval_Jh_aux
procedure, public :: eval_Jh_aux_all => hmap_eval_Jh_aux_all
procedure(i_fun_hmap_eval_Jh_dq), public, deferred :: eval_Jh_dq
procedure, public :: eval_Jh_dq_aux => hmap_eval_Jh_dq_aux
procedure, public :: eval_Jh_dq_aux_all => hmap_eval_Jh_dq_aux_all
procedure(i_fun_hmap_eval_gij), public, deferred :: eval_gij
procedure, public :: eval_gij_aux => hmap_eval_gij_aux
procedure, public :: eval_gij_aux_all => hmap_eval_gij_aux_all
procedure(i_fun_hmap_eval_gij_dq), public, deferred :: eval_gij_dq
procedure, public :: eval_gij_dq_aux => hmap_eval_gij_dq_aux
procedure, public :: eval_gij_dq_aux_all => hmap_eval_gij_dq_aux_all
procedure(i_sub_hmap_get_dx_dqi), public, deferred :: get_dx_dqi
procedure, public :: get_dx_dqi_aux => hmap_get_dx_dqi_aux
procedure(i_sub_hmap_get_ddx_dqij), public, deferred :: get_ddx_dqij
procedure, public :: get_ddx_dqij_aux => hmap_get_ddx_dqij_aux

type, public ::  c_hmap_auxvar

Components

Type Visibility Attributes Name Initial
real(kind=wp), public :: zeta
logical, public :: do_2nd_der

Functions

public function hmap_eval_aux(sf, q1, q2, xv) result(x_out)

evaluate the mapping h (X^1,X^2,zeta) -> (x,y,z) cartesian INFO: default routine that can be overwritten by specific hmap class, not using additional hmap-dependent auxiliary variables, but calling the pointwise routine eval

Arguments

Type IntentOptional Attributes Name
class(c_hmap), intent(in) :: sf
real(kind=wp), intent(in) :: q1
real(kind=wp), intent(in) :: q2
class(c_hmap_auxvar), intent(in) :: xv

Return Value real(kind=wp), (3)

public function hmap_eval_aux_all(sf, np, q1_in, q2_in, xv) result(xyz)

call %eval_aux on 1d array of points of size np, using auxiliary variable array of same size

Arguments

Type IntentOptional Attributes Name
class(c_hmap), intent(in) :: sf
integer, intent(in) :: np
real(kind=wp), intent(in) :: q1_in(1:np)
real(kind=wp), intent(in) :: q2_in(1:np)
class(c_hmap_auxvar), intent(in) :: xv(1:np)

Return Value real(kind=wp), (1:3,1:np)

public function hmap_eval_dxdq_aux(sf, q1, q2, q1_vec, q2_vec, q3_vec, xv) result(dxdq_qvec)

evaluate total derivative of the mapping sum k=1,3 (dx(1:3)/dq^k) q_vec^k, where dx(1:3)/dq^k, k=1,2,3 is evaluated at q_in=(X^1,X^2,zeta) , INFO: default routine that can be overwritten by specific hmap class, not using additional hmap-dependent auxiliary variables, but calling the generic routine eval_dxdq_pw

Arguments

Type IntentOptional Attributes Name
class(c_hmap), intent(in) :: sf
real(kind=wp), intent(in) :: q1
real(kind=wp), intent(in) :: q2
real(kind=wp), intent(in) :: q1_vec
real(kind=wp), intent(in) :: q2_vec
real(kind=wp), intent(in) :: q3_vec
class(c_hmap_auxvar), intent(in) :: xv

Return Value real(kind=wp), (3)

public function hmap_eval_dxdq_aux_all(sf, np, q1, q2, q1_vec, q2_vec, q3_vec, xv) result(dxdq_qvec)

call %eval_dxdq_aux on 1d array of points of size np, using auxiliary variable array of same size

Arguments

Type IntentOptional Attributes Name
class(c_hmap), intent(in) :: sf
integer, intent(in) :: np
real(kind=wp), intent(in) :: q1(1:np)
real(kind=wp), intent(in) :: q2(1:np)
real(kind=wp), intent(in) :: q1_vec(1:np)
real(kind=wp), intent(in) :: q2_vec(1:np)
real(kind=wp), intent(in) :: q3_vec(1:np)
class(c_hmap_auxvar), intent(in) :: xv(1:np)

Return Value real(kind=wp), (1:3,1:np)

public function hmap_eval_Jh_aux(sf, q1, q2, xv) result(Jh)

evaluate Jacobian of mapping h: J_h=sqrt(det(G)) at q=(X^1,X^2,zeta) INFO: default routine that can be overwritten by specific hmap class, not using additional hmap-dependent auxiliary variables, but calling the pointwise routine eval_Jh

Arguments

Type IntentOptional Attributes Name
class(c_hmap), intent(in) :: sf
real(kind=wp), intent(in) :: q1
real(kind=wp), intent(in) :: q2
class(c_hmap_auxvar), intent(in) :: xv

Return Value real(kind=wp)

public function hmap_eval_Jh_aux_all(sf, np, q1, q2, xv) result(Jh)

call %eval_Jh_aux on 1d array of points of size np, using auxiliary variable array of same size

Arguments

Type IntentOptional Attributes Name
class(c_hmap), intent(in) :: sf
integer, intent(in) :: np
real(kind=wp), intent(in) :: q1(1:np)
real(kind=wp), intent(in) :: q2(1:np)
class(c_hmap_auxvar), intent(in) :: xv(1:np)

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

public function hmap_eval_Jh_dq_aux(sf, q1, q2, q1_vec, q2_vec, q3_vec, xv) result(Jh_dq)

evaluate derivative of Jacobian of mapping h: sum_k dJ_h(q)/dq^k q_vec^k, k=1,2 at q=(X^1,X^2,zeta) INFO: default routine that can be overwritten by specific hmap class, not using additional hmap-dependent auxiliary variables, but calling the pointwise routine eval_Jh_dq

Arguments

Type IntentOptional Attributes Name
class(c_hmap), intent(in) :: sf
real(kind=wp), intent(in) :: q1
real(kind=wp), intent(in) :: q2
real(kind=wp), intent(in) :: q1_vec
real(kind=wp), intent(in) :: q2_vec
real(kind=wp), intent(in) :: q3_vec
class(c_hmap_auxvar), intent(in) :: xv

Return Value real(kind=wp)

public function hmap_eval_Jh_dq_aux_all(sf, np, q1, q2, q1_vec, q2_vec, q3_vec, xv) result(Jh_dq)

call %eval_Jh_dq1_aux on 1d array of points of size np, using auxiliary variable array of same size

Arguments

Type IntentOptional Attributes Name
class(c_hmap), intent(in) :: sf
integer, intent(in) :: np
real(kind=wp), intent(in) :: q1(1:np)
real(kind=wp), intent(in) :: q2(1:np)
real(kind=wp), intent(in) :: q1_vec(1:np)
real(kind=wp), intent(in) :: q2_vec(1:np)
real(kind=wp), intent(in) :: q3_vec(1:np)
class(c_hmap_auxvar), intent(in) :: xv(1:np)

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

public function hmap_eval_gij_aux(sf, qL1, qL2, qL3, q1, q2, qR1, qR2, qR3, xv) result(g_ab)

evaluate sum_ij (qL_i (G_ij(q_G)) qR_j) ,, where qL=(dX^1/dalpha,dX^2/dalpha ,dzeta/dalpha) and qR=(dX^1/dbeta,dX^2/dbeta ,dzeta/dbeta) and dzeta_dalpha then known to be either 0.0 for ds and dtheta and 1.0 for dzeta INFO: default routine that can be overwritten by specific hmap class, not using additional hmap-dependent auxiliary variables, but calling the pointwise routine eval_gij

Arguments

Type IntentOptional Attributes Name
class(c_hmap), intent(in) :: sf
real(kind=wp), intent(in) :: qL1
real(kind=wp), intent(in) :: qL2
real(kind=wp), intent(in) :: qL3
real(kind=wp), intent(in) :: q1
real(kind=wp), intent(in) :: q2
real(kind=wp), intent(in) :: qR1
real(kind=wp), intent(in) :: qR2
real(kind=wp), intent(in) :: qR3
class(c_hmap_auxvar), intent(in) :: xv

Return Value real(kind=wp)

public function hmap_eval_gij_aux_all(sf, np, qL1, qL2, qL3, q1, q2, qR1, qR2, qR3, xv) result(g_ab)

Arguments

Type IntentOptional Attributes Name
class(c_hmap), intent(in) :: sf
integer, intent(in) :: np
real(kind=wp), intent(in) :: qL1(1:np)
real(kind=wp), intent(in) :: qL2(1:np)
real(kind=wp), intent(in) :: qL3(1:np)
real(kind=wp), intent(in) :: q1(1:np)
real(kind=wp), intent(in) :: q2(1:np)
real(kind=wp), intent(in) :: qR1(1:np)
real(kind=wp), intent(in) :: qR2(1:np)
real(kind=wp), intent(in) :: qR3(1:np)
class(c_hmap_auxvar), intent(in) :: xv(1:np)

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

public function hmap_eval_gij_dq_aux(sf, qL1, qL2, qL3, q1, q2, qR1, qR2, qR3, q1_vec, q2_vec, q3_vec, xv) result(g_ab_dq)

evaluate sum_k sum_ij (qL_i d/dq^k(G_ij(q_G)) qR_j) q_vec^k, k=1,2,3 where qL=(dX^1/dalpha,dX^2/dalpha [,dzeta/dalpha]) and qR=(dX^1/dbeta,dX^2/dbeta [,dzeta/dbeta]) and where qL=(dX^1/dalpha,dX^2/dalpha ,dzeta/dalpha) and qR=(dX^1/dbeta,dX^2/dbeta ,dzeta/dbeta) and dzeta_dalpha then known to be either 0.0 for ds and dtheta and 1.0 for dzeta INFO: default routine that can be overwritten by specific hmap class, not using additional hmap-dependent auxiliary variables, but calling the pointwise routine eval_gij_dq

Arguments

Type IntentOptional Attributes Name
class(c_hmap), intent(in) :: sf
real(kind=wp), intent(in) :: qL1
real(kind=wp), intent(in) :: qL2
real(kind=wp), intent(in) :: qL3
real(kind=wp), intent(in) :: q1
real(kind=wp), intent(in) :: q2
real(kind=wp), intent(in) :: qR1
real(kind=wp), intent(in) :: qR2
real(kind=wp), intent(in) :: qR3
real(kind=wp), intent(in) :: q1_vec
real(kind=wp), intent(in) :: q2_vec
real(kind=wp), intent(in) :: q3_vec
class(c_hmap_auxvar), intent(in) :: xv

Return Value real(kind=wp)

public function hmap_eval_gij_dq_aux_all(sf, np, qL1, qL2, qL3, q1, q2, qR1, qR2, qR3, q1_vec, q2_vec, q3_vec, xv) result(g_ab_dq)

Arguments

Type IntentOptional Attributes Name
class(c_hmap), intent(in) :: sf
integer, intent(in) :: np
real(kind=wp), intent(in) :: qL1(1:np)
real(kind=wp), intent(in) :: qL2(1:np)
real(kind=wp), intent(in) :: qL3(1:np)
real(kind=wp), intent(in) :: q1(1:np)
real(kind=wp), intent(in) :: q2(1:np)
real(kind=wp), intent(in) :: qR1(1:np)
real(kind=wp), intent(in) :: qR2(1:np)
real(kind=wp), intent(in) :: qR3(1:np)
real(kind=wp), intent(in) :: q1_vec(1:np)
real(kind=wp), intent(in) :: q2_vec(1:np)
real(kind=wp), intent(in) :: q3_vec(1:np)
class(c_hmap_auxvar), intent(in) :: xv(1:np)

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


Subroutines

public subroutine hmap_get_dx_dqi_aux(sf, q1, q2, xv, dx_dq1, dx_dq2, dx_dq3)

evaluate all first derivatives dx(1:3)/dq^i, i=1,2,3 , at q_in=(X^1,X^2,zeta), INFO: default routine that can be overwritten by specific hmap class, not using additional hmap-dependent auxiliary variables, but calling the generic routine get_dx_dqi

Arguments

Type IntentOptional Attributes Name
class(c_hmap), intent(in) :: sf
real(kind=wp), intent(in) :: q1
real(kind=wp), intent(in) :: q2
class(c_hmap_auxvar), intent(in) :: xv
real(kind=wp), intent(out), DIMENSION(3) :: dx_dq1
real(kind=wp), intent(out), DIMENSION(3) :: dx_dq2
real(kind=wp), intent(out), DIMENSION(3) :: dx_dq3

public subroutine hmap_get_ddx_dqij_aux(sf, q1, q2, xv, ddx_dq11, ddx_dq12, ddx_dq13, ddx_dq22, ddx_dq23, ddx_dq33)

evaluate all second derivatives d^2x(1:3)/(dq^i dq^j), i,j=1,2,3 , at q_in=(X^1,X^2,zeta), INFO: default routine that can be overwritten by specific hmap class, not using additional hmap-dependent auxiliary variables, but calling the generic routine get_ddx_dqij

Arguments

Type IntentOptional Attributes Name
class(c_hmap), intent(in) :: sf
real(kind=wp), intent(in) :: q1
real(kind=wp), intent(in) :: q2
class(c_hmap_auxvar), intent(in) :: xv
real(kind=wp), intent(out), DIMENSION(3) :: ddx_dq11
real(kind=wp), intent(out), DIMENSION(3) :: ddx_dq12
real(kind=wp), intent(out), DIMENSION(3) :: ddx_dq13
real(kind=wp), intent(out), DIMENSION(3) :: ddx_dq22
real(kind=wp), intent(out), DIMENSION(3) :: ddx_dq23
real(kind=wp), intent(out), DIMENSION(3) :: ddx_dq33