Write evaluation of the axis and signed frenet frame to file
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(t_hmap_frenet), | intent(in) | :: | sf | |||
| integer, | intent(in) | :: | nvisu |
SUBROUTINE VisuFrenet( sf ,nvisu) ! MODULES USE MODgvec_Output_CSV, ONLY: WriteDataToCSV USE MODgvec_Output_vtk, ONLY: WriteDataToVTK USE MODgvec_Output_netcdf, ONLY: WriteDataToNETCDF USE MODgvec_Analyze_vars, ONLY: outfileType IMPLICIT NONE !----------------------------------------------------------------------------------------------------------------------------------- ! INPUT VARIABLES CLASS(t_hmap_frenet), INTENT(IN) :: sf INTEGER , INTENT(IN) :: nvisu !! !----------------------------------------------------------------------------------------------------------------------------------- ! OUTPUT VARIABLES !----------------------------------------------------------------------------------------------------------------------------------- ! LOCAL VARIABLES REAL(wp),DIMENSION(3) :: X0,X0p,X0pp,X0ppp,T,N,B REAL(wp) :: zeta,sigma,lp,absB,kappa,tau,eps INTEGER :: iVar,ivisu,itest INTEGER,PARAMETER :: nVars=26 CHARACTER(LEN=20) :: VarNames(1:nVars) REAL(wp) :: values(1:nVars,1:nvisu*sf%nfp+1) !=================================================================================================================================== IF(nvisu.LE.0) RETURN iVar=0 VarNames(ivar+1:iVar+3)=(/ "x", "y", "z"/);iVar=iVar+3 VarNames(ivar+1:iVar+3)=(/"TX","TY","TZ"/);iVar=iVar+3 VarNames(ivar+1:iVar+3)=(/"NX","NY","NZ"/);iVar=iVar+3 VarNames(ivar+1:iVar+3)=(/"BX","BY","BZ"/);iVar=iVar+3 VarNames(iVar+1 )="zeta_norm" ;iVar=iVar+1 VarNames(iVar+1 )="sigma_sign" ;iVar=iVar+1 VarNames(iVar+1 )="lprime" ;iVar=iVar+1 VarNames(iVar+1 )="kappa" ;iVar=iVar+1 VarNames(iVar+1 )="tau" ;iVar=iVar+1 VarNames(ivar+1:iVar+3)=(/ "X0pX", "X0pY", "X0pZ"/);iVar=iVar+3 VarNames(ivar+1:iVar+3)=(/ "X0ppX", "X0ppY", "X0ppZ"/);iVar=iVar+3 VarNames(ivar+1:iVar+3)=(/ "X0pppX", "X0pppY", "X0pppZ"/);iVar=iVar+3 ! values=0. DO ivisu=1,nvisu*sf%nfp+1 eps=0. kappa=0. itest=0 DO WHILE(kappa.LT.1.0e-6)! for tau being meaningful zeta=(REAL(ivisu-1,wp)+eps)/REAL(nvisu*sf%nfp,wp)*TWOPI CALL sf%eval_X0(zeta,X0,X0p,X0pp,X0ppp) lp=SQRT(SUM(X0p*X0p)) T=X0p/lp B=CROSS(X0p,X0pp) absB=SQRT(SUM(B*B)) kappa=absB/(lp**3) itest=itest+1 eps=10**REAL(-16+itest,wp) IF(itest.EQ.15)THEN !meaningful kappa not found B=0. kappa=1.0e-6 !-12 absB=1. END IF END DO tau=SUM(X0ppp*B)/(absB**2) B=B/absB N=CROSS(B,T) sigma=sf%sigma(zeta) iVar=0 values(ivar+1:iVar+3,ivisu)=X0 ;iVar=iVar+3 values(ivar+1:iVar+3,ivisu)=T ;iVar=iVar+3 values(ivar+1:iVar+3,ivisu)=N*sigma ;iVar=iVar+3 values(ivar+1:iVar+3,ivisu)=B*sigma ;iVar=iVar+3 values(iVar+1 ,ivisu)=zeta*sf%nfp/TWOPI ;iVar=iVar+1 values(iVar+1 ,ivisu)=sigma ;iVar=iVar+1 values(iVar+1 ,ivisu)=lp ;iVar=iVar+1 values(iVar+1 ,ivisu)=kappa ;iVar=iVar+1 values(iVar+1 ,ivisu)=tau ;iVar=iVar+1 values(ivar+1:iVar+3,ivisu)=X0p ;iVar=iVar+3 values(ivar+1:iVar+3,ivisu)=X0pp ;iVar=iVar+3 values(ivar+1:iVar+3,ivisu)=X0ppp ;iVar=iVar+3 END DO !ivisu IF((outfileType.EQ.1).OR.(outfileType.EQ.12))THEN CALL WriteDataToVTK(1,3,nVars-3,(/nvisu*sf%nfp/),1,VarNames(4:nVars),values(1:3,:),values(4:nVars,:),"visu_hmap_frenet.vtu") END IF IF((outfileType.EQ.2).OR.(outfileType.EQ.12))THEN #if NETCDF CALL WriteDataToNETCDF(1,3,nVars-3,(/nvisu*sf%nfp/),(/"dim_zeta"/),VarNames(4:nVars),values(1:3,:),values(4:nVars,:), & "visu_hmap_frenet") #else CALL WriteDataToCSV(VarNames(:) ,values, TRIM("out_visu_hmap_frenet.csv") ,append_in=.FALSE.) #endif END IF END SUBROUTINE VisuFrenet