Merge remote-tracking branch 'origin/release-v4.5'
[WRF.git] / tools / data.h
blob081ece8616b60f8e6638d96ffab2c73523dd4aa2
1 #ifndef DATA_H
2 #include "../inc/streams.h"
3 #include "registry.h"
5 typedef struct node_struct {
7 int node_kind ;
8 int type_type ;
9 char name[NAMELEN] ;
10 struct node_struct * fields ;
11 struct node_struct * type ;
12 int ndims ;
13 struct node_struct * dims[MAXDIMS] ;
14 int proc_orient ; /* ALL_[ZXY]_ON_PROC which dimension is all on processor */
15 int ntl ;
16 int stag_x ;
17 int stag_y ;
18 int stag_z ;
19 int nmm_v_grid, mp_var, full_feedback, no_feedback ;
20 int subject_to_communication ;
21 int boundary_array ;
22 int boundary_array_4d ;
23 char use[NAMELEN] ;
24 char dname[NAMELEN] ;
25 char descrip[NAMELEN] ;
26 char units[NAMELEN] ;
28 /* Fields for 4D scalar arrays */
29 int scalar_array_member ;
30 int has_scalar_array_tendencies ;
31 struct node_struct * members ;
33 /* I/O flags */
34 unsigned int io_mask[ IO_MASK_SIZE ] ;
35 unsigned int nest_mask ;
36 int restart ;
37 int boundary ;
38 int namelist ;
39 char namelistsection[NAMELEN] ;
40 struct node_struct * next ;
41 struct node_struct * next4d ;
43 char force_aux_fields[2048] ;
44 char force_fcn_name[2048] ;
45 char interpd_aux_fields[2048] ;
46 char interpd_fcn_name[2048] ;
47 char interpu_aux_fields[2048] ;
48 char interpu_fcn_name[2048] ;
49 char smoothu_fcn_name[2048] ;
50 char smoothu_aux_fields[2048] ;
52 /* fields used by rconfig nodes */
53 char nentries[NAMELEN] ;
54 char howset[NAMELEN] ;
55 char dflt[NAMELEN] ;
57 /* fields used by Dim nodes */
59 char dim_name[32] ;
60 char dim_data_name[NAMELEN] ;
61 int coord_axis ; /* X, Y, Z, C */
62 /* DOMAIN_STANDARD, NAMELIST, CONSTANT */
63 int len_defined_how ;
64 char assoc_nl_var_s[NAMELEN] ; /* for NAMELIST */
65 char assoc_nl_var_e[NAMELEN] ; /* for NAMELIST */
66 int coord_start ; /* for CONSTANT */
67 int coord_end ; /* for CONSTANT */
68 int dim_order ; /* order that dimensions are specified
69 in framework */
70 int subgrid ; /* 1=subgrid dimension */
72 /* fields used by Package nodes */
73 char pkg_assoc[NAMELEN] ;
74 char pkg_statevars[NAMELEN] ;
75 char pkg_4dscalars[NAMELEN_LONG] ;
77 /* fields used by Comm (halo, period, xpose) nodes */
78 char comm_define[4*8192] ;
80 /* marker */
81 int mark ;
83 } node_t ;
85 #ifndef DEFINE_GLOBALS
86 # define EXTERN extern
87 #else
88 # define EXTERN
89 #endif
91 EXTERN int sw_deref_kludge ;
92 EXTERN int sw_io_deref_kludge ;
93 EXTERN int sw_3dvar_iry_kludge ;
94 EXTERN int sw_distrib_io_layer ;
95 EXTERN int sw_limit_args ;
96 EXTERN int sw_dm_parallel ;
97 EXTERN int sw_move ;
98 EXTERN int sw_all_x_staggered ;
99 EXTERN int sw_all_y_staggered ;
100 EXTERN int sw_dm_serial_in_only ;
101 EXTERN int sw_fort_kludge ;
102 EXTERN char sw_commpath[NAMELEN] ;
103 EXTERN int sw_new_bdys ; /* 20070207 JM support decomposed boundary arrays */
104 EXTERN int sw_unidir_shift_halo ; /* 20100210 JM assume that halo to shift is same in both directions and only gen one of them */
105 EXTERN int sw_new_with_old_bdys ; /* 20070207 JM for debugging interim phase, new comms w/ old data structs */
107 EXTERN node_t * Type ;
108 EXTERN node_t * Dim ;
109 EXTERN node_t * Packages ;
110 EXTERN node_t * Halos ;
111 #if ( WRFPLUS == 1 )
112 EXTERN node_t * Halos_nta ;
113 #endif
114 EXTERN node_t * Periods ;
115 EXTERN node_t * Xposes ;
116 EXTERN node_t * FourD ;
117 EXTERN node_t * Swaps ;
118 EXTERN node_t * Cycles ;
120 EXTERN node_t Domain ;
122 EXTERN char t1[NAMELEN], t2[NAMELEN], t3[NAMELEN], t4[NAMELEN], t5[NAMELEN], t6[NAMELEN] ;
123 EXTERN char thiscom[4*NAMELEN] ;
124 EXTERN int model_order[3] ;
126 EXTERN int max_time_level ; /* Maximum number of time levels of any state variable */
128 #define P_XSB 1
129 #define P_XEB 2
130 #define P_YSB 3
131 #define P_YEB 4
134 #define DATA_H
135 #endif