run_eigensolver Subroutine

public subroutine run_eigensolver(state)

Uses

Employ the eigenvalue solver to seek eigenmodes using SLEPc

Arguments

Type IntentOptional Attributes Name
type(gs2_program_state_type), intent(inout) :: state

Contents

Source Code


Source Code

  subroutine run_eigensolver(state)
#ifdef WITH_EIG
#ifdef FIELDS_EIG
    use fields_eigval, only: init_eigval, finish_eigval, BasicSolve
#else
    use eigval, only: init_eigval, finish_eigval, BasicSolve
#endif
#endif 
    use job_manage, only: time_message
    use mp, only: mp_abort
    type(gs2_program_state_type), intent(inout) :: state
    if (.not. state%included) return
#ifdef WITH_EIG
   call time_message(.false.,state%timers%total,' Total')

   !Start timer
   call time_message(.false.,state%timers%eigval,' Eigensolver')

   !Initialise slepc and the default/input eigensolver parameters
   call init_eigval

   !Create a solver based on input paramters, use it to solve and
   !then destroy it.
   call BasicSolve

   !Tidy up
   call finish_eigval

   !Stop timer
   call time_message(.false.,state%timers%eigval,' Eigensolver')
#else
   call mp_abort("Eigensolver requires GS2 to be built with slepc/petsc", .true.)
#endif
   call time_message(.false.,state%timers%total,' Total')

  end subroutine run_eigensolver