input_s.f90 Source File


This file depends on

sourcefile~~input_s.f90~~EfferentGraph sourcefile~input_s.f90 input_s.f90 sourcefile~input_m.f90 input_m.f90 sourcefile~input_s.f90->sourcefile~input_m.f90

Source Code

! Copyright (c), The Regents of the University of California
! Terms of use are as specified in LICENSE.txt
submodule(input_m) input_s
  implicit none

contains
      
  module procedure num_cells
      n = self%num_cells_
  end procedure
   
  module procedure num_positions
      n = self%num_positions_
  end procedure
  
  module procedure num_dimensions
      n = self%num_dimensions_
  end procedure

  module procedure num_intervals
      n = self%num_intervals_
  end procedure

  module procedure time_step
      dt = self%time_step_
  end procedure

  module procedure sample_distribution
     integer i,nintervals
     double precision speed_lower,speed_upper
     double precision range,pi,dspeed,sumy
     double precision speed_lower_bin
     double precision speed_upper_bin
     double precision speed_middle_bin
     double precision, allocatable :: speeds(:),probability(:)
     nintervals = self%num_intervals_

     speed_lower = 0.d0
     speed_upper = 6.d0
     range = speed_upper - speed_lower
     pi = acos(-1.d0)
     dspeed = range/dble(nintervals)
     allocate(speeds(nintervals),probability(nintervals))
!    Create normal distribution     
     sumy = 0.d0
     do i = 1,nintervals
        speed_lower_bin = speed_lower + dble(i-1)*dspeed
        speed_upper_bin = speed_lower + dble(i)*dspeed
        speed_middle_bin = 0.5d0*(speed_lower_bin + speed_upper_bin)
        speeds(i) = speed_middle_bin
        probability(i) = exp(-(speeds(i)-3.d0)**2/2.d0)/dsqrt(2.d0*pi) ! Use normal distribution
        sumy = sumy + probability(i)
     end do

     do i = 1,nintervals
        probability(i) = probability(i)/sumy
     end do
      
     allocate(empirical_distribution(nintervals,2))
      
     do i = 1,nintervals
         empirical_distribution(i,1) = speeds(i)
         empirical_distribution(i,2) = probability(i)
     end do
      
  end procedure    
 
end submodule input_s