pystencils merge requestshttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests2020-01-16T10:57:16+01:00https://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 :star: :star: :star: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-Assignments2019-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'`https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/107Allow `CUSTOM_FIELD`s to have a different size in transformations.py2019-12-17T13:16:06+01:00Stephan SeitzAllow `CUSTOM_FIELD`s to have a different size in transformations.pyhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/105Fix FiniteDifferenceStaggeredStencilDerivation on Sympy 1.12019-12-16T15:05:39+01:00Michael Kuronmkuron@icp.uni-stuttgart.deFix FiniteDifferenceStaggeredStencilDerivation on Sympy 1.1I broke it in !104I broke it in !104Martin BauerMartin Bauerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/104Minor improvements to FiniteDifferenceStaggeredStencilDerivation2019-12-06T20:20:51+01:00Michael Kuronmkuron@icp.uni-stuttgart.deMinor improvements to FiniteDifferenceStaggeredStencilDerivationMartin BauerMartin Bauerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/103Fix printing for Functions without name2019-12-05T13:17:02+01:00Stephan SeitzFix printing for Functions without nameThis fixes test for LLVM GPU using pointer_arith_funcThis fixes test for LLVM GPU using pointer_arith_funchttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/102Fix OpenCL for CUDA OpenCL by avoid int(...) constructor2019-12-05T13:17:16+01:00Stephan SeitzFix OpenCL for CUDA OpenCL by avoid int(...) constructorPrefer c-style cast instead.Prefer c-style cast instead.https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/99finite difference stencil derivation for staggered positions2019-12-04T11:05:30+01:00Michael Kuronmkuron@icp.uni-stuttgart.definite difference stencil derivation for staggered positionsMartin BauerMartin Bauerhttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/96Add own implementation for printing an unknown function2019-12-03T13:38:45+01:00Stephan SeitzAdd own implementation for printing an unknown functionUsing the SymPy implementation for printing a `sympy.Function` has some issues:
- you cannot use `cast_func` as an argument -> SymPy prints
`cast_func(2,float)
- typed numbers are not typed any more -> e.g. pow(x, 0.25) instead o...Using the SymPy implementation for printing a `sympy.Function` has some issues:
- you cannot use `cast_func` as an argument -> SymPy prints
`cast_func(2,float)
- typed numbers are not typed any more -> e.g. pow(x, 0.25) instead of
pow(x, 0.25f)
Maybe a disadvantage or an advantage:
- arbitrary Functions: sympy.Function('my_function') are now allowed.
Would have prevented commits like:
Fix: type of sqrt(int) was int not floating point typehttps://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/95Auto for assignments2019-12-04T10:58:44+01:00Stephan SeitzAuto for assignmentsI had problems to teach pystencils C's weird type system for complex numbers with `auto` everything was working fine.I had problems to teach pystencils C's weird type system for complex numbers with `auto` everything was working fine.https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/94Add __getnewargs__ to TypedImaginaryUnit2019-11-30T00:38:52+01:00Stephan SeitzAdd __getnewargs__ to TypedImaginaryUnitThere was a problem when pickling TypedImaginaryUnit since it was using the __getnewargs__ of TypedSymbol.There was a problem when pickling TypedImaginaryUnit since it was using the __getnewargs__ of TypedSymbol.https://i10git.cs.fau.de/pycodegen/pystencils/-/merge_requests/93Reimplement create_staggered_kernel2020-01-14T15:46:47+01:00Michael Kuronmkuron@icp.uni-stuttgart.deReimplement create_staggered_kernel`create_staggered_kernel` now takes a list of assignments to staggered fields and otherwise behaves like `create_kernel`. I have included a diffusion equation test case in both D2Q5 and D2Q9. Putting vectorial/tensorial quantities on the...`create_staggered_kernel` now takes a list of assignments to staggered fields and otherwise behaves like `create_kernel`. I have included a diffusion equation test case in both D2Q5 and D2Q9. Putting vectorial/tensorial quantities on the staggered points also works.
This merge requests break API compatibility with the previous `create_staggered_kernel`.
Fixes #16. My next step is to implement automatic FV discretization.
Build of dependent projects (pygrandchem, pystencils_walberla) passes as per https://i10git.cs.fau.de/pycodegen/pycodegen/merge_requests/6.
Martin BauerMartin Bauer