def strike_water_vol(grain_wt: float,
                     postboil_vol: float = 6,
                     boil_duration: float = 1.0,
                     grain_absorbtion: float = 0.1,
                     boil_off_rate: float = 1.0) -> float:
    """Computes BIAB strike water volume based primarily on grain weight.

    Calculation here:
    https://www.homebrewersassociation.org/wp-content/uploads/
    How-To-Brew-in-a-Bag.pdf.

    Args:
    grain_wt: Grain weight in lbs
    postboil_vol: Volume after boil in gal, typically batch vol + 1 (default 6)
    boil_duration: Boil duration in gal/hr (default 1)
    grain_absorbtion:  Grain absorbtion in gal/lbs (default 0.1)
    boil_off_rate: Boil off rate in gal/hr (default 1)
    Returns:
    Strike water volume in gal, i.e. fill volume before adding grain
    """
    return (grain_absorbtion * grain_wt +
            (postboil_vol + boil_duration * boil_off_rate))