LCOV - code coverage report
Current view: top level - types - types_xcpot_inbuild.F90 (source / functions) Hit Total Coverage
Test: combined.info Lines: 89 116 76.7 %
Date: 2019-09-08 04:53:50 Functions: 13 15 86.7 %

          Line data    Source code
       1             : !--------------------------------------------------------------------------------
       2             : ! Copyright (c) 2016 Peter Grünberg Institut, Forschungszentrum Jülich, Germany
       3             : ! This file is part of FLEUR and available as free software under the conditions
       4             : ! of the MIT license as expressed in the LICENSE file in more detail.
       5             : !--------------------------------------------------------------------------------
       6             : MODULE m_types_xcpot_inbuild
       7             :    !This module contains the xcpot-type used for the in-build xc-implementations
       8             :    USE m_types_xcpot_data
       9             :    USE m_types_xcpot
      10             :    USE m_judft
      11             :    IMPLICIT NONE
      12             :    PRIVATE
      13             :    REAL, PARAMETER, PRIVATE :: hrtr_half = 0.5
      14             :    CHARACTER(len=4),PARAMETER:: xc_names(20)=[&
      15             :                                 'l91 ','x-a ','wign','mjw ','hl  ','bh  ','vwn ','pz  ', &
      16             :                                 'pw91','pbe ','rpbe','Rpbe','wc  ','PBEs', &
      17             :                                 'pbe0','hse ','vhse','lhse','exx ','hf  ']
      18             :    
      19             :    LOGICAL,PARAMETER:: priv_LDA(20)=[&
      20             :                        .FALSE.,.TRUE.,.TRUE.,.TRUE.,.TRUE.,.TRUE.,.TRUE.,.TRUE.,&
      21             :                        .FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,&
      22             :                        .FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.]
      23             : 
      24             : 
      25             :    LOGICAL,PARAMETER:: priv_gga(20)=[&
      26             :                        .TRUE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,&
      27             :                        .TRUE.,.TRUE.,.TRUE.,.TRUE.,.TRUE.,.TRUE.,&
      28             :                        .TRUE.,.TRUE.,.TRUE.,.TRUE.,.FALSE.,.TRUE.]
      29             : 
      30             :    LOGICAL,PARAMETER:: priv_hybrid(20)=[&
      31             :                        .FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,&
      32             :                        .FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,.FALSE.,&
      33             :                        .TRUE.,.TRUE.,.TRUE.,.TRUE.,.TRUE.,.TRUE.]
      34             : 
      35             :    REAL, PARAMETER       ::  amix_pbe0 = 0.25
      36             :    REAL, PARAMETER       ::  amix_hse  = 0.25
      37             :    REAL, PARAMETER       ::  amix_hf   = 1.00
      38             : 
      39             :    TYPE, EXTENDS(t_xcpot):: t_xcpot_inbuild
      40             : #ifdef CPP_MPI
      41             :       INTEGER             :: icorr=0 !not private to allow bcasting it around
      42             : #else
      43             :       INTEGER,PRIVATE     :: icorr=0
      44             : #endif
      45             : 
      46             :       TYPE(t_xcpot_data)   :: DATA
      47             : 
      48             :       LOGICAL,ALLOCATABLE :: lda_atom(:)
      49             : 
      50             :    CONTAINS
      51             :       !overloading t_xcpot:
      52             :       PROCEDURE        :: vx_is_LDA => xcpot_vx_is_LDA
      53             :       PROCEDURE        :: vx_is_GGA => xcpot_vx_is_GGA
      54             : 
      55             :       PROCEDURE        :: vc_is_LDA => xcpot_vc_is_LDA
      56             :       PROCEDURE        :: vc_is_GGA => xcpot_vc_is_GGA
      57             :       
      58             :       PROCEDURE        :: exc_is_LDA => xcpot_exc_is_LDA
      59             :       PROCEDURE        :: exc_is_gga => xcpot_exc_is_gga
      60             :       PROCEDURE        :: is_hybrid  => xcpot_is_hybrid
      61             : 
      62             :       PROCEDURE        :: get_exchange_weight => xcpot_get_exchange_weight
      63             :       PROCEDURE        :: get_vxc             => xcpot_get_vxc
      64             :       PROCEDURE        :: get_exc             => xcpot_get_exc
      65             :       !not overloaded
      66             :       PROCEDURE        :: get_name => xcpot_get_name
      67             :       PROCEDURE        :: is_name  => xcpot_is_name
      68             :       PROCEDURE        :: init     => xcpot_init
      69             :    END TYPE t_xcpot_inbuild
      70             :    PUBLIC t_xcpot_inbuild
      71             : CONTAINS
      72          36 :    CHARACTER(len=4) FUNCTION xcpot_get_name(xcpot)
      73             :       USE m_judft
      74             :       IMPLICIT NONE
      75             :       CLASS(t_xcpot_inbuild),INTENT(IN)    :: xcpot
      76          36 :       IF (xcpot%icorr==0) CALL judft_error("xc-potential not initialized",calledby="types_xcpot.F90")
      77          36 :       xcpot_get_name=xc_names(xcpot%icorr)
      78          36 :    END FUNCTION xcpot_get_name
      79             : 
      80          72 :    SUBROUTINE xcpot_init(xcpot,namex,relcor,ntype)
      81             :       USE m_judft
      82             :       IMPLICIT NONE
      83             :       CLASS(t_xcpot_inbuild),INTENT(INOUT)    :: xcpot
      84             :       CHARACTER(len=*),INTENT(IN)  :: namex
      85             :       LOGICAL,INTENT(IN)           :: relcor
      86             :       INTEGER,INTENT(IN)           :: ntype
      87             :       INTEGER:: n
      88             :       !Determine icorr from name
      89             : 
      90          72 :       ALLOCATE(xcpot%lda_atom(ntype))
      91         238 :       xcpot%lda_atom=.FALSE.
      92          72 :       xcpot%icorr=0
      93        1512 :       DO n=1,SIZE(xc_names)
      94        1512 :          IF (TRIM(ADJUSTL(namex))==TRIM(xc_names(n))) THEN
      95          72 :             xcpot%icorr=n
      96             :          ENDIF
      97             :       ENDDO
      98          72 :       if (xcpot%icorr==0) CALL judft_error("Unkown xc-potential:"//namex,calledby="types_xcpot.F90")
      99          72 :       xcpot%data%krla=MERGE(1,0,relcor)
     100             : 
     101             :       !Code from exchpbe to speed up determination of constants
     102          72 :       IF (xcpot%is_name("rpbe")) THEN
     103           0 :          xcpot%data%uk=1.2450
     104             :       ELSE
     105          72 :          xcpot%data%uk=0.8040
     106             :       ENDIF
     107          72 :       IF (xcpot%is_name("PBEs")) THEN     ! pbe_sol
     108           0 :          xcpot%data%um=0.123456790123456
     109             :       ELSE
     110          72 :          xcpot%data%um=0.2195149727645171
     111             :       ENDIF
     112          72 :       xcpot%data%is_hse=xcpot%is_name("hse").OR.xcpot%is_name("lhse").OR.xcpot%is_name("vhse")
     113          72 :       xcpot%data%is_rpbe=xcpot%is_name("Rpbe") !Rpbe
     114          72 :       xcpot%data%is_wc=xcpot%is_name("wc")
     115          72 :       xcpot%data%is_pbes=xcpot%is_name("PBEs")
     116          72 :       xcpot%data%is_pbe0=xcpot%is_name("pbe0")
     117          72 :       xcpot%data%is_mjw=xcpot%is_name("mjw")
     118          72 :       xcpot%data%is_bh=xcpot%is_name("bh")
     119          72 :       xcpot%DATA%exchange_weight=xcpot%get_exchange_weight()
     120             : 
     121         144 :    END SUBROUTINE xcpot_init
     122             :   
     123             :    !! LDA
     124           0 :    logical function xcpot_exc_is_lda(xcpot)
     125             :       implicit none
     126             :       CLASS(t_xcpot_inbuild),INTENT(IN):: xcpot
     127           0 :       xcpot_exc_is_lda= xcpot%vxc_is_lda()
     128           0 :    end function xcpot_exc_is_lda
     129             :    
     130          22 :    logical function xcpot_vx_is_lda(xcpot)
     131             :       implicit none
     132             :       CLASS(t_xcpot_inbuild),INTENT(IN):: xcpot
     133          22 :       xcpot_vx_is_lda=(.not. xcpot%vxc_is_gga()) .and. (.not. xcpot%is_hybrid())
     134          22 :    end function xcpot_vx_is_lda
     135             : 
     136           3 :    logical function xcpot_vc_is_lda(xcpot)
     137             :       implicit none
     138             :       CLASS(t_xcpot_inbuild),INTENT(IN):: xcpot
     139           3 :       xcpot_vc_is_lda=(.not. xcpot%vxc_is_gga()) .and. (.not. xcpot%is_hybrid())
     140           3 :    end function xcpot_vc_is_lda
     141             : 
     142         985 :    logical function xcpot_vx_is_gga(xcpot)
     143             :       implicit none
     144             :       CLASS(t_xcpot_inbuild),INTENT(IN):: xcpot
     145         985 :       xcpot_vx_is_gga=priv_gga(xcpot%icorr)
     146         985 :    end function xcpot_vx_is_gga
     147             : 
     148     1542966 :    logical function xcpot_vc_is_gga(xcpot)
     149             :       implicit none
     150             :       CLASS(t_xcpot_inbuild),INTENT(IN):: xcpot
     151     1542966 :       xcpot_vc_is_gga=priv_gga(xcpot%icorr)
     152     1542966 :    end function xcpot_vc_is_gga
     153             : 
     154         941 :    LOGICAL FUNCTION xcpot_exc_is_gga(xcpot)
     155             :       IMPLICIT NONE
     156             :       CLASS(t_xcpot_inbuild),INTENT(IN):: xcpot
     157         941 :       xcpot_exc_is_gga = xcpot%vxc_is_gga()
     158         941 :    END FUNCTION xcpot_exc_is_gga
     159             : 
     160         426 :    LOGICAL FUNCTION xcpot_is_hybrid(xcpot)
     161             :       IMPLICIT NONE
     162             :       CLASS(t_xcpot_inbuild),INTENT(IN):: xcpot
     163         426 :       xcpot_is_hybrid=priv_hybrid(xcpot%icorr)
     164         426 :    END FUNCTION xcpot_is_hybrid
     165             : 
     166          72 :    FUNCTION xcpot_get_exchange_weight(xcpot) RESULT(a_ex)
     167             :       USE m_judft
     168             :       IMPLICIT NONE
     169             :       CLASS(t_xcpot_inbuild),INTENT(IN):: xcpot
     170             : 
     171             :       REAL:: a_ex
     172             : 
     173          72 :       a_ex=-1
     174          72 :       IF (xcpot%is_name("pbe0")) a_ex=amix_pbe0
     175          72 :       IF (xcpot%is_name("hf")) a_ex=amix_hf
     176          72 :       IF (xcpot%is_name("hse")) a_ex=amix_hse
     177          72 :       IF (xcpot%is_name("vhse")) a_ex=amix_hse
     178          72 :    END FUNCTION xcpot_get_exchange_weight
     179             : 
     180        1818 :    SUBROUTINE xcpot_get_vxc(xcpot,jspins,rh, vxc,vx, grad, kinED_KS)
     181             : !
     182             :       USE m_xcxal, ONLY : vxcxal
     183             :       USE m_xcwgn, ONLY : vxcwgn
     184             :       USE m_xcbh,  ONLY : vxcbh
     185             :       USE m_xcvwn, ONLY : vxcvwn
     186             :       USE m_xcpz,  ONLY : vxcpz
     187             :       USE m_vxcl91
     188             :       USE m_vxcwb91
     189             :       USE m_vxcpw91
     190             :       USE m_vxcepbe
     191             :       IMPLICIT NONE
     192             : !c
     193             : !c---> running mode parameters
     194             : !c
     195             :       CLASS(t_xcpot_inbuild),INTENT(IN) :: xcpot
     196             :       INTEGER, INTENT (IN)     :: jspins
     197             : !c
     198             : !c---> charge density
     199             : !c
     200             :       REAL,INTENT (IN) :: rh(:,:)
     201             : !c
     202             : !c---> xc potential
     203             : !c
     204             :       REAL, INTENT (OUT) :: vx (:,:)
     205             :       REAL, INTENT (OUT) :: vxc(:,:)
     206             :       REAL, INTENT(IN),OPTIONAL:: kinED_KS(:,:)
     207             : 
     208             :       ! optional arguments for GGA
     209             :       TYPE(t_gradients),INTENT(INOUT),OPTIONAL::grad
     210             : !c
     211             : !c ---> local scalars
     212             :       INTEGER :: ngrid
     213             :       REAL, PARAMETER :: hrtr_half = 0.5
     214             : 
     215             :       !used to be dummy arguments for testing
     216             :       INTEGER,PARAMETER   :: idsprs=0,isprsv=0,iofile=6
     217             :       REAL,PARAMETER      :: sprsv=0.0
     218             :       LOGICAL,PARAMETER   :: lwbc=.false. ! l-white-bird-current (ta)
     219             : !c
     220             : !c.....------------------------------------------------------------------
     221             : !c
     222             : !c-----> determine exchange correlation potential
     223             : !c
     224        4564 :       vx (:,:) = 0.0
     225        4564 :       vxc(:,:) = 0.0
     226        1818 :       ngrid=SIZE(rh,1)
     227             : 
     228        1818 :       IF (xcpot%needs_grad()) THEN
     229        1596 :          IF (.NOT.PRESENT(grad)) CALL judft_error("Bug: You called get_vxc for a GGA potential without providing derivatives")
     230        1596 :          IF (xcpot%is_name("l91")) THEN    ! local pw91
     231             :             CALL vxcl91(jspins,ngrid,ngrid,rh,grad%agrt(:ngrid),grad%agru(:ngrid),grad%agrd(:ngrid), grad%g2rt(:ngrid),&
     232             :                  grad%g2ru(:ngrid),grad%g2rd(:ngrid),grad%gggrt(:ngrid),grad%gggru(:ngrid),grad%gggrd(:ngrid),&
     233           0 :                  grad%gzgr(:ngrid), vx(:ngrid,:),vxc(:ngrid,:), isprsv,sprsv)
     234        1596 :          ELSEIF (xcpot%is_name("pw91")) THEN  ! pw91
     235             :             IF (lwbc) THEN
     236             :                CALL vxcwb91(jspins,ngrid,ngrid,rh(:ngrid,:),grad%agrt(:ngrid),grad%agru(:ngrid),grad%agrd(:ngrid),&
     237             :                  grad%g2rt(:ngrid),grad%g2ru(:ngrid),grad%g2rd(:ngrid),grad%gggrt(:ngrid),grad%gggru(:ngrid),&
     238             :                  grad%gggrd(:ngrid),grad%gzgr(:ngrid), vx(:ngrid,:),vxc(:ngrid,:), idsprs,isprsv,sprsv)
     239             :             ELSE
     240             : 
     241             :                CALL vxcpw91(jspins,ngrid,ngrid,rh(:ngrid,:),grad%agrt(:ngrid),grad%agru(:ngrid),grad%agrd(:ngrid),&
     242             :                  grad%g2rt(:ngrid),grad%g2ru(:ngrid),grad%g2rd(:ngrid),grad%gggrt(:ngrid),grad%gggru(:ngrid),&
     243           0 :                  grad%gggrd,grad%gzgr, vx(:ngrid,:),vxc(:ngrid,:), idsprs,isprsv,sprsv)
     244             : 
     245             :             ENDIF
     246             :          ELSE  ! pbe or similar
     247        1596 :             CALL vxcepbe(xcpot%DATA,jspins,ngrid,ngrid,rh(:ngrid,:), grad%agrt,grad%agru,grad%agrd,grad%g2ru,grad%g2rd,grad%gggrt,grad%gggru,grad%gggrd, vx(:ngrid,:),vxc(:ngrid,:))
     248             :          ENDIF
     249             :       ELSE  !LDA potentials
     250         222 :          IF (xcpot%is_name("x-a"))  THEN   ! X-alpha method
     251           0 :             CALL vxcxal(xcpot%data%krla,jspins, ngrid,ngrid,rh(:ngrid,:), vx(:ngrid,:),vxc(:ngrid,:))
     252         222 :          ELSEIF (xcpot%is_name("wign")) THEN    ! Wigner interpolation formula
     253           0 :             CALL vxcwgn(xcpot%data%krla,jspins, ngrid,ngrid,rh(:ngrid,:), vx(:ngrid,:),vxc(:ngrid,:))
     254         222 :          ELSEIF (xcpot%is_name("mjw").OR.xcpot%is_name("bh")) THEN ! von Barth,Hedin correlation
     255           0 :             CALL vxcbh(iofile,xcpot%data,jspins, ngrid,ngrid,rh(:ngrid,:), vx(:ngrid,:),vxc(:ngrid,:))
     256             : 
     257         222 :          ELSEIF (xcpot%is_name("vwn")) THEN     ! Vosko,Wilk,Nusair correlation
     258           0 :             CALL vxcvwn(iofile,xcpot%data%krla,jspins, ngrid,ngrid,rh(:ngrid,:), vx(:ngrid,:),vxc(:ngrid,:))
     259         222 :          ELSEIF (xcpot%is_name("pz")) THEN     ! Perdew,Zunger correlation
     260         222 :             CALL vxcpz(iofile,xcpot%data%krla,jspins, ngrid,ngrid,rh(:ngrid,:), vx(:ngrid,:),vxc(:ngrid,:))
     261           0 :          ELSEIF (xcpot%is_name("hf")) THEN
     262             :             ! Hartree-Fock  calculation: X-alpha potential is added to generate a rational local potential,
     263             :             !                            later it is subtracted again
     264           0 :             CALL juDFT_error('HF should now be treated as a GGA functional', calledby='xcpot_get_vxc')
     265           0 :             CALL vxcxal(xcpot%data%krla,jspins, ngrid,ngrid,rh(:ngrid,:), vx(:ngrid,:),vxc(:ngrid,:))
     266             :             !         vxc=0
     267           0 :          ELSEIF (xcpot%is_name("exx")) THEN
     268             :             ! if exact exchange calculation do nothing
     269           0 :             vxc = 0
     270             :          ELSE
     271           0 :             CALL juDFT_error("Unkown LDA potential",calledby="type xcpot")
     272             :          ENDIF
     273             :       ENDIF
     274             : !
     275             : !-----> hartree units
     276             : !
     277        4564 :       vx  = hrtr_half*vx
     278        4564 :       vxc = hrtr_half*vxc
     279             : 
     280        1818 :    END SUBROUTINE xcpot_get_vxc
     281             : 
     282             : !***********************************************************************
     283         941 :    SUBROUTINE xcpot_get_exc(xcpot,jspins,rh,exc,grad,kinED_KS, mt_call)
     284             : !***********************************************************************
     285             :       USE m_xcxal, ONLY : excxal
     286             :       USE m_xcwgn, ONLY : excwgn
     287             :       USE m_xcbh,  ONLY : excbh
     288             :       USE m_xcvwn, ONLY : excvwn
     289             :       USE m_xcpz,  ONLY : excpz
     290             :       USE m_excl91
     291             :       USE m_excwb91
     292             :       USE m_excpw91
     293             :       USE m_excepbe
     294             :       IMPLICIT NONE
     295             :       
     296             :       CLASS(t_xcpot_inbuild),INTENT(IN)     :: xcpot
     297             :       INTEGER, INTENT (IN)                  :: jspins
     298             :       REAL,INTENT (IN)                      :: rh(:,:)
     299             :       REAL, INTENT (OUT)                    :: exc(:)
     300             :       TYPE(t_gradients),OPTIONAL,INTENT(IN) ::grad
     301             :       LOGICAL, OPTIONAL, INTENT(IN)         :: mt_call    
     302             :       REAL, INTENT(IN), OPTIONAL            :: kinED_KS(:,:)
     303             : 
     304             : !c
     305             : !c ---> local scalars
     306             :       INTEGER :: ngrid
     307             :       REAL, PARAMETER :: hrtr_half = 0.5
     308             : 
     309             :       !used to be dummy arguments for testing
     310             :       INTEGER,PARAMETER   :: idsprs=0,isprsv=0,iofile=6
     311             :       REAL,PARAMETER      :: sprsv=0.0
     312             :       LOGICAL,PARAMETER   :: lwbc=.false. ! l-white-bird-current (ta)
     313             : !c
     314             : !c-----> determine exchange correlation energy density
     315             : !c
     316    36362456 :       exc(:) = 0.0
     317         941 :       ngrid=SIZE(rh,1)
     318         941 :       IF (xcpot%exc_is_gga()) THEN
     319         917 :          IF (.NOT.PRESENT(grad)) CALL judft_error("Bug: You called get_exc for a GGA potential without providing derivatives")
     320         917 :          IF (xcpot%is_name("l91")) THEN  ! local pw91
     321           0 :             CALL excl91(jspins,ngrid,ngrid,rh(:ngrid,:),grad%agrt,grad%agru,grad%agrd,grad%g2rt,grad%g2ru,grad%g2rd,grad%gggrt,grad%gggru,grad%gggrd,grad%gzgr, exc, isprsv,sprsv)
     322         917 :          ELSEIF (xcpot%is_name("pw91")) THEN     ! pw91
     323             :             IF (lwbc) THEN
     324             :                CALL excwb91(ngrid,ngrid,rh(:ngrid,1),rh(:ngrid,2),grad%agrt,grad%agru,grad%agrd, grad%g2rt,grad%g2ru,grad%g2rd,grad%gggrt,grad%gggru,grad%gggrd,grad%gzgr, exc, idsprs,isprsv,sprsv)
     325             :             ELSE
     326           0 :                CALL excpw91(jspins,ngrid,ngrid,rh(:ngrid,:),grad%agrt,grad%agru,grad%agrd, grad%g2rt,grad%g2ru,grad%g2rd,grad%gggrt,grad%gggru,grad%gggrd,grad%gzgr, exc, idsprs,isprsv,sprsv)
     327             :             ENDIF
     328             :          ELSE
     329         917 :             CALL excepbe(xcpot%data,jspins,ngrid,ngrid, rh(:ngrid,:),grad%agrt,grad%agru,grad%agrd,grad%g2ru,grad%g2rd,grad%gggrt,grad%gggru,grad%gggrd, exc)
     330             :          ENDIF
     331             :       ELSE !LDA
     332          24 :          IF (xcpot%is_name("x-a"))  THEN   ! X-alpha method
     333           0 :             CALL excxal(iofile,xcpot%data%krla,jspins, ngrid,ngrid,rh, exc)
     334          24 :          ELSEIF (xcpot%is_name("wign")) THEN    ! Wigner interpolation formula
     335           0 :             CALL excwgn(iofile,xcpot%data%krla,jspins, ngrid,ngrid,rh, exc)
     336          24 :          ELSEIF (xcpot%is_name("mjw").OR.xcpot%is_name("bh")) THEN ! von Barth,Hedin correlation
     337           0 :             CALL excbh(iofile,xcpot%data,jspins, ngrid,ngrid,rh, exc)
     338          24 :          ELSEIF (xcpot%is_name("vwn")) THEN     ! Vosko,Wilk,Nusair correlation
     339           0 :             CALL excvwn(iofile,xcpot%data%krla,jspins, ngrid,ngrid,rh, exc)
     340          24 :          ELSEIF (xcpot%is_name("pz")) THEN     ! Perdew,Zunger correlation
     341          24 :             CALL excpz(iofile,xcpot%data%krla,jspins, ngrid,ngrid,rh, exc)
     342           0 :          ELSEIF (xcpot%is_name("hf") .OR. xcpot%is_name("exx")) THEN
     343           0 :             CALL juDFT_error('HF should now be treated as a GGA functional', calledby='xcpot_get_exc')
     344           0 :             exc=0
     345             :          ELSE
     346           0 :             CALL juDFT_error("Unkown LDA potential",calledby="type xcpot")
     347             :          ENDIF
     348             :       ENDIF
     349             : !c-----> hartree units
     350    36362456 :       exc= hrtr_half*exc
     351             : 
     352         941 :    END SUBROUTINE xcpot_get_exc
     353             : 
     354        7582 :    LOGICAL FUNCTION xcpot_is_name(xcpot,name)
     355             :       CLASS(t_xcpot_inbuild),INTENT(IN):: xcpot
     356             :       CHARACTER(len=*),INTENT(IN)  :: name
     357        7582 :       xcpot_is_name=(TRIM(xc_names(xcpot%icorr))==TRIM((name)))
     358        7582 :    END FUNCTION xcpot_is_name
     359             : 
     360          72 : END MODULE m_types_xcpot_inbuild

Generated by: LCOV version 1.13