Commit Graph

1972 Commits

Author SHA1 Message Date
Martin Diehl e93f5c84ff 'buffered' has no effect any more 2020-02-20 15:05:38 +01:00
Martin Diehl e3753e9444 use central functionality 2020-02-15 16:11:57 +01:00
Martin Diehl ff41061759 no bare 'except' 2020-01-28 23:39:46 +01:00
Martin Diehl ea560ee167 typo 2020-01-26 15:14:16 +01:00
Martin Diehl 757dc4e234 new style table
no header, comments given by '#': Very standard format, we just take
care of multidimensional columns via special label notation
2020-01-20 12:51:09 +01:00
Martin Diehl d66b05134d less code, faster execution 2020-01-15 14:09:26 +01:00
Martin Diehl e2802ca640 Table replaces ASCIItable 2020-01-15 06:37:53 +01:00
Martin Diehl ff60cf0b67 use new table class 2020-01-13 03:47:41 +01:00
Martin Diehl f9772a3df8 more descriptive name 2020-01-13 02:51:49 +01:00
Martin Diehl 1bb94f03b8 polishing (prospector was complaining) 2020-01-12 00:21:14 +01:00
Martin Diehl 3938f34978 Merge branch 'MiscImprovements' into MoreImprovements 2020-01-11 22:37:41 +01:00
Martin Diehl d4535dadb4 use American english 2020-01-11 20:33:29 +01:00
Martin Diehl a3664bbde1 need to reverse F->C flip 2020-01-02 17:46:14 +01:00
Martin Diehl a87e396b83 bugfix: need to addData to vtk
not really sure why 'SetScalars' was used for color. 'AddArray' seems to
work. Also, there seems to be no difference between 'data' and 'tensor'
2020-01-02 11:31:33 +01:00
Martin Diehl 05b2c80430 migrating ASCIItable to Table class 2019-12-26 14:34:22 +01:00
Martin Diehl 9e94955626 wrong coordinates for non-cubical grids 2019-12-24 15:58:37 +01:00
Martin Diehl 264afe00f9 using central functionality 2019-12-23 19:06:08 +01:00
Martin Diehl 27d6b91f18 using central funtionality 2019-12-23 10:19:38 +01:00
Martin Diehl d26005960c do not rely on singular value decomposition 2019-12-23 09:52:42 +01:00
Martin Diehl 93bc66d19f same order as in mechanics 2019-12-23 09:33:14 +01:00
Martin Diehl 3c4c364107 bugfix:
wrong results when calculating multiple strain tensors. Introduced in cd6a4d1cfd
2019-12-23 07:01:34 +01:00
Martin Diehl 3ed9126845 also not needed 2019-12-23 06:35:22 +01:00
Martin Diehl 149e4d6d73 not needed 2019-12-23 05:51:41 +01:00
Martin Diehl db14baec41 using central functionality 2019-12-22 22:23:48 +01:00
Martin Diehl c3c08b5b53 using new class/unifying style 2019-12-22 16:16:04 +01:00
Martin Diehl 70cb1f0764 copy of addGridData W/O functionality for meshes 2019-12-22 16:01:39 +01:00
Martin Diehl 48c21045d7 centralized functionality for ang import 2019-12-22 14:57:57 +01:00
Martin Diehl cde6853a20 do not repeat code 2019-12-22 07:20:23 +01:00
Martin Diehl fe463515d0 following prospector advice 2019-12-22 07:07:34 +01:00
Martin Diehl 343da2e54d Table class instead of ASCIItable 2019-12-21 21:45:00 +01:00
Martin Diehl 5b7139dc22 using specialized class 2019-12-21 19:09:28 +01:00
Martin Diehl 6989679d3b using central functionality
- Table class for table data
- grid_filters for grid related functions
2019-12-21 19:03:36 +01:00
Martin Diehl b293498864 fixing prospector complaints 2019-12-21 18:20:25 +01:00
Martin Diehl da33ba17bc using central (and tested) functionality 2019-12-21 18:17:04 +01:00
Martin Diehl dd318c8d1d Table class replaces ASCIItable class 2019-12-21 15:51:58 +01:00
Martin Diehl 0d1ff72c45 Merge branch 'grid-filters' into MiscImprovements 2019-12-21 06:57:38 +01:00
Martin Diehl f0d3b29b82 Merge branch 'development' into MiscImprovements 2019-12-21 06:53:56 +01:00
Martin Diehl 2c5f7d3b5a Merge branch 'development' into grid-filters 2019-12-20 14:32:20 +01:00
Franz Roters 034367fa6a Merge remote-tracking branch 'remotes/origin/noPostResults' into development 2019-12-20 11:40:57 +01:00
Martin Diehl 6114f5c325 inplace option does not exist anymore 2019-12-19 18:04:24 +01:00
Martin Diehl 7ccf836379 not needed for python-based workflow 2019-12-18 20:06:44 +01:00
Vitesh Shah 4469f2f8f0 More general regex 2019-12-18 10:14:19 +01:00
Vitesh Shah 186605610d No phase name for generic datasets 2019-12-13 09:53:47 +01:00
Martin Diehl c46c18de6f taking care of prospector complaints 2019-12-10 16:23:06 +01:00
Martin Diehl 82c741d6bb crystallite not needed anymore 2019-12-09 05:32:38 +01:00
Martin Diehl 1fcbc35611 untested python2.7 code
complicated code. Easier to re-implement from scratch if really needed
2019-12-09 05:25:22 +01:00
Martin Diehl 1955d09d3f modernizing 2019-12-08 22:35:58 +01:00
Martin Diehl 0bf22fd03c using central functionality 2019-12-08 22:35:39 +01:00
Martin Diehl 7dc128ad12 polishing 2019-12-08 18:33:43 +01:00
Martin Diehl 3d09a82f41 fixing prospector complaints 2019-12-08 18:22:05 +01:00
Martin Diehl 828e82605e ensure that data is correctly ordered 2019-12-08 18:13:45 +01:00
Martin Diehl 75e93d9f0c relying on central functionality improves readability 2019-12-08 15:56:15 +01:00
Martin Diehl f19694f734 starting to use central functionality 2019-12-08 11:20:47 +01:00
Martin Diehl 0292e8fcc7 preparing transition to Geom and Table classes 2019-12-08 11:11:02 +01:00
Martin Diehl 871ff4c218 use geom class 2019-12-08 09:31:56 +01:00
Martin Diehl 12564557e6 using central functionality 2019-12-08 09:18:15 +01:00
Martin Diehl b92cfbbd5b do not use bare except 2019-12-07 20:15:50 +01:00
Martin Diehl c6c77b64d2 following renames in grid_filter 2019-12-07 20:08:31 +01:00
Martin Diehl e283acd606 correct way of importing for newer python versions 2019-12-07 20:07:46 +01:00
Martin Diehl 0b04f6a3bb Merge branch 'development' into grid-filters 2019-12-07 10:52:00 +01:00
Sharan Roongta 96710a238d Merge branch 'development' of magit1.mpie.de:damask/DAMASK into incs-no-leading-zero 2019-12-06 15:25:21 +01:00
Philip Eisenlohr a41871e2ac Merge branch 'new-ASCII' into 'development'
New table class

See merge request damask/DAMASK!104
2019-12-06 14:58:16 +01:00
Martin Diehl f2ac87eb2f follow changes in Table class 2019-12-06 04:22:18 +01:00
Martin Diehl f475d1a0d0 adjusted to changes in table class 2019-12-05 13:35:06 +01:00
Martin Diehl 0eddd8a5c2 Merge branch 'new-ASCII' into grid-filters 2019-12-05 13:28:18 +01:00
Martin Diehl 90fdb24faa forgotten variable rename 2019-12-05 13:26:33 +01:00
Martin Diehl 274aaa7359 Merge branch 'new-ASCII' into grid-filters 2019-12-05 10:50:56 +01:00
Martin Diehl 1018b89296 nice to have.. 2019-12-05 10:48:42 +01:00
Martin Diehl 53a38e3a97 polishing 2019-12-05 10:37:13 +01:00
Martin Diehl 3af696995d did not work when piping 2019-12-05 08:36:32 +01:00
Martin Diehl 469d638afb making table class feature complete 2019-12-05 06:57:09 +01:00
Martin Diehl ee8e3386f4 shorter but still descriptive names 2019-12-05 06:16:29 +01:00
Martin Diehl 19c55990ab works again and uses DADF5 intrisic features 2019-12-04 18:30:08 +01:00
Martin Diehl 999321e588 Merge branch 'new-ASCII' into grid-filters 2019-12-04 07:45:01 +01:00
Martin Diehl 58a190ede8 Merge branch 'development' into incs-no-leading-zero 2019-12-04 05:19:38 +01:00
Martin Diehl 9ad8743396 using central functionality 2019-12-03 22:00:21 +01:00
Martin Diehl ff1778d149 Merge branch 'development' into new-ASCII 2019-12-03 15:56:49 +01:00
Martin Diehl 62ca2952fc polishing 2019-12-03 11:27:14 +01:00
Martin Diehl e2b13a5ca3 using de-facto standard naming 2019-11-29 19:32:18 +01:00
Martin Diehl 9b4252da68 smart handling of leading zeros 2019-11-29 16:58:11 +01:00
Martin Diehl 3e65d44e07 centralized facilities for differential operations
note the need to reverse the grid shape in data from the ASCII table. If x is fastest,
z is slowest we require x to be the rightmost index
2019-11-28 15:46:22 +01:00
Martin Diehl 4c4ccfe72e not needed 2019-11-28 06:27:19 +01:00
Martin Diehl a8016d64bb simplified 2019-11-27 12:31:32 +01:00
Martin Diehl cee095b58e better use centralized code 2019-11-27 12:22:28 +01:00
Martin Diehl 7d4b982c73 make information on modifications mandatory 2019-11-27 12:08:23 +01:00
Martin Diehl 9ad74745c1 missing import detected by prospector 2019-11-27 08:48:41 +01:00
Martin Diehl ab83dc2ebc use central facilities 2019-11-27 08:45:01 +01:00
Martin Diehl eb033e11b2 polishing 2019-11-27 08:44:38 +01:00
Martin Diehl 31d3958ca6 using fast new Table class
more a proof-of-concept since shell scripts are deprecated. The detailed
error handling of the former scripts is not implemented, i.e. the user
need to ensure that the files exist and the data has the correct shape
2019-11-26 22:59:42 +01:00
Martin Diehl 2d96136a0d more general constructor for Table
reading from file is just one case (now handled by static method).
General constructor needs data and header information as dictionary.
Works only with python 3.7 where dict keeps the insertion order. Earlier
python versions/other implementations might fail.
2019-11-26 22:53:46 +01:00
Martin Diehl 845cfc34ec similar logic as in geom class
- filename is not part of the object
- transparent handling of files, strings, and path-like objects for file
IO
2019-11-26 14:26:25 +01:00
Martin Diehl 81abc43920 Merge branch 'development' into new-ASCII 2019-11-26 10:29:05 +01:00
Martin Diehl faeb5a98b4 Merge branch 'PythonImprovements' into no-crystallite 2019-11-25 21:41:38 +01:00
Martin Diehl 592878d364 need to invoke function 2019-11-25 17:29:13 +01:00
Martin Diehl 406ca39b2c ASCII table unable to handle inhomogeneous situations 2019-11-24 21:23:43 +01:00
Martin Diehl 3e8518d861 following prospector guidelines 2019-11-24 19:30:00 +01:00
Martin Diehl c9f9f7c681 pack causes trouble with tests .. 2019-11-24 19:02:19 +01:00
Martin Diehl b2cdabd009 getting rid of shell scripts 2019-11-24 18:25:53 +01:00
Martin Diehl 816e86ae5f phasing out python shell scripts 2019-11-24 15:13:26 +01:00
Martin Diehl 8186be6293 compress functionality should be part of the geom class
automated decision is base on heuristic whether compression is memory
efficient
2019-11-24 14:27:24 +01:00
Martin Diehl 6060abb375 cleaning 2019-11-24 09:10:47 +01:00
Martin Diehl c9b1944493 handling of derived datatypes/structs
currently required for orientation
2019-11-24 08:50:27 +01:00
Martin Diehl dfb95df689 migrating shell scripts to python class 2019-11-22 21:48:41 +01:00
Martin Diehl fb286af354 [skip sc] first draft 2019-10-31 10:47:40 +01:00
Martin Diehl a2e4917d3b not needed for DADF5 2019-10-20 19:25:09 +02:00
Martin Diehl da79949c2a old python2 script, not needed for DADF5 2019-10-19 23:14:17 +02:00
Martin Diehl f4a0a5cfe5 substitute error introduced when enabling MSC.Marc 2019-10-18 22:03:31 +02:00
Martin Diehl bd7b5ad27b old python2.7 scripts with only a loose connection to DAMASK
if needed, simply take them from an old release version
2019-10-18 21:46:44 +02:00
Martin Diehl b70ad9ff54 Merge branch 'development' into DADF5-improvements 2019-10-18 20:54:54 +02:00
Philip Eisenlohr f8ffd7e39c added specifics to resulting column label (sum or prod) 2019-10-18 09:30:43 -04:00
Martin Diehl edcb8f9c4d name change in development 2019-10-18 12:55:15 +02:00
Martin Diehl de912c22b4 Merge branch 'development' into HDF5-spectral-displacements 2019-10-18 12:54:12 +02:00
Martin Diehl 76236a4a0c direct initialization (float64 is anyway standard) 2019-10-17 22:41:18 +02:00
Philip Eisenlohr 03a3edc128 added option to multiply values instead of summing them 2019-10-17 13:23:14 -04:00
Franz Roters 91691744c6 Merge branch 'Marc-No-nonlocal' into 'development'
Marc no nonlocal

See merge request damask/DAMASK!98
2019-10-15 10:35:37 +02:00
Martin Diehl d73e653f50 support for unstructured grid (FEM) 2019-10-14 14:13:03 +02:00
Martin Diehl 708bbd3cb9 mesh/grid type transparent handling of coordinates 2019-10-12 16:15:04 +02:00
Martin Diehl 513f1c6726 write out point data
might be possible to use a rectilinear grid for this also in the case of
grid solvers
2019-10-12 12:34:37 +02:00
Martin Diehl b208fa6565 takeover from Vitesh's work with small adoptions to current DADF5 2019-10-12 08:02:57 +02:00
Martin Diehl 3206ee04bc nodal displacements for grid solver
currently for non-MPI only
2019-09-27 20:38:02 -07:00
Martin Diehl 8793050329 fixed handling of subfolders
now inline with post results.
Still a little bit unclear what happens if an absolute directory is
given. Probably best to either specify absolute or relative with respect
to working directory
2019-09-19 16:10:07 -07:00
Martin Diehl 4cedcee0b4 handling of increments follows handling of other 'visible'-items 2019-09-15 17:08:03 -07:00
Martin Diehl f6ac8c995f simplified and selected better names 2019-09-15 16:00:19 -07:00
Martin Diehl 04aefa84bc more appropriate names 2019-09-15 15:02:16 -07:00
Martin Diehl de316f1afe Merge remote-tracking branch 'origin/development' into even-more-HDF5-postprocessing 2019-09-14 12:48:42 -07:00
Martin Diehl b85ac11c49 implemented ideas from discussion with Philip
group matching unified and with wildcard support
time step handling should become more convenient (WIP)
add_norm can not compute abs of scalar, added function for that
general polishing here and there
2019-09-14 09:07:23 -07:00
Martin Diehl c13db4b3ca renaming
on_air/active are not clear. visible seems to be the most appropriate
name
2019-09-13 21:49:22 -07:00
Martin Diehl a6567e0cc6 safer to use functions
don't mess with attributes of the object, they might be renamed
2019-09-13 21:41:35 -07:00
Martin Diehl 002383afc2 solved problem with postprocessing
- to not 'try' with h5py library, it might have another 'try'. Check
explicitly for empty argument

also some polishing
2019-09-13 16:01:30 -07:00
Martin Diehl 52904a81dc taking prospector complaints serious 2019-09-13 06:49:25 -07:00
Martin Diehl a3c6f6682e using eigh should ensure orthogonal eigenvectors 2019-09-13 06:42:01 -07:00
Martin Diehl 890a6cf42f avoid floating point comparison and simply play it safe 2019-09-13 06:40:41 -07:00
Martin Diehl 0497b58629 use existing functionality 2019-09-13 06:38:22 -07:00
Martin Diehl cd6a4d1cfd that's all we need 2019-09-13 06:37:47 -07:00
Martin Diehl 66d8a3e601 stretch is symmetric (play it safe here) 2019-09-13 06:35:48 -07:00
Martin Diehl 79d2432c6c R not needed 2019-09-13 06:33:00 -07:00
Martin Diehl 49b3cd2145 transpose evuivalent for rot but faster 2019-09-13 06:32:05 -07:00
Martin Diehl 462bb07efd Merge branch 'development' into even-more-HDF5-postprocessing 2019-09-11 16:29:44 -07:00
Philip Eisenlohr 926217fcb6 added possibility to reduce rotation to specific fundamental zone, and to output 3-dim Rodrigues vector 2019-09-10 15:09:27 -04:00
Martin Diehl d446248d75 also ouptut materialpoint results if requested 2019-07-15 17:07:04 -07:00
Martin Diehl b6bb8a4650 simple strain calculation for DADF5
further enhancement requires to give optional arguments to
add_genericpontwise
2019-07-06 21:41:29 -07:00
Martin Diehl a8ed982706 [skip ci] better name 2019-06-15 07:31:30 +02:00
Martin Diehl eb8be13203 missing import 2019-06-14 17:27:00 +02:00
Martin Diehl 1cf9c59850 standardizing
import follows PEP style guide, encoding not needed for python3
2019-06-14 13:03:30 +02:00
Martin Diehl 4ff3efb1a5 to 'stack' tables 2019-06-13 23:14:40 +02:00
Philip Eisenlohr bffeaa980d restored Martin's logic, not clear why seemed to be broken with PE's former tests... 2019-06-03 14:43:23 -04:00
Philip Eisenlohr 8d52a3d52a polishing of geom_rescale; adopted modified testing reference 2019-06-03 14:15:23 -04:00
Philip Eisenlohr 2870fdb25b fixed buggy version 2019-06-03 13:39:45 -04:00
Philip Eisenlohr 89e4bc800c removed default size to adjust to changes in geom-class 2019-06-03 13:38:48 -04:00
Philip Eisenlohr 60031cc806 changed periodic option to reflect to better reflect what happens 2019-06-03 13:35:37 -04:00
Philip Eisenlohr 7ea417d585 rotated geometry maintains center of gravity 2019-06-03 13:30:14 -04:00
Martin Diehl 615ff4ed06 [skip ci] vectorized 2019-05-31 23:26:32 +02:00
Martin Diehl bf27505faa Merge branch 'development' into geometry-class 2019-05-31 16:21:50 +02:00
Martin Diehl 02671c5c03 bugfix
shoud now work for any possible combination of new and old grid and
offset
2019-05-31 15:58:47 +02:00
Martin Diehl 979145f023 vectorized 2019-05-31 10:27:26 +02:00
Martin Diehl 46f0ad052e direct support for vtk output
- geom_check can now handle multiple files
- microstructure index is stored as integer in vtk file
2019-05-30 15:35:45 +02:00
Martin Diehl 08052737cf if grid is an option, it is a tuple
tuples do not have the prod() function
2019-05-30 14:28:31 +02:00
Martin Diehl c2a5f37818 round to reasonable precision
without symmetry, there are 36000**3 = 46656000000000 orientations
2019-05-30 14:11:54 +02:00
Martin Diehl bf60cffab5 cleaning 2019-05-30 14:07:49 +02:00
Martin Diehl d0c7f8b934 texture is typically the more interesting information
therefore, but it to the top
2019-05-30 14:05:45 +02:00
Martin Diehl 8380071564 using geom class
- dropped the use of the material class as it does not allow to have
empty phase and crystallite. The material.config class needs a severe
refurbishing (no crystallite, use orderedDict instead of hand written
solution, drop of texture components). Probably best solution is to
postpone this until we have a yaml/json reader for Fortran.
2019-05-30 13:30:38 +02:00
Martin Diehl 7d07a3752f polishing 2019-05-30 13:30:18 +02:00
Martin Diehl 461611cde7 polishing 2019-05-30 11:26:47 +02:00
Martin Diehl 49c3903cc7 explicit loop for simpler code
- no invalid combintations any more (allow to move the original
microstructure out of the new canvas)
- handling of origin needs discussion. When we want to recover the old
behavior, the origin might be located outside of the new geometry
2019-05-30 11:26:07 +02:00
Martin Diehl e974bb9c43 similar structure for building blocks 2019-05-30 10:45:17 +02:00
Martin Diehl 510b55df50 several improvements
- more error checking
- order of points can be arbitrary also for microstructure input
- grouping of same orientation/phase combinations
2019-05-30 10:33:01 +02:00
Martin Diehl 931fa9d36a standardized and cleaned
-write to file if given
-type casting is done in the geom class
2019-05-30 10:20:07 +02:00
Martin Diehl 07276d511c modern python formatting
- 2 digits should be precise enough for euler angles
- no need to pad grain ID with leading zeros
2019-05-30 10:03:55 +02:00
Martin Diehl 73df615ff3 numpy meshgrid can do this now 2019-05-30 09:45:30 +02:00
Martin Diehl 4e0e5a2329 new python formatting style 2019-05-30 09:41:22 +02:00
Martin Diehl f30eda0267 no need to loop over files
will procude the same file over and over again
2019-05-30 09:32:37 +02:00
Philip Eisenlohr cdc8338347 full (not periodic) mirroring is geom_mirror default behavior 2019-05-29 20:22:29 -06:00
Philip Eisenlohr d79f0c6290 replace geom_canvas --blank with geom_fromScratch 2019-05-29 20:02:06 -06:00
Martin Diehl fd9801ba09 StringIO not needed 2019-05-29 19:44:38 +02:00
Martin Diehl d7e8a66746 polishing 2019-05-29 14:18:11 +02:00
Martin Diehl 16bd5294aa loop order as intented 2019-05-29 14:06:39 +02:00
Martin Diehl 78f30684f8 moderized
needs some polishing with respect to array orders
2019-05-29 09:40:56 +02:00
Martin Diehl 6836a2eae8 better readable 2019-05-29 08:04:01 +02:00
Martin Diehl dfc2b47abc better readable 2019-05-29 08:01:00 +02:00
Martin Diehl 8ee23b37b2 should not be part of the repo 2019-05-29 07:52:44 +02:00
Martin Diehl bb6f54963a save some memory (avoid copies if not needed) 2019-05-29 07:49:43 +02:00
Martin Diehl 9f68923038 restored old behavior
save some ressources by avoiding copies.
much slower than old version, better cast formula into meshgrid again
2019-05-29 07:38:11 +02:00
Martin Diehl 2eb964b1ea simplified
needs some manual checking and proper test
2019-05-28 23:49:11 +02:00
Martin Diehl 100a2031d3 [skip ci] no white space needed 2019-05-28 07:55:24 +02:00
Philip Eisenlohr 1f56ac6a4a streamlining and bugfixing of geom-class 2019-05-27 22:45:34 -06:00
Martin Diehl b69f0efbbc improved and simplified reporting 2019-05-27 22:00:26 +02:00
Vitesh Shah 5abcca50ee Merge branch 'more-HDF5-postprocessing-cleaned' into development 2019-05-27 12:17:12 +02:00
Martin Diehl 59c6c5cfe4 not needed anymore
essentially, (gauss) is an Euler angle triplet
2019-05-27 10:49:50 +02:00
Martin Diehl 6e06764e2d using (enhanced) central functionality 2019-05-27 08:38:02 +02:00
Martin Diehl d9ab87cfde crystallite will be removed soon, error handling is done by geom class 2019-05-27 08:35:24 +02:00
Martin Diehl 5cf63bbbc3 vtk 7 is out for more than 3 years 2019-05-27 08:34:36 +02:00
Martin Diehl b5cec797c0 cleaned 2019-05-26 23:03:31 +02:00
Martin Diehl c8dfba89e5 using class
still a very complex script
2019-05-26 22:49:05 +02:00
Martin Diehl 15d5a7ae28 don't access attributes directly 2019-05-26 22:08:14 +02:00
Martin Diehl f251cdb746 simplified 2019-05-26 22:07:50 +02:00
Martin Diehl af493cf9fd using class
needs more memory, but should be faster and is better readable
2019-05-26 21:32:08 +02:00
Martin Diehl 99da46fda8 polished 2019-05-26 20:36:41 +02:00
Martin Diehl 657a30c2f5 using new functionality 2019-05-26 18:51:27 +02:00
Martin Diehl feb2340935 self-reporting functionality for updating 2019-05-26 17:58:54 +02:00
Martin Diehl 34f7bbe2a0 'blank' option does not fit to flow of script
seeds_fromRandom -N 1 | geom_fromVoronoiTessellation -g 30 30 30 -s 1 1 1 > file.geom
or a few lines of python code give the same results
2019-05-26 13:06:22 +02:00