write_modes Subroutine

public subroutine write_modes(fname, vname, nval, modes, xm, xn, coord, rho_first, values_in, VarNames_in)

Uses

  • proc~~write_modes~~UsesGraph proc~write_modes write_modes module~modgvec_output_csv MODgvec_Output_CSV proc~write_modes->module~modgvec_output_csv module~modgvec_globals MODgvec_Globals module~modgvec_output_csv->module~modgvec_globals iso_fortran_env iso_fortran_env module~modgvec_globals->iso_fortran_env

write modes prepared above

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: fname
character(len=*), intent(in) :: vname
integer, intent(inout) :: nval
integer, intent(in) :: modes
integer, intent(in) :: xm(1:modes)
integer, intent(in) :: xn(1:modes)
real(kind=wp), intent(in) :: coord(:)
real(kind=wp), intent(in) :: rho_first
real(kind=wp), intent(inout) :: values_in(:,:)
character(len=*), intent(inout) :: VarNames_in(:)

Calls

proc~~write_modes~~CallsGraph proc~write_modes write_modes writedatatocsv writedatatocsv proc~write_modes->writedatatocsv

Source Code

SUBROUTINE write_modes(fname,vname,nval,modes,xm,xn,coord,rho_first,values_in,VarNames_in)
! MODULES
USE MODgvec_Output_CSV, ONLY:WriteDataToCSV
IMPLICIT NONE
!-----------------------------------------------------------------------------------------------------------------------------------
! INPUT VARIABLES
  CHARACTER(LEN=*),INTENT(IN)   :: fname
  CHARACTER(LEN=*),INTENT(IN)   :: vname
  INTEGER         ,INTENT(IN)   :: modes
  INTEGER         ,INTENT(IN)   :: xm(1:modes)
  INTEGER         ,INTENT(IN)   :: xn(1:modes)
  REAL(wp),INTENT(IN)           :: coord(:)
  REAL(wp),INTENT(IN)           :: rho_first
  REAL(wp),INTENT(INOUT)        :: values_in(:,:)
  CHARACTER(LEN=*),INTENT(INOUT):: VarNames_in(:)
!-----------------------------------------------------------------------------------------------------------------------------------
! OUTPUT VARIABLES
  INTEGER         ,INTENT(INOUT):: nval
!-----------------------------------------------------------------------------------------------------------------------------------
! LOCAL VARIABLES
  INTEGER                    :: i,iMode
  REAL(wp)                   :: minmaxval(2)
  REAL(wp) ,ALLOCATABLE      :: max_loc_val(:)
  CHARACTER(LEN=100),ALLOCATABLE :: varnames_max(:)
!===================================================================================================================================

  minmaxval(1)=MINVAL(values_in(nVal-modes:nVal,:))
  minmaxval(2)=MAXVAL(values_in(nVal-modes:nVal,:))

!  DO iMode=1,modes
!    nVal=nVal+1
!    WRITE(VarNames_in(nVal),'(A)')TRIM(VarNames_in(nVal-modes))//'_norm'
!    values_in(nVal,:)=values_in(nVal-modes,:)/(MAXVAL(ABS(values_in(nVal-modes,:)))+1.0E-12)
!  END DO

!  nVal=nVal+2
!  Varnames_in(nVal-1)=TRIM(vname)//', m= odd, n= 000'
!  Varnames_in(nVal)=  TRIM(vname)//', m=even, n= 000'
!  values_in(nVal-1:nVal,:)=0.
!  DO iMode=1,modes
!    IF((xn(iMode)).EQ.0)THEN
!      IF(MOD((xm(iMode)),2).NE.0)THEN
!        values_in(nVal-1,:)= values_in(nVal-1,:)+values_in(nVal-2-2*modes+iMode,:)
!      ELSE
!        values_in(nVal,:)= values_in(nVal,:)+values_in(nVal-2-2*modes+iMode,:)
!      END IF
!    END IF !n=0
!  END DO

  CALL WriteDataToCSV(VarNames_in(1:nVal),Values_in(1:nVal,:), TRIM(fname))

!  ALLOCATE(max_loc_val(nVal),Varnames_max(nVal))
!  DO i=1,nVal
!    max_loc_val(i)=coord(MAXLOC(ABS(values_in(i,:)),1))
!    Varnames_max(i)=TRIM(VarNames_in(i))//'_maxloc'
!  END DO
!  CALL WriteDataToCSV(VarNames_max(:) ,RESHAPE(max_loc_val(:),(/nval,1/)) &
!                             ,TRIM(fname) &
!                             ,append_in=.TRUE.,vfmt_in='E15.5')
!  DO i=1,nVal
!    max_loc_val(i)=      MAXVAL(ABS(values_in(i,:)))+1.0E-12
!    Varnames_max(i)=TRIM(VarNames_in(i))//'_maxval'
!  END DO
!  CALL WriteDataToCSV(VarNames_max(:) ,RESHAPE(max_loc_val(:),(/nval,1/)) &
!                             ,TRIM(fname) &
!                             ,append_in=.TRUE.,vfmt_in='E15.5')
!  DEALLOCATE(max_loc_val,Varnames_max)
!  !write position of first flux surface
!  CALL WriteDataToCSV((/'rhoFirst'/) ,RESHAPE((/rho_First/),(/1,1/)) &
!                             ,TRIM(fname) &
!                             ,append_in=.TRUE.)
!  !write position of first flux surface
!  CALL WriteDataToCSV((/'minval_total','maxval_total'/) ,RESHAPE(minmaxval,(/2,1/)) &
!                             ,TRIM(fname) &
!                             ,append_in=.TRUE.)

END SUBROUTINE write_modes