Skip to content

Commit

Permalink
Review
Browse files Browse the repository at this point in the history
  • Loading branch information
Kenneth Moore authored and Kenneth Moore committed Jun 9, 2020
1 parent 6f42b93 commit 0130741
Showing 1 changed file with 23 additions and 22 deletions.
45 changes: 23 additions & 22 deletions openmdao/core/implicitcomponent.py
Expand Up @@ -105,30 +105,31 @@ def _guess_nonlinear(self):
"""
Provide initial guess for states.
"""
self._inputs.read_only = self._residuals.read_only = True
complex_step = self._inputs._under_complex_step
if self._has_guess:
self._inputs.read_only = self._residuals.read_only = True
complex_step = self._inputs._under_complex_step

try:
with self._unscaled_context(outputs=[self._outputs], residuals=[self._residuals]):
try:
with self._unscaled_context(outputs=[self._outputs], residuals=[self._residuals]):
if complex_step:
self._inputs.set_complex_step_mode(False, keep_real=True)
self._outputs.set_complex_step_mode(False, keep_real=True)
self._residuals.set_complex_step_mode(False, keep_real=True)
if self._discrete_inputs or self._discrete_outputs:
self.guess_nonlinear(self._inputs, self._outputs, self._residuals,
self._discrete_inputs, self._discrete_outputs)
else:
self.guess_nonlinear(self._inputs, self._outputs, self._residuals)
finally:
if complex_step:
self._inputs.set_complex_step_mode(False, keep_real=True)
self._outputs.set_complex_step_mode(False, keep_real=True)
self._residuals.set_complex_step_mode(False, keep_real=True)
if self._discrete_inputs or self._discrete_outputs:
self.guess_nonlinear(self._inputs, self._outputs, self._residuals,
self._discrete_inputs, self._discrete_outputs)
else:
self.guess_nonlinear(self._inputs, self._outputs, self._residuals)
finally:
if complex_step:
# Note: passing in False swaps back to the complex vector, which is valid since
# the inputs and residuals value cannot be edited.
self._inputs.set_complex_step_mode(False)
self._inputs._under_complex_step = True
self._outputs.set_complex_step_mode(True)
self._residuals.set_complex_step_mode(False)
self._residuals._under_complex_step = True
self._inputs.read_only = self._residuals.read_only = False
# Note: passing in False swaps back to the complex vector, which is valid since
# the inputs and residuals value cannot be edited.
self._inputs.set_complex_step_mode(False)
self._inputs._under_complex_step = True
self._outputs.set_complex_step_mode(True)
self._residuals.set_complex_step_mode(False)
self._residuals._under_complex_step = True
self._inputs.read_only = self._residuals.read_only = False

def _apply_linear(self, jac, vec_names, rel_systems, mode, scope_out=None, scope_in=None):
"""
Expand Down

0 comments on commit 0130741

Please sign in to comment.