Frequency Domain Perfectly Matched Layer (FDPML)
Introduction
FDPML is a computational method to simulate heat transport through nanostructured materials. The method converts atomistic equations of motion for every atom inside a simulation domain to a set of linear algebraic equations. The equations can then be solved using iterative solvers. The model is efficient as it stores the matrices in sparse format (COO), while also being able to be deployed across multiple cluster node.
For a more detailed mathematical description of the model please refer
kakodkar et. al. Journal of Applied Physics 118, 094301 (2015)
Installation
Dependencies
- MPI
- openmpi FORTRAN90 Compiler
- IntelMKL
Clone this repository using git clone git@github.com:Rohit-Kakodkar/FDPML.git
Install using Makefile : make all
Upon installation execultables will be created in \bin
folder
Usage
Overview
The method can be used to obtain 2 properties intrinsic to heat transport through nanostructured materials.
- Transmission coefficient across interfaces- Please refer here
- Scattering Cross-section due to nanoparticles- Please refer here
Input parameters for simulations are specified through input cards described below
All quantities whose dimensions are not explicitly specified are in RYDBERG ATOMIC UNITS. Charge is "number" charge (i.e. not multiplied by e); potentials are in energy units (i.e. they are multiplied by e).
Structure of the input data:
&filenames
...
/
&system
...
/
&postprocessing
...
/
&plotting
...
/
Detailed discription
Input cards:
-
filenames
- flfrc1 - force constant file of the matrix material (should be generated via Quantum espresso). NOT IN XML FORMAT
- flfrc2 - force constant file of impurity material (should be generated via Quantum espresso). NOT IN XML FORMAT
- mass_input - logical, if true masses are calculated with atomic resolution else masses are calculated based on supercell
- mass_file - mass domain file generated by gendomain.f90
- domain_file - domain specification generated by gendomain.f90
-
system
- simulation_type = 'interface' or 'nanoparticle'
- PD = size of the primary domain, should be same as the one generated gendomain.f90
- LPML = length of PML. Ignored if PML calculation is auto
- periodic = logical, if true applied periodic boundaries in x and y direction
- crystal_coordinates = logical, if true work in crystal coordinates
- asr = acoustic sum rule. Refer QE documentation
- wavetype = 'half' or 'full' to specify type of incident wave
- q = wavevector, ignored if mp = .true.
- mode = polarization
- sigmamax = maximum value of damping coefficient, Ignored if PML calculation is auto
- mp = generate qpoint list base Monkhorst Pack(MP) grid
- qpoint = n, then choose nth q from list of q generated by MP grid
- nk1, nk2, nk3 = k-spacings in x,y and z directions for MP grid
-
postprocessing
- calc_TC = logical, calculate transmission coefficient (for interface problems)
- calc_gam = logical, calculate scattering cross-section (for nanoparticle problems)
-
plotting
- plot_K = logical, plot variation of K vector on TD(3)/2 plane
- plot_uinc = logical, plot incident wave
- plot_uscat = logical, plot scattered wave
- plot_sig = logical, plot variation of damping coefficient
- plottingmode = 1, 2, or 3, plot x, y, or z components of above properties
Future improvements (In progress)
- Incorporate anharmonic force constants while obtaining thermal properties
- Calculate scattering rates from scattering cross-sections
- Calculate density of phonon states to obtain thermal interface conductance from transmission coefficients