root / ase / visualize / vtk / __init__.py @ 1
Historique | Voir | Annoter | Télécharger (1,06 ko)
1 | 1 | tkerber | try:
|
---|---|---|---|
2 | 1 | tkerber | import vtk |
3 | 1 | tkerber | hasvtk = True
|
4 | 1 | tkerber | hasmpi = hasattr(vtk, 'vtkMPIController') |
5 | 1 | tkerber | except ImportError: |
6 | 1 | tkerber | hasvtk = False
|
7 | 1 | tkerber | hasmpi = False
|
8 | 1 | tkerber | |
9 | 1 | tkerber | def requirevtk(code=0, parallel=False): |
10 | 1 | tkerber | from ase.test import NotAvailable |
11 | 1 | tkerber | if not hasvtk: |
12 | 1 | tkerber | # VTK required but not installed, force termination
|
13 | 1 | tkerber | # with exit status determined by the code argument.
|
14 | 1 | tkerber | raise NotAvailable('VTK is not installed.', code) |
15 | 1 | tkerber | if parallel and not hasmpi: |
16 | 1 | tkerber | # VTK MPI required but not installed, force termination
|
17 | 1 | tkerber | # with exit status determined by the code argument.
|
18 | 1 | tkerber | raise NotAvailable('VTK is not MPI compatible.', code) |
19 | 1 | tkerber | |
20 | 1 | tkerber | def probe_vtk_kilobyte(default=None): |
21 | 1 | tkerber | if not hasvtk: |
22 | 1 | tkerber | return default
|
23 | 1 | tkerber | |
24 | 1 | tkerber | from vtk import vtkCharArray |
25 | 1 | tkerber | vtk_da = vtkCharArray() |
26 | 1 | tkerber | vtk_da.SetNumberOfComponents(1)
|
27 | 1 | tkerber | vtk_da.SetNumberOfTuples(1024**2) |
28 | 1 | tkerber | |
29 | 1 | tkerber | # Size of 1 MB = 1024**2 bytes in "VTK kilobytes"
|
30 | 1 | tkerber | size = vtk_da.GetActualMemorySize() |
31 | 1 | tkerber | if size == 1024: |
32 | 1 | tkerber | return 1024 |
33 | 1 | tkerber | elif round(abs(size-1024**2/1e3)) == 0: |
34 | 1 | tkerber | return 1e3 |
35 | 1 | tkerber | else:
|
36 | 1 | tkerber | return default |