def update_simulation_runtime(self):
        """
        Updates the total simulation duration from
        the m3 file (Vlat_file) and the time step (ZS_TauR).

        .. warning:: You need to set the m3 file (Vlat_file) and the
                     time step (ZS_TauR) before runnning this function.


        Example:

        .. code:: python

            from RAPIDpy import RAPID

            rapid_manager = RAPID(
                Vlat_file='../rapid-io/input/m3_riv.csv',
                ZS_TauR=3*3600,
            )

            rapid_manager.update_simulation_runtime()
        """
        if not self.Vlat_file or not os.path.exists(self.Vlat_file):
            log("Need Vlat_file to proceed ...",
                "ERROR")

        if self.ZS_TauR <= 0:
            log("Missing routing time step ...",
                "ERROR")

        try:
            self.ZS_TauR = int(self.ZS_TauR)
        except ValueError:
            log("Invalid routing time step: {0} ...".format(self.ZS_TauR),
                "ERROR")

        with RAPIDDataset(self.Vlat_file) as m3_nc:
            self.ZS_TauM = m3_nc.size_time*self.ZS_TauR
            self.ZS_TauO = m3_nc.size_time*self.ZS_TauR
Updates the total simulation duration from
        the m3 file (Vlat_file) and the time step (ZS_TauR).

        .. warning:: You need to set the m3 file (Vlat_file) and the
                     time step (ZS_TauR) before runnning this function.


        Example:

        .. code:: python

            from RAPIDpy import RAPID

            rapid_manager = RAPID(
                Vlat_file='../rapid-io/input/m3_riv.csv',
                ZS_TauR=3*3600,
            )

            rapid_manager.update_simulation_runtime()