|  | ! Utility functions to have a sleep function with better resolution and | 
|  | ! which only stops one thread. | 
|  |  | 
|  | subroutine my_sleep(sleeptime) | 
|  | implicit none | 
|  | double precision :: sleeptime | 
|  | integer :: u | 
|  | integer :: t(8) | 
|  | integer :: ms1, ms2 | 
|  | integer :: cnt | 
|  |  | 
|  | u = sleeptime * 1000 | 
|  |  | 
|  | call date_and_time(values=t) | 
|  |  | 
|  | ! calculate start time in ms | 
|  | ms1 = t(8) + t(7)*1000 + t(6)*60000 + t(5)*3600000 | 
|  |  | 
|  | ms2 = ms1 | 
|  | cnt = 0 | 
|  | do while ( (ms2 - ms1) < u) | 
|  | call date_and_time(values=t) | 
|  | ms2 = t(8) + t(7)*1000 + t(6)*60000 + t(5)*3600000 | 
|  | cnt = cnt+1 | 
|  | end do | 
|  | end subroutine |