LCOV - code coverage report
Current view: top level - shared/libpaw/src - m_paw_energies.F90 (source / functions) Coverage Total Hit
Test: coverage.info Lines: 55.0 % 60 33
Test Date: 2026-11-06 01:31:13 Functions: 60.0 % 5 3
Branches: 50.0 % 12 6

             Branch data     Line data    Source code
       1                 :             : !!****m* ABINIT/m_paw_energies
       2                 :             : !! NAME
       3                 :             : !!  m_paw_energies
       4                 :             : !!
       5                 :             : !! FUNCTION
       6                 :             : !!  This module contains the definition of the paw_energies_type structured datatype,
       7                 :             : !!  as well as related functions and methods.
       8                 :             : !!  paw_energies_type variables define several contributions to PAW on-site ENERGIES
       9                 :             : !!
      10                 :             : !! COPYRIGHT
      11                 :             : !! Copyright (C) 2013-2026 ABINIT group (MT)
      12                 :             : !! This file is distributed under the terms of the
      13                 :             : !! GNU General Public License, see ~abinit/COPYING
      14                 :             : !! or http://www.gnu.org/copyleft/gpl.txt .
      15                 :             : !!
      16                 :             : !! NOTES
      17                 :             : !!  FOR DEVELOPPERS: in order to preserve the portability of libPAW library,
      18                 :             : !!  please consult ~abinit/src/??_libpaw/libpaw-coding-rules.txt
      19                 :             : !!
      20                 :             : !! SOURCE
      21                 :             : 
      22                 :             : #include "libpaw.h"
      23                 :             : 
      24                 :             : MODULE m_paw_energies
      25                 :             : 
      26                 :             :  USE_DEFS
      27                 :             :  USE_MSG_HANDLING
      28                 :             : 
      29                 :             :  implicit none
      30                 :             : 
      31                 :             :  private
      32                 :             : 
      33                 :             : !public parameter
      34                 :             :  integer, public, parameter :: n_paw_energies=6
      35                 :             : 
      36                 :             : !!***
      37                 :             : 
      38                 :             : !----------------------------------------------------------------------
      39                 :             : 
      40                 :             : !!****t* m_paw_denpot/paw_energies_type
      41                 :             : !! NAME
      42                 :             : !! paw_energies_type
      43                 :             : !!
      44                 :             : !! FUNCTION
      45                 :             : !! This structured datatype contains all parts of the PAW contribution to energy
      46                 :             : !!
      47                 :             : !! SOURCE
      48                 :             : 
      49                 :             :  type, public :: paw_energies_type
      50                 :             : 
      51                 :             : ! WARNING : if you modify this datatype, please check whether there might be creation/destruction/copy routines,
      52                 :             : ! declared in another part of ABINIT, that might need to take into account your modification.
      53                 :             : 
      54                 :             :   real(dp) :: epaw
      55                 :             :    ! total on-site PAW energy (direct scheme)
      56                 :             : 
      57                 :             :   real(dp) :: epaw_dc
      58                 :             :    ! total on-site PAW energy (double counting scheme)
      59                 :             : 
      60                 :             :   real(dp) :: epaw_core
      61                 :             :    ! core contribution to PAW energy (direct scheme)
      62                 :             : 
      63                 :             :   real(dp) :: epaw_core_dc
      64                 :             :    ! core contribution to PAW energy (double counting scheme)
      65                 :             : 
      66                 :             :   real(dp) :: epaw_xc
      67                 :             :    ! exchange-correlation on-site contribution to PAW energy
      68                 :             : 
      69                 :             :   real(dp) :: entropy_paw
      70                 :             :    ! on-site PAW contribution to total entropy
      71                 :             : 
      72                 :             :  end type paw_energies_type
      73                 :             : 
      74                 :             : !public procedures
      75                 :             :  public :: paw_energies_setzero  ! Set all energies in a paw_energies datastructure to zero
      76                 :             :  public :: paw_energies_copy     ! Copy a paw_energies_type object into another
      77                 :             :  public :: paw_energies_to_array ! Transfer a paw_energies datastructure into/from a single array
      78                 :             :  public :: paw_energies_print    ! Printout of the object
      79                 :             : !!***
      80                 :             : 
      81                 :             : CONTAINS  !========================================================================================
      82                 :             : !!***
      83                 :             : 
      84                 :             : !----------------------------------------------------------------------
      85                 :             : 
      86                 :             : !!****f* m_paw_energies/paw_energies_setzero
      87                 :             : !! NAME
      88                 :             : !!  paw_energies_setzero
      89                 :             : !!
      90                 :             : !! FUNCTION
      91                 :             : !!  Set all energy contributions to zero in a paw_energies structure
      92                 :             : !!
      93                 :             : !! SIDE EFFECTS
      94                 :             : !!  Paw_energies<type(paw_energies_type)>=content set to zero
      95                 :             : !!
      96                 :             : !! SOURCE
      97                 :             : 
      98                 :       42812 : subroutine paw_energies_setzero(Paw_energies)
      99                 :             : 
     100                 :             : !Arguments ------------------------------------
     101                 :             : !arrays
     102                 :             :  type(Paw_energies_type),intent(inout) :: Paw_energies
     103                 :             : 
     104                 :             : !Local variables-------------------------------
     105                 :             : 
     106                 :             : ! *************************************************************************
     107                 :             : 
     108                 :             :  !@Paw_energies_type
     109                 :             : 
     110                 :             :  ! === Reset all energies ===
     111                 :             : 
     112                 :       42812 :  Paw_energies%epaw         = zero
     113                 :       42812 :  Paw_energies%epaw_dc      = zero
     114                 :       42812 :  Paw_energies%epaw_core    = zero
     115                 :       42812 :  Paw_energies%epaw_core_dc = zero
     116                 :       42812 :  Paw_energies%epaw_xc      = zero
     117                 :       42812 :  Paw_energies%entropy_paw  = zero
     118                 :             : 
     119                 :       42812 : end subroutine paw_energies_setzero
     120                 :             : !!***
     121                 :             : 
     122                 :             : !----------------------------------------------------------------------
     123                 :             : 
     124                 :             : !!****f* m_paw_energies/paw_energies_copy
     125                 :             : !!
     126                 :             : !! NAME
     127                 :             : !! paw_energies_copy
     128                 :             : !!
     129                 :             : !! FUNCTION
     130                 :             : !! Copy a paw_energies_type object into another
     131                 :             : !!
     132                 :             : !! INPUTS
     133                 :             : !!   paw_energies_in <type(paw_energies_type)>=input values (to copy)
     134                 :             : !!
     135                 :             : !! OUTPUT
     136                 :             : !!   paw_energies_out <type(paw_energies_type)>=output values
     137                 :             : !!
     138                 :             : !! SOURCE
     139                 :             : 
     140                 :        9377 :  subroutine paw_energies_copy(paw_energies_in, paw_energies_out)
     141                 :             : 
     142                 :             : !Arguments ------------------------------------
     143                 :             : !scalars
     144                 :             :  type(paw_energies_type),intent(in)  :: paw_energies_in
     145                 :             :  type(paw_energies_type),intent(out) :: paw_energies_out
     146                 :             : 
     147                 :             : !*************************************************************************
     148                 :             : 
     149                 :             : !@paw_energies_type
     150                 :             : 
     151                 :        9377 :  paw_energies_out%epaw         = paw_energies_in%epaw
     152                 :        9377 :  paw_energies_out%epaw_dc      = paw_energies_in%epaw_dc
     153                 :        9377 :  paw_energies_out%epaw_core    = paw_energies_in%epaw_core
     154                 :        9377 :  paw_energies_out%epaw_core_dc = paw_energies_in%epaw_core_dc
     155                 :        9377 :  paw_energies_out%epaw_xc      = paw_energies_in%epaw_xc
     156                 :        9377 :  paw_energies_out%entropy_paw  = paw_energies_in%entropy_paw
     157                 :             : 
     158                 :        9377 : end subroutine paw_energies_copy
     159                 :             : !!***
     160                 :             : 
     161                 :             : !----------------------------------------------------------------------
     162                 :             : 
     163                 :             : !!****f* m_paw_energies/paw_energies_to_array
     164                 :             : !!
     165                 :             : !! NAME
     166                 :             : !! paw_energies_to_array
     167                 :             : !!
     168                 :             : !! FUNCTION
     169                 :             : !! Transfer a paw_energies datastructure into a single array or
     170                 :             : !! transfer an array into a paw_energies datastructure
     171                 :             : !!
     172                 :             : !! INPUTS
     173                 :             : !!   option= 1: copy paw_energies datastructure into an array
     174                 :             : !!   option=-1: copy an array into a paw_energies datastructure
     175                 :             : !!
     176                 :             : !! OUTPUT
     177                 :             : !!
     178                 :             : !! SIDE EFFECTS
     179                 :             : !!   paw_energies <type(paw_energies_type)>=energies stored in a datastructure
     180                 :             : !!   paw_energies_array=energies stored in a single array
     181                 :             : !!
     182                 :             : !! SOURCE
     183                 :             : 
     184         [ -  + ]:       12672 :  subroutine paw_energies_to_array(paw_energies,paw_energies_array,option)
     185                 :             : 
     186                 :             : !Arguments ------------------------------------
     187                 :             : !scalars
     188                 :             :  type(paw_energies_type),intent(inout)  :: paw_energies
     189                 :             :  integer,intent(in) :: option
     190                 :             : !arrays
     191                 :             :  real(dp),intent(inout) :: paw_energies_array(:)
     192                 :             : 
     193                 :             : !Local variables-------------------------------
     194                 :             : !scalars
     195                 :             :  character(len=100) :: msg
     196                 :             : 
     197                 :             : !*************************************************************************
     198                 :             : 
     199                 :             : !@paw_energies_type
     200                 :             : 
     201                 :             :  if (n_paw_energies<6) then
     202                 :             :    msg='error on number of paw_energies!'
     203                 :             :    LIBPAW_BUG(msg)
     204                 :             :  end if
     205         [ -  + ]:       12672 :  if (size(paw_energies_array)<n_paw_energies) then
     206                 :           0 :    msg='error on paw_energies_array size!'
     207                 :           0 :    LIBPAW_BUG(msg)
     208                 :             :  end if
     209                 :             : 
     210         [ +  + ]:       12672 :  if (option==1) then
     211                 :        6336 :    paw_energies_array(1)=paw_energies%epaw
     212                 :        6336 :    paw_energies_array(2)=paw_energies%epaw_dc
     213                 :        6336 :    paw_energies_array(3)=paw_energies%epaw_core
     214                 :        6336 :    paw_energies_array(4)=paw_energies%epaw_core_dc
     215                 :        6336 :    paw_energies_array(5)=paw_energies%epaw_xc
     216                 :        6336 :    paw_energies_array(6)=paw_energies%entropy_paw
     217                 :             :  end if
     218                 :             : 
     219         [ +  + ]:       12672 :  if (option==-1) then
     220                 :        6336 :    paw_energies%epaw         = paw_energies_array(1)
     221                 :        6336 :    paw_energies%epaw_dc      = paw_energies_array(2)
     222                 :        6336 :    paw_energies%epaw_core    = paw_energies_array(3)
     223                 :        6336 :    paw_energies%epaw_core_dc = paw_energies_array(4)
     224                 :        6336 :    paw_energies%epaw_xc      = paw_energies_array(5)
     225                 :        6336 :    paw_energies%entropy_paw  = paw_energies_array(6)
     226                 :             :  end if
     227                 :             : 
     228                 :       12672 : end subroutine paw_energies_to_array
     229                 :             : !!***
     230                 :             : 
     231                 :             : !----------------------------------------------------------------------
     232                 :             : 
     233                 :             : !!****f* m_paw_energies/paw_energies_print
     234                 :             : !! NAME
     235                 :             : !! paw_energies_print
     236                 :             : !!
     237                 :             : !! FUNCTION
     238                 :             : !!  Print out the content of a paw_energies datastructure
     239                 :             : !!
     240                 :             : !! INPUTS
     241                 :             : !!  Paw_energies<paw_energies_type> = PAW energy contributions
     242                 :             : !!
     243                 :             : !! OUTPUT
     244                 :             : !!  Only writing
     245                 :             : !!
     246                 :             : !! SOURCE
     247                 :             : 
     248                 :           0 : subroutine paw_energies_print(Paw_energies,unit,mode_paral)
     249                 :             : 
     250                 :             : !Arguments ------------------------------------
     251                 :             : !scalars
     252                 :             :  integer,optional,intent(in) :: unit
     253                 :             :  character(len=4),optional,intent(in) :: mode_paral
     254                 :             :  type(Paw_energies_type), intent(in) :: Paw_energies
     255                 :             : 
     256                 :             : !Local variables-------------------------------
     257                 :             : !scalars
     258                 :             :  integer :: my_unt
     259                 :             :  character(len=4) :: my_mode
     260                 :             :  character(len=500) :: msg
     261                 :             : 
     262                 :             : ! *************************************************************************
     263                 :             : 
     264         [ #  # ]:           0 :  my_unt   =ab_out ; if (PRESENT(unit      )) my_unt   =unit
     265         [ #  # ]:           0 :  my_mode  ='COLL' ; if (PRESENT(mode_paral)) my_mode  =mode_paral
     266                 :             : 
     267                 :             :  write(msg,'(6a)')&
     268                 :           0 : &  ' ============================== ',ch10,&
     269                 :           0 : &  ' ==== Info on PAW ENERGIES ==== ',ch10,&
     270                 :           0 : &  ' ============================== ',ch10
     271                 :           0 :  call wrtout(my_unt,msg,my_mode)
     272                 :             : 
     273                 :           0 :  write(msg,'(a)')'                                 '
     274                 :           0 :  call wrtout(my_unt,msg,my_mode)
     275                 :           0 :  write(msg,'(a)')'  ****************************** '
     276                 :           0 :  call wrtout(my_unt,msg,my_mode)
     277                 :             : 
     278                 :           0 :  write(msg,'(a,i4)')'  Total on-site PAW energy (direct) ................ ',Paw_energies%epaw
     279                 :           0 :  call wrtout(my_unt,msg,my_mode)
     280                 :           0 :  write(msg,'(a,i4)')'  Total on-site PAW energy (dble-counting) ......... ',Paw_energies%epaw_dc
     281                 :           0 :  call wrtout(my_unt,msg,my_mode)
     282                 :           0 :  write(msg,'(a,i4)')'  Core contribution to PAW energy (direct) ......... ',Paw_energies%epaw_core
     283                 :           0 :  call wrtout(my_unt,msg,my_mode)
     284                 :           0 :  write(msg,'(a,i4)')'  Core contribution to PAW energy (dble-counting) .. ',Paw_energies%epaw_core_dc
     285                 :           0 :  call wrtout(my_unt,msg,my_mode)
     286                 :           0 :  write(msg,'(a,i4)')'  XC contribution to PAW energy .................... ',Paw_energies%epaw_xc
     287                 :           0 :  call wrtout(my_unt,msg,my_mode)
     288                 :           0 :  write(msg,'(a,i4)')'  Contribution to PAW entropy ...................... ',Paw_energies%entropy_paw
     289                 :           0 :  call wrtout(my_unt,msg,my_mode)
     290                 :             : 
     291                 :           0 : end subroutine paw_energies_print
     292                 :             : !!***
     293                 :             : 
     294                 :             : !----------------------------------------------------------------------
     295                 :             : 
     296                 :           0 : END MODULE m_paw_energies
     297                 :             : !!***
        

Generated by: LCOV version 2.3-1