FrontISTR  5.9.0
Large-scale structural analysis program with finit element method
m_timepoint.f90
Go to the documentation of this file.
1 !-------------------------------------------------------------------------------
2 ! Copyright (c) 2019 FrontISTR Commons
3 ! This software is released under the MIT License, see LICENSE.txt
4 !-------------------------------------------------------------------------------
6 module m_timepoint
7  use hecmw
8  implicit none
9 
10  integer, parameter :: tprstep = 1
11  integer, parameter :: tprtotal = 2
12 
15  character( len=80 ) :: name
16  integer :: n_points
17  integer :: range_type
18  real(kind=kreal), pointer :: points(:) => null()
19  end type
20 
21 contains
22 
23  logical function is_at_timepoints(totaltime,starttime,tp)
24  real(kind=kreal), intent(in) :: totaltime
25  real(kind=kreal), intent(in) :: starttime
26  type(time_points), intent(in) :: tp
27 
28  integer :: i
29  real(kind=kreal) :: time
30 
31  time = totaltime
32  if( tp%range_type == tprstep ) time = totaltime - starttime
33 
34  is_at_timepoints =.false.
35  do i=1,tp%n_points
36  if( dabs(time-tp%points(i)) > 1.d-10 ) cycle
37  is_at_timepoints = .true.
38  exit
39  end do
40 
41  end function
42 
43  real(kind=kreal) function get_remain_to_next_timepoints(totaltime,starttime,tp)
44  real(kind=kreal), intent(in) :: totaltime
45  real(kind=kreal), intent(in) :: starttime
46  type(time_points), intent(in) :: tp
47 
48  integer :: i
49  real(kind=kreal) :: time
50 
51  time = totaltime
52  if( tp%range_type == tprstep ) time = totaltime - starttime
53 
55  if( time < tp%points(1)-1.d-10 ) then
56  get_remain_to_next_timepoints = tp%points(1)-time
57  end if
58  do i=1,tp%n_points-1
59  if( time < tp%points(i)-1.d-10 ) cycle
60  if( time >= tp%points(i+1)-1.d-10 ) cycle
61  get_remain_to_next_timepoints = tp%points(i+1)-time
62  exit
63  end do
64 
65  end function
66 
67 end module
Definition: hecmw.f90:6
This module manages timepoint information.
Definition: m_timepoint.f90:6
real(kind=kreal) function get_remain_to_next_timepoints(totaltime, starttime, tp)
Definition: m_timepoint.f90:44
integer, parameter tprstep
Definition: m_timepoint.f90:10
integer, parameter tprtotal
Definition: m_timepoint.f90:11
logical function is_at_timepoints(totaltime, starttime, tp)
Definition: m_timepoint.f90:24
Time points storage for output etc.
Definition: m_timepoint.f90:14