pystencils merge requestshttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests2020-01-21T22:02:07+01:00https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/132let show_code display/print code2020-01-21T22:02:07+01:00Stephan Seitzlet show_code display/print code- `get_code_obj` will keep the previous behavior of `show_code`
- `get_code_str` will be equivalent to previous `str(show_code(...))`
Fixes #6- `get_code_obj` will keep the previous behavior of `show_code`
- `get_code_str` will be equivalent to previous `str(show_code(...))`
Fixes #6https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/131Print actual block contents in Conditional.{__repr__,__str__}2020-01-17T16:55:16+01:00Stephan SeitzPrint actual block contents in Conditional.{__repr__,__str__}https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/130Fix bug related to ParallelDataHandling2020-01-17T16:55:58+01:00Stephan SeitzFix bug related to ParallelDataHandling```python
def to_gpu(gpu_version, cpu_version):
gpu_version = gpu_version.boundary_object_to_index_list
cpu_version = cpu_version.boundary_object_to_index_list
> if isinstance(self.data_handling, ParallelDataHa...```python
def to_gpu(gpu_version, cpu_version):
gpu_version = gpu_version.boundary_object_to_index_list
cpu_version = cpu_version.boundary_object_to_index_list
> if isinstance(self.data_handling, ParallelDataHandling):
E TypeError: isinstance() arg 2 must be a type or tuple of types
../pystencils/pystencils/boundaries/boundaryhandling.py:102: TypeError
```
None is not a type! ParallelDataHandling is None if `waLBerla` is not
installedhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/129Interpolation refactoring2020-01-23T16:46:04+01:00Stephan SeitzInterpolation refactoringThis is among other small things a refactoring of the interpolation
- Make textures less special (now subclasses of interpolator)
- Remove `TextureCache`
- (Ab-) use finite differences to enable spatial derivatives of interpolators
- en...This is among other small things a refactoring of the interpolation
- Make textures less special (now subclasses of interpolator)
- Remove `TextureCache`
- (Ab-) use finite differences to enable spatial derivatives of interpolators
- enable code to use https://github.com/theHamsta/CubicInterpolationCUDA (not included into pystencils, not even as a submodule)
I can use it to transform Lenna and get gradients with Torch wrt. to image content, x-translation, y-translation
![Screenshot_20200115_182600](/uploads/32b95089b2a0d15008750db21980ed54/Screenshot_20200115_182600.png)
Also a nice image lenna
![transformed](/uploads/afb63a546751caf4a0316118afda50ef/transformed.png)https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/128Fix FiniteDifferenceStencilDerivation.rotate_weights_and_apply2020-01-17T16:55:40+01:00Stephan SeitzFix FiniteDifferenceStencilDerivation.rotate_weights_and_applyRecent Numpy version do not support conversion from arbitrary iterables if they have the attribute shape.
The FiniteDifferncesNotebook fails on my machine since to `shape` (3,3,3) and sequence of length 27 don't fit together.
I guess...Recent Numpy version do not support conversion from arbitrary iterables if they have the attribute shape.
The FiniteDifferncesNotebook fails on my machine since to `shape` (3,3,3) and sequence of length 27 don't fit together.
I guess that recent Numpy will deprecated construction from arbitray sequences (only list and tuple, and objects with `__array__` are allowed).https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/127Correctly print sp.Abs in generated code2020-02-03T13:28:20+01:00Michael Kuronmkuron@icp.uni-stuttgart.deCorrectly print sp.Abs in generated codeAnother issue reported by @alexander.reinauer.Another issue reported by @alexander.reinauer.Martin BauerMartin Bauerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/126Fix failing interpolation tests on newer sympy versions2020-01-16T10:57:24+01:00Stephan SeitzFix failing interpolation tests on newer sympy versionsSome tests where failing on newer SymPy versions due two reasons:
- fmod was where it should be % (fix in code), affect mirror boundary handling for interpolation
- in rotation test: `mirror` and `wrap` boundary handling was failing due...Some tests where failing on newer SymPy versions due two reasons:
- fmod was where it should be % (fix in code), affect mirror boundary handling for interpolation
- in rotation test: `mirror` and `wrap` boundary handling was failing due two complex conjugate (mark test as xfail)https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/125Fix {PyCuda,PyOpenCl}ArrayHandler.{zeros,ones,randn}2020-01-15T20:42:01+01:00Stephan SeitzFix {PyCuda,PyOpenCl}ArrayHandler.{zeros,ones,randn}https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/124Add dtype to DataHandling.add_arrays2020-01-15T13:32:17+01:00Stephan SeitzAdd dtype to DataHandling.add_arrayshttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/123Make create_staggered_kernel work with OpenMP2020-01-14T15:54:40+01:00Michael Kuronmkuron@icp.uni-stuttgart.deMake create_staggered_kernel work with OpenMPIssue reported bey @alexander.reinauer. I broke this in !93.Issue reported bey @alexander.reinauer. I broke this in !93.Martin BauerMartin Bauerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/122SerialDataHandling: synchronization_function for tensor fields2020-01-16T10:57:16+01:00Michael Kuronmkuron@icp.uni-stuttgart.deSerialDataHandling: synchronization_function for tensor fieldsIt already worked on the CPU, just needed to remove the check. On the GPU, we use `itertools.product` to create the nested loop needed.It already worked on the CPU, just needed to remove the check. On the GPU, we use `itertools.product` to create the nested loop needed.Martin BauerMartin Bauerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/121Automatic Finite Volume and Volume-of-Fluid discretization2020-01-14T14:08:05+01:00Michael Kuronmkuron@icp.uni-stuttgart.deAutomatic Finite Volume and Volume-of-Fluid discretizationI don't yet have a good test for volume-of-fluid and the source term, but @alexander.reinauer requested the code because he needs it now. I'll add the missing tests at some later point.I don't yet have a good test for volume-of-fluid and the source term, but @alexander.reinauer requested the code because he needs it now. I'll add the missing tests at some later point.Martin BauerMartin Bauerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/120Add DataHandling.add_arrays2020-01-14T14:09:15+01:00Stephan SeitzAdd DataHandling.add_arraysThis adds a function for lazy people who want to write
```python
dh = create_data_handling((20, 30))
x, y, z = dh.add_arrays('x, y(9), z')
```
instead of
```python
dh = create_data_handling((20, 30))
dh.add_array('x')
dh.a...This adds a function for lazy people who want to write
```python
dh = create_data_handling((20, 30))
x, y, z = dh.add_arrays('x, y(9), z')
```
instead of
```python
dh = create_data_handling((20, 30))
dh.add_array('x')
dh.add_array('y', values_per_cell=9)
dh.add_array('z')
```
because in most cases you want to use more than one array.https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/119Opencl datahandling2020-01-10T10:22:59+01:00Stephan SeitzOpencl datahandlingSince the `target_dh_refactoring` was never merged, we decided to do the refactoring at smaller steps and recover the original OpenCL datahandling PR.
Refactoring to merge `target` and `backend` can be done later.Since the `target_dh_refactoring` was never merged, we decided to do the refactoring at smaller steps and recover the original OpenCL datahandling PR.
Refactoring to merge `target` and `backend` can be done later.https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/118Allow functions for Field.coordinate_transform2020-01-09T20:20:23+01:00Stephan SeitzAllow functions for Field.coordinate_transformThis lets you quickly switch to polar coordinate systems:
```python
field.coordinate_transform = lambda x: sympy.Matrix((x.norm(), sympy.atan2(*x) / (2 * sympy.pi) * field.shape[1]))
```This lets you quickly switch to polar coordinate systems:
```python
field.coordinate_transform = lambda x: sympy.Matrix((x.norm(), sympy.atan2(*x) / (2 * sympy.pi) * field.shape[1]))
```https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/115:star: :star: :star: Add a star to correctly get atoms of InterpolatorAccess ...2019-12-19T15:40:16+01:00Stephan Seitz:star: :star: :star: Add a star to correctly get atoms of InterpolatorAccess :star: :star: :star:https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/114Fix AssignmentCollection.{free_symbols,bound_symbols,defined_symbols} for non...2019-12-19T23:28:04+01:00Stephan SeitzFix AssignmentCollection.{free_symbols,bound_symbols,defined_symbols} for non-AssignmentsThis should allow to execute AssignmentCollection.{free_symbols,bound_symbols,symbols_defined} on AssignmentCollection that do not exclusively contain `pystencils.Assignments`.
Should fix lbmpy tests (let's see if that's true).This should allow to execute AssignmentCollection.{free_symbols,bound_symbols,symbols_defined} on AssignmentCollection that do not exclusively contain `pystencils.Assignments`.
Should fix lbmpy tests (let's see if that's true).https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/110Update AssignmentCollection.__repr__2019-12-18T21:14:57+01:00Stephan SeitzUpdate AssignmentCollection.__repr__`Assignment Collection for y[0,0,0]` is usually not very helpful.
New representation:
```
In [6]: forward_assignments = pystencils.AssignmentCollection({
...: z[0, 0]: x[0, 0] * sympy.log(x[0, 0] * y[0, 0]),
...: ...`Assignment Collection for y[0,0,0]` is usually not very helpful.
New representation:
```
In [6]: forward_assignments = pystencils.AssignmentCollection({
...: z[0, 0]: x[0, 0] * sympy.log(x[0, 0] * y[0, 0]),
...: y[0,0] : x[1,1] +1
...: })
In [7]: forward_assignments
Out[7]: AssignmentCollection: z_C, y_C <- f(x_C, x_NE)
```https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/109FiniteDifferenceStaggeredStencilDerivation must be applied to field access2019-12-18T21:15:21+01:00Michael Kuronmkuron@icp.uni-stuttgart.deFiniteDifferenceStaggeredStencilDerivation must be applied to field accessotherwise the index gets lost.
Also, fix the staggered field access prettyprinter. It was correct after !86 but printed wrong indices after !92. I have now added a test.otherwise the index gets lost.
Also, fix the staggered field access prettyprinter. It was correct after !86 but printed wrong indices after !92. I have now added a test.Martin BauerMartin Bauerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/108AssignmentCollection.__bool__2019-12-17T13:30:15+01:00Stephan SeitzAssignmentCollection.__bool__`AssignmentCollection` can be used in many cases where you could also use
a `List[Assignment]`. With `AssignmentCollection.__bool__`, an empty
AssignmentCollection is falsy and a non-empty one truthy.
So you can `assert assignments,...`AssignmentCollection` can be used in many cases where you could also use
a `List[Assignment]`. With `AssignmentCollection.__bool__`, an empty
AssignmentCollection is falsy and a non-empty one truthy.
So you can `assert assignments, 'must not be emtpy'`