| 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 |
|
| integer, | public | :: | n_max | = | 0 |
maximum number of toroidal modes needed to describe hmap. Used for estimating the number of integration points. |
|
| logical, | public | :: | initialized | = | .FALSE. | ||
| real(kind=wp), | public, | ALLOCATABLE | :: | rc(:) |
input cosine coefficients of R0 as array (0:n_max) of modes (0,1,...,n_max)*nfp |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | rs(:) |
input sine coefficients of R0 as array (0:n_max) of modes (0,1,...,n_max)*nfp |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | zc(:) |
input cosine coefficients of Z0 as array (0:n_max) of modes (0,1,...,n_max)*nfp |
||
| real(kind=wp), | public, | ALLOCATABLE | :: | zs(:) |
input sine coefficients of Z0 as array (0:n_max) of modes (0,1,...,n_max)*nfp |
||
| integer, | public, | ALLOCATABLE | :: | Xn(:) |
array of mode numbers, local variable =(0,1,...,n_max)*nfp |
||
| logical, | public | :: | omnig | = | .FALSE. |
omnigenity. True: sign change of frame at pi/nfp , False: no sign change |
initialize the type hmap_frenet, reading from parameterfile and then call init_params
self
initialize the type hmap_frenet with number of elements
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | nfp |
number of field periods |
||
| integer, | intent(in) | :: | n_max |
maximum mode number of guiding curve |
||
| integer, | intent(in) | :: | nvisu |
number of visualization points per field period (-1: no visualization) |
||
| real(kind=wp), | intent(in) | :: | Rc(0:n_max) |
R cos(-n*zeta) modes of guiding curve, 0..n_max |
||
| real(kind=wp), | intent(in) | :: | Rs(0:n_max) |
R sin(-n*zeta) modes of guiding curve, 0..n_max |
||
| real(kind=wp), | intent(in) | :: | Zc(0:n_max) |
Z cos(-n*zeta) modes of guiding curve, 0..n_max |
||
| real(kind=wp), | intent(in) | :: | Zs(0:n_max) |
Z sin(-n*zeta) modes of guiding curve, 0..n_max |
||
| logical, | intent(in) | :: | omnig |
omnigeneity, gives sign function of Frenet frame. False: sigma=1, True: sigma=+1 for 0<=zeta<=pi/nfp, and -1 for pi/nfp |
self
finalize the type hmap_frenet
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(t_hmap_frenet), | intent(inout) | :: | sf |
self |
call %eval_aux on 1d array of points of size np, using auxiliary variable array of same size
| Type | Intent | Optional | 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) |
call %eval_dxdq_aux on 1d array of points of size np, using auxiliary variable array of same size
| Type | Intent | Optional | 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) |
call %eval_Jh_aux on 1d array of points of size np, using auxiliary variable array of same size
| Type | Intent | Optional | 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) |
call %eval_Jh_dq1_aux on 1d array of points of size np, using auxiliary variable array of same size
| Type | Intent | Optional | 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) |
| Type | Intent | Optional | 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) |
| Type | Intent | Optional | 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) |
evaluate all metrics necessary for optimizer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | intent(in) | :: | sf | |||
| integer, | intent(in) | :: | ndims(3) |
3D dimensions of input arrays |
||
| integer, | intent(in) | :: | dim_zeta |
which dimension is zeta dependent |
||
| class(c_hmap_auxvar), | intent(in) | :: | xv(ndims(dim_zeta)) |
zeta point positions |
||
| 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 |
evaluate the mapping h (q1,q2,zeta) -> (x,y,z)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | q_in(3) |
evaluate the mapping h (q1,q2,zeta) -> (x,y,z)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | q1 | |||
| real(kind=wp), | intent(in) | :: | q2 | |||
| class(c_hmap_auxvar), | intent(in) | :: | xv |
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) ,
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | q_in(3) | |||
| real(kind=wp), | intent(in) | :: | q_vec(3) |
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) ,
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | 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 |
evaluate Jacobian of mapping h: J_h=sqrt(det(G)) at q=(q^1,q^2,zeta)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | q_in(3) |
evaluate Jacobian of mapping h: J_h=sqrt(det(G)) at q=(q^1,q^2,zeta)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | q1 | |||
| real(kind=wp), | intent(in) | :: | q2 | |||
| class(c_hmap_auxvar), | intent(in) | :: | xv |
evaluate derivative of Jacobian of mapping h: sum_k q_vec^k * dJ_h/dq^k, k=1,2,3 at q=(q^1,q^2,zeta)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | q_in(3) | |||
| real(kind=wp), | intent(in) | :: | q_vec(3) |
evaluate derivative of Jacobian of mapping h: sum_k q_vec^k * dJ_h/dq^k, k=1,2,3 at q=(q^1,q^2,zeta)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | 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 |
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
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | 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) |
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
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | 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 |
evaluate sum_k=1,3 q_vec^k * sum_ij (qL_i d/dq^k(G_ij(q_G)) qR_j) , k=1,2 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 of ds and dtheta and 1 for dzeta
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | 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) |
evaluate sum_ij (qL_i d/dq^k(G_ij(q_G)) qR_j) , k=1,2 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 of ds and dtheta and 1 for dzeta
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | 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 |
evaluate all first derivatives dx(1:3)/dq^i, i=1,2,3 , at q_in=(X^1,X^2,zeta),
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | q_in(3) | |||
| 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 |
evaluate all first derivatives dx(1:3)/dq^i, i=1,2,3 , at q_in=(X^1,X^2,zeta),
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | 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 |
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),
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | q_in(3) | |||
| 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 |
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),
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | 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 |
evaluate curve X0(zeta), position and first three derivatives, from given R0,Z0 Fourier
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | zeta |
position along closed curve parametrized in [0,2pi] |
||
| real(kind=wp), | intent(out) | :: | X0(1:3) |
curve position in cartesian coordinates |
||
| real(kind=wp), | intent(out) | :: | X0p(1:3) |
1st derivative in zeta |
||
| real(kind=wp), | intent(out) | :: | X0pp(1:3) |
2nd derivative in zeta |
||
| real(kind=wp), | intent(out) | :: | X0ppp(1:3) |
3rd derivative in zeta |
||
| real(kind=wp), | intent(out), | optional | :: | X0p4(1:3) |
4th derivative in zeta |
sign function depending on zeta, if omnig=False, sigma=1 if omnig=True, sigma=+1 for 0<=zeta<=pi/nfp, and -1 for pi/nfp
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | intent(in) | :: | sf | |||
| real(kind=wp), | intent(in) | :: | zeta |
TYPE,EXTENDS(c_hmap) :: t_hmap_frenet !--------------------------------------------------------------------------------------------------------------------------------- LOGICAL :: initialized=.FALSE. !--------------------------------------------------------------------------------------------------------------------------------- ! parameters for hmap_frenet: !curve description !INTEGER :: nfp !already part of c_hmap. Is overwritten in init REAL(wp),ALLOCATABLE :: rc(:) !! input cosine coefficients of R0 as array (0:n_max) of modes (0,1,...,n_max)*nfp REAL(wp),ALLOCATABLE :: rs(:) !! input sine coefficients of R0 as array (0:n_max) of modes (0,1,...,n_max)*nfp REAL(wp),ALLOCATABLE :: zc(:) !! input cosine coefficients of Z0 as array (0:n_max) of modes (0,1,...,n_max)*nfp REAL(wp),ALLOCATABLE :: zs(:) !! input sine coefficients of Z0 as array (0:n_max) of modes (0,1,...,n_max)*nfp INTEGER,ALLOCATABLE :: Xn(:) !! array of mode numbers, local variable =(0,1,...,n_max)*nfp LOGICAL :: omnig=.FALSE. !! omnigenity. True: sign change of frame at pi/nfp , False: no sign change !--------------------------------------------------------------------------------------------------------------------------------- CONTAINS FINAL :: hmap_frenet_free PROCEDURE :: eval_all => hmap_frenet_eval_all PROCEDURE :: eval => hmap_frenet_eval PROCEDURE :: eval_aux => hmap_frenet_eval_aux PROCEDURE :: eval_dxdq => hmap_frenet_eval_dxdq PROCEDURE :: eval_dxdq_aux => hmap_frenet_eval_dxdq_aux PROCEDURE :: eval_Jh => hmap_frenet_eval_Jh PROCEDURE :: eval_Jh_aux => hmap_frenet_eval_Jh_aux PROCEDURE :: eval_Jh_dq => hmap_frenet_eval_Jh_dq PROCEDURE :: eval_Jh_dq_aux => hmap_frenet_eval_Jh_dq_aux PROCEDURE :: eval_gij => hmap_frenet_eval_gij PROCEDURE :: eval_gij_aux => hmap_frenet_eval_gij_aux PROCEDURE :: eval_gij_dq => hmap_frenet_eval_gij_dq PROCEDURE :: eval_gij_dq_aux => hmap_frenet_eval_gij_dq_aux PROCEDURE :: get_dx_dqi => hmap_frenet_get_dx_dqi PROCEDURE :: get_dx_dqi_aux => hmap_frenet_get_dx_dqi_aux PROCEDURE :: get_ddx_dqij => hmap_frenet_get_ddx_dqij PROCEDURE :: get_ddx_dqij_aux => hmap_frenet_get_ddx_dqij_aux !--------------------------------------------------------------------------------------------------------------------------------- ! procedures for hmap_frenet: PROCEDURE :: eval_X0 => hmap_frenet_eval_X0_fromRZ PROCEDURE :: sigma => hmap_frenet_sigma END TYPE t_hmap_frenet