SsTC: Solid-state Task Constructor

Dear all,

for some time, I have been using Fortran extensively in order to automate several routine tasks I was doing to get results for my PhD. These tasks always involve the sampling, and sometimes integration, of functions in the Brillouin Zone of a crystalline system. Before, I was using the code Wannier90 to do so, but implementing there soon become an uphill struggle. That’s why I decided to create SsTC.

This is a Fortran library focused on providing the user with utilities in the creation of objects (“tasks”), which define the sampling/integration job to perform. In few words, the user is expected to provide the function f^{\alpha}(k; \beta) which is to be sampled, and SsTC will do the job. The library has been programmed with flexibility in the definition of f in mind, such that the functional dependences \alpha, \beta represent general “integer-like” indices (as in a tensor) and “continuous-like” indices (as frequencies in the case of response functions), respectively. For its use in solid-state physics, I also included Wannier interpolation routines. I have taken long time to document the project and provide examples, which can be found in the User’s Guide.

Although this project is not yet finished, the library is functional and I wanted to share with you its state. Looking forward to your comments!

Finally, I want to say that I am really grateful to this community. Although this is my first post, I have been following discourse for some time and the discussions posted here surely have contributed to improve my way to code and develop this project.

Cheers!

Álvaro

15 Likes

Thank you for sharing your project! :slightly_smiling_face:

To make it become a part of the Fortran ecosystem, I very warmly recommend to package it using fpm, working similar to Python’s pip or Rust cargo. Otherwise it makes it difficult to include it as a dependency to Modern Fortran projects.

Keep up the good work :slight_smile:

1 Like