4 Use Dot_Geometry
, ONLY
: Rqd_Base
,Rqd_Top
,Hqd
,ISHAPE
6 Use Auxiliar_Procedures
, ONLY
: MTYPE
, check
9 INTEGER,PRIVATE
:: ncFileID
, HdVarID
, RtVarID
, RbVarID
, NDots_XVarID
, &
10 NDots_YVarID
,NDots_ZVarID
, A1VarID
, A2VarID
, A3VarID
, &
16 SUBROUTINE NCPACK_CART(EXX
,EYY
,EZZ
,EXY
,EXZ
,EYZ
)
21 REAL,DIMENSION(:,:,:) :: EXX
,EYY
,EZZ
,EXY
,EXZ
,EYZ
23 ! netcdf related variables
24 integer :: DimXID
, DimYID
, DimZID
,i
, &
25 exxVarID
, eyyVarID
, ezzVarID
, exyVarID
, exzVarID
, eyzVarID
, &
26 ehidVarID
,etilVarID
,DimXVarID
, DimYVarID
, DimZVarID
29 character (len
= 60) :: fileName
35 fileName
= STR_Filename
38 ! --------------------
40 ! --------------------
41 if(.not
. byteSizesOK()) then
42 print *, "Compiler does not appear to support required kinds of variables."
48 call open_over(fileName
) !Check if a file with the same name exists
50 call check(nf90_create(path
= trim(fileName
), cmode
= nf90_clobber
, ncid
= ncFileID
))
52 CALL NCPACK_INPUT_STR( )
54 ! Define the dimensions
55 call check(nf90_def_dim(ncid
= ncFileID
, name
= "dimx", len
= XDim
, dimid
= DimXID
))
56 call check(nf90_def_dim(ncid
= ncFileID
, name
= "dimy", len
= YDim
, dimid
= DimYID
))
57 call check(nf90_def_dim(ncid
= ncFileID
, name
= "dimz", len
= ZDim
, dimid
= DimZID
))
59 ! Create variables and attributes
64 call check(nf90_def_var(ncFileID
, "dimx", nf90_float
, dimids
= DimXID
, varID
= DimXVarID
) )
65 call check(nf90_put_att(ncFileID
, DimXVarID
, "long_name", "X dimension"))
66 call check(nf90_put_att(ncFileID
, DimXVarID
, "units", "Angstroms"))
68 call check(nf90_def_var(ncFileID
, "dimy", nf90_float
, dimids
= DimYID
, varID
= DimYVarID
) )
69 call check(nf90_put_att(ncFileID
, DimYVarID
, "long_name", "Y dimension"))
70 call check(nf90_put_att(ncFileID
, DimYVarID
, "units", "Angstroms"))
72 call check(nf90_def_var(ncFileID
, "dimz", nf90_float
, dimids
= DimZID
, varID
= DimZVarID
) )
73 call check(nf90_put_att(ncFileID
, DimZVarID
, "long_name", "Z dimension"))
74 call check(nf90_put_att(ncFileID
, DimZVarID
, "units", "Angstroms"))
78 call check(nf90_def_var(ncid
= ncFileID
, name
= "exx", xtype
= nf90_float
, &
79 dimids
= (/ DimXID
, DimYID
, DimZID
/), varID
= exxVarID
) )
80 call check(nf90_put_att(ncFileID
, exxVarID
, "long_name", "exx"))
82 call check(nf90_def_var(ncid
= ncFileID
, name
= "eyy", xtype
= nf90_float
, &
83 dimids
= (/ DimXID
, DimYID
, DimZID
/), varID
= eyyVarID
) )
84 call check(nf90_put_att(ncFileID
, eyyVarID
, "long_name", "eyy"))
86 call check(nf90_def_var(ncid
= ncFileID
, name
= "ezz", xtype
= nf90_float
, &
87 dimids
= (/ DimXID
, DimYID
, DimZID
/), varID
= ezzVarID
) )
88 call check(nf90_put_att(ncFileID
, ezzVarID
, "long_name", "ezz"))
90 call check(nf90_def_var(ncid
= ncFileID
, name
= "exy", xtype
= nf90_float
, &
91 dimids
= (/ DimXID
, DimYID
, DimZID
/), varID
= exyVarID
) )
92 call check(nf90_put_att(ncFileID
, exyVarID
, "long_name", "exy"))
94 call check(nf90_def_var(ncid
= ncFileID
, name
= "exz", xtype
= nf90_float
, &
95 dimids
= (/ DimXID
, DimYID
, DimZID
/), varID
= exzVarID
) )
96 call check(nf90_put_att(ncFileID
, exzVarID
, "long_name", "exz"))
98 call check(nf90_def_var(ncid
= ncFileID
, name
= "eyz", xtype
= nf90_float
, &
99 dimids
= (/ DimXID
, DimYID
, DimZID
/), varID
= eyzVarID
) )
100 call check(nf90_put_att(ncFileID
, eyzVarID
, "long_name", "eyz"))
102 call check(nf90_def_var(ncid
= ncFileID
, name
= "ehid", xtype
= nf90_float
, &
103 dimids
= (/ DimXID
, DimYID
, DimZID
/), varID
= ehidVarID
) )
104 call check(nf90_put_att(ncFileID
, ehidVarID
, "long_name", "Hidrostatic Strain"))
106 call check(nf90_def_var(ncid
= ncFileID
, name
= "etil", xtype
= nf90_float
, &
107 dimids
= (/ DimXID
, DimYID
, DimZID
/), varID
= etilVarID
) )
108 call check(nf90_put_att(ncFileID
, etilVarID
, "long_name", "etil = exx + eyy - 2 * ezz"))
110 ! In the C++ interface the define a scalar variable - do we know how to do this?
111 !call check(nf90_def_var(ncFileID, "ScalarVariable", nf90_real, scalarVarID))
114 call check(nf90_enddef(ncfileID
))
116 ! Write the dimension variables
118 call check(nf90_put_var(ncFileID
, DimXVarId
, (/(X_Min
+REAL(I
-1)*X_Inc
, i
=1,XDim
)/)) )
119 call check(nf90_put_var(ncFileID
, DimYVarId
, (/(Y_Min
+REAL(I
-1)*Y_Inc
, i
=1,YDim
)/)) )
120 call check(nf90_put_var(ncFileID
, DimZVarId
, (/(Z_Min
+REAL(I
-1)*Z_Inc
, i
=1,ZDim
)/)) )
123 ! Write the Strain distributions
125 call check(nf90_put_var(ncFileID
, exxVarID
, exx
) )
126 call check(nf90_put_var(ncFileID
, eyyVarID
, eyy
) )
127 call check(nf90_put_var(ncFileID
, ezzVarID
, ezz
) )
128 call check(nf90_put_var(ncFileID
, exyVarID
, exy
) )
129 call check(nf90_put_var(ncFileID
, exzVarID
, exz
) )
130 call check(nf90_put_var(ncFileID
, eyzVarID
, eyz
) )
131 call check(nf90_put_var(ncFileID
, ehidVarID
, exx
+eyy
+ezz
) )
132 call check(nf90_put_var(ncFileID
, etilVarID
, exx
+eyy
-2.E0
*ezz
) )
134 call check(nf90_close(ncFileID
))
136 END SUBROUTINE NCPACK_CART
138 SUBROUTINE NCREAD_CART(EXX
,EYY
,EZZ
,EXY
,EXZ
,EYZ
)
143 REAL,DIMENSION(:,:,:) :: EXX
,EYY
,EZZ
,EXY
,EXZ
,EYZ
145 ! netcdf related variables
146 integer :: DimXID
, DimYID
, DimZID
, &
147 exxVarID
, eyyVarID
, ezzVarID
, exyVarID
, exzVarID
, eyzVarID
150 integer :: NcDimX
,NcDimY
,NcDimZ
153 character (len
= 60) :: fileName
159 fileName
= STR_Filename
162 ! --------------------
164 ! --------------------
165 if(.not
. byteSizesOK()) then
166 print *, "Compiler does not appear to support required kinds of variables."
172 call check(nf90_open(path
= trim(fileName
), mode
= nf90_nowrite
, ncid
= ncFileID
))
174 ! Define the dimensions
175 call check(nf90_inq_dimid(ncid
= ncFileID
, name
= "dimx", dimid
= DimXID
))
176 call check(nf90_inq_dimid(ncid
= ncFileID
, name
= "dimy", dimid
= DimYID
))
177 call check(nf90_inq_dimid(ncid
= ncFileID
, name
= "dimz", dimid
= DimZID
))
179 ! Create variables and attributes
180 call check(nf90_Inquire_Dimension(ncid
= ncFileID
, dimid
= DimXID
, len
= NcDimX
))
181 call check(nf90_Inquire_Dimension(ncid
= ncFileID
, dimid
= DimYID
, len
= NcDimY
))
182 call check(nf90_Inquire_Dimension(ncid
= ncFileID
, dimid
= DimZID
, len
= NcDimZ
))
184 if ((NcDimX
.ne
.XDim
).or
.(NcDimY
.ne
.YDim
).or
.(NcDimZ
.ne
.ZDim
)) then
185 write(6,*)"Dimensions problem:"
186 write(6,*)"Dimensions of the NetCDF File: ",TRIM(filename
)
187 write(6,*)"DimX:",NcDimX
188 write(6,*)"DimY:",NcDimY
189 write(6,*)"DimZ:",NcDimZ
190 write(6,*)"Dimensions defined on actual run:"
191 write(6,*)"DimX-Y-Z:",XDim
,YDim
,ZDim
196 call check(nf90_inq_varid(ncid
= ncFileID
, name
= "exx", &
198 call check(nf90_inq_varid(ncid
= ncFileID
, name
= "eyy", &
200 call check(nf90_inq_varid(ncid
= ncFileID
, name
= "ezz", &
202 call check(nf90_inq_varid(ncid
= ncFileID
, name
= "exy", &
204 call check(nf90_inq_varid(ncid
= ncFileID
, name
= "exz", &
206 call check(nf90_inq_varid(ncid
= ncFileID
, name
= "eyz", &
209 ! Read the Strain distributions
211 call check(nf90_get_var(ncFileID
, exxVarID
, exx
) )
212 call check(nf90_get_var(ncFileID
, eyyVarID
, eyy
) )
213 call check(nf90_get_var(ncFileID
, ezzVarID
, ezz
) )
214 call check(nf90_get_var(ncFileID
, exyVarID
, exy
) )
215 call check(nf90_get_var(ncFileID
, exzVarID
, exz
) )
216 call check(nf90_get_var(ncFileID
, eyzVarID
, eyz
) )
218 call check(nf90_close(ncFileID
))
220 END SUBROUTINE NCREAD_CART
223 SUBROUTINE NCPACK_CYL(EXX
,EYY
,EZZ
,EXZ
)
227 REAL,DIMENSION(:,:,:) :: EXX
,EYY
,EZZ
,EXZ
229 ! netcdf related variables
230 integer :: DimXID
, DimZID
,i
, &
231 esumVarID
, errVarID
, e00VarID
, edifVarID
, ezzVarID
, erzVarID
, &
232 ehidVarID
,etilVarID
,DimXVarID
, DimZVarID
234 real, dimension(1:XDim
,1:ZDim
) :: STR_AUX
237 character (len
= 60) :: fileName
243 fileName
= STR_Filename
245 ! --------------------
247 ! --------------------
248 if(.not
. byteSizesOK()) then
249 print *, "Compiler does not appear to support required kinds of variables."
255 call open_over(fileName
) !Check if a file with the same name exists
257 call check(nf90_create(path
= trim(fileName
), cmode
= nf90_clobber
, ncid
= ncFileID
))
259 CALL NCPACK_INPUT_STR( )
261 ! Define the dimensions
262 call check(nf90_def_dim(ncid
= ncFileID
, name
= "dimx", len
= XDim
, dimid
= DimXID
))
263 call check(nf90_def_dim(ncid
= ncFileID
, name
= "dimz", len
= ZDim
, dimid
= DimZID
))
265 ! Create variables and attributes
269 call check(nf90_def_var(ncFileID
, "dimx", nf90_float
, dimids
= DimXID
, varID
= DimXVarID
) )
270 call check(nf90_put_att(ncFileID
, DimXVarID
, "long_name", "Radial dimension"))
271 call check(nf90_put_att(ncFileID
, DimXVarID
, "units", "Angstroms"))
273 call check(nf90_def_var(ncFileID
, "dimz", nf90_float
, dimids
= DimZID
, varID
= DimZVarID
) )
274 call check(nf90_put_att(ncFileID
, DimZVarID
, "long_name", "Z dimension"))
275 call check(nf90_put_att(ncFileID
, DimZVarID
, "units", "Angstroms"))
279 call check(nf90_def_var(ncid
= ncFileID
, name
= "esum", xtype
= nf90_float
, &
280 dimids
= (/ DimXID
, DimZID
/), varID
= esumVarID
) )
281 call check(nf90_put_att(ncFileID
, esumVarID
, "long_name", "err+e00"))
283 call check(nf90_def_var(ncid
= ncFileID
, name
= "err", xtype
= nf90_float
, &
284 dimids
= (/ DimXID
, DimZID
/), varID
= errVarID
) )
285 call check(nf90_put_att(ncFileID
, errVarID
, "long_name", "err"))
287 call check(nf90_def_var(ncid
= ncFileID
, name
= "e00", xtype
= nf90_float
, &
288 dimids
= (/ DimXID
, DimZID
/), varID
= e00VarID
) )
289 call check(nf90_put_att(ncFileID
, e00VarID
, "long_name", "e00"))
291 call check(nf90_def_var(ncid
= ncFileID
, name
= "ezz", xtype
= nf90_float
, &
292 dimids
= (/ DimXID
, DimZID
/), varID
= ezzVarID
) )
293 call check(nf90_put_att(ncFileID
, ezzVarID
, "long_name", "ezz"))
295 call check(nf90_def_var(ncid
= ncFileID
, name
= "edif", xtype
= nf90_float
, &
296 dimids
= (/ DimXID
, DimZID
/), varID
= edifVarID
) )
297 call check(nf90_put_att(ncFileID
, edifVarID
, "long_name", "edif"))
299 call check(nf90_def_var(ncid
= ncFileID
, name
= "erz", xtype
= nf90_float
, &
300 dimids
= (/ DimXID
, DimZID
/), varID
= erzVarID
) )
301 call check(nf90_put_att(ncFileID
, erzVarID
, "long_name", "erz"))
303 call check(nf90_def_var(ncid
= ncFileID
, name
= "ehid", xtype
= nf90_float
, &
304 dimids
= (/ DimXID
, DimZID
/), varID
= ehidVarID
) )
305 call check(nf90_put_att(ncFileID
, ehidVarID
, "long_name", "Hidrostatic Strain"))
307 call check(nf90_def_var(ncid
= ncFileID
, name
= "etil", xtype
= nf90_float
, &
308 dimids
= (/ DimXID
, DimZID
/), varID
= etilVarID
) )
309 call check(nf90_put_att(ncFileID
, etilVarID
, "long_name", "etil = exx + eyy - 2 * ezz"))
312 call check(nf90_enddef(ncfileID
))
314 ! Write the dimension variables
316 call check(nf90_put_var(ncFileID
, DimXVarId
, (/(X_Min
+REAL(I
-1)*X_Inc
, i
=1,XDim
)/)) )
317 call check(nf90_put_var(ncFileID
, DimZVarId
, (/(Z_Min
+REAL(I
-1)*Z_Inc
, i
=1,ZDim
)/)) )
320 ! Write the Strain distributions
322 STR_AUX
=EXX(1:XDim
,1,1:ZDim
)+EYY(1:XDim
,1,1:ZDim
)
323 call check(nf90_put_var(ncFileID
, esumVarID
, STR_AUX
) )
325 STR_AUX
=EXX(1:XDim
,1,1:ZDim
)
326 call check(nf90_put_var(ncFileID
, errVarID
, STR_AUX
) )
328 STR_AUX
=EYY(1:XDim
,1,1:ZDim
)
329 call check(nf90_put_var(ncFileID
, e00VarID
, STR_AUX
) )
331 STR_AUX
=EZZ(1:XDim
,1,1:ZDim
)
332 call check(nf90_put_var(ncFileID
, ezzVarID
, STR_AUX
) )
334 STR_AUX
=EXX(1:XDim
,1,1:ZDim
)-EYY(1:XDim
,1,1:ZDim
)
335 call check(nf90_put_var(ncFileID
, edifVarID
, STR_AUX
) )
337 STR_AUX
=EXZ(1:XDim
,1,1:ZDim
)
338 call check(nf90_put_var(ncFileID
, erzVarID
, STR_AUX
) )
340 STR_AUX
=EXX(1:XDim
,1,1:ZDim
)+EYY(1:XDim
,1,1:ZDim
)+EZZ(1:XDim
,1,1:ZDim
)
341 call check(nf90_put_var(ncFileID
, ehidVarID
, STR_AUX
) )
343 STR_AUX
=EXX(1:XDim
,1,1:ZDim
)+EYY(1:XDim
,1,1:ZDim
)+2.*EZZ(1:XDim
,1,1:ZDim
)
344 call check(nf90_put_var(ncFileID
, etilVarID
, STR_AUX
) )
346 call check(nf90_close(ncFileID
))
348 END SUBROUTINE NCPACK_CYL
350 SUBROUTINE NCREAD_CYL(EXX
,EYY
,EZZ
,EXZ
)
355 REAL,DIMENSION(:,:,:) :: EXX
,EYY
,EZZ
,EXZ
357 ! netcdf related variables
358 integer :: DimXID
, DimZID
, &
359 errVarID
, e00VarID
, ezzVarID
, erzVarID
362 real, dimension(1:XDim
,1:ZDim
) :: STR_AUX
364 integer :: NcDimX
,NcDimZ
367 character (len
= 60) :: fileName
373 fileName
= STR_Filename
376 ! --------------------
378 ! --------------------
379 if(.not
. byteSizesOK()) then
380 print *, "Compiler does not appear to support required kinds of variables."
386 call check(nf90_open(path
= trim(fileName
), mode
= nf90_nowrite
, ncid
= ncFileID
))
388 ! Define the dimensions
389 call check(nf90_inq_dimid(ncid
= ncFileID
, name
= "dimx", dimid
= DimXID
))
390 call check(nf90_inq_dimid(ncid
= ncFileID
, name
= "dimz", dimid
= DimZID
))
392 ! Create variables and attributes
393 call check(nf90_Inquire_Dimension(ncid
= ncFileID
, dimid
= DimXID
, len
= NcDimX
))
394 call check(nf90_Inquire_Dimension(ncid
= ncFileID
, dimid
= DimZID
, len
= NcDimZ
))
396 if ((NcDimX
.ne
.XDim
).or
.(NcDimZ
.ne
.ZDim
)) then
397 write(6,*)"Dimensions problem:"
398 write(6,*)"Dimensions of the NetCDF File: ",TRIM(filename
)
399 write(6,*)"DimX:",NcDimX
400 write(6,*)"DimZ:",NcDimZ
401 write(6,*)"Dimensions defined on actual run:"
402 write(6,*)"DimX-Z:", XDim
,ZDim
407 call check(nf90_inq_varid(ncid
= ncFileID
, name
= "err", &
409 call check(nf90_inq_varid(ncid
= ncFileID
, name
= "e00", &
411 call check(nf90_inq_varid(ncid
= ncFileID
, name
= "ezz", &
413 call check(nf90_inq_varid(ncid
= ncFileID
, name
= "erz", &
416 ! Read the Strain distributions
418 call check(nf90_get_var(ncFileID
, errVarID
, STR_AUX
) )
419 EXX(1:XDim
,1,1:ZDim
)=STR_AUX
420 call check(nf90_get_var(ncFileID
, e00VarID
, STR_AUX
) )
421 EYY(1:XDim
,1,1:ZDim
)=STR_AUX
422 call check(nf90_get_var(ncFileID
, ezzVarID
, STR_AUX
) )
423 EZZ(1:XDim
,1,1:ZDim
)=STR_AUX
424 call check(nf90_get_var(ncFileID
, erzVarID
, STR_AUX
) )
425 EXZ(1:XDim
,1,1:ZDim
)=STR_AUX
427 call check(nf90_close(ncFileID
))
431 END SUBROUTINE NCREAD_CYL
433 SUBROUTINE NCPACK_INPUT_STR( )
436 CHARACTER(LEN
=200) :: stitle
438 call check(nf90_def_dim(ncid
= ncFileID
, name
= "vector", len
= 3, dimid
= Dim3ID
))
440 call check(nf90_def_var(ncid
= ncFileID
, name
= "HD", xtype
= nf90_float
, &
442 call check(nf90_put_att(ncFileID
, HdVarID
, "long_name", "Dot Height (Angstroms)"))
444 call check(nf90_def_var(ncid
= ncFileID
, name
= "RT", xtype
= nf90_float
, &
446 call check(nf90_put_att(ncFileID
, RtVarID
, "long_name", "Top Dot Radius (Angstroms)"))
448 call check(nf90_def_var(ncid
= ncFileID
, name
= "RB", xtype
= nf90_float
, &
450 call check(nf90_put_att(ncFileID
, RbVarID
, "long_name", "Base Dot Radius (Angstroms)"))
452 call check(nf90_def_var(ncid
= ncFileID
, name
= "ND_X", xtype
= nf90_int
, &
453 varID
= NDots_XVarID
) )
454 call check(nf90_put_att(ncFileID
, NDots_XVarID
, "long_name", "Number of Dots along X-axis"))
456 call check(nf90_def_var(ncid
= ncFileID
, name
= "ND_Y", xtype
= nf90_int
, &
457 varID
= NDots_YVarID
) )
458 call check(nf90_put_att(ncFileID
, NDots_YVarID
, "long_name", "Number of Dots along Y-axis"))
460 call check(nf90_def_var(ncid
= ncFileID
, name
= "ND_Z", xtype
= nf90_int
, &
461 varID
= NDots_ZVarID
) )
462 call check(nf90_put_att(ncFileID
, NDots_ZVarID
, "long_name", "Number of Dots along Z-axis"))
464 call check(nf90_def_var(ncFileID
, "A1", nf90_float
, dimids
= Dim3ID
, varID
= A1VarID
) )
465 call check(nf90_put_att(ncFileID
, A1VarID
, "long_name", "Vector A1 Superlattice"))
466 call check(nf90_put_att(ncFileID
, A1VarID
, "units", "Angstroms"))
468 call check(nf90_def_var(ncFileID
, "A2", nf90_float
, dimids
= Dim3ID
, varID
= A2VarID
) )
469 call check(nf90_put_att(ncFileID
, A2VarID
, "long_name", "Vector A2 Superlattice"))
470 call check(nf90_put_att(ncFileID
, A2VarID
, "units", "Angstroms"))
472 call check(nf90_def_var(ncFileID
, "A3", nf90_float
, dimids
= Dim3ID
, varID
= A3VarID
) )
473 call check(nf90_put_att(ncFileID
, A3VarID
, "long_name", "Vector A3 Superlattice"))
474 call check(nf90_put_att(ncFileID
, A3VarID
, "units", "Angstroms"))
476 call check(nf90_def_var(ncFileID
, "DWL", nf90_float
, varID
= DWL_VarID
))
480 stitle
="Shape: Truncated Cone. "
482 stitle
="Shape: Cap. "
486 CASE(1) !! Isotropic Zincblende
487 stitle
="Material Type: Isotropic Zincblende. "//stitle
488 CASE(2) !! Isotropic Wurtzite
489 stitle
="Material Type: Isotropic Wurtzite. "//stitle
490 CASE(3) !! Anisotropic Wurtzite
491 stitle
="Material Type: Anisotropic Wurtzite. "//stitle
495 call check(nf90_put_att(ncFileID
, nf90_global
, "history", &
497 stitle
="Strain distribution. "//stitle
499 call check(nf90_put_att(ncFileID
, nf90_global
, "title", TRIM(stitle
)))
501 call check(nf90_enddef(ncfileID
))
503 call check(nf90_put_var(ncFileID
, RbVarId
, Rqd_Base
) )
504 call check(nf90_put_var(ncFileID
, RtVarId
, Rqd_Top
) )
505 call check(nf90_put_var(ncFileID
, HdVarId
, Hqd
) )
506 call check(nf90_put_var(ncFileID
, DWL_VarId
, D
*ZC
) )
507 call check(nf90_put_var(ncFileID
, NDots_XVarId
, NMax_X
-NMin_X
+1 ) )
508 call check(nf90_put_var(ncFileID
, NDots_YVarId
, NMax_Y
-NMin_Y
+1 ) )
509 call check(nf90_put_var(ncFileID
, NDots_ZVarId
, NMax_Z
-NMin_Z
+1 ) )
510 call check(nf90_put_var(ncFileID
, A1VarId
, A1_S
) )
511 call check(nf90_put_var(ncFileID
, A2VarId
, A2_S
) )
512 call check(nf90_put_var(ncFileID
, A3VarId
, A3_S
) )
515 call check(nf90_redef(ncfileID
))
519 END SUBROUTINE NCPACK_INPUT_STR
522 END MODULE NCPACK_STR