GithubHelp home page GithubHelp logo

aiida-uppasd's Introduction

UppASD

Uppsala Atomistic Spin Dynamics software

The UppASD software package is a simulation suite to study magnetization dynamics by means of the atomistic version of the Landau-Lifshitz-Gilbert (LLG) equation.

Applications:

Features:

Detailed information about the method can be found in
Atomistic Spin Dynamics: Foundations and Applications
O. Eriksson et. al, Oxford University Press 2017


Quick-start:

./setup_UppASD.sh   
make <profile>

Where <profile> is a suitable compiler profile, i.e. ifort, gfortran, gfortran-osx, gfortran-ftn, aocc-ftn and so on.


Quick-start alternative (using cmake):

cmake -S . -B build   
cmake --build build

The binary is compiled to the ./bin/ directory.

Examples are provided in ./examples/

The code is documented in the UppASD manual.

A tutorial with examples and exercises on atomistic spin-dynamics are contained in the UppASD tutorial.

Developers please look at the development guidelines in the CONTRIBUTING.md file, about how to make your contributions to UppASD.


Graphical User Interface


A python based QT GUI for the code is also available at ./ASD_GUI/ASD_GUI.py. This allows for:

  • Visualization of outputs via VTK.
  • Plotting of several quantities via integrated matplotlib functionalities.
  • Automatic generation of input files for UppASD.

Requirements

  • Qt6.
  • python3.6 or higher.
    • pandas
    • numpy
    • PyYaml
    • matplotlib
  • VTK8.0 or higher.

Installation Guide (pip)

The recommended way to install the prerequisites for the ASD_GUI is currently to use pip and virtualenv environments.

After installing virtualenv one can create virtual environment where to host the ASD_GUI. This can be done in the following way:

pip install virtualenv
virtualenv ASD_GUI_env 
source ASD_GUI_env/bin/activate
pip install numpy matplotlib pyyaml pandas pyqt6 vtk

This will generate a virtual environment named ASD_GUI_env which can be activated or deactivated to run the GUI. The following steps are also recommended (starting from the base directory of the repo):

cd ASD_GUI
pip install .

This will install the GUI as a proper Python module and you can then start the GUI from any point in your file system by issuing the asd_gui command at the command prompt.

Installation Guide (anaconda)

An alternative way to install the prerequisites for the ASD_GUI can be done via the anaconda framework and its environments.

After installing anaconda one can create virtual environment where to host the ASD_GUI. This can be done in the following way:

conda create --name ASD_GUI_env python vtk numpy scipy matplotlib yaml pyyaml pandas pyqt
source activate ASD_GUI_env

This will generate a conda environment named ASD_GUI_env which can be activated or deactivated to run the GUI.

Note: The anaconda approach might not work untill the conda repositories update pyqt to support Qt6.


(C) 2008-2023 UppASD group

aiida-uppasd's People

Contributors

jpchico avatar mxjk851 avatar uppasdadmin avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

aiida-uppasd's Issues

Restart workflow convergence tests

The restart workflow can be used to introduce convergence tests to check that the calculation has reached a ground state.

This could be added for the MC method, where one could check that the average magnetization, total energy, so on are checked so that one can see if the calculation has converged. If it has not one could then restart the calculation from the last iteration and it could be submitted again but eliminating any thermalization steps.

What do you think @MXJK851 , @anbergman ?

workflows should be more abstract

Many of the workflows right one are very application specific, e.g. trying to make the phase diagram of a skyrmion specifically instead of just a general phase diagram.

Add CI/CD tests

To minimize the problems resulting from the development one needs to add a test suite to the package.

The tests should cover the following areas:

  1. Parsing of the output files
  2. Generation of the input files for inpsd.dat
  3. Base calculation
    • MC
    • SD
  4. Workchains

The CI/CD should also be used for the generation of the documentation in readthedocs and pre-commit checking.

Visualization should be moved to separate modules

Several workflows have their visualization tools inside the workflows. They should be moved to different modules unless it is strictly necessary to have them for them to be part of the workflow.
The visualization tools then should be adapted so that a node can be passed as input and that the appropriate plots are then produced from them.

Plotting and visualization is a post processing operation not suitable for aiida unless you are storing the plots in the database.

This would imply that one also needs to add a extra installation option where the dependencies are mentioned there.

What do you think @MXJK851 , @anbergman ?

AiiDA-2.x compatibility

With the release of aiida-2.x several changes, specially pertaining the repository, have been introduced.

To ensure that the plugin is compatible one needs to take care of issues with the opening of files from the repository, entrypoints, etc as indicated in the aida-core wiki

Remove nested orm types

The inputs sometimes have nested orm types. This is unnecessary. One should use flat orm types.

Change to build using `pyproject.toml`

To modernize the package the building tool should be changed to flit as explained in the aiida-core issue this allows to put all the information of the project in the pyproject.toml

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.