FV3 Bundle
diag_data.F90
Go to the documentation of this file.
1 !***********************************************************************
2 !* GNU Lesser General Public License
3 !*
4 !* This file is part of the GFDL Flexible Modeling System (FMS).
5 !*
6 !* FMS is free software: you can redistribute it and/or modify it under
7 !* the terms of the GNU Lesser General Public License as published by
8 !* the Free Software Foundation, either version 3 of the License, or (at
9 !* your option) any later version.
10 !*
11 !* FMS is distributed in the hope that it will be useful, but WITHOUT
12 !* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 !* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 !* for more details.
15 !*
16 !* You should have received a copy of the GNU Lesser General Public
17 !* License along with FMS. If not, see <http://www.gnu.org/licenses/>.
18 !***********************************************************************
19 
21 #include <fms_platform.h>
22  ! <CONTACT EMAIL="seth.underwood@noaa.gov">
23  ! Seth Underwood
24  ! </CONTACT>
25 
26  ! <OVERVIEW>
27  ! Type descriptions and global variables for the diag_manager modules.
28  ! </OVERVIEW>
29 
30  ! <DESCRIPTION>
31  ! Notation:
32  ! <DL>
33  ! <DT>input field</DT>
34  ! <DD>The data structure describing the field as
35  ! registered by the model code.</DD>
36  !
37  ! <DT>output field</DT>
38  ! <DD>The data structure describing the actual
39  ! diagnostic output with requested frequency and
40  ! other options.</DD>
41  ! </DL>
42  !
43  ! Input fields, output fields, and output files are gathered in arrays called
44  ! "input_fields", "output_fields", and "files", respectively. Indices in these
45  ! arrays are used as pointers to create associations between various data
46  ! structures.
47  !
48  ! Each input field associated with one or several output fields via array of
49  ! indices output_fields; each output field points to the single "parent" input
50  ! field with the input_field index, and to the output file with the output_file
51  ! index
52  ! </DESCRIPTION>
53 
54  USE time_manager_mod, ONLY: time_type
56  USE mpp_io_mod, ONLY: fieldtype
57  USE fms_mod, ONLY: warning, write_version_number
58 #ifdef use_netCDF
59  ! NF90_FILL_REAL has value of 9.9692099683868690e+36.
60  USE netcdf, ONLY: nf_fill_real => nf90_fill_real
61 #endif
62 
63  IMPLICIT NONE
64 
65  PUBLIC
66 
67 
68  ! <!-- PARAMETERS for diag_data.F90 -->
69  ! <DATA NAME="MAX_FIELDS_PER_FILE" TYPE="INTEGER, PARAMETER" DEFAULT="300">
70  ! Maximum number of fields per file.
71  ! </DATA>
72  ! <DATA NAME="DIAG_OTHER" TYPE="INTEGER, PARAMETER" DEFAULT="0" />
73  ! <DATA NAME="DIAG_OCEAN" TYPE="INTEGER, PARAMETER" DEFAULT="1" />
74  ! <DATA NAME="DIAG_ALL" TYPE="INTEGER, PARAMETER" DEFAULT="2" />
75  ! <DATA NAME="VERY_LARGE_FILE_FREQ" TYPE="INTEGER, PARAMETER" DEFAULT="100000" />
76  ! <DATA NAME="VERY_LARGE_AXIS_LENGTH" TYPE="INTEGER, PARAMETER" DEFAUTL="10000" />
77  ! <DATA NAME="EVERY_TIME" TYPE="INTEGER, PARAMETER" DEFAULT="0" />
78  ! <DATA NAME="END_OF_RUN" TYPE="INTEGER, PARAMETER" DEFAULT="-1" />
79  ! <DATA NAME="DIAG_SECONDS" TYPE="INTEGER, PARAMETER" DEFAULT="1" />
80  ! <DATA NAME="DIAG_MINUTES" TYPE="INTEGER, PARAMETER" DEFAULT="2" />
81  ! <DATA NAME="DIAG_HOURS" TYPE="INTEGER, PARAMETER" DEFAULT="3" />
82  ! <DATA NAME="DIAG_DAYS" TYPE="INTEGER, PARAMETER" DEFAULT="4" />
83  ! <DATA NAME="DIAG_MONTHS" TYPE="INTEGER, PARAMETER" DEFAULT="5" />
84  ! <DATA NAME="DIAG_YEARS" TYPE="INTEGER, PARAMETER" DEFAULT="6" />
85  ! <DATA NAME="MAX_SUBAXES" TYPE="INTEGER, PARAMETER" DEFAULT="10" />
86  ! <DATA NAME="CMOR_MISSING_VALUE" TYPE="REAL, PARAMETER" DEFAULT="1.0e20" />
87  ! <DATA NAME="GLO_REG_VAL" TYPE="INTEGER, PARAMETER" DEFAULT="-999">
88  ! Value used in the region specification of the diag_table to indicate to use the full axis instead of a sub-axis
89  ! </DATA>
90  ! <DATA NAME="GLO_REG_VAL_ALT" TYPE="INTEGER, PARAMETER" DEFAULT="-1">
91  ! Alternate value used in the region specification of the diag_table to indicate to use the full axis instead of a sub-axis
92  ! </DATA>
93  ! <DATA NAME="DIAG_FIELD_NOT_FOUND" TYPE="INTEGER, PARAMETER" DEFAULT="-1">
94  ! Return value for a diag_field that isn't found in the diag_table
95  ! </DATA>
96  ! Specify storage limits for fixed size tables used for pointers, etc.
97  INTEGER, PARAMETER :: max_fields_per_file = 300 !< Maximum number of fields per file.
98  INTEGER, PARAMETER :: diag_other = 0
99  INTEGER, PARAMETER :: diag_ocean = 1
100  INTEGER, PARAMETER :: diag_all = 2
101  INTEGER, PARAMETER :: very_large_file_freq = 100000
102  INTEGER, PARAMETER :: very_large_axis_length = 10000
103  INTEGER, PARAMETER :: every_time = 0
104  INTEGER, PARAMETER :: end_of_run = -1
105  INTEGER, PARAMETER :: diag_seconds = 1, diag_minutes = 2, diag_hours = 3
106  INTEGER, PARAMETER :: diag_days = 4, diag_months = 5, diag_years = 6
107  INTEGER, PARAMETER :: max_subaxes = 10
108  INTEGER, PARAMETER :: glo_reg_val = -999
109  INTEGER, PARAMETER :: glo_reg_val_alt = -1
110  REAL, PARAMETER :: cmor_missing_value = 1.0e20 !< CMOR standard missing value
111  INTEGER, PARAMETER :: diag_field_not_found = -1
112 
113  ! <TYPE NAME="diag_grid">
114  ! <DESCRIPTION>
115  ! Contains the coordinates of the local domain to output.
116  ! </DESCRIPTION>
117  ! <DATA NAME="start" TYPE="REAL, DIMENSION(3)">
118  ! Start coordinates (Lat, Lon, Depth) of the local domain to output.
119  ! </DATA>
120  ! <DATA NAME="end" TYPE="REAL, DIMENSION(3)">
121  ! End coordinates (Lat, Lon, Depth) of the local domain to output.
122  ! </DATA>
123  ! <DATA NAME="l_start_indx" TYPE="INTEGER, DIMENSION(3)">
124  ! Start indices at each local PE.
125  ! </DATA>
126  ! <DATA NAME="l_end_indx" TYPE="INTEGER, DIMENSION(3)">
127  ! End indices at each local PE.
128  ! </DATA>
129  ! <DATA NAME="subaxes" TYPE="INTEGER, DIMENSION(3)">
130  ! ID returned from diag_subaxes_init of 3 subaces.
131  ! </DATA>
133  REAL, DIMENSION(3) :: start, end ! start and end coordinates (lat,lon,depth) of local domain to output
134  INTEGER, DIMENSION(3) :: l_start_indx, l_end_indx ! start and end indices at each LOCAL PE
135  INTEGER, DIMENSION(3) :: subaxes ! id returned from diag_subaxes_init of 3 subaxes
136  END TYPE diag_grid
137  ! </TYPE>
138 
139  ! <TYPE NAME="diag_fieldtype">
140  ! <DESCRIPTION>
141  ! Diagnostic field type
142  ! </DESCRIPTION>
143  ! <DATA NAME="Field" TYPE="TYPE(fieldtype)">
144  ! </DATA>
145  ! <DATA NAME="Domain" TYPE="TYPE(domain2d)">
146  ! </DATA>
147  ! <DATA NAME="miss" TYPE="REAL">
148  ! </DATA>
149  ! <DATA NAME="miss_pack" TYPE="REAL">
150  ! </DATA>
151  ! <DATA NAME="miss_present" TYPE="LOGICAL">
152  ! </DATA>
153  ! <DATA NAME="miss_pack_present" TYPE="LOGICAL">
154  ! </DATA>
155  ! <DATA NAME="tile_count" TYPE="INTEGER">
156  ! </DATA>
158  TYPE(fieldtype) :: field
159  TYPE(domain2d) :: domain
160  TYPE(domainug) :: domainu
161  REAL :: miss, miss_pack
162  LOGICAL :: miss_present, miss_pack_present
163  INTEGER :: tile_count
164  END TYPE diag_fieldtype
165  ! </TYPE>
166 
167  ! <TYPE NAME="diag_atttype">
168  ! <DESCRIPTION>
169  ! Attribute type for diagnostic fields
170  ! </DESCRIPTION>
171  ! <DATA NAME="type">
172  ! Data type of attribute values (NF_INT, NF_FLOAT, NF_CHAR)
173  ! </DATA>
174  ! <DATA NAME="len">
175  ! Number of values in attribute, or if a character string then
176  ! length of the string.
177  ! </DATA>
178  ! <DATA NAME="name">
179  ! Name of the attribute
180  ! </DATA>
181  ! <DATA NAME="catt">
182  ! Character string to hold character value of attribute
183  ! </DATA>
184  ! <DATA NAME="fatt">
185  ! REAL array to hold value of REAL attributes.
186  ! </DATA>
187  ! <DATA NAME="iatt">
188  ! INTEGER array to hold value of INTEGER attributes.
189  ! </DATA>
190  type :: diag_atttype
191  INTEGER :: type
192  INTEGER :: len
193  CHARACTER(len=128) :: name
194  CHARACTER(len=1280) :: catt
195  REAL, _allocatable, DIMENSION(:) :: fatt _null
196  INTEGER, _allocatable, DIMENSION(:) :: iatt _null
197  end type diag_atttype
198  ! </TYPE>
199  ! <TYPE NAME="coord_type">
200  ! <DESCRIPTION>
201  ! Define the region for field output.
202  ! </DESCRIPTION>
203  ! <DATA NAME="xbegin" TYPE="REAL">
204  ! </DATA>
205  ! <DATA NAME="xend" TYPE="REAL">
206  ! </DATA>
207  ! <DATA NAME="ybegin" TYPE="REAL">
208  ! </DATA>
209  ! <DATA NAME="yend" TYPE="REAL">
210  ! </DATA>
211  ! <DATA NAME="zbegin" TYPE="REAL">
212  ! </DATA>
213  ! <DATA NAME="zend" TYPE="REAL">
214  ! </DATA>
216  REAL :: xbegin
217  REAL :: xend
218  REAL :: ybegin
219  REAL :: yend
220  REAL :: zbegin
221  REAL :: zend
222  END TYPE coord_type
223  ! </TYPE>
224 
225  ! <TYPE NAME="file_type">
226  ! <DESCRIPTION>
227  ! Type to define the diagnostic files that will be written as defined by the diagnostic table.
228  ! </DESCRIPTION>
229  ! <DATA NAME="name" TYPE="CHARACTER(len=128)">
230  ! Name of the output file.
231  ! </DATA>
232  ! <DATA NAME="long_name" TYPE="CHARACTER(len=128)">
233  ! </DATA>
234  ! <DATA NAME="fields" TYPE="INTEGER, dimension(max_fields_per_file)">
235  ! </DATA>
236  ! <DATA NAME="num_fields" TYPE="INTEGER">
237  ! </DATA>
238  ! <DATA NAME="output_freq" TYPE="INTEGER">
239  ! </DATA>
240  ! <DATA NAME="output_units" TYPE="INTEGER">
241  ! </DATA>
242  ! <DATA NAME="format" TYPE="INTEGER">
243  ! </DATA>
244  ! <DATA NAME="time_units" TYPE="INTEGER">
245  ! </DATA>
246  ! <DATA NAME="file_unit" TYPE="INTEGER">
247  ! </DATA>
248  ! <DATA NAME="bytes_written" TYPE="INTEGER">
249  ! </DATA>
250  ! <DATA NAME="time_axis_id" TYPE="INTEGER">
251  ! </DATA>
252  ! <DATA NAME="time_bounds_id" TYPE="INTEGER">
253  ! </DATA>
254  ! <DATA NAME="new_file_freq" TYPE="INTEGER">
255  ! Frequency to create a new file.
256  ! </DATA>
257  ! <DATA NAME="new_file_freq_units" TYPE="INTEGER">
258  ! Time units of new_file_freq ( days, hours, years, ...)
259  ! </DATA>
260  ! <DATA NAME="duration" TYPE="INTEGER">
261  ! </DATA>
262  ! <DATA NAME="duration_units" TYPE="INTEGER">
263  ! </DATA>
264  ! <DATA NAME="tile_count" TYPE="INTEGER">
265  ! </DATA>
266  ! <DATA NAME="local" TYPE="LOGICAL">
267  ! </DATA>
268  ! <DATA NAME="last_flush" TYPE="TYPE(time_type)">
269  ! </DATA>
270  ! <DATA NAME="next_open" TYPE="TYPE(time_type)">
271  ! Time to open next file.
272  ! </DATA>
273  ! <DATA NAME="start_time" TYPE="TYPE(time_type)">
274  ! Time file opened
275  ! </DATA>
276  ! <DATA NAME="close_time" TYPE="TYPE(time_type)">
277  ! Time file closed. File does not allow data after close time
278  ! </DATA>
279  ! <DATA NAME="f_avg_start" TYPE="TYPE(diag_fieldtype)">
280  ! </DATA>
281  ! <DATA NAME="f_avg_end" TYPE="TYPE(diag_fieldtype)">
282  ! </DATA>
283  ! <DATA NAME="f_avg_nitems" TYPE="TYPE(diag_fieldtype)">
284  ! </DATA>
285  ! <DATA NAME="f_bounds" TYPE="TYPE(diag_fieldtype)">
286  ! </DATA>
287  ! <DATA NAME="attributes" TYPE="TYPE(diag_atttype), DIMENSION(:)">
288  ! Array to hold user definable attributes
289  ! </DATA>
290  ! <DATA NAME="num_attributes" TYPE="INTEGER" >
291  ! Number of defined attibutes
292  ! </DATA>
294  CHARACTER(len=128) :: name !< Name of the output file.
295  CHARACTER(len=128) :: long_name
296  INTEGER, DIMENSION(max_fields_per_file) :: fields
297  INTEGER :: num_fields
298  INTEGER :: output_freq
299  INTEGER :: output_units
300  INTEGER :: format
301  INTEGER :: time_units
302  INTEGER :: file_unit
303  INTEGER :: bytes_written
304  INTEGER :: time_axis_id, time_bounds_id
305  INTEGER :: new_file_freq !< frequency to create new file
306  INTEGER :: new_file_freq_units !< time units of new_file_freq (days, hours, years, ...)
307  INTEGER :: duration
308  INTEGER :: duration_units
309  INTEGER :: tile_count
310  LOGICAL :: local !< .TRUE. if fields are output in a region instead of global.
311  TYPE(time_type) :: last_flush
312  TYPE(time_type) :: next_open !< Time to open a new file.
313  TYPE(time_type) :: start_time !< Time file opened.
314  TYPE(time_type) :: close_time !< Time file closed. File does not allow data after close time
315  TYPE(diag_fieldtype):: f_avg_start, f_avg_end, f_avg_nitems, f_bounds
316  TYPE(diag_atttype), _allocatable, dimension(:) :: attributes _null
317  INTEGER :: num_attributes
318 !----------
319 !ug support
320  logical(INT_KIND) :: use_domainug = .false.
321  logical(INT_KIND) :: use_domain2d = .false.
322 !----------
323  END TYPE file_type
324  ! </TYPE>
325 
326  ! <TYPE NAME="input_field_type">
327  ! <DESCRIPTION>
328  ! Type to hold the input field description
329  ! </DESCRIPTION>
330  ! <DATA NAME="module_name" TYPE="CHARACTER(len=128)">
331  ! </DATA>
332  ! <DATA NAME="field_name" TYPE="CHARACTER(len=128)">
333  ! </DATA>
334  ! <DATA NAME="long_name" TYPE="CHARACTER(len=128)">
335  ! </DATA>
336  ! <DATA NAME="units" TYPE="CHARACTER(len=128)">
337  ! </DATA>
338  ! <DATA NAME="standard_name" TYPE="CHARACTER(len=256)">
339  ! </DATA>
340  ! <DATA NAME="interp_method" TYPE="CHARACTER(len=64)">
341  ! </DATA>
342  ! <DATA NAME="axes" TYPE="INTEGER, DIMENSION(3)">
343  ! </DATA>
344  ! <DATA NAME="num_axes" TYPE="INTEGER">
345  ! </DATA>
346  ! <DATA NAME="missing_value_present" TYPE="LOGICAL">
347  ! </DATA>
348  ! <DATA NAME="range_present" TYPE="LOGICAL">
349  ! </DATA>
350  ! <DATA NAME="missing_value" TYPE="REAL">
351  ! </DATA>
352  ! <DATA NAME="range" TYPE="REAL, DIMENSION(2)">
353  ! </DATA>
354  ! <DATA NAME="output_fields" TYPE="INTEGER, DIMENSION(max_out_per_in_field)">
355  ! </DATA>
356  ! <DATA NAME="num_output_fields" TYPE="INTEGER">
357  ! </DATA>
358  ! <DATA NAME="size" TYPE="INTEGER, DIMENSION(3)">
359  ! </DATA>
360  ! <DATA NAME="static" TYPE="LOGICAL">
361  ! </DATA>
362  ! <DATA NAME="register" TYPE="LOGICAL">
363  ! </DATA>
364  ! <DATA NAME="mask_variant" TYPE="LOGICAL">
365  ! </DATA>
366  ! <DATA NAME="local" TYPE="LOGICAL">
367  ! </DATA>
368  ! <DATA NAME="numthreads" TYPE="INTEGER">
369  ! </DATA>
370  ! <DATA NAME="active_omp_level" TYPE="INTEGER">
371  ! The current level of OpenMP nesting
372  ! </DATA>
373  ! <DATA NAME="tile_count" TYPE="INTEGER">
374  ! </DATA>
375  ! <DATA NAME="local_coord" TYPE="TYPE(coord_type)">
376  ! </DATA>
377  ! <DATA NAME="time" TYPE="TYPE(time_type)">
378  ! </DATA>
379  ! <DATA NAME="issued_mask_ignore_warning" TYPE="LOGICAL">
380  ! Indicates if the mask_ignore_warning has been issued for this input
381  ! field. Once .TRUE. the warning message is suppressed on all subsequent
382  ! send_data calls.
383  ! </DATA>
385  CHARACTER(len=128) :: module_name, field_name, long_name, units
386  CHARACTER(len=256) :: standard_name
387  CHARACTER(len=64) :: interp_method
388  INTEGER, DIMENSION(3) :: axes
389  INTEGER :: num_axes
390  LOGICAL :: missing_value_present, range_present
391  REAL :: missing_value
392  REAL, DIMENSION(2) :: range
393  INTEGER, _allocatable, dimension(:) :: output_fields _null
394  INTEGER :: num_output_fields
395  INTEGER, DIMENSION(3) :: size
396  LOGICAL :: static, register, mask_variant, local
397  INTEGER :: numthreads
398  INTEGER :: active_omp_level
399  INTEGER :: tile_count
400  TYPE(coord_type) :: local_coord
401  TYPE(time_type) :: time
402  LOGICAL :: issued_mask_ignore_warning
403  END TYPE input_field_type
404  ! </TYPE>
405 
406  ! <TYPE NAME="output_field_type">
407  ! <DESCRIPTION>
408  ! Type to hold the output field description.
409  ! </DESCRIPTION>
410  ! <DATA NAME="input_field" TYPE="INTEGER">
411  ! Index of the corresponding input field in the table
412  ! </DATA>
413  ! <DATA NAME="output_file" TYPE="INTEGER">
414  ! Index of the output file in the table
415  ! </DATA>
416  ! <DATA NAME="output_name" TYPE="CHARACTER(len=128)">
417  ! </DATA>
418  ! <DATA NAME="static" TYPE="LOGICAL">
419  ! </DATA>
420  ! <DATA NAME="time_max" TYPE="LOGICAL">
421  ! .TRUE. if the output field is maximum over time interval
422  ! </DATA>
423  ! <DATA NAME="time_min" TYPE="LOGICAL">
424  ! .TRUE. if the output field is minimum over time interval
425  ! </DATA>
426  ! <DATA NAME="time_average" TYPE="LOGICAL">
427  ! .TRUE. if the output field is averaged over time interval.
428  ! </DATA>
429  ! <DATA NAME="time_rms" TYPE="LOGICAL">
430  ! .TRUE. if the output field is the rms. In this case, time_average will also be true.
431  ! </DATA>
432  ! <DATA NAME="time_ops" TYPE="LOGICAL">
433  ! .TRUE. if any of time_min, time_max, time_rms, or time_average is true
434  ! </DATA>
435  ! <DATA NAME="pack" TYPE="INTEGER">
436  ! </DATA>
437  ! <DATA NAME="pow_value" TYPE="INTEGER">
438  ! Power to use When calculating the mean_pow(n)
439  ! </DATA>
440  ! <DATA NAME="time_method" TYPE="CHARACTER(len=50)">
441  ! Time method field from the input file
442  ! </DATA>
443  ! <DATA NAME="buffer" TYPE="REAL, _ALLOCATABLE, DIMENSION(:,:,:,:)" DEFAULT="_NULL">
444  ! Coordinates of buffer are (x, y, z, time-of-day)
445  ! </DATA>
446  ! <DATA NAME="counter" TYPE="REAL, _ALLOCATABLE, DIMENSION(:,:,:,:)" DEFAULT="_NULL">
447  ! Coordinates of buffer are (x, y, z, time-of-day)
448  ! </DATA>
449  ! <DATA NAME="count_0d" TYPE="REAL, _ALLOCATABLE, DIMENSION(:)">
450  ! </DATA>
451  ! <DATA NAME="num_elements" TYPE="REAL, _ALLOCATABLE, DIMENSION(:)">
452  ! </DATA>
453  ! <DATA NAME="last_output" TYPE="TYPE(time_type)">
454  ! </DATA>
455  ! <DATA NAME="next_output" TYPE="TYPE(time_type)">
456  ! </DATA>
457  ! <DATA NAME="next_next_output" TYPE="TYPE(time_type)">
458  ! </DATA>
459  ! <DATA NAME="f_type" TYPE="TYPE(diag_fieldtype)">
460  ! </DATA>
461  ! <DATA NAME="axes" TYPE="INTEGER, DIMENSION(4)">
462  ! </DATA>
463  ! <DATA NAME="num_axes" TYPE="INTEGER">
464  ! </DATA>
465  ! <DATA NAME="total_elements" TYPE="INTEGER">
466  ! </DATA>
467  ! <DATA NAME="region_elements" TYPE="INTEGER">
468  ! </DATA>
469  ! <DATA NAME="n_diurnal_samples" TYPE="INTEGER">
470  ! Number of diurnal sample intervals, 1 or more
471  ! </DATA>
472  ! <DATA NAME="output_grid" TYPE="TYPE(diag_grid)">
473  ! </DATA>
474  ! <DATA NAME="local_output" TYPE="LOGICAL">
475  ! .TRUE. if this field is written out on a region and not globally.
476  ! </DATA>
477  ! <DATA NAME="need_compute" TYPE="LOGICAL">
478  ! .TRUE. if this field is written out on a region, not global.
479  ! </DATA>
480  ! <DATA NAME="phys_window" TYPE="LOGICAL">
481  ! </DATA>
482  ! <DATA NAME="written_once" TYPE="LOGICAL">
483  ! </DATA>
484  ! <DATA NAME="reduced_k_range" TYPE="LOGICAL">
485  ! .TRUE. if dealing with vertical sub-level output.
486  ! </DATA>
487  ! <DATA NAME="imin" TYPE="INTEGER">
488  ! </DATA>
489  ! <DATA NAME="imax" TYPE="INTEGER">
490  ! </DATA>
491  ! <DATA NAME="jmin" TYPE="INTEGER">
492  ! </DATA>
493  ! <DATA NAME="jmax" TYPE="INTEGER">
494  ! </DATA>
495  ! <DATA NAME="kmin" TYPE="INTEGER">
496  ! </DATA>
497  ! <DATA NAME="kmax" TYPE="INTEGER">
498  ! </DATA>
499  ! <DATA NAME="Time_of_prev_field_data" TYPE="TYPE(time_type)">
500  ! </DATA>
501  ! <DATA NAME="attributes" TYPE="TYPE(diag_atttype), DIMENSION(:)">
502  ! Array to hold user definable attributes
503  ! </DATA>
504  ! <DATA NAME="num_attributes" TYPE="INTEGER" >
505  ! Number of defined attibutes
506  ! </DATA>
508  INTEGER :: input_field ! index of the corresponding input field in the table
509  INTEGER :: output_file ! index of the output file in the table
510  CHARACTER(len=128) :: output_name
511  LOGICAL :: time_average ! true if the output field is averaged over time interval
512  LOGICAL :: time_rms ! true if the output field is the rms. If true, then time_average is also
513  LOGICAL :: static
514  LOGICAL :: time_max ! true if the output field is maximum over time interval
515  LOGICAL :: time_min ! true if the output field is minimum over time interval
516  LOGICAL :: time_sum ! true if the output field is summed over time interval
517  LOGICAL :: time_ops ! true if any of time_min, time_max, time_rms or time_average is true
518  INTEGER :: pack
519  INTEGER :: pow_value !< Power value to use for mean_pow(n) calculations
520  CHARACTER(len=50) :: time_method ! time method field from the input file
521  ! coordinates of the buffer and counter are (x, y, z, time-of-day)
522  REAL, _allocatable, DIMENSION(:,:,:,:) :: buffer _null
523  REAL, _allocatable, DIMENSION(:,:,:,:) :: counter _null
524  ! the following two counters are used in time-averaging for some
525  ! combination of the field options. Their size is the length of the
526  ! diurnal axis; the counters must be tracked separately for each of
527  ! the diurnal interval, because the number of time slices accumulated
528  ! in each can be different, depending on time step and the number of
529  ! diurnal samples.
530  REAL, _allocatable, DIMENSION(:) :: count_0d
531  INTEGER, _allocatable, dimension(:) :: num_elements
532 
533  TYPE(time_type) :: last_output, next_output, next_next_output
534  TYPE(diag_fieldtype) :: f_type
535  INTEGER, DIMENSION(4) :: axes
536  INTEGER :: num_axes, total_elements, region_elements
537  INTEGER :: n_diurnal_samples ! number of diurnal sample intervals, 1 or more
538  TYPE(diag_grid) :: output_grid
539  LOGICAL :: local_output, need_compute, phys_window, written_once
540  LOGICAL :: reduced_k_range
541  INTEGER :: imin, imax, jmin, jmax, kmin, kmax
542  TYPE(time_type) :: time_of_prev_field_data
543  TYPE(diag_atttype), _allocatable, dimension(:) :: attributes _null
544  INTEGER :: num_attributes
545 !----------
546 !ug support
547  logical :: reduced_k_unstruct = .false.
548 !----------
549  END TYPE output_field_type
550  ! </TYPE>
551 
552  ! <TYPE NAME="diag_axis_type">
553  ! <DESCRIPTION>
554  ! Type to hold the diagnostic axis description.
555  ! </DESCRIPTION>
556  ! <DATA NAME="name" TYPE="CHARACTER(len=128)">
557  ! </DATA>
558  ! <DATA NAME="units" TYPE="CHARACTER(len=256)">
559  ! </DATA>
560  ! <DATA NAME="long_name" TYPE="CHARACTER(len=256)">
561  ! </DATA>
562  ! <DATA NAME="cart_name" TYPE="CHARACTER(len=1)">
563  ! </DATA>
564  ! <DATA NAME="data" TYPE="REAL, DIMENSION(:), POINTER">
565  ! </DATA>
566  ! <DATA NAME="start" TYPE="INTEGER, DIMENSION(MAX_SUBAXES)">
567  ! </DATA>
568  ! <DATA NAME="end" TYPE="INTEGER, DIMENSION(MAX_SUBAXES)">
569  ! </DATA>
570  ! <DATA NAME="subaxis_name" TYPE="CHARACTER(len=128), DIMENSION(MAX_SUBAXES)">
571  ! </DATA>
572  ! <DATA NAME="length" TYPE="INTEGER">
573  ! </DATA>
574  ! <DATA NAME="direction" TYPE="INTEGER">
575  ! </DATA>
576  ! <DATA NAME="edges" TYPE="INTEGER">
577  ! </DATA>
578  ! <DATA NAME="set" TYPE="INTEGER">
579  ! </DATA>
580  ! <DATA NAME="shift" TYPE="INTEGER">
581  ! </DATA>
582  ! <DATA NAME="Domain" TYPE="TYPE(domain1d)">
583  ! </DATA>
584  ! <DATA NAME="Domain2" TYPE="TYPE(domain2d)">
585  ! </DATA>
586  ! <DATA NAME="subaxis_domain2" TYPE="TYPE(domain2d), dimension(MAX_SUBAXES)">
587  ! </DATA>
588  ! <DATA NAME="aux" TYPE="CHARACTER(len=128)">
589  ! </DATA>
590  ! <DATA NAME="req" TYPE="CHARACTER(len=128)">
591  ! </DATA>
592  ! <DATA NAME="tile_count" TYPE="INTEGER">
593  ! </DATA>
594  ! <DATA NAME="attributes" TYPE="TYPE(diag_atttype), DIMENSION(:)">
595  ! Array to hold user definable attributes
596  ! </DATA>
597  ! <DATA NAME="num_attributes" TYPE="INTEGER" >
598  ! Number of defined attibutes
599  ! </DATA>
601  CHARACTER(len=128) :: name
602  CHARACTER(len=256) :: units, long_name
603  CHARACTER(len=1) :: cart_name
604  REAL, DIMENSION(:), POINTER :: data
605  INTEGER, DIMENSION(MAX_SUBAXES) :: start
606  INTEGER, DIMENSION(MAX_SUBAXES) :: end
607  CHARACTER(len=128), DIMENSION(MAX_SUBAXES) :: subaxis_name
608  INTEGER :: length, direction, edges, set, shift
609  TYPE(domain1d) :: domain
610  TYPE(domain2d) :: domain2
611  TYPE(domain2d), dimension(MAX_SUBAXES) :: subaxis_domain2
613  CHARACTER(len=128) :: aux, req
614  INTEGER :: tile_count
615  TYPE(diag_atttype), _allocatable, dimension(:) :: attributes _null
616  INTEGER :: num_attributes
617  END TYPE diag_axis_type
618  ! </TYPE>
619 
620  ! <TYPE NAME="diag_global_att_type">
621  ! <DESCRIPTION>
622  ! </DESCRIPTION>
623  ! <DATA NAME="grid_type" TYPE="CHARACTER(len=128)" DEFAULT="regular">
624  ! </DATA>
625  ! <DATA NAME="tile_name" TYPE="CHARACTER(len=128)" DEFAULT="N/A">
626  ! </DATA>
628  CHARACTER(len=128) :: grid_type='regular'
629  CHARACTER(len=128) :: tile_name='N/A'
630  END TYPE diag_global_att_type
631  ! </TYPE>
632 
633 ! Include variable "version" to be written to log file.
634 #include<file_version.h>
635 
636  ! <!-- Other public variables -->
637  ! <DATA NAME="num_files" TYPE="INTEGER" DEFAULT="0">
638  ! Number of output files currenly in use by the diag_manager.
639  ! </DATA>
640  ! <DATA NAME="num_input_fields" TYPE="INTEGER" DEFAULT="0">
641  ! Number of input fields in use.
642  ! </DATA>
643  ! <DATA NAME="num_output_fields" TYPE="INTEGER" DEFAULT="0">
644  ! Number of output fields in use.
645  ! </DATA>
646  ! <DATA NAME="null_axis_id" TYPE="INTEGER" />
647  INTEGER :: num_files = 0
648  INTEGER :: num_input_fields = 0
649  INTEGER :: num_output_fields = 0
650  INTEGER :: null_axis_id
651 
652  ! <!-- Namelist variables -->
653  ! <DATA NAME="append_pelist_name" TYPE="LOGICAL" DEFAULT=".FALSE." />
654  ! <DATA NAME="mix_snapshot_average_fields" TYPE="LOGICAL" DEFAULT=".FALSE." />
655  ! <DATA NAME="max_files" TYPE="INTEGER" DEFAULT="31">
656  ! Maximum number of output files allowed. Increase via the diag_manager_nml namelist.
657  ! </DATA>
658  ! <DATA NAME="max_output_fields" TYPE="INTEGER" DEFAULT="300">
659  ! Maximum number of output fields. Increase via the diag_manager_nml namelist.
660  ! </DATA>
661  ! <DATA NAME="max_input_fields" TYPE="INTEGER" DEFAULT="600">
662  ! Maximum number of input fields. Increase via the diag_manager_nml namelist.
663  ! </DATA>
664  ! <DATA NAME="max_out_per_in_field" TYPE="INTEGER" DEFAULT="150">
665  ! Maximum number of output_fields per input_field.
666  ! </DATA>
667  ! <DATA NAME="max_axes" TYPE="INTEGER" DEFAULT="60">
668  ! Maximum number of independent axes.
669  ! </DATA>
670  ! <DATA NAME="do_diag_field_log" TYPE="LOGICAL" DEFAULT=".FALSE." />
671  ! <DATA NAME="write_bytes_in_file" TYPE="LOGICAL" DEFAULT=".FALSE." />
672  ! <DATA NAME="flush_nc_files" TYPE="LOGICAL" DEFAULT=".FALSE.">
673  ! Indicate if diag_manager should force the flush of the netCDF diagnostic
674  ! files to disk Note: changing this to .TRUE. can greatly reduce the model
675  ! performance as at each write to the netCDF diagnostic file, the model must
676  ! wait until the flush to disk finishes.
677  ! </DATA>
678  ! <DATA NAME="debug_diag_manager" TYPE="LOGICAL" DEFAULT=".FALSE." />
679  ! <DATA NAME="max_num_axis_sets" TYPE="INTEGER" DEFAULT="25" />
680  ! <DATA NAME="use_cmor" TYPE="LOGICAL" DEFAULT=".FALSE.">
681  ! Indicates if we should overwrite the MISSING_VALUE to use the CMOR missing value.
682  ! </DATA>
683  ! <DATA NAME="issue_oor_warnings" TYPE="LOGICAL" DEFAULT=".TRUE.">
684  ! Issue warnings if the output field has values outside the given
685  ! range for a variable.
686  ! </DATA>
687  ! <DATA NAME="oor_warnings_fatal" TYPE="LOGICAL" DEFAULT=".FALSE.">
688  ! Cause a fatal error if the output field has a value outside the
689  ! given range for a variable.
690  ! </DATA>
691  ! <DATA NAME="max_field_attributes" TYPE="INTEGER" DEFAULT="4">
692  ! Maximum number of user definable attributes per field.
693  ! </DATA>
694  ! <DATA NAME="max_file_attributes" TYPE="INTEGER" DEFAULT="2">
695  ! Maximum number of user definable global attributes per file.
696  ! </DATA>
697  ! <DATA NAME="max_axis_attributes" TYPE="INTEGER" DEFAULT="2">
698  ! Maximum number of user definable attributes per axis.
699  ! </DATA>
700  ! <DATA NAME="prepend_date" TYPE="LOGICAL" DEFAULT=".TRUE.">
701  ! Indicates if the file start date will be prepended to the file name. <TT>.TRUE.</TT> is
702  ! only supported if the diag_manager_init routine is called with the optional time_init parameter.
703  ! This was usually done by FRE after the model run.
704  ! </DATA>
705  ! <DATA NAME="region_out_use_alt_value" TYPE="LOGICAL" DEFAULT=".TRUE.">
706  ! Will determine which value to use when checking a regional output if the region is the full axis or a sub-axis.
707  ! The values are defined as <TT>GLO_REG_VAL</TT> (-999) and <TT>GLO_REG_VAL_ALT</TT> (-1) in <TT>diag_data_mod</TT>.
708  ! </DATA>
709  LOGICAL :: append_pelist_name = .false.
710  LOGICAL :: mix_snapshot_average_fields =.false.
711  INTEGER :: max_files = 31 !< Maximum number of output files allowed. Increase via diag_manager_nml.
712  INTEGER :: max_output_fields = 300 !< Maximum number of output fields. Increase via diag_manager_nml.
713  INTEGER :: max_input_fields = 600 !< Maximum number of input fields. Increase via diag_manager_nml.
714  INTEGER :: max_out_per_in_field = 150 !< Maximum number of output_fields per input_field. Increase via diag_manager_nml.
715  INTEGER :: max_axes = 60 !< Maximum number of independent axes.
716  LOGICAL :: do_diag_field_log = .false.
717  LOGICAL :: write_bytes_in_file = .false.
718  LOGICAL :: debug_diag_manager = .false.
719  LOGICAL :: flush_nc_files = .false. !< Control if diag_manager will force a
720  !! flush of the netCDF file on each write.
721  !! Note: changing this to .TRUE. can greatly
722  !! reduce the performance of the model, as the
723  !! model must wait until the flush to disk has
724  !! completed.
725  INTEGER :: max_num_axis_sets = 25
726  LOGICAL :: use_cmor = .false.
727  LOGICAL :: issue_oor_warnings = .true.
728  LOGICAL :: oor_warnings_fatal = .false.
729  LOGICAL :: region_out_use_alt_value = .true.
730 
731  INTEGER :: max_field_attributes = 4 !< Maximum number of user definable attributes per field. Liptak: Changed from 2 to 4 20170718
732  INTEGER :: max_file_attributes = 2 !< Maximum number of user definable global attributes per file.
733  INTEGER :: max_axis_attributes = 4 !< Maximum number of user definable attributes per axis.
734  LOGICAL :: prepend_date = .true. !< Should the history file have the start date prepended to the file name
735  LOGICAL :: write_manifest_file = .false. !< Indicates if the manifest file should be written. If writing many
736  !! regional files, then the termination time may increase causing job to time out.
737 
738  ! <!-- netCDF variable -->
739  ! <DATA NAME="FILL_VALUE" TYPE="REAL" DEFAULT="NF90_FILL_REAL">
740  ! Fill value used. Value will be <TT>NF90_FILL_REAL</TT> if using the
741  ! netCDF module, otherwise will be 9.9692099683868690e+36.
742  ! </DATA>
743 #ifdef use_netCDF
744  REAL :: fill_value = nf_fill_real ! from file /usr/local/include/netcdf.inc
745 #else
746  REAL :: fill_value = 9.9692099683868690e+36
747 #endif
748 
749  INTEGER :: pack_size = 1 ! 1 for double and 2 for float
750 
751  ! <!-- REAL public variables -->
752  ! <DATA NAME="EMPTY" TYPE="REAL" DEFAULT="0.0" />
753  ! <DATA NAME="MAX_VALUE" TYPE="REAL" />
754  ! <DATA NAME="MIN_VALUE" TYPE="REAL" />
755  REAL :: empty = 0.0
757 
758  ! <!-- Global data for all files -->
759  ! <DATA NAME="diag_init_time" TYPE="TYPE(time_type)">
760  ! Time diag_manager_init called. If init_time not included in
761  ! diag_manager_init call, then same as base_time
762  ! </DATA>
763  ! <DATA NAME="base_time" TYPE="TYPE(time_type)" />
764  ! <DATA NAME="base_year" TYPE="INTEGER" />
765  ! <DATA NAME="base_month" TYPE="INTEGER" />
766  ! <DATA NAME="base_day" TYPE="INTEGER" />
767  ! <DATA NAME="base_hour" TYPE="INTEGER" />
768  ! <DATA NAME="base_minute" TYPE="INTEGER" />
769  ! <DATA NAME="base_second" TYPE="INTEGER" />
770  ! <DATA NAME="global_descriptor" TYPE="CHARACTER(len=256)" />
774  CHARACTER(len = 256):: global_descriptor
775 
776  ! <!-- ALLOCATABLE variables -->
777  ! <DATA NAME="files" TYPE="TYPE(file_type), DIMENSION(:), SAVE, ALLOCATABLE" />
778  ! <DATA NAME="input_fields" TYPE="TYPE(input_field_type), DIMENSION(:), ALLOCATABLE" />
779  ! <DATA NAME="output_fields" TYPE="TYPE(output_field_type), DIMENSION(:), ALLOCATABLE" />
780  TYPE(file_type), SAVE, ALLOCATABLE :: files(:)
781  TYPE(input_field_type), ALLOCATABLE :: input_fields(:)
782  TYPE(output_field_type), ALLOCATABLE :: output_fields(:)
783 
784  ! <!-- Even More Variables -->
785  ! <DATA NAME="time_zero" TYPE="TYPE(time_type)" />
786  ! <DATA NAME="first_send_data_call" TYPE="LOGICAL" DEFAULT=".TRUE." />
787  ! <DATA NAME="module_is_initialized" TYPE="LOGICAL" DEFAULT=".FALSE.">
788  ! Indicate if diag_manager has been initialized
789  ! </DATA>
790  ! <DATA NAME="diag_log_unit" TYPE="INTEGER" />
791  ! <DATA NAME="time_unit_list" TYPE="CHARACTER(len=10), DIMENSION(6)"
792  ! DEFAULT="(/'seconds ', 'minutes ', 'hours ', 'days ', 'months ', 'years '/)" />
793  ! <DATA NAME="pelist_name" TYPE="CHARACTER(len=32)" />
795  LOGICAL :: first_send_data_call = .true.
796  LOGICAL :: module_is_initialized = .false.
797  INTEGER :: diag_log_unit
798  CHARACTER(len=10), DIMENSION(6) :: time_unit_list = (/'seconds ', 'minutes ',&
799  & 'hours ', 'days ', 'months ', 'years '/)
800  character(len=32) :: pelist_name
801  INTEGER :: oor_warning = warning
802 
803 CONTAINS
804 
805  ! <SUBROUTINE NAME="diag_data_init">
806  ! <OVERVIEW>
807  ! Write the version number of this file
808  ! </OVERVIEW>
809  ! <TEMPLATE>
810  ! SUBROUTINE diag_util_init
811  ! </TEMPLATE>
812  ! <DESCRIPTION>
813  ! Write the version number of this file to the log file.
814  ! </DESCRIPTION>
815  SUBROUTINE diag_data_init()
817  RETURN
818  END IF
819 
820  ! Write version number out to log file
821  call write_version_number("DIAG_DATA_MOD", version)
822  END SUBROUTINE diag_data_init
823  ! </SUBROUTINE>
824 END MODULE diag_data_mod
Definition: fms.F90:20
real, parameter cmor_missing_value
CMOR standard missing value.
Definition: diag_data.F90:110
logical write_manifest_file
Indicates if the manifest file should be written. If writing many regional files, then the terminatio...
Definition: diag_data.F90:735
integer, parameter every_time
Definition: diag_data.F90:103
character(len=256) global_descriptor
Definition: diag_data.F90:774
integer base_year
Definition: diag_data.F90:773
integer num_output_fields
Definition: diag_data.F90:649
integer, parameter diag_seconds
Definition: diag_data.F90:105
subroutine diag_data_init()
Definition: diag_data.F90:816
integer max_field_attributes
Maximum number of user definable attributes per field. Liptak: Changed from 2 to 4 20170718...
Definition: diag_data.F90:731
integer base_month
Definition: diag_data.F90:773
integer num_files
Definition: diag_data.F90:647
integer max_axis_attributes
Maximum number of user definable attributes per axis.
Definition: diag_data.F90:733
integer max_out_per_in_field
Maximum number of output_fields per input_field. Increase via diag_manager_nml.
Definition: diag_data.F90:714
character(len=10), dimension(6) time_unit_list
Definition: diag_data.F90:798
type(time_type) base_time
Definition: diag_data.F90:772
character(len=32) pelist_name
Definition: diag_data.F90:800
integer, parameter glo_reg_val
Definition: diag_data.F90:108
integer base_day
Definition: diag_data.F90:773
integer, parameter end_of_run
Definition: diag_data.F90:104
integer max_file_attributes
Maximum number of user definable global attributes per file.
Definition: diag_data.F90:732
integer, parameter diag_field_not_found
Definition: diag_data.F90:111
logical flush_nc_files
Control if diag_manager will force a flush of the netCDF file on each write. Note: changing this to ...
Definition: diag_data.F90:719
type(output_field_type), dimension(:), allocatable output_fields
Definition: diag_data.F90:782
logical write_bytes_in_file
Definition: diag_data.F90:717
integer base_second
Definition: diag_data.F90:773
integer, parameter diag_ocean
Definition: diag_data.F90:99
type(time_type) diag_init_time
Definition: diag_data.F90:771
type(file_type), dimension(:), allocatable, save files
Definition: diag_data.F90:780
integer, parameter very_large_axis_length
Definition: diag_data.F90:102
logical append_pelist_name
Definition: diag_data.F90:709
integer, parameter diag_hours
Definition: diag_data.F90:105
integer max_num_axis_sets
Definition: diag_data.F90:725
integer, parameter glo_reg_val_alt
Definition: diag_data.F90:109
logical oor_warnings_fatal
Definition: diag_data.F90:728
logical use_cmor
Definition: diag_data.F90:726
integer null_axis_id
Definition: diag_data.F90:650
integer max_axes
Maximum number of independent axes.
Definition: diag_data.F90:715
type(input_field_type), dimension(:), allocatable input_fields
Definition: diag_data.F90:781
integer, parameter diag_minutes
Definition: diag_data.F90:105
integer, parameter max_fields_per_file
Maximum number of fields per file.
Definition: diag_data.F90:97
integer oor_warning
Definition: diag_data.F90:801
logical module_is_initialized
Definition: diag_data.F90:796
integer max_files
Maximum number of output files allowed. Increase via diag_manager_nml.
Definition: diag_data.F90:711
integer max_output_fields
Maximum number of output fields. Increase via diag_manager_nml.
Definition: diag_data.F90:712
integer, parameter diag_years
Definition: diag_data.F90:106
integer pack_size
Definition: diag_data.F90:749
integer num_input_fields
Definition: diag_data.F90:648
integer, parameter max_subaxes
Definition: diag_data.F90:107
integer, parameter diag_other
Definition: diag_data.F90:98
************************************************************************GNU Lesser General Public License **This file is part of the GFDL Flexible Modeling System(FMS). ! *! *FMS is free software without even the implied warranty of MERCHANTABILITY or *FITNESS FOR A PARTICULAR PURPOSE See the GNU General Public License *for more details **You should have received a copy of the GNU Lesser General Public *License along with FMS If see< http:! ***********************************************************************subroutine READ_RECORD_CORE_(unit, field, nwords, data, start, axsiz) integer, intent(in) ::unit type(fieldtype), intent(in) ::field integer, intent(in) ::nwords MPP_TYPE_, intent(inout) ::data(nwords) integer, intent(in) ::start(:), axsiz(:) integer(SHORT_KIND) ::i2vals(nwords)!rab used in conjunction with transfer intrinsic to determine size of a variable integer(KIND=1) ::one_byte(8) integer ::word_sz!#ifdef __sgi integer(INT_KIND) ::ivals(nwords) real(FLOAT_KIND) ::rvals(nwords)!#else! integer ::ivals(nwords)! real ::rvals(nwords)!#endif real(DOUBLE_KIND) ::r8vals(nwords) pointer(ptr1, i2vals) pointer(ptr2, ivals) pointer(ptr3, rvals) pointer(ptr4, r8vals) if(mpp_io_stack_size< nwords) call mpp_io_set_stack_size(nwords) call mpp_error(FATAL, 'MPP_READ currently requires use_netCDF option') end subroutine READ_RECORD_CORE_ subroutine READ_RECORD_(unit, field, nwords, data, time_level, domain, position, tile_count, start_in, axsiz_in)!routine that is finally called by all mpp_read routines to perform the read!a non-netCDF record contains:! field ID! a set of 4 coordinates(is:ie, js:je) giving the data subdomain! a timelevel and a timestamp(=NULLTIME if field is static)! 3D real data(stored as 1D)!if you are using direct access I/O, the RECL argument to OPEN must be large enough for the above!in a global direct access file, record position on PE is given by %record.!Treatment of timestamp:! We assume that static fields have been passed without a timestamp.! Here that is converted into a timestamp of NULLTIME.! For non-netCDF fields, field is treated no differently, but is written! with a timestamp of NULLTIME. There is no check in the code to prevent! the user from repeatedly writing a static field. integer, intent(in) ::unit, nwords type(fieldtype), intent(in) ::field MPP_TYPE_, intent(inout) ::data(nwords) integer, intent(in), optional ::time_level type(domain2D), intent(in), optional ::domain integer, intent(in), optional ::position, tile_count integer, intent(in), optional ::start_in(:), axsiz_in(:) integer, dimension(size(field%axes(:))) ::start, axsiz integer ::tlevel !, subdomain(4) integer ::i, error, is, ie, js, je, isg, ieg, jsg, jeg type(domain2d), pointer ::io_domain=> tlevel if(PRESENT(start_in) .AND. PRESENT(axsiz_in)) then if(size(start(! the data domain and compute domain must refer to the subdomain being passed ! In this ! since that attempts to gather all data on PE size(field%axes(:)) axsiz(i)
logical first_send_data_call
Definition: diag_data.F90:795
integer base_hour
Definition: diag_data.F90:773
logical do_diag_field_log
Definition: diag_data.F90:716
logical mix_snapshot_average_fields
Definition: diag_data.F90:710
logical prepend_date
Should the history file have the start date prepended to the file name.
Definition: diag_data.F90:734
integer diag_log_unit
Definition: diag_data.F90:797
integer max_input_fields
Maximum number of input fields. Increase via diag_manager_nml.
Definition: diag_data.F90:713
type(time_type) time_zero
Definition: diag_data.F90:794
logical region_out_use_alt_value
Definition: diag_data.F90:729
integer, parameter diag_days
Definition: diag_data.F90:106
integer, parameter diag_all
Definition: diag_data.F90:100
logical issue_oor_warnings
Definition: diag_data.F90:727
integer, parameter very_large_file_freq
Definition: diag_data.F90:101
logical debug_diag_manager
Definition: diag_data.F90:718
integer, parameter diag_months
Definition: diag_data.F90:106
integer base_minute
Definition: diag_data.F90:773