Statistiques
| Révision :

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