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-09-21 13:49:52 Functions: 14.3 % 7 1

            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