Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to acknowledge Numbat in a scientific paper? #633

Open
archisman-panigrahi opened this issue Oct 23, 2024 · 9 comments
Open

How to acknowledge Numbat in a scientific paper? #633

archisman-panigrahi opened this issue Oct 23, 2024 · 9 comments

Comments

@archisman-panigrahi
Copy link
Contributor

Hi, I am in the process of writing a paper, and Numbat was super helpful in doing some of the calculations. How can I acknowledge Numbat? My current plan is the following,

We thank the developers of the programming languages Julia [REF] and Numbat, which were utilized for numerical computations in this paper.

It would be great if you create a citation link for the github repo as described in https://academia.stackexchange.com/a/172780/128673 and https://x.com/natfriedman/status/1420122675813441540

@Goju-Ryu
Copy link
Contributor

I'm very interested in what the paper is about and how you used Numbat while writing it. If you want to share a bit about your work and experience as it relates to Numbat it would be more than welcome as a comment on this issue: #610.

(I’m not the author of Numbat so I unfortunately can't answer your question)

@archisman-panigrahi
Copy link
Contributor Author

I am working on excitonic condensates. I can share the link the paper once it is in arxiv (it may take a couple of weeks).

I did not write any program with numbat. All the codes were written in Julia. I used numbat to convert the values obtained from the my code into realistic units and vice versa. For example, I know how the kinetic and interaction energy scales with momentum, so I use numbat to evaluate it at one point in my momentum space grid and I use Julia to scale it accordingly everywhere.

Numbat really helps with quickly estimating a quantity when some parameter is changed.

@Goju-Ryu
Copy link
Contributor

That sounds really interesting and I will look forward to you sharing it.

Even though it wasn't a program really it still fits the issue I think. From the issue description:

All kinds of programs are welcome. Everything from simple one-line expressions to larger computations. Polished or unpolished.

I would love to hear what you would need to be able to write the Julia portions in Numbat too. I realize that Julia is a mature language with a rich ecosystem so it probably isn't feasible in the near future. But any feedback on what could drive numbat in the direction of being able to handle more of those sorts of tasks would help steer the project in the right direction.

@sharkdp
Copy link
Owner

sharkdp commented Oct 23, 2024

Hi, I am in the process of writing a paper, and Numbat was super helpful in doing some of the calculations. How can I acknowledge Numbat?

Awesome, thank you for asking. I added a CITATION.cff file. Please let me know if you see any issues with it.

I'm very interested in what the paper is about and how you used Numbat while writing it. If you want to share a bit about your work and experience as it relates to Numbat it would be more than welcome as a comment on this issue: #610.

I can second this.

I would love to hear what you would need to be able to write the Julia portions in Numbat too. I realize that Julia is a mature language with a rich ecosystem so it probably isn't feasible in the near future. But any feedback on what could drive numbat in the direction of being able to handle more of those sorts of tasks would help steer the project in the right direction.

And this 👍

@archisman-panigrahi
Copy link
Contributor Author

I will answer the rest of the comments later, but can you also somehow add "A statically typed programming language for scientific computations with first class support for physical dimensions and units " ?

Otherwise, this is how it appears
image

@archisman-panigrahi
Copy link
Contributor Author

archisman-panigrahi commented Oct 23, 2024

I edited the .bib entry to the following

@misc{Peter_Numbat_2024,
author = {Peter, David},
license = {MIT},
month = oct,
title = {{Numbat}:  A statically typed programming language for scientific computations with first class support for physical dimensions and units },
url = {https://github.com/sharkdp/numbat},
version = {1.14.0},
note = {version: 1.14.0},
year = {2024}
}

It produces this with REVTEX, which I like better than the previous one.

image

@archisman-panigrahi
Copy link
Contributor Author

archisman-panigrahi commented Oct 24, 2024

what you would need to be able to write the Julia portions in Numbat too.

I don't think that would be a good idea. Both Julia and Numbat are extremely good at what they currently do, and there is no need to implicate one's features into the other.

But here goes the answer to your question 😄

  1. MATLAB syntax and (almost) all linear algebra routines in MATLAB
  2. Almost all features of matplotlib
  3. Speed of C
  4. Parallelization support

There are reasons why Julia was created.

However, Numbat is the best tool I know of for what it already does. Please don't make it unnecessarily complicated. There is no need to include matrix diagonalization or differential equation solver routines in Numbat. Those things have been implemented in every other widely-adopted languages used for scientific computing. But, no other tool is as good and reliable as Numbat at converting dimension-full quantities into one another.


how you used Numbat while writing it

I mainly use Numbat as a unit converter (not as a programming language).

For example let's say I am trying to model bands in Gallium Arsenide. I have a momentum space lattice with grid spacing 0.02*h_bar/(50 angstrom) and I know the effective mass of electron is 7% of the bare electron mass. What is the kinetic energy in meV at a particular point on the grid? I can easily get the answer with Numbat

(0.02*h_bar/(50 angstrom))^2/(2 * 0.07 * electron_mass) -> meV

  (0.02 h_bar / 50 angstrom)² / (2 × 0.07 × electron_mass) ➞ millielectronvolt

    = 0.00870853 meV    [Energy or Torque]

I could in principle use a regular calculator (or even Julia), but Numbat knows all the conversion factors and fundamental constants. Julia wouldn't know that.
Once I know the kinetic energy (which is usually quadratic in momentum) at a single point, I can scale it appropriately at every point on the grid using Julia.

Suppose I have to change some parameters and do the whole calculation again? Simple, it is still a one-liner in Numbat.

I can do a similar procedure for the interaction energy (where I use numbat to get the value of the interaction at a typical point, and do rest of the calculation with Julia).
Finally, I use Julia to self-consistently solve the quantum problem using Hartree-Fock like techniques.

@sharkdp
Copy link
Owner

sharkdp commented Oct 24, 2024

I will answer the rest of the comments later, but can you also somehow add "A statically typed programming language for scientific computations with first class support for physical dimensions and units " ?

This is included as abstract:

numbat/CITATION.cff

Lines 14 to 17 in ccf3aca

abstract: >-
A statically typed programming language for scientific
computations with first class support for physical
dimensions and units.

Maybe there is a better way?

It produces this with REVTEX, which I like better than the previous one.

image

That looks great — thank you

@archisman-panigrahi
Copy link
Contributor Author

archisman-panigrahi commented Nov 14, 2024

Here is the paper. https://arxiv.org/pdf/2411.08091

It would be nice if the Numbat documentation is published at a journal like https://scipost.org/SciPostPhysCodeb at some point.

I used Numbat to calculate the scale of kinetic and interaction energy and used those values in this Julia Jupyter notebook (https://github.com/archisman-panigrahi/Subsystem-symmetry-breaking-NFL-codes/blob/main/identical_parabolic_many_bands_constant_density_realistic_parameters.ipynb). In fact, I did many other calculation with Numbat to estimate order of magnitudes of different quantities, but the scale of the energies are the only thing that were included in the results of the paper.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants