root / ase / visualize / vtk / __init__.py @ 8
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 |