next Function

private function next(self) result(res)

Interal routine: get the next value (returned as 64 bit signed integer)

Type Bound

rng_t

Arguments

Type IntentOptional Attributes Name
class(rng_t), intent(inout) :: self

Return Value integer(kind=i8)


Calls

proc~~next~~CallsGraph proc~next rng_t%next proc~rotl rotl proc~next->proc~rotl

Called by

proc~~next~~CalledByGraph proc~next rng_t%next proc~int_4 rng_t%int_4 proc~int_4->proc~next proc~int_8 rng_t%int_8 proc~int_8->proc~next proc~jump rng_t%jump proc~jump->proc~next proc~unif_01 rng_t%unif_01 proc~unif_01->proc~next proc~advect_create_particles advect_create_particles proc~advect_create_particles->proc~unif_01 proc~circle rng_t%circle proc~circle->proc~unif_01 proc~gca_create_particles gca_create_particles proc~gca_create_particles->proc~unif_01 proc~init_parallel prng_t%init_parallel proc~init_parallel->proc~jump proc~lorentz_create_particles Lorentz_create_particles proc~lorentz_create_particles->proc~unif_01 proc~poisson rng_t%poisson proc~poisson->proc~unif_01 proc~sample_create_particles sample_create_particles proc~sample_create_particles->proc~unif_01 proc~set_seed rng_t%set_seed proc~set_seed->proc~jump proc~sphere rng_t%sphere proc~sphere->proc~unif_01 proc~two_normals rng_t%two_normals proc~two_normals->proc~unif_01 proc~unif_01_vec rng_t%unif_01_vec proc~unif_01_vec->proc~unif_01 proc~get_maxwellian_velocity get_maxwellian_velocity proc~get_maxwellian_velocity->proc~sphere proc~normal rng_t%normal proc~get_maxwellian_velocity->proc~normal proc~get_uniform_pos get_uniform_pos proc~get_uniform_pos->proc~unif_01_vec proc~normal->proc~two_normals proc~particle_base_init particle_base_init proc~particle_base_init->proc~set_seed proc~particles_create particles_create proc~particles_create->proc~advect_create_particles proc~particles_create->proc~gca_create_particles proc~particles_create->proc~lorentz_create_particles proc~particles_create->proc~sample_create_particles proc~main main proc~main->proc~particles_create proc~particles_init particles_init proc~particles_init->proc~particle_base_init program~agile agile program~agile->proc~main

Source Code

  function next(self) result(res)
    class(rng_t), intent(inout) :: self
    integer(i8)                 :: res
    integer(i8)                 :: global_time(2)

    global_time         = self%s
    res       = global_time(1) + global_time(2)
    global_time(2)      = ieor(global_time(1), global_time(2))
    self%s(1) = ieor(ieor(rotl(global_time(1), 55), global_time(2)),&
        shiftl(global_time(2), 14))
    self%s(2) = rotl(global_time(2), 36)
  end function next