|
4 | 4 | from devito.ir.iet import (Call, FindSymbols, List, Uxreplace, CallableBody, |
5 | 5 | Dereference, DummyExpr, BlankLine, Callable, FindNodes, |
6 | 6 | retrieve_iteration_tree, filter_iterations, Iteration) |
7 | | -from devito.symbolics import (Byref, FieldFromPointer, cast_mapper, VOIDP, |
| 7 | +from devito.symbolics import (Byref, FieldFromPointer, cast, VOID, |
8 | 8 | FieldFromComposite, IntDiv, Deref, Mod) |
9 | 9 | from devito.symbolics.unevaluation import Mul |
10 | 10 | from devito.types.basic import AbstractFunction |
@@ -671,8 +671,10 @@ def _whole_formfunc_body(self): |
671 | 671 | calls += ( |
672 | 672 | petsc_call('VecGetSubVector', [X, field_ptr, Byref(sobjs[x_name])]), |
673 | 673 | petsc_call('VecGetSubVector', [F, field_ptr, Byref(sobjs[f_name])]), |
674 | | - petsc_call(self.formfuncs[i].name, [objs['snes'], sobjs[x_name], |
675 | | - sobjs[f_name], VOIDP(objs['LocalSubdms'].indexed[i])]), |
| 674 | + petsc_call(self.formfuncs[i].name, [ |
| 675 | + objs['snes'], sobjs[x_name], sobjs[f_name], |
| 676 | + VOID(objs['LocalSubdms'].indexed[i], stars='*') |
| 677 | + ]), |
676 | 678 | petsc_call('VecRestoreSubVector', [X, field_ptr, Byref(sobjs[x_name])]), |
677 | 679 | petsc_call('VecRestoreSubVector', [F, field_ptr, Byref(sobjs[f_name])]), |
678 | 680 | ) |
@@ -992,7 +994,7 @@ def snes_ctx(self): |
992 | 994 | The [optional] context for private data for the function evaluation routine. |
993 | 995 | https://petsc.org/main/manualpages/SNES/SNESSetFunction/ |
994 | 996 | """ |
995 | | - return VOIDP(self.solver_objs['dmda']) |
| 997 | + return VOID(self.solver_objs['dmda'], stars='*') |
996 | 998 |
|
997 | 999 | def _setup(self): |
998 | 1000 | objs = self.objs |
@@ -1526,11 +1528,12 @@ def replace_array(self, target): |
1526 | 1528 | xlocal = sobjs.get(f'xlocal{target.name}', sobjs['xlocal']) |
1527 | 1529 | start_ptr = sobjs[f'{target.name}_ptr'] |
1528 | 1530 |
|
| 1531 | + caster = cast(target.dtype, '*') |
1529 | 1532 | return ( |
1530 | 1533 | petsc_call('VecGetSize', [xlocal, Byref(sobjs['localsize'])]), |
1531 | 1534 | DummyExpr( |
1532 | 1535 | start_ptr, |
1533 | | - cast_mapper[(target.dtype, '*')]( |
| 1536 | + caster( |
1534 | 1537 | FieldFromPointer(target._C_field_data, target._C_symbol) |
1535 | 1538 | ) + Mul(target_time, sobjs['localsize']), |
1536 | 1539 | init=True |
|
0 commit comments