LCOV - code coverage report
Current view: top level - src/80_tdep - m_tdep_constraints.F90 (source / functions) Coverage Total Hit
Test: coverage.info Lines: 95.5 % 22 21
Test Date: 2026-11-09 20:57:54 Functions: 14.3 % 7 1
Branches: 40.0 % 80 32

             Branch data     Line data    Source code
       1                 :             : 
       2                 :             : #if defined HAVE_CONFIG_H
       3                 :             : #include "config.h"
       4                 :             : #endif
       5                 :             : 
       6                 :             : #include "abi_common.h"
       7                 :             : 
       8                 :             : module m_tdep_constraints
       9                 :             : 
      10                 :             :   use defs_basis
      11                 :             :   use m_errors
      12                 :             :   use m_xmpi
      13                 :             : 
      14                 :             :   implicit none
      15                 :             : 
      16                 :             :   type S_product
      17                 :             :     double precision, allocatable :: SS  (:,:,:)
      18                 :             :     double precision, allocatable :: SSS (:,:,:,:)
      19                 :             :     double precision, allocatable :: SSSS(:,:,:,:,:)
      20                 :             :   end type S_product
      21                 :             : 
      22                 :             :   type Asr_Rot
      23                 :             :     double precision, allocatable :: ABG (:,:,:)
      24                 :             :     double precision, allocatable :: ABGD(:,:,:,:)
      25                 :             :     double precision, allocatable :: ABGDE(:,:,:,:,:)
      26                 :             :   end type Asr_Rot
      27                 :             : 
      28                 :             :   type,public :: Constraints_type
      29                 :             :     type(S_product),allocatable :: Sprod(:,:)
      30                 :             :     type(Asr_Rot),allocatable :: AsrRot3(:,:,:)
      31                 :             :     type(Asr_Rot),allocatable :: AsrRot4(:,:,:,:)
      32                 :             :   end type Constraints_type
      33                 :             : 
      34                 :             :   public :: tdep_calc_orthonorm
      35                 :             : 
      36                 :             : contains
      37                 :             : 
      38                 :             : !====================================================================================================
      39                 :             : 
      40                 :         204 : subroutine tdep_calc_orthonorm(dim1,dim2,nindep,vect)
      41                 :             : 
      42                 :             :   integer, intent(in) :: dim1,dim2
      43                 :             :   integer, intent(out) :: nindep
      44                 :             :   double precision, intent(inout) :: vect(dim1,dim2)
      45                 :             : 
      46                 :             :   integer :: ii,jj,kk
      47                 :             :   double precision :: prod_scal
      48                 :             : 
      49                 :             : ! Filter non-zero vectors
      50                 :         204 :   ii=0
      51         [ +  + ]:      539556 :   do kk=1,dim2
      52   [ +  +  +  + ]:    51280710 :     if (sum(abs(vect(:,kk))).gt.tol8) then
      53                 :       10106 :       ii=ii+1
      54         [ +  + ]:     1462868 :       vect(:,ii)=vect(:,kk)
      55                 :             :     end if
      56                 :             :   end do
      57                 :         204 :   nindep=ii
      58                 :             : 
      59                 :             : ! Gram-Schmidt orthogonalization
      60         [ +  + ]:       10252 :   do kk=2,nindep
      61         [ +  + ]:     3502333 :     do jj=1,kk-1
      62         [ +  + ]:   478515426 :       prod_scal=sum(vect(:,jj)*vect(:,jj))
      63         [ +  + ]:     3502129 :       if (abs(prod_scal).gt.tol8) then
      64   [ +  +  +  + ]:    40441616 :         vect(:,kk)=vect(:,kk)-sum(vect(:,kk)*vect(:,jj))/prod_scal*vect(:,jj)
      65                 :             :       end if
      66                 :             :     end do
      67                 :             :   end do
      68                 :             : 
      69                 :             : ! Store the non-zero vectors and normalize
      70                 :             :   ii=0
      71         [ +  + ]:       10310 :   do kk=1,nindep
      72         [ +  + ]:     1462868 :     prod_scal=sum(vect(:,kk)*vect(:,kk))
      73         [ +  + ]:       10310 :     if (abs(prod_scal).gt.tol8) then
      74                 :         370 :       ii=ii+1
      75         [ +  + ]:       88695 :       vect(:,ii)=vect(:,kk)/dsqrt(prod_scal)
      76                 :             :     end if
      77                 :             :   end do
      78         [ +  + ]:      529450 :   do kk=nindep+1,dim2
      79         [ +  + ]:    49817842 :     vect(:,kk)=zero
      80                 :             :   end do
      81                 :         204 :   nindep=ii
      82                 :             : 
      83                 :         204 : end subroutine tdep_calc_orthonorm
      84                 :             : 
      85                 :             : !====================================================================================================
      86                 :             : 
      87   [ #  #  #  #  :           0 : end module m_tdep_constraints
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
          #  #  #  #  #  
             #  #  #  # ]
        

Generated by: LCOV version 2.3-1