historyautochkoutput.f90
Go to the documentation of this file.
1 != 変数の出力設定の確認手続
2 != Check output setting of a variable
3 !
4 ! Authors:: Yasuhiro MORIKAWA
5 ! Version:: $Id: historyautochkoutput.f90,v 1.2 2010-12-28 09:53:09 morikawa Exp $
6 ! Tag Name:: $Name: $
7 ! Copyright:: Copyright (C) GFD Dennou Club, 2010-. All rights reserved.
8 ! License:: See COPYRIGHT[link:../../../COPYRIGHT]
9 !
10  function historyautochkoutput( varname ) result(result)
11  !
12  ! 変数の出力設定の確認を行います.
13  !
14  ! *varname* に指定された変数名が出力されるよう設定されている
15  ! 場合には *true* が, 出力されないよう設定されている場合は
16  ! *false* が返ります.
17  !
18  ! *HistoryAutoCreate* による初期設定がなされていない場合や,
19  ! *varname* に指定された変数名が HistoryAutoAddVariable によって
20  ! 登録されていない場合, 返り値に *false* が返ります.
21  !
22  ! Check output setting of a variable.
23  !
24  ! If output setting of *varname* is valid, *true* is returned.
25  ! If output setting of *varname* is invalid, *false* is returned.
26  !
27  ! If initialization with "HistoryAutoCreate" is not done yet, *false* is returned.
28  ! If *varname* is invalid, *false* is returned.
29  !
32  use dc_types, only: dp, string, token
33 
34  implicit none
35  logical:: result
36  character(*), intent(in):: varname
37  ! 変数の名前.
38  ! Variable name
39 
40  integer:: i, vnum
41  integer, save:: svnum = 1
42  character(*), parameter:: subname = "HistoryAutoChkOutput"
43  continue
44  ! 初期設定チェック
45  ! Check initialization
46  !
47  if ( .not. initialized ) then
48  result = .false.
49  goto 999
50  end if
51 
52  ! 変数 ID のサーチ
53  ! Search variable ID
54  !
55  varsearch: do
56  do i = svnum, numvars
57  if ( trim( varname_vars(i) ) == trim(varname) ) then
58  vnum = i
59  exit varsearch
60  end if
61  end do
62  do i = 1, svnum - 1
63  if ( trim( varname_vars(i) ) == trim(varname) ) then
64  vnum = i
65  exit varsearch
66  end if
67  end do
68 
69  result = .false.
70  goto 999
71  end do varsearch
72 
73  svnum = vnum
74 
75  ! 出力設定の確認
76  ! Check output setting
77  !
78  result = output_valid_vars( vnum )
79 
80 999 continue
81  end function historyautochkoutput
82 
83 
84 
85  function historyautochkoutputtiming( time, varname ) result(result)
86  !
87  ! 変数の出力設定の確認を行います.
88  !
89  ! *varname* に指定された変数名が、*time* のタイミングで出力されるよう
90  ! 設定されている場合には *true* が, 出力されないよう設定されている場合は
91  ! *false* が返ります.
92  !
93  ! なお, gtool_historyauto は時間ステップ可変に対応しているため,
94  ! *time* のタイミングで出力されるかどうかについては,
95  ! その前回に出力された時間に依存します. 従って, とある時間の
96  ! 出力設定の確認は下記のように HistoryAutoPut の前で使用して下さい.
97  !
98  ! if ( HistoryAutoChkOutputTiming( time, var ) ) then
99  ! <some operation ...>
100  ! end if
101  !
102  ! call HistoryAutoPut( time, var, data )
103  !
104  ! 以下のように使用した場合には, 期待するような返り値が
105  ! 得られないことにご留意下さい.
106  !
107  ! do i = 1, 10
108  ! write(*,*) HistoryAutoChkOutputTiming( i * timestep, var )
109  ! end do
110  !
111  ! *HistoryAutoCreate* による初期設定がなされていない場合や,
112  ! *varname* に指定された変数名が HistoryAutoAddVariable によって
113  ! 登録されていない場合, 返り値に *false* が返ります.
114  !
115  ! Check output setting of a variable.
116  !
117  ! If *varname* is output on *time*, *true* is returned.
118  !
119  ! Please use this function as follows.
120  !
121  ! if ( HistoryAutoChkOutputTiming( time, var ) ) then
122  ! <some operation ...>
123  ! end if
124  !
125  ! call HistoryAutoPut( time, var, data )
126  !
127  ! Following usage does not return correct values.
128  !
129  ! do i = 1, 10
130  ! write(*,*) HistoryAutoChkOutputTiming( i * timestep, var )
131  ! end do
132  !
133  ! If initialization with "HistoryAutoCreate" is not done yet, *false* is returned.
134  ! If *varname* is invalid, *false* is returned.
135  !
140  use dc_types, only: dp, string, token
141 
142  implicit none
143  logical:: result
144  real(DP), intent(in):: time
145  ! データの時刻.
146  ! Time of data
147  character(*), intent(in):: varname
148  ! 変数の名前.
149  ! Variable name
150 
151  real(DP), parameter:: zero_time = 0.0_dp
152  integer:: i, vnum
153  integer, save:: svnum = 1
154  character(*), parameter:: subname = "HistoryAutoChkOutputTiming"
155  continue
156 
157  ! 初期設定チェック
158  ! Check initialization
159  !
160  if ( .not. initialized ) then
161  result = .false.
162  goto 999
163  end if
164 
165  ! 変数 ID のサーチ
166  ! Search variable ID
167  !
168  varsearch: do
169  do i = svnum, numvars
170  if ( trim( varname_vars(i) ) == trim(varname) ) then
171  vnum = i
172  exit varsearch
173  end if
174  end do
175  do i = 1, svnum - 1
176  if ( trim( varname_vars(i) ) == trim(varname) ) then
177  vnum = i
178  exit varsearch
179  end if
180  end do
181 
182  result = .false.
183  goto 999
184  end do varsearch
185 
186  svnum = vnum
187 
188  ! 出力設定の確認
189  ! Check output setting
190  !
191  result = output_valid_vars( vnum )
192 
193  if ( .not. result ) goto 999
194 
195  if ( origin_time_vars(vnum) > time ) then
196  result = .false.
197  goto 999
198  end if
199 
200  if ( origin_time_vars(vnum) <= time &
201  & .and. ( terminus_time_vars(vnum) < zero_time &
202  & .or. terminus_time_vars(vnum) >= time ) &
203  & .and. .not. histaddvar_vars(vnum) ) then
204 
205  result = .true.
206  goto 999
207  end if
208 
209  if ( terminus_time_vars(vnum) > zero_time .and. terminus_time_vars(vnum) < time ) then
210  result = .false.
211  goto 999
212  end if
213 
214  if ( newfile_inttime_vars(vnum) > zero_time ) then
215  if ( time - newfile_createtime_vars(vnum) >= newfile_inttime_vars(vnum) ) then
216  result = .true.
217  goto 999
218  end if
219  end if
220 
221  if ( time - prev_outtime_vars(vnum) >= interval_time_vars(vnum) ) then
222  result = .true.
223  goto 999
224  end if
225 
226  result = .false.
227 
228 999 continue
229  end function historyautochkoutputtiming
real(dp), dimension(1:max_vars), save, public newfile_inttime_vars
real(dp), dimension(1:max_vars), save, public interval_time_vars
integer, parameter, public token
単語やキーワードを保持する文字型変数の種別型パラメタ
Definition: dc_types.f90:109
real(dp), dimension(1:max_vars), save, public terminus_time_vars
real(dp), dimension(1:max_vars), save, public origin_time_vars
integer, parameter, public dp
倍精度実数型変数
Definition: dc_types.f90:83
character(token), dimension(1:max_vars), save, public varname_vars
real(dp), dimension(1:max_vars), save, public prev_outtime_vars
logical function historyautochkoutput(varname)
logical, dimension(1:max_vars), save, public histaddvar_vars
logical function historyautochkoutputtiming(time, varname)
種別型パラメタを提供します。
Definition: dc_types.f90:49
logical, dimension(1:max_vars), save, public output_valid_vars
real(dp), dimension(1:max_vars), save, public newfile_createtime_vars
integer, parameter, public string
文字列を保持する 文字型変数の種別型パラメタ
Definition: dc_types.f90:118