Skip to content

thomaszhang2661/gutzwiller-dft-method

Repository files navigation

Gutzwiller-DFT Method Implementation

🏆 Contributing to Published Research

This repository contains my contributions to the LDA+Gutzwiller method with Newton's optimization, published in:

Zhang, J., Tian, M. F., Jin, G. X., Xu, Y. F., & Dai, X. (2017)
Implementation of LDA+Gutzwiller with Newton's method.
Chinese Physics B, 26(1), 017103.
DOI: 10.1088/1674-1056/26/1/017103

Overview

This project showcases my specific contributions to the Gutzwiller variational method implementation. The work builds upon established theoretical frameworks and existing computational infrastructure, with my focus on numerical optimization and algorithmic improvements.FT Method Implementation

🏆 Published Research Implementation

This repository contains the implementation of the LDA+Gutzwiller method with Newton's optimization, published in:

Zhang, J., Tian, M. F., Jin, G. X., Xu, Y. F., & Dai, X. (2017)
Implementation of LDA+Gutzwiller with Newton's method.
Chinese Physics B, 26(1), 017103.
DOI: 10.1088/1674-1056/26/1/017103

Overview

This project implements the Gutzwiller variational approach for treating strong electronic correlations in quantum many-body systems. The method combines Density Functional Theory (DFT) with the Gutzwiller variational ansatz to capture both itinerant and localized electronic behavior in strongly correlated materials.

My Key Contributions

  • Newton Method Implementation: Developed the analytical Jacobian matrix computation for faster convergence
  • Numerical Optimization: Improved the self-consistent iteration algorithms
  • Code Modernization: Cleaned and refactored legacy Fortran code with modern programming practices
  • Algorithm Enhancement: Contributed to the optimization techniques that achieved 6× speed improvement
  • Documentation: Created comprehensive documentation and examples for the method

Technical Foundation (Built Upon Existing Work)

This implementation builds upon:

  • Established Gutzwiller Theory: Based on decades of theoretical development in many-body physics
  • Existing Computational Framework: Utilizes proven DFT integration and MPI infrastructure
  • Collaborative Research: Part of multi-author effort with theoretical and computational contributions
  • Literature Methods: Implements well-documented algorithms from the quantum many-body community

Physical Applications

  • Transition metal oxides (TMOs)
  • Heavy fermion systems
  • Iron-based superconductors
  • Strongly correlated electron materials
  • Metal-insulator transitions

Technical Highlights

Core Algorithms

  • Fermi Solver: Numerical solution of fermionic Hamiltonians with correlation effects
  • Boson Solver: Treatment of bosonic degrees of freedom in the variational approach
  • Self-Consistent Loop: Iterative solution of coupled DFT+Gutzwiller equations
  • Matrix Optimization: Efficient handling of large-scale matrix operations

Numerical Methods

  • Newton-Raphson method for non-linear equation systems
  • Jacobian matrix calculations for fast convergence
  • Adaptive mixing algorithms for stability
  • Eigenvalue solvers for large hermitian matrices

Installation

Prerequisites

  • Fortran Compiler: Intel Fortran or gfortran
  • MPI Library: OpenMPI or Intel MPI
  • Linear Algebra: Intel MKL or LAPACK/BLAS
  • CMake: Version 3.10 or higher (optional)

Build Instructions

Using CMake (Recommended)

mkdir build && cd build
cmake ..
make -j4

Using Traditional Makefile

cd src
make -f Makefile.intel  # for Intel compiler
# or
make -f Makefile.gnu    # for GNU compiler

Usage

Basic Example: SrVO₃ Calculation

# Copy example input
cp examples/SrVO3/control.ini .

# Run calculation
mpirun -np 4 ./ddgw.exe

# Check convergence
tail -f iter.log

Input File Structure

The main input file control.ini contains several namelists:

  • &control: General control parameters
  • &fermi_prec: Fermi solver precision settings
  • &boson_prec: Boson solver precision settings
  • &lda: System-specific parameters
  • &udc: Double-counting correction parameters

See docs/input_reference.md for detailed parameter descriptions.

Project Structure

├── src/
│   ├── core/           # Main program and interfaces
│   ├── fermi/          # Fermionic Hamiltonian solver
│   ├── utils/          # Mathematical utilities and I/O
│   └── legacy/         # Earlier versions for reference
├── docs/
│   ├── theory.md       # Theoretical background
│   ├── api.md          # API documentation
│   └── examples.md     # Usage examples
├── examples/
│   ├── SrVO3/          # Strontium vanadate example
│   └── benchmark/      # Performance benchmarks
├── tests/              # Unit tests
└── build/              # Build system files

Key Modules

Fermi Solver (src/fermi/)

  • fermi_solver.f90: Main fermionic Hamiltonian solver
  • double_counting.f90: Double-counting correction implementations
  • fermi_utilities.f90: Helper functions for fermi calculations

Core Engine (src/core/)

  • main_interface.f90: Primary calculation interface
  • self_consistent.f90: Self-consistency loop implementation
  • mpi_wrapper.f90: MPI communication routines

Mathematical Utilities (src/utils/)

  • linear_algebra.f90: Matrix operations and eigensolvers
  • numerical_methods.f90: Newton method and optimization
  • io_routines.f90: Input/output handling

Performance

Benchmarks

  • SrVO₃ (1331 k-points): ~30 minutes on 16 cores
  • Scaling: Near-linear up to 64 MPI processes
  • Memory: ~2GB per process for typical systems

Optimization Tips

  • Use Intel MKL for optimal linear algebra performance
  • Enable OpenMP threading in MKL
  • Adjust k-point parallelization for your system size

Theory and Methods

Gutzwiller Variational Ansatz

The Gutzwiller wave function takes the form:

|Ψ_G⟩ = P_G |Ψ_0⟩

where P_G is the Gutzwiller projector and |Ψ_0⟩ is the uncorrelated ground state.

DFT+Gutzwiller Self-Consistency

The method iteratively solves:

  1. DFT step: Calculate band structure from effective Hamiltonian
  2. Gutzwiller step: Optimize variational parameters
  3. Mixing: Update charge density and potentials

See docs/theory.md for detailed mathematical formulation.

Contributing

Development Guidelines

  • Follow Fortran 2008/2015 standards
  • Use consistent indentation (2 spaces)
  • Include comprehensive comments for new algorithms
  • Add unit tests for new functionality

Code Style

  • Variable names: descriptive and lowercase with underscores
  • Module names: descriptive with mod_ prefix
  • Subroutine names: verb_noun format

Citation

If you use this code in your research, please cite:

@article{zhang2017implementation,
  title={Implementation of LDA+Gutzwiller with Newton's method},
  author={Zhang, Jian and Tian, Ming-Feng and Jin, Guang-Xi and Xu, Yuan-Feng and Dai, Xi},
  journal={Chinese Physics B},
  volume={26},
  number={1},
  pages={017103},
  year={2017},
  publisher={IOP Publishing},
  doi={10.1088/1674-1056/26/1/017103}
}

License

This project is licensed under the MIT License - see the LICENSE file for details.

Authors and Acknowledgments

Primary Author

Primary Author (This Repository)

  • Jian Zhang (张健) - Numerical optimization algorithms, Newton method implementation, code modernization

Acknowledgments

  • Institute of Physics, Chinese Academy of Sciences - Research environment and support
  • Gutzwiller Method Community - Theoretical foundations and established computational techniques
  • Open Source Libraries - LAPACK, BLAS, MPI, and other numerical libraries

Contact

For questions or collaborations:

Changelog

Version 2.0 (2014)

  • Added MPI parallelization
  • Implemented Newton method solver
  • Enhanced double-counting schemes
  • Improved numerical stability

Version 1.0 (2013)

  • Initial implementation
  • Basic Gutzwiller variational method
  • Serial execution only

Note: This implementation represents research-grade scientific software. While extensively tested, users should validate results for their specific applications.

About

LDA+Gutzwiller method implementation with Newton optimization for strongly correlated materials

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors