Wenyin 的拾萃园
Fucore

Fucore, short for fusion core, is an integrated app that plans to connect disparate aspects concerning fusion science. Wenyin is working on building its framework by electron which has the potential as Qt to construct a cross-platform app. The techniques used in it may look uninteresting to physicists but would be necessary to unite all fusion physicists and techniques around the world.

The front-end frame is based on Vue-cli-plugin-electron-builder which makes electron and Vue collaborate seamlessly. Which database to choose is still under consideration and I estimate there would be a period of time users have to handle data locally. You can give me a suggestion.

Fucore is designed to help researchers out of code. The following listed functionality are scheduled to be supplemented in fucore in order to release scientists from the repeating but less-well-repeatable numerical computation.

  • Geometry
  • Shot Analysis
    • Field Line & Profile Analysis & ERGOS
    • Add & Edit labels
    • Coordinate Transform
    • Wave Analysis
  • Data Pipeline Control
    • Equipped with backend: FEniCS(for fluid simulation), PIConGPU(for kinetic simulation), HINT? EMC3-EIRENE?
      Let buttons ease data flow manipulation
  • Quick-reference
    • CMA plot, details about waves in plasma

To achieve the above aims and standardize the fusion scientific community, custom plugins functionality are under serious consideration and Wenyin would pay many efforts on what parts of API can be or cannot be public. The ideal scenario of fucore would be similar to the current popularity of VS code.

Fucore does not limit itself to web language like html/css/js, but plans to offer various possibilities to users to let them have fun with their own code (e.g. C++ or Python) in fucore to sustain rapid engineering improvement rhythm.

Distributed computation is too far to talk about for the moment, but server-client communication would be necessary and helpful for such an effective app that can separate scientific computation researchers and those scientists focus more on application.

Some techniques are under consideration. If you are an IT geek, welcome to give your suggestion on the choice of technique. For fusion energy physicists, you can request what you want by commentting at the end of this page.

Considered Techniques:

Database:

Communication:

  • Server-Client
    • Separate heavy/light computation work between server/client.
    • Store heavy data directly in cloud.
    • Acquire routine experiment details from the server.
  • Server-Server(necessary?)
    • Distributed computation collaboration
  • Client-Client
    • Chat, exchange information, or synchronize

Plot

Couple with Other Languages:

  • How to couple with Python
    • Numpy, Pandas, and then DASK (natively scales Python by parallelizing the above two libraries)
  • How to couple with C++

Custom Code Kernel (to allow users trial code snippets):

  • Voila helps render live Jupyter Notebook with interactive widgets.
  • nteract, nteract is an ecosystem of React components, JavaScript packages, and applications built on top of the Jupyter specification that enhances interactive computing and data science workflows. Here is a blog illustrating how well does nteract do.
  • Shell Commands by Node.js may be necessary for Jupyter Lab.
  • Jupyter Lab. On how to utilize Jupyter Lab in Electron, this repository gives an example. jupyterlab-interactive-dashboard-editor
  • Jupyter Notebook is a web-based interactive computational environment for creating Jupyter notebook documents. It supports several languages like Python (IPython), Julia, R, etc. and is largely used for data analysis, data visualization, and further interactive, exploratory computing.
    JupyterLab is the next-generation user interface including notebooks. It has a modular structure, where you can open several notebooks or files (e.g. HTML, Text, Markdowns, etc) as tabs in the same window. It offers more of an IDE-like experience.
    For a beginner, I would suggest starting with Jupyter Notebook as it just consists of a file browser and an (notebook) editor view. It might be easier to use. If you want more features, switch to JupyterLab. JupyterLab offers much more features and an enhanced interface, which can be extended through extensions: JupyterLab Extensions (GitHub)

Fucore Gitlab Repo (private for the moment): https://gitlab.com/wenyin/fucore

Maintainer

EAST

  • Wenyin Wei, Ph.D. candidate under Yunfeng Liang Professor