13
13
! ! @param[in] j_mdl j dimensions of tile.
14
14
! ! @param[in] tile Tile number.
15
15
! ! @author George Gayno @date 2018
16
- subroutine output2 (data_one_tile , lat_one_tile , lon_one_tile , i_mdl , j_mdl , &
16
+ subroutine output2 (data_one_tile , dom_cat_one_tile , lat_one_tile , lon_one_tile , i_mdl , j_mdl , &
17
17
num_categories , tile )
18
18
19
19
use mpi
@@ -30,16 +30,18 @@ subroutine output2(data_one_tile, lat_one_tile, lon_one_tile, i_mdl, j_mdl, &
30
30
integer , intent (in ) :: i_mdl, j_mdl, tile, num_categories
31
31
32
32
real (esmf_kind_r4 ), intent (in ) :: data_one_tile(i_mdl,j_mdl,num_categories)
33
+ real (esmf_kind_r4 ), intent (in ) :: dom_cat_one_tile(i_mdl,j_mdl)
33
34
real (esmf_kind_r4 ) :: lat_one_tile(i_mdl,j_mdl)
34
35
real (esmf_kind_r4 ), intent (in ) :: lon_one_tile(i_mdl,j_mdl)
35
36
real (esmf_kind_r4 ) :: sum_one_tile(i_mdl,j_mdl)
36
-
37
+
38
+ character (len= 200 ) :: field_names_pct
37
39
character (len= 200 ) :: out_file
38
40
character (len= 200 ) :: out_file_with_halo
39
41
40
42
integer :: error
41
43
integer :: field_idx
42
- integer :: dim_x, dim_y, dim_z, id_data
44
+ integer :: dim_x, dim_y, dim_z, id_data_pct, id_data_dom_cat
43
45
integer :: dim_time, id_times, ierr
44
46
integer :: header_buffer_val = 16384
45
47
integer :: i_out, j_out, id_lat, id_lon, id_sum
@@ -113,14 +115,25 @@ subroutine output2(data_one_tile, lat_one_tile, lon_one_tile, i_mdl, j_mdl, &
113
115
error = nf90_put_att(ncid(tile), id_lon, " units" , " degrees_east" )
114
116
call netcdf_err(error, ' DEFINING GEOLON UNIT ATTRIBUTE' )
115
117
116
- error = nf90_def_var(ncid(tile), trim (field_names(1 )), NF90_FLOAT, (/ dim_x,dim_y,dim_z,dim_time/ ), id_data)
118
+ field_names_pct = trim (field_names(1 )) // " _pct"
119
+ error = nf90_def_var(ncid(tile), trim (field_names_pct), NF90_FLOAT, (/ dim_x,dim_y,dim_z,dim_time/ ), id_data_pct)
120
+ call netcdf_err(error, ' DEFINING FIELD' )
121
+ error = nf90_put_att(ncid(tile), id_data_pct, " units" , " percent coverage each category" )
122
+ call netcdf_err(error, ' DEFINING FIELD ATTRIBUTE' )
123
+ error = nf90_put_att(ncid(tile), id_data_pct, " missing_value" , missing)
124
+ call netcdf_err(error, ' DEFINING FIELD ATTRIBUTE' )
125
+ error = nf90_put_att(ncid(tile), id_data_pct, " coordinates" , " geolon geolat" )
126
+ call netcdf_err(error, ' DEFINING COORD ATTRIBUTE' )
127
+
128
+ error = nf90_def_var(ncid(tile), trim (field_names(1 )), NF90_FLOAT, (/ dim_x,dim_y,dim_time/ ), id_data_dom_cat)
117
129
call netcdf_err(error, ' DEFINING FIELD' )
118
- error = nf90_put_att(ncid(tile), id_data , " units" , " percent coverage each category" )
130
+ error = nf90_put_att(ncid(tile), id_data_dom_cat , " units" , " dominate category" )
119
131
call netcdf_err(error, ' DEFINING FIELD ATTRIBUTE' )
120
- error = nf90_put_att(ncid(tile), id_data , " missing_value" , missing)
132
+ error = nf90_put_att(ncid(tile), id_data_dom_cat , " missing_value" , missing)
121
133
call netcdf_err(error, ' DEFINING FIELD ATTRIBUTE' )
122
- error = nf90_put_att(ncid(tile), id_data , " coordinates" , " geolon geolat" )
134
+ error = nf90_put_att(ncid(tile), id_data_dom_cat , " coordinates" , " geolon geolat" )
123
135
call netcdf_err(error, ' DEFINING COORD ATTRIBUTE' )
136
+
124
137
error = nf90_def_var(ncid(tile), ' sum' , NF90_FLOAT, (/ dim_x,dim_y,dim_time/ ), id_sum)
125
138
call netcdf_err(error, ' DEFINING FIELD' )
126
139
@@ -139,12 +152,14 @@ subroutine output2(data_one_tile, lat_one_tile, lon_one_tile, i_mdl, j_mdl, &
139
152
call netcdf_err(error, ' IN NF90_PUT_VAR FOR GEOLON' )
140
153
141
154
print * ,' - WRITE DATA '
142
- error = nf90_inq_varid( ncid(tile), field_names(field_idx), id_data)
143
- call netcdf_err(error, ' IN NF90_INQ_VARID' )
144
- error = nf90_put_var( ncid(tile), id_data, data_one_tile(i_start:i_end,j_start:j_end,:), &
155
+ error = nf90_put_var( ncid(tile), id_data_pct, data_one_tile(i_start:i_end,j_start:j_end,:), &
145
156
start= (/ 1 ,1 ,1 ,1 / ), count= (/ i_out,j_out,num_categories,1 / ))
146
157
call netcdf_err(error, ' IN NF90_PUT_VAR' )
147
158
159
+ error = nf90_put_var( ncid(tile), id_data_dom_cat, dom_cat_one_tile(i_start:i_end,j_start:j_end), &
160
+ start= (/ 1 ,1 ,1 / ), count= (/ i_out,j_out,1 / ))
161
+ call netcdf_err(error, ' IN NF90_PUT_VAR' )
162
+
148
163
! Temporary output of sum of %.
149
164
sum_one_tile = sum (data_one_tile, dim= 3 )
150
165
error = nf90_put_var( ncid(tile), id_sum, sum_one_tile(i_start:i_end,j_start:j_end), &
@@ -192,13 +207,22 @@ subroutine output2(data_one_tile, lat_one_tile, lon_one_tile, i_mdl, j_mdl, &
192
207
error = nf90_put_att(ncid_with_halo, id_lon, " units" , " degrees_east" )
193
208
call netcdf_err(error, ' DEFINING GEOLON UNIT ATTRIBUTE' )
194
209
195
- error = nf90_def_var(ncid_with_halo, field_names( 1 ) , NF90_FLOAT, (/ dim_x,dim_y,dim_z,dim_time/ ), id_data )
210
+ error = nf90_def_var(ncid_with_halo, field_names_pct , NF90_FLOAT, (/ dim_x,dim_y,dim_z,dim_time/ ), id_data_pct )
196
211
call netcdf_err(error, ' DEFINING FIELD VARIABLE' )
197
- error = nf90_put_att(ncid_with_halo, id_data , " units" , " percent coverage each category" )
212
+ error = nf90_put_att(ncid_with_halo, id_data_pct , " units" , " percent coverage each category" )
198
213
call netcdf_err(error, ' DEFINING FIELD ATTRIBUTE' )
199
- error = nf90_put_att(ncid_with_halo, id_data , " missing_value" , missing)
214
+ error = nf90_put_att(ncid_with_halo, id_data_pct , " missing_value" , missing)
200
215
call netcdf_err(error, ' DEFINING FIELD ATTRIBUTE' )
201
- error = nf90_put_att(ncid_with_halo, id_data, " coordinates" , " geolon geolat" )
216
+ error = nf90_put_att(ncid_with_halo, id_data_pct, " coordinates" , " geolon geolat" )
217
+ call netcdf_err(error, ' DEFINING COORD ATTRIBUTE' )
218
+
219
+ error = nf90_def_var(ncid(tile), trim (field_names(1 )), NF90_FLOAT, (/ dim_x,dim_y,dim_time/ ), id_data_dom_cat)
220
+ call netcdf_err(error, ' DEFINING FIELD' )
221
+ error = nf90_put_att(ncid(tile), id_data_dom_cat, " units" , " dominate category" )
222
+ call netcdf_err(error, ' DEFINING FIELD ATTRIBUTE' )
223
+ error = nf90_put_att(ncid(tile), id_data_dom_cat, " missing_value" , missing)
224
+ call netcdf_err(error, ' DEFINING FIELD ATTRIBUTE' )
225
+ error = nf90_put_att(ncid(tile), id_data_dom_cat, " coordinates" , " geolon geolat" )
202
226
call netcdf_err(error, ' DEFINING COORD ATTRIBUTE' )
203
227
204
228
error = nf90_enddef(ncid_with_halo, header_buffer_val,4 ,0 ,4 )
@@ -216,13 +240,15 @@ subroutine output2(data_one_tile, lat_one_tile, lon_one_tile, i_mdl, j_mdl, &
216
240
call netcdf_err(error, ' IN NF90_PUT_VAR FOR GEOLON' )
217
241
218
242
print * ,' - WRITE DATA'
219
- error = nf90_inq_varid(ncid_with_halo, field_names(field_idx), id_data)
220
- call netcdf_err(error, ' IN NF90_INQ_VARID' )
221
243
222
- error = nf90_put_var(ncid_with_halo, id_data , data_one_tile, &
244
+ error = nf90_put_var(ncid_with_halo, id_data_pct , data_one_tile, &
223
245
start= (/ 1 ,1 ,1 ,1 / ), count= (/ i_mdl,j_mdl,num_categories,1 / ))
224
246
call netcdf_err(error, ' IN NF90_PUT_VAR' )
225
-
247
+
248
+ error = nf90_put_var(ncid_with_halo, id_data_dom_cat, dom_cat_one_tile, &
249
+ start= (/ 1 ,1 ,1 / ), count= (/ i_mdl,j_mdl,1 / ))
250
+ call netcdf_err(error, ' IN NF90_PUT_VAR' )
251
+
226
252
error = nf90_close(ncid_with_halo)
227
253
228
254
return
0 commit comments