Skip to content

Commit da58d45

Browse files
authored
mark tape before evaluating TLM, and start hessian accumulation from correct type (#190)
1 parent 43760f5 commit da58d45

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

pyadjoint/drivers.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,12 @@ def compute_hessian(J, m, m_dot, options=None, tape=None):
6161
m[i].tlm_value = m_dot[i]
6262

6363
with stop_annotating():
64-
tape.evaluate_tlm()
64+
with tape.marked_nodes(m):
65+
tape.evaluate_tlm(markings=True)
66+
67+
J.block_variable.hessian_value = J.block_variable.output._ad_convert_type(
68+
0., options={'riesz_representation': None})
6569

66-
J.block_variable.hessian_value = 0.0
6770
with stop_annotating():
6871
with tape.marked_nodes(m):
6972
tape.evaluate_hessian(markings=True)

pyadjoint/tape.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -361,11 +361,11 @@ def evaluate_adj(self, last_block=0, markings=False):
361361
):
362362
self._blocks[i].evaluate_adj(markings=markings)
363363

364-
def evaluate_tlm(self):
364+
def evaluate_tlm(self, markings=False):
365365
for i in self._bar("Evaluating TLM").iter(
366366
range(len(self._blocks))
367367
):
368-
self._blocks[i].evaluate_tlm()
368+
self._blocks[i].evaluate_tlm(markings=markings)
369369

370370
def evaluate_hessian(self, markings=False):
371371
for i in self._bar("Evaluating Hessian").iter(

0 commit comments

Comments
 (0)