LCOV - code coverage report
Current view: top level - src/65_paw - m_paw_nmr.F90 (source / functions) Coverage Total Hit
Test: coverage.info Lines: 96.1 % 129 124
Test Date: 2026-09-21 22:40:37 Functions: 100.0 % 2 2

            Line data    Source code
       1              : !!****m* ABINIT/m_paw_nmr
       2              : !! NAME
       3              : !!  m_paw_nmr
       4              : !!
       5              : !! FUNCTION
       6              : !!  This module contains routines related to Nuclear Magnetic Resonance (NMR)
       7              : !!   observables (PAW approach).
       8              : !!
       9              : !! COPYRIGHT
      10              : !! Copyright (C) 2018-2026 ABINIT group (JWZ, MT)
      11              : !! This file is distributed under the terms of the
      12              : !! GNU General Public License, see ~abinit/COPYING
      13              : !! or http://www.gnu.org/copyleft/gpl.txt .
      14              : !!
      15              : !! SOURCE
      16              : 
      17              : #if defined HAVE_CONFIG_H
      18              : #include "config.h"
      19              : #endif
      20              : 
      21              : #include "abi_common.h"
      22              : 
      23              : MODULE m_paw_nmr
      24              : 
      25              : 
      26              :  use defs_basis
      27              :  use m_errors
      28              :  use m_abicore
      29              :  use m_xmpi
      30              : 
      31              :  use m_symtk,      only : matpointsym
      32              :  use m_pawang,     only : pawang_type
      33              :  use m_pawtab,     only : pawtab_type
      34              :  use m_pawrad,     only : pawrad_type,pawrad_deducer0,simp_gen
      35              :  use m_pawtab,     only : pawtab_type
      36              :  use m_paw_an,     only : paw_an_type
      37              :  use m_pawrhoij,   only : pawrhoij_type
      38              :  use m_paw_denpot, only : pawdensities
      39              :  use m_paral_atom, only : get_my_atmtab,free_my_atmtab
      40              : 
      41              :  implicit none
      42              : 
      43              :  private
      44              : 
      45              : !public procedures.
      46              :  public :: make_efg_onsite ! Compute the electric field gradient due to PAW on-site densities
      47              :  public :: make_fc_paw     ! Compute the PAW on-site contribution to the Fermi-contact
      48              : 
      49              : CONTAINS  !========================================================================================
      50              : !!***
      51              : 
      52              : !--------------------------------------------------------------------------------------------------
      53              : 
      54              : !!****f* m_paw_nmr/make_efg_onsite
      55              : !! NAME
      56              : !! make_efg_onsite
      57              : !!
      58              : !! FUNCTION
      59              : !! Compute the electric field gradient due to onsite densities
      60              : !!
      61              : !! INPUTS
      62              : !!  mpi_atmtab(:)=--optional-- indexes of the atoms treated by current proc
      63              : !!  comm_atom=--optional-- MPI communicator over atoms
      64              : !!  my_natom=number of atoms treated by current processor
      65              : !!  natom=number of atoms in cell.
      66              : !!  nsym=number of symmetries in space group
      67              : !!  ntypat=number of atom types
      68              : !!  paw_an(my_natom) <type(paw_an_type)>=paw arrays given on angular mesh
      69              : !!  pawang <type(pawang_type)>=paw angular mesh and related data
      70              : !!  pawrad(ntypat) <type(pawrad_type)>=paw radial mesh and related data
      71              : !!  pawrhoij(my_natom) <type(pawrhoij_type)>= paw rhoij occupancies and related data
      72              : !!  pawtab(ntypat) <type(pawtab_type)>=paw tabulated starting data
      73              : !!  rprimd(3,3), conversion from crystal coordinates to cartesian coordinates
      74              : !!  symrel(3,3,nsym)=symmetry operators in terms of action on primitive translations
      75              : !!  tnons(3,nsym) = nonsymmorphic translations
      76              : !!  xred(3,natom), location of atoms in crystal coordinates.
      77              : !!
      78              : !! OUTPUT
      79              : !!  efg(3,3,natom), the 3x3 efg tensor at each site due to nhat
      80              : 
      81              : !! NOTES
      82              : !! This routine computes the electric field gradient, specifically the components
      83              : !! $\partial^2 V/\partial x_\alpha \partial x_\beta$ of the potential generated by the valence
      84              : !! electrons, at each atomic site in the unit cell. Key references: Kresse and Joubert, ``From
      85              : !! ultrasoft pseudopotentials to the projector augmented wave method'', Phys. Rev. B. 59, 1758--1775 (1999) [[cite:Kresse1999]],
      86              : !! and Profeta, Mauri, and Pickard, ``Accurate first principles prediction of $^{17}$O NMR parameters in
      87              : !! SiO$_2$: Assignment of the zeolite ferrierite spectrum'', J. Am. Chem. Soc. 125, 541--548 (2003) [[cite:Profeta2003]]. See in particular
      88              : !! Eq. 11 and 12 of Profeta et al., but note that their sum over occupied states times 2 for occupation number is
      89              : !! replaced in the Kresse and Joubert formulation by the sum over $\rho_{ij}$ occupations for each basis element pair.
      90              : !!
      91              : !! SOURCE
      92              : 
      93           18 : subroutine make_efg_onsite(efg,my_natom,natom,nsym,ntypat,paw_an,pawang,pawrhoij,pawrad,pawtab, &
      94            9 : &                          rprimd,symrel,tnons,xred,&
      95            9 : &                          mpi_atmtab,comm_atom) ! optional arguments (parallelism)
      96              : 
      97              : !Arguments ------------------------------------
      98              : !scalars
      99              :  integer,intent(in) :: my_natom,natom,nsym,ntypat
     100              :  integer,optional,intent(in) :: comm_atom
     101              :  type(pawang_type),intent(in) :: pawang
     102              : !arrays
     103              :  integer,intent(in) :: symrel(3,3,nsym)
     104              :  integer,optional,target,intent(in) :: mpi_atmtab(:)
     105              :  real(dp),intent(in) :: rprimd(3,3),tnons(3,nsym),xred(3,natom)
     106              :  real(dp),intent(out) :: efg(3,3,natom)
     107              :  type(paw_an_type),intent(in) :: paw_an(my_natom)
     108              :  type(pawrad_type),intent(in) :: pawrad(ntypat)
     109              :  type(pawrhoij_type),intent(in) :: pawrhoij(my_natom)
     110              :  type(pawtab_type),intent(in) :: pawtab(ntypat)
     111              : 
     112              : !Local variables-------------------------------
     113              : !scalars
     114              :  integer :: cplex,iatom,iatom_tot,ictr,ierr,imesh_size,ispden,itypat
     115              :  integer :: lm,lm_size,local_paw_print_vol
     116              :  integer :: mesh_size,my_comm_atom,nzlmopt,nspden
     117              :  integer :: opt_compch,opt_dens,opt_l,opt_print
     118              :  logical :: my_atmtab_allocated,paral_atom
     119              :  real(dp) :: c1,c2,c3,compch_sph,intg
     120              : !arrays
     121            9 :  integer,pointer :: my_atmtab(:)
     122            9 :  logical,allocatable :: lmselectin(:),lmselectout(:)
     123            9 :  real(dp),allocatable :: ff(:),nhat1(:,:,:),rho1(:,:,:),trho1(:,:,:)
     124              : 
     125              : ! ************************************************************************
     126              : 
     127              :  DBG_ENTER("COLL")
     128              : 
     129            9 :  if (my_natom>0) then
     130            9 :    ABI_CHECK(pawrhoij(1)%qphase==1,'make_efg_onsite: not supposed to be called with qphqse=2!')
     131              :  end if
     132              : 
     133          542 :  efg(:,:,:) = zero
     134              : 
     135              : !Set up parallelism over atoms
     136            9 :  paral_atom=(present(comm_atom).and.(my_natom/=natom))
     137            9 :  nullify(my_atmtab);if (present(mpi_atmtab)) my_atmtab => mpi_atmtab
     138            9 :  my_comm_atom=xmpi_comm_self;if (present(comm_atom)) my_comm_atom=comm_atom
     139              :  call get_my_atmtab(my_comm_atom,my_atmtab,my_atmtab_allocated,paral_atom,natom,&
     140            9 : & my_natom_ref=my_natom)
     141              : 
     142              : !the following factors arise in expanding the angular dependence of the electric field gradient tensor in
     143              : !terms of real spherical harmonics. The real spherical harmonics are as in the routine initylmr.F90; see
     144              : !in particular also http://www.unioviedo.es/qcg/art/Theochem419-19-ov-BF97-rotation-matrices.pdf
     145            9 :  c1 = sqrt(16.0*pi/5.0)
     146            9 :  c2 = sqrt(4.0*pi/5.0)
     147            9 :  c3 = sqrt(12.0*pi/5.0)
     148              : 
     149              : !loop over atoms in cell
     150           50 :  do iatom = 1, my_natom
     151           41 :    iatom_tot=iatom;if (paral_atom) iatom_tot=my_atmtab(iatom)
     152           41 :    itypat=pawrhoij(iatom)%itypat
     153              : 
     154           41 :    lm_size = paw_an(iatom)%lm_size
     155           41 :    if (lm_size < 5) cycle ! if lm_size < 5 then the on-site densities for this atom have no L=2 component
     156              : !  and therefore nothing to contribute to the on-site electric field gradient
     157              : 
     158           41 :    mesh_size=pawtab(itypat)%mesh_size
     159          123 :    ABI_MALLOC(ff,(mesh_size))
     160              : 
     161           41 :    cplex = pawrhoij(iatom)%qphase
     162           41 :    nspden = pawrhoij(iatom)%nspden
     163          123 :    ABI_MALLOC(lmselectin,(lm_size))
     164           82 :    ABI_MALLOC(lmselectout,(lm_size))
     165          490 :    lmselectin = .true. ! compute all moments of densities
     166           41 :    nzlmopt = -1
     167           41 :    opt_compch = 0
     168           41 :    compch_sph = zero
     169           41 :    opt_dens = 0 ! compute all densities
     170           41 :    opt_l = -1 ! all moments contribute
     171           41 :    opt_print = 0 ! do not print out moments
     172           41 :    local_paw_print_vol = 0 ! standard amount of printing in pawdensities
     173              : 
     174          205 :    ABI_MALLOC(nhat1,(cplex*mesh_size,lm_size,nspden*(1-((opt_dens+1)/2))))
     175          164 :    ABI_MALLOC(rho1,(cplex*mesh_size,lm_size,nspden))
     176          164 :    ABI_MALLOC(trho1,(cplex*mesh_size,lm_size,nspden*(1-((opt_dens+1)/2))))
     177              : 
     178              : !  construct multipole expansion of on-site charge densities for this atom
     179              :    call pawdensities(compch_sph,cplex,iatom_tot,lmselectin,lmselectout,lm_size,&
     180              : &   nhat1,nspden,nzlmopt,opt_compch,opt_dens,opt_l,opt_print,&
     181              : &   pawang,local_paw_print_vol,pawrad(itypat),pawrhoij(iatom),pawtab(itypat),&
     182           41 : &   rho1,trho1)
     183              : 
     184              : !  spin components:
     185              : !  nspden(1) contains total in all cases
     186           41 :    ispden = 1
     187              : 
     188          246 :    do lm = 5, 9 ! loop on L=2 components of multipole expansion
     189              : 
     190          205 :      if(.not. lmselectout(lm)) cycle ! skip moments that contributes zero
     191              : 
     192              : !    the following is r^2*(n1-tn1-nhat)/r^3 for this multipole moment
     193              : !    use only the real part of the density in case of cplex==2
     194        78327 :      do imesh_size = 2, mesh_size
     195        78206 :        ictr = cplex*(imesh_size - 1) + 1
     196        78206 :        ff(imesh_size)=rho1(ictr,lm,ispden)-trho1(ictr,lm,ispden)-nhat1(ictr,lm,ispden)
     197        78327 :        ff(imesh_size)=ff(imesh_size)/pawrad(itypat)%rad(imesh_size)
     198              :      end do
     199          121 :      call pawrad_deducer0(ff,mesh_size,pawrad(itypat))
     200          121 :      call simp_gen(intg,ff,pawrad(itypat))
     201          162 :      select case (lm)
     202              :      case (5) ! S_{2,-2}
     203           34 :        efg(1,2,iatom_tot) = efg(1,2,iatom_tot) - c3*intg ! xy case
     204              :      case (6) ! S_{2,-1}
     205            4 :        efg(2,3,iatom_tot) = efg(2,3,iatom_tot) - c3*intg ! yz case
     206              :      case (7) ! S_{2, 0}
     207           41 :        efg(1,1,iatom_tot) = efg(1,1,iatom_tot) + c2*intg ! xx case
     208           41 :        efg(2,2,iatom_tot) = efg(2,2,iatom_tot) + c2*intg ! yy case
     209           41 :        efg(3,3,iatom_tot) = efg(3,3,iatom_tot) - c1*intg ! zz case
     210              :      case (8) ! S_{2,+1}
     211            4 :        efg(1,3,iatom_tot) = efg(1,3,iatom_tot) - c3*intg ! xz case
     212              :      case (9) ! S_{2,+2}
     213           38 :        efg(1,1,iatom_tot) = efg(1,1,iatom_tot) - c3*intg ! xx case
     214          121 :        efg(2,2,iatom_tot) = efg(2,2,iatom_tot) + c3*intg ! yy case
     215              :      end select
     216              : 
     217              :    end do  ! end loop over LM components with L=2
     218              : 
     219              : 
     220              : !  Symmetrization of EFG
     221           41 :    efg(2,1,iatom_tot) = efg(1,2,iatom_tot)
     222           41 :    efg(3,1,iatom_tot) = efg(1,3,iatom_tot)
     223           41 :    efg(3,2,iatom_tot) = efg(2,3,iatom_tot)
     224              : 
     225           41 :    ABI_FREE(lmselectin)
     226           41 :    ABI_FREE(lmselectout)
     227           41 :    ABI_FREE(ff)
     228           41 :    ABI_FREE(nhat1)
     229           41 :    ABI_FREE(rho1)
     230           50 :    ABI_FREE(trho1)
     231              : 
     232              :  end do     ! Loop on atoms
     233              : 
     234              : !Reduction in case of parallelisation over atoms
     235            9 :  if (paral_atom) then
     236            0 :    call xmpi_sum(efg,my_comm_atom,ierr)
     237              :  end if
     238              : 
     239              : ! symmetrize tensor at each atomic site using point symmetry operations
     240           50 :  do iatom = 1, natom
     241           50 :    call matpointsym(iatom,efg(:,:,iatom),natom,nsym,rprimd,symrel,tnons,xred)
     242              :  end do
     243              : 
     244              : !Destroy atom table used for parallelism
     245            9 :  call free_my_atmtab(my_atmtab,my_atmtab_allocated)
     246              : 
     247              :  DBG_EXIT("COLL")
     248              : 
     249           18 :  end subroutine make_efg_onsite
     250              : !!***
     251              : 
     252              : !----------------------------------------------------------------------
     253              : 
     254              : !!****f* m_paw_nmr/make_fc_paw
     255              : !! NAME
     256              : !! make_fc_paw
     257              : !!
     258              : !! FUNCTION
     259              : !! Compute the Fermi-contact term due to the PAW cores
     260              : !!
     261              : !! INPUTS
     262              : !!  mpi_atmtab(:)=--optional-- indexes of the atoms treated by current proc
     263              : !!  comm_atom=--optional-- MPI communicator over atoms
     264              : !!  my_natom=number of atoms treated by current processor
     265              : !!  natom=number of atoms in cell.
     266              : !!  nspden=number of spin ensity component
     267              : !!  ntypat=number of atom types
     268              : !!  pawrad(ntypat) <type(pawrad_type)>=paw radial mesh and related data
     269              : !!  pawrhoij(my_natom) <type(pawrhoij_type)>= paw rhoij occupancies and related data
     270              : !!  pawtab(ntypat) <type(pawtab_type)>=paw tabulated starting data
     271              : !!
     272              : !! OUTPUT
     273              : !!  fc(nspden,natom)=the Fermi-contact interaction at each site due to PAW for each spin density
     274              : !!
     275              : !! NOTES
     276              : !! The Fermi contact interaction is the electron density evaluated exactly at the nuclear site.
     277              : !! For a nuclear site at R, we are thus computing the expectation value of $\delta^3(R)$, the
     278              : !! the three-dimensional delta function at vector position $R$. In terms of the radial variable only
     279              : !! the delta function is $\delta(r)/4\pi r^2$.  Because this observable is
     280              : !! absolutely confined within the PAW radius, only the response due to the AE PAW functions is
     281              : !! needed, the pseudo wavefunctions and pseudo PAW functions cancel each other out. We then
     282              : !! must compute the integral of $u_i/r times u_j/r \delta(R)d^3r$, for the $l=0$ angular momentum
     283              : !! states only. This is simplified with the use of L'H\^{o}spital's theorem to take the limit
     284              : !! as $r\rightarrow 0$, yielding $u_i'(r) u_j'(r)$. To compute the derivatives we just fit the
     285              : !! first 5 points of the $u$ functions to a line through the origin, using the least squares
     286              : !! procedure resulting from $\chi = sum_i (y_i - m*x_i)^2$ . This is more stable than
     287              : !! computing the derivative of the whole function and extrapolating it to zero.
     288              : !! See Zwanziger, J. Phys. Conden. Matt. 21, 15024-15036 (2009) [[cite:Zwanziger2009]].
     289              : !!
     290              : !! SOURCE
     291              : 
     292           10 : subroutine make_fc_paw(fc,my_natom,natom,nspden,ntypat,pawrhoij,pawrad,pawtab,&
     293            5 : &                      mpi_atmtab,comm_atom) ! optional arguments (parallelism)
     294              : 
     295              : !Arguments ------------------------------------
     296              : !scalars
     297              :  integer,intent(in) :: my_natom,natom,nspden,ntypat
     298              :  integer,optional,intent(in) :: comm_atom
     299              : !arrays
     300              :  integer,optional,target,intent(in) :: mpi_atmtab(:)
     301              :  real(dp),intent(out) :: fc(nspden,natom)
     302              :  type(pawrad_type),intent(in) :: pawrad(ntypat)
     303              :  type(pawrhoij_type),intent(in) :: pawrhoij(my_natom)
     304              :  type(pawtab_type),target,intent(in) :: pawtab(ntypat)
     305              : 
     306              : !Local variables-------------------------------
     307              : !scalars
     308              :  integer :: iatom,iatom_tot,ierr,irhoij,islope,ispden,itypat
     309              :  integer :: ilmn,il,iln,ilm,im,jl,jlm,jlmn,jln,jm,j0lmn,jrhoij
     310              :  integer :: klmn,kln,mesh_size,my_comm_atom,nslope
     311              :  logical :: my_atmtab_allocated,paral_atom
     312              :  real(dp) :: mi,mj,xi,xxsum,xysumi,xysumj,yi,yj
     313              : !arrays
     314            5 :  integer,ABI_CONTIGUOUS pointer :: indlmn(:,:)
     315            5 :  integer,pointer :: my_atmtab(:)
     316              : 
     317              : ! ************************************************************************
     318              : 
     319              :  DBG_ENTER("COLL")
     320              : 
     321            5 :  if (my_natom>0) then
     322            5 :    ABI_CHECK(pawrhoij(1)%qphase==1,'make_fc_paw: not supposed to be called with qphqse=2!')
     323              :  end if
     324              : 
     325              : !Set up parallelism over atoms
     326            5 :  paral_atom=(present(comm_atom).and.(my_natom/=natom))
     327            5 :  nullify(my_atmtab);if (present(mpi_atmtab)) my_atmtab => mpi_atmtab
     328            5 :  my_comm_atom=xmpi_comm_self;if (present(comm_atom)) my_comm_atom=comm_atom
     329            5 :  call get_my_atmtab(my_comm_atom,my_atmtab,my_atmtab_allocated,paral_atom,natom,my_natom_ref=my_natom)
     330              : 
     331              : !Initialization
     332           48 :  fc(:,:)=zero
     333              : 
     334              : !number of points to use in computing initial slopes of radial functions
     335              :  nslope = 5
     336              : 
     337              : !loop over atoms in cell
     338           26 :  do iatom = 1, my_natom
     339           21 :    iatom_tot=iatom;if (paral_atom) iatom_tot=my_atmtab(iatom)
     340           21 :    itypat = pawrhoij(iatom)%itypat
     341           21 :    mesh_size=pawtab(itypat)%mesh_size
     342           21 :    indlmn => pawtab(itypat)%indlmn
     343              : 
     344              : !  loop over spin components
     345           48 :    do ispden=1,nspden
     346              : 
     347              : !    loop over basis elements for this atom
     348              : !    ----
     349          259 :      do jlmn=1,pawtab(itypat)%lmn_size
     350          216 :        jl=indlmn(1,jlmn)
     351          216 :        jm=indlmn(2,jlmn)
     352          216 :        jlm=indlmn(4,jlmn)
     353          216 :        jln=indlmn(5,jlmn)
     354          216 :        j0lmn=jlmn*(jlmn-1)/2
     355         1520 :        do ilmn=1,jlmn
     356         1282 :          il=indlmn(1,ilmn)
     357         1282 :          im=indlmn(2,ilmn)
     358         1282 :          iln=indlmn(5,ilmn)
     359         1282 :          ilm=indlmn(4,ilmn)
     360         1282 :          klmn=j0lmn+ilmn
     361         1282 :          kln = pawtab(itypat)%indklmn(2,klmn) ! need this for mesh selection below
     362              : 
     363         1498 :          if (jl==0 .and. il==0) then ! select only s-states
     364              : 
     365              : !          Loop over non-zero elements of rhoij
     366           66 :            jrhoij=1
     367         1584 :            do irhoij=1,pawrhoij(iatom)%nrhoijsel
     368         1518 :              if (klmn==pawrhoij(iatom)%rhoijselect(irhoij)) then ! rho_ij /= 0 for this klmn
     369              :                xxsum = 0 ! these three variables will be used to compute the slopes
     370              :                xysumi = 0
     371              :                xysumj = 0
     372          396 :                do islope=1, nslope
     373          330 :                  xi=0
     374          330 :                  if(pawrad(itypat)%mesh_type == 1) xi = (islope - 1)*pawrad(itypat)%rstep
     375          330 :                  if(pawrad(itypat)%mesh_type == 2) xi = pawrad(itypat)%rstep * &
     376          330 : &                 (exp(pawrad(itypat)%lstep * (islope - 1)) - 1)
     377          330 :                  if(pawrad(itypat)%mesh_type == 3) then
     378            0 :                    if (islope == 1) then
     379              :                      xi = 0
     380              :                    else
     381            0 :                      xi = pawrad(itypat)%rstep * exp(pawrad(itypat)%lstep*(islope-1))
     382              :                    end if
     383              :                  end if
     384          330 :                  if(pawrad(itypat)%mesh_type == 4) xi = &
     385            0 : &                 -pawrad(itypat)%rstep*log(1.0-(islope-1)/pawrad(itypat)%mesh_size)
     386          330 :                  yi = pawtab(itypat)%phi(islope,iln) ! function value for u_i
     387          330 :                  yj = pawtab(itypat)%phi(islope,jln) ! function value for u_j
     388          330 :                  xxsum =  xxsum + xi*xi
     389          330 :                  xysumi = xysumi + xi*yi
     390          396 :                  xysumj = xysumj + xi*yj
     391              :                end do
     392              : !              the slopes of the radial functions are obtained by minimizing
     393              : !              chi = sum(y_i - m*x_i)^2 (in other words, a linear least squares
     394              : !              fit constrained to go through the origin)
     395              : !              the result is m = sum(y_i*x_i)/sum(x_i*x_i)
     396           66 :                mi = xysumi/xxsum
     397           66 :                mj = xysumj/xxsum
     398              : !              accumulate the rho_ij contribution to the fermi contact for this spin density:
     399              :                fc(ispden,iatom_tot)=fc(ispden,iatom_tot)+&
     400           66 : &                 pawtab(itypat)%dltij(klmn)*pawrhoij(iatom)%rhoijp(jrhoij,ispden)*mi*mj/four_pi
     401              :              end if ! end selection on klmn for nonzero rho_ij
     402         1584 :              jrhoij=jrhoij+pawrhoij(iatom)%cplex_rhoij
     403              :            end do ! end loop over nonzero rho_ij
     404              :          end if ! end l=l'=0 selection
     405              :        end do ! end loop over ilmn
     406              :      end do ! end loop over jlmn
     407              :    end do ! end loop over spin densities
     408              :  end do     ! Loop on atoms
     409              : 
     410              : !Reduction in case of parallelisation over atoms
     411            5 :  if (paral_atom) then
     412            0 :    call xmpi_sum(fc,my_comm_atom,ierr)
     413              :  end if
     414              : 
     415              : !Destroy atom table used for parallelism
     416            5 :  call free_my_atmtab(my_atmtab,my_atmtab_allocated)
     417              : 
     418              :  DBG_EXIT("COLL")
     419              : 
     420            5 :  end subroutine make_fc_paw
     421              : !!***
     422              : 
     423              : !----------------------------------------------------------------------
     424              : 
     425              : END MODULE m_paw_nmr
     426              : !!***
        

Generated by: LCOV version 2.3-1