Skip to content

Vortex finder for time-dependent Ginzburg-Landau superconductor simulation data

License

Notifications You must be signed in to change notification settings

hguo/vortexfinder2

Repository files navigation

README

Introduction

vortexfinder2 provides tools to analyze and visualize vorticies in time-dependent Ginzburg-Landau (TDGL) superconductor simulation data. Output data from two simulation models are supported, namely GLGPU and Condor2. GLGPU and Condor2 are based on structured grid and unstructured grid, respectively.

The software is part of the OSCON (Optimizing Superconductor Transport Properties through Large-Scale Simulation) project for the Scientific Discovery through Advanced Computing Institutes.

A set of tools are provided:

  • Standalone command-line tools for extracting and tracking vortices
  • Standalone Qt and OpenGL based GUI for visualizing vortices
  • ParaView plugins for analyzing and visualizing vorticies

Build Guidelines

Prerequisites

The following tools/libraries are mandatory for all tools:

  • CMake (mandatory, version >= 3.0.2)
  • Protocol Buffers (mandatory, version >= 2.6.1), used for the serialization/unserialization of vortex objects

The following libraries are needed for analyzing Condor2 (unstructured mesh) data:

  • libMesh (optional, preferable 0.9.4-rc1 built with PETSc), used for Condor2 data analysis
    • PETSc (version >= 3.5.2), used for non-linear implicit system support in libMesh
    • MPICH (version >= 3.1.2), PETSc dependency

The following libraries are needed for buiding the GUI in the standalone tools:

  • Qt4 (preferable 4.8.6), used for the GUI
  • GLEW, used for using OpenGL extensions

The following libraries are needed for buiding ParaView plugins:

Build the command-line tools only

GLGPU data only

$ cd $VORTEX_FINDER2_SOURCE_DIR
$ mkdir build && cd build
$ cmake .. \
  -DPROTOBUF_ROOT=$PROTOBUF_INSTALL_DIR
$ make

GLGPU and Condor2 data

$ cd $VORTEX_FINDER2_SOURCE_DIR
$ mkdir build && cd build
$ cmake .. \
  -DWITH_LIBMESH=ON \
  -DPROTOBUF_ROOT=$PROTOBUF_INSTALL_DIR \
  -DMPI_HOME=$MPI_INSTALL_DIR \
  -DLIBMESH_DIR=$LIBMESH_INSTALL_DIR \
  -DPETSC_DIR=$PETSC_INSTALL_DIR 
$ make

Build the standalone GUI (requires Qt4)

$ cd $VORTEX_FINDER2_SOURCE_DIR
$ mkdir build && cd build
$ cmake .. \
  -DWITH_QT=ON \
  -DPROTOBUF_ROOT=$PROTOBUF_INSTALL_DIR \
  -DQT_QMAKE_EXECUTABLE=$QT_INSTALL_DIR/bin/qmake 
$ make

Build ParaView plugins only

Build ParaView first

$ tar zxf ParaView-v4.3.1-source.tar.gz
$ cd ParaView-v4.3.1-source
$ export PARAVIEW_SOURCE_DIR=$PWD
$ mkdir build && cd build
$ export PARAVIEW_BUILD_DIR=$PWD
$ cmake ..
$ make

Build the plugins

$ cd $VORTEX_FINDER2_SOURCE_DIR
$ mkdir build && cd build
$ cmake .. \
  -DWITH_PARAVIEW=ON \
  -DParaView_DIR=$PARAVIEW_BUILD_DIR \
  -DPROTOBUF_INCLUDE_DIR=$PARAVIEW_SOURCE_DIR/ThirdParty/protobuf/vtkprotobuf/src \
  -DPROTOBUF_LIBRARY=$PARAVIEW_BUILD_DIR/lib/libprotobuf.dylib \
  -DPROTOBUF_PROTOC_EXECUTABLE=$PARAVIEW_BUILD_DIR/bin/protoc
$ make

Then you get two binaries libBDATReader.dylib and libGLGPUVortexFilter.dylib in lib directory. Install the plugins by loading them in the plugin manager in ParaView.

Using the tools

Analyzing and visualizing GLGPU data with standalone tools

Creating the file list

Create a file (e.g. GL3D_CrBx004_full_long) which contains a list of GLGPU data file. The frame ID is indexed by the line numbers.

GL3D_CrBx004_full_long_0001_amph.dat
GL3D_CrBx004_full_long_0002_amph.dat
GL3D_CrBx004_full_long_0003_amph.dat
GL3D_CrBx004_full_long_0004_amph.dat
...

Run the vortex extractor/tracker

$ ../extractor_glgpu3D GL3D_CrBx004_full_long -t 0 -l 1000

The argument -t specifies the starting frame; -l specifies the number of frames. The tool then analyzes the data and store the results into a series of files. GL3D_CrBx004_full_long.pf.(i) are the punctured faces at frame i; GL3D_CrBx004_full_long.pe.(i).(i+1) are the intersected space-time edges for frame i and i+1; GL3D_CrBx004_full_long.vlines.(i) are the vortex lines at frame i; GL3D_CrBx004_full_long.match.(i).(i+1) are the correspondence of vortex IDs of frame i and i+1. This process may take a long time.

Interactive 3D visualization

After the extraction and tracking, run the viewer for the 3D interactive visualization:

$ ../viewer1 GL3D_CrBx004_full_long -t 0 -l 1000

In the viewer, use left mouse button to rotate, and wheel to zoom in/out. Press left/right key to show the previous/next frame.

Analyzing and visualizing GLGPU data with ParaView plugins

  • Install the two plugins, BDATReader and GLGPUVortexFilter. BDATReader can open GLGPU output files in both BDAT format and the legacy "CA02" format.
  • Open the .dat file with BDATReader
  • Use GLGPUVortexFilter (Filters-->TDGL-->GLGPUVortexFilter in menu) to extract vortices
  • Use Tube filter to make the vortex lines look better (optional)

TODOs

  • Interface for in-situ analysis
  • More features in the GUI, e.g. super current streamlines, inclusions, etc.
  • ParaView plugins for Condor2 datasets

References

H. Guo, T. Peterka, and A. Glatz. In Situ Magnetic Flux Vortex Visualization in Time-Dependent Ginzburg-Landau Superconductor Simulations. In Proc. IEEE Pacific Visualization Symposium (PacificVis '17), Seuol, Korea, pages 71-80, 2017.

H. Guo, C. L. Phillps, T. Peterka, D. Karpeyev, and A. Glatz. Extracting, Tracking and Visualizing Magnetic Flux Vortices in 3D Complex-Valued Superconductor Simulation Data. IEEE Trans. Vis. Comput. Graph. (SciVis '15), 22(1):827-836, 2016.

C. L. Phillps, H. Guo, T. Peterka, D. Karpeyev, and A. Glatz. Tracking Vortices in Superconductors: Extracting Singularities from a Discretized Complex Scalar Field Evolving in Time. Physical Reivew E, 93(023305), 2016.

C. L. Phillps, T. Peterka, D. Karpeyev, and A. Glatz. Detecting Vortices in Superconductors: Extracting One-Dimensional Topological Singularities from a Discretized Complex Scalar Field. Physical Review E, 91(023331), 2015.

Contact