Code Monkey home page Code Monkey logo

vism's Introduction

VISM

Software for agile visualisation of magnetisation dynamics.

WARNING!

This is a new version and does not require Cython anymore!
The number of features has been limited to base.
To request a functionality, submit a feature.

PLEASE INSTALL NUMPY BOOST AND COMPILE go to CParse/Advanced and run the makefile!

Wiki page

[OUTDATED]

There is a Wiki Page that you can refer for more information about the installation procedure and how to use this software.

Go here Wiki Page

Quick User Reference

To use this software, in form as for now, you need:

  • Python 3.5.0 or newer
  • installed Python modules from requirements.txt file (to automate this use:
     pip install -r requirements.txt
  • Qt 5 or newer
  • Boost numpy python

Examples

Examples come from the work A.Kozioł-Rachwał, W. Skowroński Interlayer exchange coupling, dipolar coupling and magnetoresistance in Fe/MgO/Fe trilayers with a subnanometer MgO barrier Journal of Magnetism and Magnetic Materials 424C:189 Feb 2017

Issues and problems

If you have encountered any problem with VISM, do not hesistate to create an issue or write an email. Your feedback is highly appreciated since VISM is still a work in progress.

vism's People

Contributors

lemurpwned avatar pawelkulig1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

vism's Issues

Deleting widget

When widget selected, and animation windows was not launched and widget is deleted, app crashes.

Propagate proper number format

Right now precision is changed as it passes through multiple objects like opengl widgets or 2d plot widgets or parsers, this should not happen as precision should be constant across all widgets.

Default precision should float32 since it is supported by opengl without extra processing by video card.

Fix 2D Layer rendering

Widget 2D layer rendering has been disabled.
It needs to be fixed and improved in speed

Change directory

Once user sets data directory and loads it he cannot change it, app needs to be restarted.

Recording video from app

There is no option to record video right now, research need to be done, to find best fitting technology:

  • OpenCV - record video
  • QtGui.QPixmap.grabWindow() - convert slides to video
  • QWidget.grab() - previous is deprecated in Qt5.

Canvas replot

Seems like plot.show() is waiting until user closes plot so no redrawing is happening.

BetterWidget™ idea

Idea is not to hardcode plugins inside code, and get rid of adding new if statements everywhere if new Widget is added to program, I think we should solve that by making some kind of file with all plugin names etc. and all files using them will be getting that data from some kind of interface(proxy/singleton) and using it dynamically. It's not needed for now but in future may be helpful.

Add better sampling policies and custom GL object

Vectors can be sampled at a higher rate and further improve performance
Furthermore, there should be an option to display custom GL objects (cones, vectors etc) via graphics shaders

  • custom shaders
  • better sampling (with object size adjustment)

Add MuMax compatible formatting

This software must be capable of processing MuMax output files.

Not really important right now, but it should be added in the near future.

Deleting Widget crash

When widget is deleted crash occur:

  • during animation instantly
  • when animation starts

in my opinion this is caused by Worker class which after deleting Widget has reference to that deleted Widget iterator and it tries to change it. Solution is to delete also this iterator.

  • Problem solved
  • Add popup to prompt user that this action will restart simulation
  • Force the same fix when user want's to add new Plot during animation

Alter parsing handler

Parsing functions should handle situation where there is no .odt file, more than one and single video file.

  • No .odt / .txt file in directory
  • More than one .odt / .txt file
  • Accept a single .odt / .txt or a single .ovf / .omf

Synchronization fails at 4 window view

When the synchronisation should take place for 4 window view?
If we take 2 window view, fill it with widgets then play a couple of frames and thereafter we switch to 4 view and then add one widget, then this widget is not iterating.
Is it desired? or not?
I am referring to master branch not my pull requests

Invalid state change on iteration

I've noticed that it's not always the case (rather a coincidence) that the number of .omf/.ovf files matches the stage entries in .odt files.
The stage names are noted in filename and must then match those in .odt files.
This is standard todo: probably will require a little reworking of iteration mechanics

Better2DGraph widget issue

  • Not resizing correctly inside pane
  • Some synchronization/redrawing issues
  • Need to add more customization options
  • Graph not resizing correctly, and not centered inside Widget

Data Object Handler

Data Object Handler must be changed so that:

  • is a proxy
  • is a singleton
  • has proper deletion (destructor) procedure

Multiple coloring effects

3D display should have multiple coloring options that can be selected:

  • color palette
  • color switching point
  • new color metrics
  • custom color metrics

Picking directory

When user have ui to load directory, and click cancel, there is prompt, and no matter what is user choice app will crash.

3D OpenGL and GUI

  • There is problem, when One changes Performance options and closes the window and then reopens it, GUI is reloaded so it seems no changes were made.
  • Another thing is that I think changes should happen dynamically, when I change something in performance tab it should instantly reload OpenGL pane and show actual state.
  • If above is not possible to make, disable performance tweaking after OpenGL is setUp and add note about that. Something like "Changes in performance settings may be applied only before animation setup.
  • It would be nice if changes made are saved to file and later loaded from it, so once user sets changes they will remain set, even after program restart but it is general thing and maybe I will add API to improve that.

Fix inheritance and namespace issues

Bad design caused inheritance issues and namespace confusion.
Much of redundant code. I will fix it soon, but this is to be done in the next few days.
In addition, there is an inconsistent use of names in namespace i.e omf_header does not refer to omf header exclusively but also to ovf header (odt_data is also alias for .txt etc.). Need to fix that too

Staging and iterating

Staging can happen if there are several drivers present. Right now I am aware of:

  • MinDriver
  • TimeDriver
    I need to make sure these are all possibilities.
    Plus, there can be various names, right now MuMax is not supported (not sure if this can be done yet)

Reduce memory usage while rendering OpenGL

The quickest method of rendering is due to the usage of VBO's. However, this requires lots of memory and takes long time to compute during the scenery setup. There is a need to reduce number of color attributes assigned per vertex so that available #memory bandwidth is increased.

3D arrows crashing app

if decimate is not None:
----# this is arbitrary
----self.spacer = decimate3

but spacer is used only here.

Instant plot

No way to set up plot to be showed without synchronization.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.