From aaf364259b8b86638de7032496642d577d96b0b5 Mon Sep 17 00:00:00 2001 From: dbrakenhoff Date: Wed, 28 Aug 2019 10:25:13 +0200 Subject: [PATCH 1/2] improve solve_models() with tmin/tmax options --- pastas/project/project.py | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/pastas/project/project.py b/pastas/project/project.py index 9d26810e..667882b3 100644 --- a/pastas/project/project.py +++ b/pastas/project/project.py @@ -364,15 +364,23 @@ def update_model_series(self): ml.oseries_calib = None def solve_models(self, mls=None, report=False, ignore_solve_errors=False, - verbose=False, **kwargs): + verbose=False, tmin=None, tmax=None, **kwargs): """Solves the models in mls - + mls: list of str, optional list of model names, if None all models in the project are solved. report: boolean, optional determines if a report is printed when the model is solved. ignore_solve_errors: boolean, optional - if True ValueErrors emerging from the solve method are ignored. + if True errors emerging from the solve method are ignored. + tmin: str, datetime or pandas.Series, optional + if str or datetime, apply tmin to all models. If pandas.Series + is provided, index must contain model names, values must be + str or datetimes. + tmax: str, datetime or pandas.Series, optional + if str or datetime, apply tmax to all models. If pandas.Series + is provided, index must contain model names, values must be + str or datetimes. **kwargs: arguments are passed to the solve method. @@ -387,8 +395,24 @@ def solve_models(self, mls=None, report=False, ignore_solve_errors=False, print('solving model -> {}'.format(ml_name)) ml = self.models[ml_name] + + # get tmin/tmax if provided + if isinstance(tmin, pd.Series): + m_tmin = pd.Timestamp(tmin.loc[ml_name]) + elif tmin is None: + m_tmin = None + else: + m_tmin = pd.Timestamp(tmin) + + if isinstance(tmax, pd.Series): + m_tmax = pd.Timestamp(tmax.loc[ml_name]) + elif tmax is None: + m_tmax = None + else: + m_tmax = pd.Timestamp(tmax) + try: - ml.solve(report=report, **kwargs) + ml.solve(tmin=m_tmin, tmax=m_tmax, report=report, **kwargs) except Exception as e: if ignore_solve_errors: warning = "solve error ignored for -> {}".format(ml.name) @@ -396,6 +420,7 @@ def solve_models(self, mls=None, report=False, ignore_solve_errors=False, else: raise e + def get_nearest_stresses(self, oseries=None, stresses=None, kind=None, n=1): """Method to obtain the nearest (n) stresses of a specific kind. From 1ad658f7c66bb4b095810bdb15d7570ca37854d4 Mon Sep 17 00:00:00 2001 From: dbrakenhoff Date: Wed, 28 Aug 2019 10:33:04 +0200 Subject: [PATCH 2/2] pep8 --- pastas/project/project.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pastas/project/project.py b/pastas/project/project.py index 667882b3..db9da2cb 100644 --- a/pastas/project/project.py +++ b/pastas/project/project.py @@ -420,7 +420,6 @@ def solve_models(self, mls=None, report=False, ignore_solve_errors=False, else: raise e - def get_nearest_stresses(self, oseries=None, stresses=None, kind=None, n=1): """Method to obtain the nearest (n) stresses of a specific kind.