Commit b35aab5
Remove reference cycle in VecAccessMixin (#4033)
* Remove reference cycle in VecAccessMixin
With an associated PETSc Vec, VecAccessMixin deferred its version
property to a lambda to avoid allocating the storage until necessary.
Unfortunately, this lambda creates a reference cycle to self for all
users of the VecAccessMixin. Given that counter accesses should be
relatively infrequent, it seems fine to look up the counter type within
the method itself.
* Don't cache topological on CoordinatelessFunction
Doesn't make sense to cache a reference to self, just return self.
* Convert increment_dat_version to abstract on DataCarrier
The inheritance chain for Dat and Global puts VecAccessMixin
(rightly) behind DataCarrier. This means that by MRO, the
increment_dat_version method provided on DataCarrier will be used,
which is a null operation. I think this makes sense, given that not all
classes use this. However, because we're providing
increment_dat_version as an override through VecAccessMixin, we need to
explicitly refer to it in the inheriting classes.
* Update pyop2/types/dat.py
Otherwise updating a dat through a view doesn't increment the version.
Co-authored-by: Connor Ward <c.ward20@imperial.ac.uk>
---------
Co-authored-by: David A. Ham <david.ham@imperial.ac.uk>
Co-authored-by: Connor Ward <c.ward20@imperial.ac.uk>1 parent a4787d1 commit b35aab5
6 files changed
Lines changed: 32 additions & 16 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
84 | 84 | | |
85 | 85 | | |
86 | 86 | | |
87 | | - | |
| 87 | + | |
88 | 88 | | |
89 | 89 | | |
90 | 90 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
127 | 127 | | |
128 | 128 | | |
129 | 129 | | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
130 | 133 | | |
131 | 134 | | |
132 | 135 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
725 | 725 | | |
726 | 726 | | |
727 | 727 | | |
| 728 | + | |
| 729 | + | |
| 730 | + | |
728 | 731 | | |
729 | 732 | | |
730 | 733 | | |
| |||
841 | 844 | | |
842 | 845 | | |
843 | 846 | | |
| 847 | + | |
| 848 | + | |
| 849 | + | |
844 | 850 | | |
845 | 851 | | |
846 | 852 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| 47 | + | |
47 | 48 | | |
48 | 49 | | |
49 | 50 | | |
| |||
80 | 81 | | |
81 | 82 | | |
82 | 83 | | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
| 84 | + | |
| 85 | + | |
97 | 86 | | |
98 | 87 | | |
99 | 88 | | |
100 | | - | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
101 | 99 | | |
102 | 100 | | |
103 | 101 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
399 | 399 | | |
400 | 400 | | |
401 | 401 | | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
402 | 405 | | |
403 | 406 | | |
404 | 407 | | |
| |||
464 | 467 | | |
465 | 468 | | |
466 | 469 | | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
550 | 550 | | |
551 | 551 | | |
552 | 552 | | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
553 | 556 | | |
554 | 557 | | |
555 | 558 | | |
| |||
0 commit comments