define_collisions_time_step Subroutine

public subroutine define_collisions_time_step(params)

Arguments

Type IntentOptional AttributesName
type(KORC_PARAMS), intent(in) :: params

Contents


Source Code

  subroutine define_collisions_time_step(params)
    TYPE(KORC_PARAMS), INTENT(IN) 	:: params
    INTEGER(ip) 			:: iterations
    REAL(rp) 				:: E
    REAL(rp) 				:: v
    REAL(rp) 				:: Tau
    REAL(rp), DIMENSION(3) 		:: nu
    REAL(rp) 				:: num_collisions_in_simulation


    if (params%collisions) then
       E = C_ME*C_C**2 + params%minimum_particle_energy*params%cpp%energy
       v = SQRT(1.0_rp - (C_ME*C_C**2/E)**2)
       nu = (/nu_S(params,v),nu_D(params,v),nu_par(v)/)
       Tau = MINVAL( 1.0_rp/nu )

!       write(6,'("collision freqencies ",F25.12)') nu
       
       cparams_ss%subcycling_iterations = FLOOR(cparams_ss%dTau*Tau/ &
            params%dt,ip) + 1_ip

       num_collisions_in_simulation = params%simulation_time/Tau

       if (params%mpi_params%rank .EQ. 0) then
          write(6,'("* * * * * * * * * * * SUBCYCLING FOR  &
               COLLISIONS * * * * * * * * * * *")')

         write(6,'("Slowing down freqency (CF): ",E17.10)') &
               nu(1)/params%cpp%time
          write(6,'("Pitch angle scattering freqency (CB): ",E17.10)') &
               nu(2)/params%cpp%time
          write(6,'("Speed diffusion freqency (CA): ",E17.10)') &
               nu(3)/params%cpp%time
          
          write(6,'("The shorter collisional time in the simulations  &
               is: ",E17.10," s")') Tau*params%cpp%time
          write(6,'("Number of KORC iterations per collision: ",I16)')  &
               cparams_ss%subcycling_iterations
          write(6,'("Number of collisions in simulated time: ",E17.10)')  &
               num_collisions_in_simulation
          write(6,'("* * * * * * * * * * * * * * * * * * * * &
               * * * * * * * * * * * * * * *",/)')
       end if
    end if
  end subroutine define_collisions_time_step