MODFLOW 6  version 6.8.0.dev0
USGS Modular Hydrologic Model
ncmodelexportmodule Module Reference

This module contains the NCModelExportModule. More...

Data Types

type  exportpackagetype
 
type  ncexportannotation
 netcdf export attribute annotations More...
 
type  ncmodelexporttype
 base class for an export model More...
 
type  ncbasemodelexporttype
 abstract type for model netcdf export type More...
 
interface  model_define
 abstract interfaces for model netcdf export type More...
 
interface  model_step
 
interface  package_export
 
interface  package_export_ilayer
 

Enumerations

enum  
 netcdf export types enumerator More...
 

Functions/Subroutines

subroutine epkg_init (this, mf6_input, mshape, naux, param_names, nparam)
 initialize dynamic package export object More...
 
subroutine epkg_destroy (this)
 destroy dynamic package export object More...
 
subroutine set (this, modelname, modeltype, modelfname, nctype, disenum)
 set netcdf file scoped attributes More...
 
subroutine export_init (this, modelname, modeltype, modelfname, nc_fname, disenum, nctype, iout)
 initialization of model netcdf export More...
 
class(exportpackagetype) function, pointer export_get (this, idx)
 retrieve dynamic export object from package list More...
 
character(len=linelength) function input_attribute (this, pkgname, idt)
 build modflow_input attribute string More...
 
integer(i4b) function istp (this)
 step index for timeseries data More...
 
character(len=linelength) function, public export_varname (pkgname, tagname, mempath, layer, iaux)
 build netcdf variable name More...
 
character(len=linelength) function, public export_longname (longname, pkgname, tagname, mempath, layer, iaux, component_type, subcomponent_type)
 build netcdf variable longname More...
 
subroutine export_input (this)
 netcdf dynamic package period export More...
 
character(len=linelength) function, public wkt_to_cf_gridmapping (wkt)
 map a WKT string to a CF-1.11 grid_mapping_name More...
 
subroutine export_destroy (this)
 destroy model netcdf export object More...
 

Variables

@, public netcdf_undef = 0
 undefined netcdf export type More...
 
@, public netcdf_structured = 1
 netcdf structrured export More...
 
@, public netcdf_mesh2d = 2
 netcdf ugrid layered mesh export More...
 

Detailed Description

This module defines a model export and base type for supported netcdf files and is not dependent on netcdf libraries.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
private

Definition at line 32 of file NCModel.f90.

Function/Subroutine Documentation

◆ epkg_destroy()

subroutine ncmodelexportmodule::epkg_destroy ( class(exportpackagetype), intent(inout)  this)

Definition at line 195 of file NCModel.f90.

197  class(ExportPackageType), intent(inout) :: this
198  if (allocated(this%param_names)) deallocate (this%param_names)
Input definition module.
Input parameter definition. Describes an input parameter.

◆ epkg_init()

subroutine ncmodelexportmodule::epkg_init ( class(exportpackagetype), intent(inout)  this,
type(modflowinputtype), intent(in)  mf6_input,
integer(i4b), dimension(:), intent(in), pointer, contiguous  mshape,
integer(i4b), intent(in)  naux,
character(len=linelength), dimension(:), intent(in), allocatable  param_names,
integer(i4b), intent(in)  nparam 
)
private
Parameters
[in]mshapemodel shape

Definition at line 147 of file NCModel.f90.

153  class(ExportPackageType), intent(inout) :: this
154  type(ModflowInputType), intent(in) :: mf6_input
155  integer(I4B), dimension(:), pointer, contiguous, intent(in) :: mshape !< model shape
156  integer(I4B), intent(in) :: naux
157  character(len=LINELENGTH), dimension(:), allocatable, &
158  intent(in) :: param_names
159  integer(I4B), intent(in) :: nparam
160  integer(I4B) :: n
161  character(len=LENVARNAME) :: rs_varname
162  character(len=LENMEMPATH) :: input_mempath
163  integer(I4B), pointer :: rsvar
164 
165  this%mf6_input = mf6_input
166  this%mshape => mshape
167  this%nparam = nparam
168  this%naux = naux
169  this%eper = 0
170 
171  input_mempath = create_mem_path(component=mf6_input%component_name, &
172  subcomponent=mf6_input%subcomponent_name, &
173  context=idm_context)
174 
175  ! allocate param arrays
176  allocate (this%param_names(nparam))
177  allocate (this%param_reads(nparam))
178  allocate (this%varids_param(nparam, mshape(1)))
179  allocate (this%varids_aux(naux, mshape(1)))
180 
181  ! set param arrays
182  do n = 1, nparam
183  this%param_names(n) = param_names(n)
184  rs_varname = rsv_name(param_names(n))
185  call mem_setptr(rsvar, rs_varname, mf6_input%mempath)
186  this%param_reads(n)%invar => rsvar
187  end do
188 
189  ! set pointer to loaded input period
190  call mem_setptr(this%iper, 'IPER', mf6_input%mempath)
character(len=lenmempath) function create_mem_path(component, subcomponent, context)
returns the path to the memory object
This module contains simulation variables.
Definition: SimVariables.f90:9
character(len=linelength) idm_context
Here is the call graph for this function:

◆ export_destroy()

subroutine ncmodelexportmodule::export_destroy ( class(ncmodelexporttype), intent(inout)  this)

Definition at line 648 of file NCModel.f90.

651  class(NCModelExportType), intent(inout) :: this
652  ! override in derived class
653  deallocate (this%deflate)
654  deallocate (this%shuffle)
655  deallocate (this%input_attr)
656  deallocate (this%chunk_time)
657  ! Deallocate idm memory
658  if (this%ncf_mempath /= '') then
659  call memorystore_remove(this%modelname, 'NCF', idm_context)
660  end if
subroutine, public memorystore_remove(component, subcomponent, context)
Here is the call graph for this function:

◆ export_get()

class(exportpackagetype) function, pointer ncmodelexportmodule::export_get ( class(ncmodelexporttype), intent(inout)  this,
integer(i4b), intent(in)  idx 
)

Definition at line 400 of file NCModel.f90.

401  use listmodule, only: listtype
402  class(NCModelExportType), intent(inout) :: this
403  integer(I4B), intent(in) :: idx
404  class(ExportPackageType), pointer :: res
405  class(*), pointer :: obj
406  nullify (res)
407  obj => this%pkglist%GetItem(idx)
408  if (associated(obj)) then
409  select type (obj)
410  class is (exportpackagetype)
411  res => obj
412  end select
413  end if
A generic heterogeneous doubly-linked list.
Definition: List.f90:14

◆ export_init()

subroutine ncmodelexportmodule::export_init ( class(ncmodelexporttype), intent(inout)  this,
character(len=*), intent(in)  modelname,
character(len=*), intent(in)  modeltype,
character(len=*), intent(in)  modelfname,
character(len=*), intent(in)  nc_fname,
integer(i4b), intent(in)  disenum,
integer(i4b), intent(in)  nctype,
integer(i4b), intent(in)  iout 
)

Definition at line 278 of file NCModel.f90.

280  use tdismodule, only: datetime0, nper, nstp
284  use inputoutputmodule, only: lowcase
287  class(NCModelExportType), intent(inout) :: this
288  character(len=*), intent(in) :: modelname
289  character(len=*), intent(in) :: modeltype
290  character(len=*), intent(in) :: modelfname
291  character(len=*), intent(in) :: nc_fname
292  integer(I4B), intent(in) :: disenum
293  integer(I4B), intent(in) :: nctype
294  integer(I4B), intent(in) :: iout
295  character(len=LENMEMPATH) :: model_mempath
296  type(UtlNcfParamFoundType) :: ncf_found
297 
298  ! allocate
299  allocate (this%deflate)
300  allocate (this%shuffle)
301  allocate (this%input_attr)
302  allocate (this%chunk_time)
303 
304  ! initialize
305  this%modelname = modelname
306  this%modeltype = modeltype
307  this%modelfname = modelfname
308  this%nc_fname = nc_fname
309  this%gridmap_name = ''
310  this%ncf_mempath = ''
311  this%wkt = ''
312  this%crs_wkt = ''
313  this%datetime = ''
314  this%xname = ''
315  this%lenunits = ''
316  this%disenum = disenum
317  this%ncid = 0
318  this%totnstp = 0
319  this%deflate = -1
320  this%shuffle = 0
321  this%input_attr = 1
322  this%chunk_time = -1
323  this%iout = iout
324  this%chunking_active = .false.
325 
326  ! set file scoped attributes
327  call this%annotation%set(modelname, modeltype, modelfname, nctype, disenum)
328 
329  ! set dependent variable basename
330  select case (modeltype)
331  case ('GWF')
332  this%xname = 'head'
333  case ('GWT')
334  this%xname = 'concentration'
335  case ('GWE')
336  this%xname = 'temperature'
337  case default
338  errmsg = trim(modeltype)//' models not supported for NetCDF export.'
339  call store_error(errmsg)
340  call store_error_filename(modelfname)
341  end select
342 
343  ! set discretization input mempath
344  if (disenum == dis) then
345  this%dis_mempath = create_mem_path(modelname, 'DIS', idm_context)
346  else if (disenum == disu) then
347  this%dis_mempath = create_mem_path(modelname, 'DISU', idm_context)
348  else if (disenum == disv) then
349  this%dis_mempath = create_mem_path(modelname, 'DISV', idm_context)
350  end if
351 
352  ! set dependent variable pointer
353  model_mempath = create_mem_path(component=modelname)
354  call mem_setptr(this%x, 'X', model_mempath)
355 
356  ! set ncf_mempath if provided
357  if (filein_fname(this%ncf_mempath, 'NCF6_MEMPATH', this%dis_mempath, &
358  modelfname)) then
359  call mem_set_value(this%wkt, 'WKT', this%ncf_mempath, &
360  ncf_found%wkt)
361  call mem_set_value(this%crs_wkt, 'CRS_WKT', this%ncf_mempath, &
362  ncf_found%crs_wkt)
363  call mem_set_value(this%deflate, 'DEFLATE', this%ncf_mempath, &
364  ncf_found%deflate)
365  call mem_set_value(this%shuffle, 'SHUFFLE', this%ncf_mempath, &
366  ncf_found%shuffle)
367  call mem_set_value(this%input_attr, 'ATTR_OFF', this%ncf_mempath, &
368  ncf_found%attr_off)
369  call mem_set_value(this%chunk_time, 'CHUNK_TIME', this%ncf_mempath, &
370  ncf_found%chunk_time)
371  end if
372 
373  if (ncf_found%wkt .or. ncf_found%crs_wkt) then
374  this%gridmap_name = 'projection'
375  end if
376 
377  ! ATTR_OFF turns off modflow 6 input attributes
378  if (ncf_found%attr_off) then
379  this%input_attr = 0
380  end if
381 
382  ! set datetime string
383  if (datetime0 /= '') then
384  this%datetime = 'days since '//trim(datetime0)
385  else
386  ! January 1, 1970 at 00:00:00 UTC
387  this%datetime = 'days since 1970-01-01T00:00:00'
388  end if
389 
390  ! set total nstp
391  if (isim_mode == mvalidate) then
392  this%totnstp = nper
393  else
394  this%totnstp = sum(nstp)
395  end if
subroutine, public lowcase(word)
Convert to lower case.
This module contains the SourceCommonModule.
Definition: SourceCommon.f90:7
logical(lgp) function, public filein_fname(filename, tagname, input_mempath, input_fname)
enforce and set a single input filename provided via FILEIN keyword
integer(i4b), dimension(:), pointer, public, contiguous nstp
number of time steps in each stress period
Definition: tdis.f90:42
character(len=lendatetime), pointer, public datetime0
starting date and time for the simulation
Definition: tdis.f90:44
integer(i4b), pointer, public nper
number of stress period
Definition: tdis.f90:24
Here is the call graph for this function:

◆ export_input()

subroutine ncmodelexportmodule::export_input ( class(ncbasemodelexporttype), intent(inout)  this)

Definition at line 545 of file NCModel.f90.

546  use tdismodule, only: kper
547  class(NCBaseModelExportType), intent(inout) :: this
548  integer(I4B) :: idx
549  class(ExportPackageType), pointer :: export_pkg
550  do idx = 1, this%pkglist%Count()
551  export_pkg => this%get(idx)
552  ! period input already exported
553  if (export_pkg%eper >= kper) cycle
554  ! update export package
555  call this%package_step(export_pkg)
556  ! update exported iper
557  export_pkg%eper = kper
558  end do
integer(i4b), pointer, public kper
current stress period number
Definition: tdis.f90:26

◆ export_longname()

character(len=linelength) function, public ncmodelexportmodule::export_longname ( character(len=*), intent(in)  longname,
character(len=*), intent(in)  pkgname,
character(len=*), intent(in)  tagname,
character(len=*), intent(in)  mempath,
integer(i4b), intent(in), optional  layer,
integer(i4b), intent(in), optional  iaux,
character(len=*), intent(in), optional  component_type,
character(len=*), intent(in), optional  subcomponent_type 
)

Definition at line 491 of file NCModel.f90.

495  use inputoutputmodule, only: lowcase
497  character(len=*), intent(in) :: longname
498  character(len=*), intent(in) :: pkgname
499  character(len=*), intent(in) :: tagname
500  character(len=*), intent(in) :: mempath
501  integer(I4B), optional, intent(in) :: layer
502  integer(I4B), optional, intent(in) :: iaux
503  character(len=*), optional, intent(in) :: component_type
504  character(len=*), optional, intent(in) :: subcomponent_type
505  character(len=LINELENGTH) :: lname
506  type(CharacterStringType), dimension(:), pointer, &
507  contiguous :: auxnames
508  character(len=LINELENGTH) :: pname, vname, auxname
509  pname = pkgname
510  vname = tagname
511  call lowcase(pname)
512  call lowcase(vname)
513  if (longname == '') then
514  lname = trim(pname)//' '//trim(vname)
515  else
516  lname = longname
517  if (present(component_type) .and. present(subcomponent_type)) then
518  if (idm_multi_package(component_type, subcomponent_type)) then
519  lname = trim(pname)//' '//trim(lname)
520  end if
521  end if
522  end if
523 
524  if (present(iaux)) then
525  if (iaux > 0) then
526  if (tagname == 'AUX') then
527  ! reset vname to auxiliary variable name
528  call mem_setptr(auxnames, 'AUXILIARY', mempath)
529  auxname = auxnames(iaux)
530  call lowcase(auxname)
531  lname = trim(lname)//' '//trim(auxname)
532  end if
533  end if
534  end if
535 
536  if (present(layer)) then
537  if (layer > 0) then
538  write (lname, '(a,i0)') trim(lname)//' layer ', layer
539  end if
540  end if
logical function, public idm_multi_package(component, subcomponent)
This class is used to store a single deferred-length character string. It was designed to work in an ...
Definition: CharString.f90:23
Here is the call graph for this function:
Here is the caller graph for this function:

◆ export_varname()

character(len=linelength) function, public ncmodelexportmodule::export_varname ( character(len=*), intent(in)  pkgname,
character(len=*), intent(in)  tagname,
character(len=*), intent(in)  mempath,
integer(i4b), intent(in), optional  layer,
integer(i4b), intent(in), optional  iaux 
)

Definition at line 450 of file NCModel.f90.

454  use inputoutputmodule, only: lowcase
455  character(len=*), intent(in) :: pkgname
456  character(len=*), intent(in) :: tagname
457  character(len=*), intent(in) :: mempath
458  integer(I4B), optional, intent(in) :: layer
459  integer(I4B), optional, intent(in) :: iaux
460  character(len=LINELENGTH) :: varname
461  type(CharacterStringType), dimension(:), pointer, &
462  contiguous :: auxnames
463  character(len=LINELENGTH) :: pname, vname
464  vname = tagname
465  pname = pkgname
466 
467  if (present(iaux)) then
468  if (iaux > 0) then
469  if (tagname == 'AUX') then
470  ! reset vname to auxiliary variable name
471  call mem_setptr(auxnames, 'AUXILIARY', mempath)
472  vname = auxnames(iaux)
473  end if
474  end if
475  end if
476 
477  call lowcase(vname)
478  call lowcase(pname)
479  varname = trim(pname)//'_'//trim(vname)
480 
481  if (present(layer)) then
482  if (layer > 0) then
483  !write (varname, '(a,i0)') trim(varname)//'_L', layer
484  write (varname, '(a,i0)') trim(varname)//'_l', layer
485  end if
486  end if
Here is the call graph for this function:
Here is the caller graph for this function:

◆ input_attribute()

character(len=linelength) function ncmodelexportmodule::input_attribute ( class(ncmodelexporttype), intent(inout)  this,
character(len=*), intent(in)  pkgname,
type(inputparamdefinitiontype), intent(in), pointer  idt 
)

Definition at line 418 of file NCModel.f90.

419  use inputoutputmodule, only: lowcase
422  class(NCModelExportType), intent(inout) :: this
423  character(len=*), intent(in) :: pkgname
424  type(InputParamDefinitionType), pointer, intent(in) :: idt
425  character(len=LINELENGTH) :: attr
426  attr = ''
427  if (this%input_attr > 0) then
428  attr = trim(this%modelname)//mempathseparator//trim(pkgname)// &
429  mempathseparator//trim(idt%tagname)
430  call lowcase(attr)
431  end if
character(len=lenmemseparator), parameter mempathseparator
used to build up the memory address for the stored variables
Here is the call graph for this function:

◆ istp()

integer(i4b) function ncmodelexportmodule::istp ( class(ncmodelexporttype), intent(inout)  this)

Definition at line 436 of file NCModel.f90.

437  use tdismodule, only: kstp, kper, nstp
438  class(NCModelExportType), intent(inout) :: this
439  integer(I4B) :: n, istp
440  istp = kstp
441  if (kper > 1) then
442  do n = 1, kper - 1
443  istp = istp + nstp(n)
444  end do
445  end if
integer(i4b), pointer, public kstp
current time step number
Definition: tdis.f90:27

◆ set()

subroutine ncmodelexportmodule::set ( class(ncexportannotation), intent(inout)  this,
character(len=*), intent(in)  modelname,
character(len=*), intent(in)  modeltype,
character(len=*), intent(in)  modelfname,
integer(i4b), intent(in)  nctype,
integer(i4b), intent(in)  disenum 
)

Definition at line 203 of file NCModel.f90.

204  use versionmodule, only: fullversion
205  use inputoutputmodule, only: lowcase
206  class(NCExportAnnotation), intent(inout) :: this
207  character(len=*), intent(in) :: modelname
208  character(len=*), intent(in) :: modeltype
209  character(len=*), intent(in) :: modelfname
210  integer(I4B), intent(in) :: nctype
211  integer(I4B), intent(in) :: disenum
212  integer :: values(8)
213 
214  this%title = ''
215  this%model = ''
216  this%mesh = ''
217  this%grid = ''
218  this%history = ''
219  this%source = ''
220  this%conventions = ''
221  this%stdname = ''
222  this%longname = ''
223 
224  ! set file conventions
225  this%conventions = 'CF-1.11'
226  if (nctype == netcdf_mesh2d) this%conventions = &
227  trim(this%conventions)//' UGRID-1.0'
228 
229  ! set model specific attributes
230  select case (modeltype)
231  case ('GWF')
232  this%title = trim(modelname)//' hydraulic head'
233  this%longname = 'head'
234  case ('GWT')
235  this%title = trim(modelname)//' concentration'
236  this%longname = 'concentration'
237  case ('GWE')
238  this%title = trim(modelname)//' temperature'
239  this%longname = 'temperature'
240  case default
241  errmsg = trim(modeltype)//' models not supported for NetCDF export.'
242  call store_error(errmsg)
243  call store_error_filename(modelfname)
244  end select
245 
246  if (isim_mode == mvalidate) then
247  this%title = trim(this%title)//' array input'
248  end if
249 
250  ! set mesh type
251  if (nctype == netcdf_mesh2d) then
252  this%mesh = 'layered'
253  end if
254 
255  ! set grid type
256  if (disenum == dis) then
257  this%grid = 'structured'
258  else if (disenum == disv) then
259  this%grid = 'vertex'
260  end if
261 
262  ! model description string (lowercase, no version suffix, matching CF convention)
263  this%model = trim(modeltype)//': '//trim(modelname)
264  call lowcase(this%model)
265 
266  ! modflow6 version string
267  this%source = 'MODFLOW 6 '//trim(adjustl(fullversion))
268 
269  ! create timestamp
270  call date_and_time(values=values)
271  write (this%history, '(a,i0,a,i0,a,i0,a,i0,a,i0,a,i0,a,i0)') &
272  'first created ', values(1), '/', values(2), '/', values(3), ' ', &
273  values(5), ':', values(6), ':', values(7), '.', values(8)
This module contains version information.
Definition: version.f90:7
character(len= *), parameter fullversion
Definition: version.f90:24
Here is the call graph for this function:

◆ wkt_to_cf_gridmapping()

character(len=linelength) function, public ncmodelexportmodule::wkt_to_cf_gridmapping ( character(len=*), intent(in)  wkt)

Accepts either WKT1 (OGC 01-009, PROJECTION["name"]) or WKT2 (ISO 19162:2019, METHOD["name"]) format. WKT1 is tried first; if PROJECTION[ is absent the WKT2 METHOD[ path is attempted. Returns '' for geographic CRS or unrecognised projection names. Only common groundwater projections included. Matching is case-insensitive.

Definition at line 570 of file NCModel.f90.

571  use inputoutputmodule, only: upcase
572  character(len=*), intent(in) :: wkt
573  character(len=LINELENGTH) :: gmname
574  character(len=LINELENGTH) :: proj_name
575  character(len=LENBIGLINE) :: wkt_upper
576  integer :: istart, iend
577 
578  gmname = ''
579  proj_name = ''
580 
581  ! uppercase copy for case-insensitive keyword search
582  wkt_upper = wkt
583  call upcase(wkt_upper)
584 
585  ! --- WKT1 path: PROJECTION["name"] ---
586  istart = index(wkt_upper, 'PROJECTION[')
587  if (istart /= 0) then
588  istart = istart + len('PROJECTION[')
589  do while (istart <= len(wkt))
590  if (wkt(istart:istart) == '"') exit
591  istart = istart + 1
592  end do
593  if (istart > len(wkt)) return
594  istart = istart + 1
595  iend = index(wkt(istart:), '"')
596  if (iend == 0) return
597  iend = istart + iend - 2
598  if (iend < istart) return
599  proj_name = wkt(istart:iend)
600  call upcase(proj_name)
601  select case (trim(proj_name))
602  case ('TRANSVERSE_MERCATOR')
603  gmname = 'transverse_mercator'
604  case ('LAMBERT_CONFORMAL_CONIC_2SP', 'LAMBERT_CONFORMAL_CONIC_1SP')
605  gmname = 'lambert_conformal_conic'
606  case ('ALBERS_CONIC_EQUAL_AREA')
607  gmname = 'albers_conical_equal_area'
608  case ('MERCATOR_1SP', 'MERCATOR_2SP')
609  gmname = 'mercator'
610  case ('POLAR_STEREOGRAPHIC')
611  gmname = 'polar_stereographic'
612  end select
613  return
614  end if
615 
616  ! --- WKT2 path: METHOD["name"] ---
617  istart = index(wkt_upper, 'METHOD[')
618  if (istart == 0) return
619  istart = istart + len('METHOD[')
620  do while (istart <= len(wkt))
621  if (wkt(istart:istart) == '"') exit
622  istart = istart + 1
623  end do
624  if (istart > len(wkt)) return
625  istart = istart + 1
626  iend = index(wkt(istart:), '"')
627  if (iend == 0) return
628  iend = istart + iend - 2
629  if (iend < istart) return
630  proj_name = wkt(istart:iend)
631  call upcase(proj_name)
632  select case (trim(proj_name))
633  case ('TRANSVERSE MERCATOR')
634  gmname = 'transverse_mercator'
635  case ('LAMBERT CONIC CONFORMAL (2SP)', 'LAMBERT CONIC CONFORMAL (1SP)')
636  gmname = 'lambert_conformal_conic'
637  case ('ALBERS EQUAL AREA')
638  gmname = 'albers_conical_equal_area'
639  case ('MERCATOR (VARIANT A)', 'MERCATOR (VARIANT B)')
640  gmname = 'mercator'
641  case ('POLAR STEREOGRAPHIC (VARIANT A)', 'POLAR STEREOGRAPHIC (VARIANT B)')
642  gmname = 'polar_stereographic'
643  end select
subroutine, public upcase(word)
Convert to upper case.
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ netcdf_mesh2d

@, public ncmodelexportmodule::netcdf_mesh2d = 2

Definition at line 35 of file NCModel.f90.

35  ENUMERATOR :: NETCDF_MESH2D = 2 !< netcdf ugrid layered mesh export

◆ netcdf_structured

@, public ncmodelexportmodule::netcdf_structured = 1

Definition at line 34 of file NCModel.f90.

34  ENUMERATOR :: NETCDF_STRUCTURED = 1 !< netcdf structrured export

◆ netcdf_undef

@, public ncmodelexportmodule::netcdf_undef = 0

Definition at line 33 of file NCModel.f90.

33  ENUMERATOR :: NETCDF_UNDEF = 0 !< undefined netcdf export type