Matthias Hochsteger
|
17dfd45609
|
Merge remote-tracking branch 'origin/master' into test_refactoring_meshing_design
|
2019-10-18 11:53:05 +02:00 |
|
Joachim Schöberl
|
6b99cf3c21
|
Merge branch 'delaunay_tree_with_double' into 'master'
Use new delaunay tree with double
See merge request jschoeberl/netgen!277
|
2019-10-15 08:10:19 +00:00 |
|
Matthias Hochsteger
|
d4d57040f6
|
Use new delaunay tree with double
|
2019-10-14 18:26:08 +02:00 |
|
Matthias Hochsteger
|
0f26e41f4d
|
4 Tasks per thread (better load balancing)
|
2019-10-14 16:33:16 +02:00 |
|
Matthias Hochsteger
|
6ca6a5e791
|
CombineImprove() 2D: optimize all faces at once
|
2019-10-14 16:21:24 +02:00 |
|
Matthias Hochsteger
|
0f095281d9
|
Parallel 2d CombineImprove() (also sort by improvement)
|
2019-10-14 16:02:11 +02:00 |
|
Matthias Hochsteger
|
5eba73f726
|
Separate function CombineImproveEdge()
|
2019-10-14 15:37:36 +02:00 |
|
Matthias Hochsteger
|
294fbb0e6f
|
Loop over edges in CombineImprove()
|
2019-10-14 14:04:10 +02:00 |
|
Matthias Hochsteger
|
9fd4970614
|
ParallelFor loops in setup of CombineImprove()
|
2019-10-14 13:51:25 +02:00 |
|
Matthias Hochsteger
|
19c86a9f3d
|
Move BuildEdgeList to improve2.hpp
|
2019-10-14 13:50:56 +02:00 |
|
Matthias Hochsteger
|
59c355dbed
|
New Table for elementsonnode
|
2019-10-14 11:49:23 +02:00 |
|
Matthias Hochsteger
|
c1d42ff1e6
|
Small cleanup
|
2019-10-14 11:01:16 +02:00 |
|
Matthias Hochsteger
|
5fffc28de9
|
Delete tempels Array during SwapImprove (saves memory)
|
2019-10-11 15:35:55 +02:00 |
|
Matthias Hochsteger
|
77e536746e
|
Comment out DelaunayTree
|
2019-10-11 13:47:39 +02:00 |
|
Matthias Hochsteger
|
77d91d144b
|
Special search tree for Delaunay (commented out)
- float instead of double
- Array for leaves instead of HashTable (the values of the tree are
contiguous integer numbers)
|
2019-10-11 13:35:52 +02:00 |
|
Matthias Hochsteger
|
268f2466f0
|
Parallel 2d MeshImprove
|
2019-10-10 15:44:57 +02:00 |
|
Matthias Hochsteger
|
9f0edf1741
|
Use new timers
|
2019-10-10 15:34:41 +02:00 |
|
Matthias Hochsteger
|
e6953dc4cb
|
Remove unnecessary call to mesh.CalcSurfacesOfNode()
|
2019-10-09 10:32:41 +02:00 |
|
Matthias Hochsteger
|
fffe445d53
|
Merge remote-tracking branch 'origin/master' into parallel_edgeswapping
|
2019-10-09 10:25:31 +02:00 |
|
Matthias Hochsteger
|
6e5d806d92
|
Use ParallelFor instead of ParallelForRange
better readability and no performance difference (if using
NETGEN_LAMBDA_INLINE)
|
2019-10-09 10:02:02 +02:00 |
|
Matthias Hochsteger
|
95df0ea73e
|
Explicit capture in lambda (due to MSVC compile problems)
|
2019-10-09 09:29:53 +02:00 |
|
Matthias Hochsteger
|
18bdd9df93
|
Build neighbors list in parallel
Check in new results (part1.stl does not mesh with very_coarse anymore)
|
2019-10-08 19:26:43 +02:00 |
|
Matthias Hochsteger
|
64a685c2ea
|
CreateSurface2ElementTable for individual faces
|
2019-10-08 18:35:48 +02:00 |
|
Matthias Hochsteger
|
a651a2d97e
|
EdgeSwapping() - some cleanup and parallelization of table building
|
2019-10-08 18:35:27 +02:00 |
|
Matthias Hochsteger
|
288bd2c3d8
|
EdgeSwapping() - all faces at once
|
2019-10-08 18:12:10 +02:00 |
|
Joachim Schöberl
|
a529dbab56
|
Merge branch 'reduce_python_output' into 'master'
reduce message and log level in python
See merge request jschoeberl/netgen!273
|
2019-10-08 15:38:19 +00:00 |
|
Matthias Hochsteger
|
f24a749fb2
|
Parallel MeshOptimize2d::EdgeSwapping() (individual faces)
|
2019-10-08 17:29:38 +02:00 |
|
Matthias Hochsteger
|
4d218fa042
|
Restructure MeshOptimize2d::EdgeSwapping()
|
2019-10-08 17:08:17 +02:00 |
|
Christopher Lackner
|
b3fb12e962
|
reduce message and log level in python
|
2019-10-08 16:51:32 +02:00 |
|
Christopher Lackner
|
27bb2c8e0e
|
unify surface optimization strategy
|
2019-10-08 16:46:16 +02:00 |
|
Matthias Hochsteger
|
fea75d6ff5
|
Remove MeshOptimize2d::SelectSurfaceOfPoint()
|
2019-10-08 12:44:00 +02:00 |
|
Christopher Lackner
|
e784abb8f7
|
Merge branch 'master' into test_refactoring_meshing_design
|
2019-10-08 12:31:24 +02:00 |
|
Joachim Schöberl
|
62e3e790d8
|
switch OCC meshing to physical space, and optimize FromPlane projection using uv-geominfo
|
2019-10-07 23:45:39 +02:00 |
|
Christopher Lackner
|
c309c9846f
|
store refinement
|
2019-10-07 15:17:03 +02:00 |
|
Christopher Lackner
|
fa3ae333ce
|
delete trailing whitespaces in new commits
|
2019-10-07 15:17:03 +02:00 |
|
Christopher Lackner
|
05881c0eb5
|
refactor a lot of the old code, stl still needs to be done
|
2019-10-07 15:17:03 +02:00 |
|
Christopher Lackner
|
43cc5e68b1
|
occ use optimize surface functionality from basegeom
|
2019-10-07 15:17:03 +02:00 |
|
Christopher Lackner
|
bee097b153
|
start unify meshing with occ meshing
|
2019-10-07 15:17:03 +02:00 |
|
Joachim Schöberl
|
de06f21bde
|
adding Mesh.AddRegion
|
2019-10-05 23:02:32 +02:00 |
|
Matthias Hochsteger
|
dbe0aaa1bc
|
Sort table after parallel creation
|
2019-10-04 15:33:24 +02:00 |
|
Joachim Schöberl
|
34ef87a706
|
Merge branch 'master' of geras.asc.tuwien.ac.at:jschoeberl/netgen
|
2019-10-04 13:49:32 +02:00 |
|
Matthias Hochsteger
|
04de18d0b4
|
Check badness quality in tests
|
2019-10-04 10:25:14 +00:00 |
|
Joachim Schöberl
|
0d9bb4bd97
|
parallel table build
|
2019-10-03 20:24:21 +02:00 |
|
Joachim Schöberl
|
0dd913fc20
|
parallel CheckOverlapping
|
2019-10-02 23:39:25 +02:00 |
|
Joachim Schöberl
|
f0eae10a24
|
throw exception on 1D mesh bisection
|
2019-10-02 22:07:28 +02:00 |
|
Matthias Hochsteger
|
a3ccb6432c
|
Use Mesh::CreatePoint2ElementTable() in SplitImprove()
|
2019-10-01 15:15:46 +02:00 |
|
Matthias Hochsteger
|
f42ee7b02d
|
Use Mesh::CreatePoint2ElementTable() in optimizations
|
2019-10-01 15:12:37 +02:00 |
|
Joachim Schöberl
|
78094016bf
|
Merge branch 'calclocalh_use_point' into 'master'
change CalcLocalH to use Point<D> instead of PointDd
See merge request jschoeberl/netgen!258
|
2019-10-01 10:59:43 +00:00 |
|
Joachim Schöberl
|
a4c7ea24b5
|
Merge branch 'use_new_btree' into 'master'
Use new BoxTree, activate search tree in STLBoundary
See merge request jschoeberl/netgen!259
|
2019-10-01 10:54:42 +00:00 |
|
Matthias Hochsteger
|
7ced41e56f
|
Use searchtree in STLBoundary
|
2019-10-01 12:19:22 +02:00 |
|
Christopher Lackner
|
9797c23351
|
change CalcLocalH to use Point<D> instead of PointDd
|
2019-10-01 11:59:17 +02:00 |
|
Matthias Hochsteger
|
ef64a5e7eb
|
Replace BoxTree with BTree
|
2019-10-01 11:22:30 +02:00 |
|
Christopher Lackner
|
b29e9ac3a1
|
fix nogui build
|
2019-10-01 10:09:04 +02:00 |
|
Joachim Schöberl
|
3e01cac707
|
remove small timers
|
2019-09-30 19:39:22 +02:00 |
|
Joachim Schöberl
|
fe95433a87
|
missing timer closing
|
2019-09-30 19:26:50 +02:00 |
|
Matthias Hochsteger
|
871f70790f
|
Dont throw exception if illegal_trigs table is not built
|
2019-09-30 18:55:01 +02:00 |
|
Joachim Schöberl
|
693bc66d49
|
use STL-searchtree
|
2019-09-30 18:21:01 +02:00 |
|
Joachim Schöberl
|
e4017b84e9
|
Merge branch 'pointnd_to_point' into 'master'
Pointnd to point
See merge request jschoeberl/netgen!255
|
2019-09-30 13:30:01 +00:00 |
|
Joachim Schöberl
|
b76b82b293
|
Merge branch 'split_improve_2d' into 'master'
SplitImprove for triangles
See merge request jschoeberl/netgen!251
|
2019-09-30 13:29:50 +00:00 |
|
Matthias Hochsteger
|
8defe2f864
|
New function Mesh::FindIllegalTrigs()
Find illegal trigs after surface meshing and use this information in
surface mesh optimization
|
2019-09-30 14:54:03 +02:00 |
|
Joachim Schöberl
|
b867caf01c
|
parallel main loop in FindOpenElements
|
2019-09-30 11:05:13 +02:00 |
|
Christopher Lackner
|
6bfbaa1179
|
some more PointNd to Point<N>
|
2019-09-30 10:50:01 +02:00 |
|
Christopher Lackner
|
e956ca0fdc
|
modernize and change to Point<3>
|
2019-09-30 10:38:46 +02:00 |
|
Christopher Lackner
|
60223b2a86
|
more PointNd to Point<N>
|
2019-09-30 10:36:42 +02:00 |
|
Christopher Lackner
|
030d8c8523
|
change more PointNd to Point<N>
|
2019-09-30 10:19:35 +02:00 |
|
Joachim Schöberl
|
656b0e0539
|
parallel CreatePoint2ElementTable as method of Mesh
|
2019-09-30 09:36:15 +02:00 |
|
Joachim Schöberl
|
7019504265
|
partially parallel Compress
|
2019-09-30 08:53:32 +02:00 |
|
Joachim Schöberl
|
bd589a4cca
|
Merge branch 'SwapImprove2_with_core_table' into 'master'
swapimprove2 with core tables
See merge request jschoeberl/netgen!254
|
2019-09-30 03:36:59 +00:00 |
|
Matthias Hochsteger
|
8874e41aec
|
SwapImprove2 - delete/add elements instead of replacing them
|
2019-09-29 21:31:00 +02:00 |
|
Joachim Schöberl
|
bbc36bb54d
|
Merge branch 'pointnd_to_point' into 'master'
change PointNd to Point<N> adfront2
See merge request jschoeberl/netgen!253
|
2019-09-29 18:49:06 +00:00 |
|
Joachim Schöberl
|
47641c9b2c
|
swapimprove2 with core tables
|
2019-09-29 20:47:41 +02:00 |
|
Joachim Schöberl
|
eeb63f659f
|
Table with IndexType
|
2019-09-29 17:44:08 +02:00 |
|
Christopher Lackner
|
bf217b9934
|
change PointNd to Point<N> adfront2
|
2019-09-29 16:22:00 +02:00 |
|
Christopher Lackner
|
ca2212879e
|
Change some PointNd to Point<N> functions
|
2019-09-29 14:54:24 +02:00 |
|
Joachim Schöberl
|
5c4b0e490a
|
little polish
|
2019-09-29 10:55:20 +02:00 |
|
Matthias Hochsteger
|
4987d12556
|
SplitImprove for triangles
|
2019-09-27 20:49:12 +02:00 |
|
Joachim Schöberl
|
ce1a94de36
|
fix hp-ref fix for 3d
|
2019-09-27 17:29:17 +02:00 |
|
Joachim Schöberl
|
da53a12eba
|
delaunay tuning
|
2019-09-27 17:14:48 +02:00 |
|
Joachim Schöberl
|
a71bed3a7e
|
Delaunay microtuning
|
2019-09-27 16:08:10 +02:00 |
|
Joachim Schöberl
|
3ec73d69ce
|
randomizing in Delaunay
|
2019-09-27 13:03:34 +02:00 |
|
Matthias Hochsteger
|
6a7030b81a
|
Activate multithreading when meshing from GUI
- Meshing options for parallelization and number of threads
- RegionTaskManager() to locally start the TaskManager
|
2019-09-27 11:54:33 +02:00 |
|
Matthias Hochsteger
|
36ada6f90c
|
clock() reports wrong times, use WallTime() instead
|
2019-09-27 11:54:33 +02:00 |
|
Matthias Hochsteger
|
9ba75145c0
|
Call constructor after allocation with BlockAllocator
|
2019-09-27 11:43:50 +02:00 |
|
Matthias Hochsteger
|
483bece790
|
Use BlockAllocator in BTree
|
2019-09-27 11:31:00 +02:00 |
|
Joachim Schöberl
|
fa3b84038f
|
delaunay optimizations
|
2019-09-26 18:28:31 +02:00 |
|
Matthias Hochsteger
|
46116ce723
|
BTree::GetFirstIntersecting(), some Timers
|
2019-09-26 16:50:35 +02:00 |
|
Matthias Hochsteger
|
a6d07ed7e4
|
Fix BTree::GetIntersecting()
|
2019-09-26 16:00:16 +02:00 |
|
Matthias Hochsteger
|
7b1c05f12c
|
Save memory in BTree, count number of leaves and nodes
|
2019-09-26 14:02:37 +02:00 |
|
Matthias Hochsteger
|
b2808109b6
|
New BoxTree for Delaunay
|
2019-09-26 12:12:28 +02:00 |
|
Matthias Hochsteger
|
26865d6470
|
Parallelize SwapImprove() (again)
|
2019-09-25 14:10:52 +02:00 |
|
Joachim Schöberl
|
71758de667
|
use surfindex as hash-key in FindOpenSegments
|
2019-09-24 10:34:36 +02:00 |
|
Joachim Schöberl
|
d995976621
|
less locks on AddVolumeElement
|
2019-09-23 21:50:42 +02:00 |
|
Joachim Schöberl
|
fae350929c
|
less locks in mesh.AddPoint/Element
|
2019-09-23 11:22:50 +02:00 |
|
Joachim Schöberl
|
abe971f15d
|
export ANALYSE geometry
|
2019-09-23 11:22:34 +02:00 |
|
Christopher Lackner
|
f64c736c2b
|
dll header vssurfacemeshing
|
2019-09-22 17:55:43 +02:00 |
|
Christopher Lackner
|
4eb7c1860c
|
allow 2d plainview to be moved using meta key
|
2019-09-22 14:37:14 +02:00 |
|
Christopher Lackner
|
d080f516cc
|
draw 3d and 2d local coordinates
|
2019-09-21 22:41:01 +02:00 |
|
Christopher Lackner
|
cd78f0e440
|
draw stl meshing 2d local coordinates
|
2019-09-21 22:08:35 +02:00 |
|
Joachim Schöberl
|
61c9e669c3
|
use Point/Trig/Chart-Id in stl-meshing, more to come
|
2019-09-21 02:04:49 +02:00 |
|
Matthias Hochsteger
|
5724b397d1
|
Revert "Separate function SwapImproveEdge(), iterate over list of edges instead of elements and edges per element"
This reverts commit c22f44617b .
|
2019-09-20 12:51:13 +02:00 |
|
Matthias Hochsteger
|
8688c135b2
|
Revert "Parallelize SwapImprove()"
This reverts commit 8c9d75f5f4 .
|
2019-09-20 12:51:13 +02:00 |
|
Matthias Hochsteger
|
fc1dbc2957
|
Revert "Change elementsonnode only when applying optimization"
This reverts commit 6c0171f2c0 .
|
2019-09-20 12:51:13 +02:00 |
|
Matthias Hochsteger
|
7c88a6da76
|
Lock mesh in Mesh::Compress
|
2019-09-16 13:13:48 +02:00 |
|
Matthias Hochsteger
|
d32d498259
|
Export Mesh::CalcMinMaxAngle
|
2019-09-16 12:11:49 +02:00 |
|
Joachim Schöberl
|
e887a2862b
|
Merge branch 'fix_oneside_hpref' into 'master'
Fix oneside hpref
See merge request jschoeberl/netgen!237
|
2019-09-15 19:33:04 +00:00 |
|
Michael Neunteufel
|
9f79451fe1
|
clean up
|
2019-09-13 09:42:05 +02:00 |
|
Michael Neunteufel
|
4b26f39974
|
export hprefleft/hprefright to python, sort points for segments and check if point is part of correct material
|
2019-09-13 09:09:56 +02:00 |
|
Matthias Hochsteger
|
6c0171f2c0
|
Change elementsonnode only when applying optimization
|
2019-09-11 13:06:07 +02:00 |
|
Matthias Hochsteger
|
1d016f2204
|
Use PointIndex instead of int
|
2019-09-11 13:02:15 +02:00 |
|
Matthias Hochsteger
|
8c9d75f5f4
|
Parallelize SwapImprove()
|
2019-09-10 17:52:24 +02:00 |
|
Matthias Hochsteger
|
a70803eecb
|
Fix BuildEdgeList() - create sorted list
|
2019-09-10 16:59:31 +02:00 |
|
Matthias Hochsteger
|
c22f44617b
|
Separate function SwapImproveEdge(), iterate over list of edges instead of elements and edges per element
|
2019-09-10 16:58:53 +02:00 |
|
Matthias Hochsteger
|
d95e9afb92
|
Utility function MeshOptimize3d::BuildEdgeList()
|
2019-09-10 16:19:04 +02:00 |
|
Matthias Hochsteger
|
88ac5456ab
|
Parallelize SwapImprove2
|
2019-09-10 11:45:04 +02:00 |
|
Matthias Hochsteger
|
d0586a6366
|
Separate function to perform SwapImprove2 on one face of an element
|
2019-09-10 11:45:04 +02:00 |
|
Joachim Schöberl
|
17a790e71e
|
Merge branch 'init_geominfo_trignum' into 'master'
Initialize geominfo[].trignum in Segment ctor
See merge request jschoeberl/netgen!231
|
2019-09-09 20:05:16 +00:00 |
|
Matthias Hochsteger
|
2bb11f4cb1
|
Avoid parallel call of BuildBoundaryEdges() inside Mesh::CombineImprove()
|
2019-09-09 17:02:50 +02:00 |
|
Matthias Hochsteger
|
7bf1563295
|
Initialize geominfo[].trignum in Segment ctor
|
2019-09-09 16:31:29 +02:00 |
|
Joachim Schöberl
|
cbd129bf53
|
disable parallel vertex2element table, needs sorting
|
2019-09-09 10:55:27 +02:00 |
|
Matthias Hochsteger
|
c075cfb9c6
|
Parallelize ImproveMesh
|
2019-09-05 14:25:11 +02:00 |
|
Matthias Hochsteger
|
7e7a1bb98b
|
Avoid parallel call of BuildBoundaryEdges() inside LegalTet()
|
2019-09-05 13:38:41 +02:00 |
|
Joachim Schöberl
|
0fcf99dc56
|
some native mesh access functions
|
2019-09-04 15:24:37 +02:00 |
|
Joachim Schöberl
|
ad4bbd1aa9
|
new lopp
|
2019-09-03 07:11:35 +02:00 |
|
Christopher Lackner
|
cd3bf9ead5
|
quad meshing parameter deprecated, use quad_dominated instead
|
2019-09-02 16:51:32 +02:00 |
|
Joachim Schöberl
|
fcea398d7c
|
Merge branch 'subcomm' into 'master'
sub-communicators as methods of NgMPI_Comm, using ngcore-arrays
See merge request jschoeberl/netgen!215
|
2019-08-29 09:32:35 +00:00 |
|
Joachim Schöberl
|
7f8dd74a03
|
Merge branch 'bitarray_ngcore' into 'master'
Bitarray from NGSolve to ngcore
See merge request jschoeberl/netgen!223
|
2019-08-28 18:57:11 +00:00 |
|
Matthias Hochsteger
|
1584da69ae
|
Rename BitArray to NgBitArray
|
2019-08-28 14:04:05 +02:00 |
|
Matthias Hochsteger
|
579e5d3874
|
Remove BitArrayChar
|
2019-08-28 13:49:11 +02:00 |
|
Lukas
|
2391ae1662
|
Merge remote-tracking branch 'origin/master' into fix_parmesh
|
2019-08-28 13:03:13 +02:00 |
|
Lukas
|
bca0f6a2ea
|
Merge remote-tracking branch 'origin/master' into subcomm
|
2019-08-27 13:32:25 +02:00 |
|
Joachim Schöberl
|
e2680b4139
|
Merge branch 'fix_mpi_curve' into 'master'
fix mpi mesh curving
See merge request jschoeberl/netgen!216
|
2019-08-26 12:40:51 +00:00 |
|
Joachim Schöberl
|
009139d448
|
Merge branch 'cleanup_paralleltop' into 'master'
porperly clean up created mpi-group/comm in paralleltop
See merge request jschoeberl/netgen!212
|
2019-08-26 12:22:38 +00:00 |
|
Lukas
|
55203ae730
|
fix mpi mesh curving
|
2019-08-26 13:16:28 +02:00 |
|
Lukas
|
c18b6cbbe1
|
sub-communicators as methods of NgMPI_Comm, using ngcore-arrays
|
2019-08-26 13:13:53 +02:00 |
|
Lukas
|
e7c550adbd
|
fix recently introduced off-by-one bug in parallelmesh, clean up created MPI-types (needs array-pos merge request)
|
2019-08-26 12:58:51 +02:00 |
|
Lukas
|
1d0886fbec
|
porperly clean up created mpi-group/comm in paralleltop
|
2019-08-26 12:54:06 +02:00 |
|
Joachim Schöberl
|
2cce200a67
|
fix Element(i,i,i) ctor
|
2019-08-26 10:37:38 +02:00 |
|
Christopher Lackner
|
08f9c773b1
|
we need to implement both sized deallocation functions for older mac
os targets
|
2019-08-23 11:26:14 +00:00 |
|
Christopher Lackner
|
6c71982951
|
Range(obj) does respect index type now. If obj has a function Range it
calls the function
|
2019-08-20 18:16:03 +02:00 |
|
Christopher Lackner
|
0ad54546c2
|
continue if element deleted in inner loop
|
2019-08-19 16:58:53 +02:00 |
|
Joachim Schöberl
|
b1d709338a
|
trigger CI
|
2019-08-18 13:55:57 +02:00 |
|
Joachim Schöberl
|
3d839c2986
|
trigger CI
|
2019-08-18 13:50:22 +02:00 |
|
Joachim Schöberl
|
8973624dfe
|
export right array
|
2019-08-18 13:25:04 +02:00 |
|
Joachim Schöberl
|
7f6f846eb1
|
surfelement - indextype
|
2019-08-18 13:10:58 +02:00 |
|
Joachim Schöberl
|
e89550ec9c
|
polishing improve2, IndirectArray iterator + element access
|
2019-08-18 12:21:10 +02:00 |
|
Joachim Schöberl
|
afe65337bf
|
Merge branch 'parallel_combine_improve' into 'master'
Parallelize CombineImprove
See merge request jschoeberl/netgen!201
|
2019-08-15 04:55:15 +00:00 |
|
Matthias Hochsteger
|
ad526ef2bc
|
Parallelize CombineImprove
|
2019-08-14 17:41:26 +02:00 |
|
Joachim Schöberl
|
fb76ef5c70
|
Merge branch 'segmentindex_operators' into 'master'
correct increment/decrement operators for segmentindex
See merge request jschoeberl/netgen!199
|
2019-08-14 14:12:35 +00:00 |
|
Christopher Lackner
|
c33feee970
|
segmentindex is 0 based
|
2019-08-14 14:00:37 +02:00 |
|
Christopher Lackner
|
b416fead82
|
correct increment/decrement operators for segmentindex
|
2019-08-14 13:47:52 +02:00 |
|