# autogenerated file, do not modify

from os import PathLike, curdir
from typing import Union

from flopy.mf6.data.mfdatautil import ArrayTemplateGenerator, ListTemplateGenerator
from flopy.mf6.mfpackage import MFChildPackages, MFPackage


class ModflowGwfic(MFPackage):
    """
    ModflowGwfic defines a IC package.

    Parameters
    ----------
    model
        Model that this package is a part of. Package is automatically
        added to model when it is initialized.
    loading_package : bool, default False
        Do not set this parameter. It is intended for debugging and internal
        processing purposes only.
    export_array_ascii : keyword
        keyword that specifies input griddata arrays should be written to layered ascii
        output files.
    export_array_netcdf : keyword
        keyword that specifies input griddata arrays should be written to the model
        output netcdf file.
    strt : [double precision]
        is the initial (starting) head---that is, head at the beginning of the gwf
        model simulation.  strt must be specified for all simulations, including
        steady-state simulations. one value is read for every model cell. for
        simulations in which the first stress period is steady state, the values used
        for strt generally do not affect the simulation (exceptions may occur if cells
        go dry and (or) rewet). the execution time, however, will be less if strt
        includes hydraulic heads that are close to the steady-state solution.  a head
        value lower than the cell bottom can be provided if a cell should start as dry.

    filename : str or PathLike, optional
        Name or path of file where this package is stored.
    pname : str, optional
        Package name.
    **kwargs
        Extra keywords for :class:`flopy.mf6.mfpackage.MFPackage`.

    """

    strt = ArrayTemplateGenerator(("gwf6", "ic", "griddata", "strt"))
    package_abbr = "gwfic"
    _package_type = "ic"
    dfn_file_name = "gwf-ic.dfn"
    dfn = [
        ["header"],
        [
            "block options",
            "name export_array_ascii",
            "type keyword",
            "reader urword",
            "optional true",
            "mf6internal export_ascii",
        ],
        [
            "block options",
            "name export_array_netcdf",
            "type keyword",
            "reader urword",
            "optional true",
            "mf6internal export_nc",
            "extended true",
        ],
        [
            "block griddata",
            "name strt",
            "type double precision",
            "shape (nodes)",
            "reader readarray",
            "layered true",
            "netcdf true",
            "default 1.0",
        ],
    ]

    def __init__(
        self,
        model,
        loading_package=False,
        export_array_ascii=None,
        export_array_netcdf=None,
        strt=1.0,
        filename=None,
        pname=None,
        **kwargs,
    ):
        """Initialize ModflowGwfic."""
        super().__init__(
            parent=model,
            package_type="ic",
            filename=filename,
            pname=pname,
            loading_package=loading_package,
            **kwargs,
        )

        self.export_array_ascii = self.build_mfdata(
            "export_array_ascii", export_array_ascii
        )
        self.export_array_netcdf = self.build_mfdata(
            "export_array_netcdf", export_array_netcdf
        )
        self.strt = self.build_mfdata("strt", strt)

        self._init_complete = True
