Loading...
Searching...
No Matches
historyautochkoutput.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

logical function historyautochkoutput (varname)
logical function historyautochkoutputtiming (time, varname)

Function/Subroutine Documentation

◆ historyautochkoutput()

logical function historyautochkoutput ( character(*), intent(in) varname)

Definition at line 10 of file historyautochkoutput.f90.

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 !
30 use gtool_historyauto_internal, only: initialized, numdims, numvars, &
31 & varname_vars, output_valid_vars
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
80999 continue
Provides kind type parameter values.
Definition dc_types.f90:49
integer, parameter, public token
Character length for word, token
Definition dc_types.f90:109
integer, parameter, public string
Character length for string
Definition dc_types.f90:118
integer, parameter, public dp
Double Precision Real number
Definition dc_types.f90:83

References dc_types::dp, dc_types::string, and dc_types::token.

◆ historyautochkoutputtiming()

logical function historyautochkoutputtiming ( real(dp), intent(in) time,
character(*), intent(in) varname )

Definition at line 85 of file historyautochkoutput.f90.

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 !
136 use gtool_historyauto_internal, only: initialized, numdims, numvars, &
137 & varname_vars, output_valid_vars, origin_time_vars, histaddvar_vars, &
138 & newfile_inttime_vars, newfile_createtime_vars, prev_outtime_vars, &
139 & interval_time_vars, terminus_time_vars
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
228999 continue

References dc_types::dp, dc_types::string, and dc_types::token.