LCOV - code coverage report
Current view: top level - mpi - mpi_bc_potden.F90 (source / functions) Hit Total Coverage
Test: FLEUR test coverage Lines: 0 38 0.0 %
Date: 2024-04-25 04:21:55 Functions: 0 1 0.0 %

          Line data    Source code
       1             : !--------------------------------------------------------------------------------
       2             : ! Copyright (c) 2017 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             : 
       7             : MODULE m_mpi_bc_potden
       8             : #ifdef CPP_MPI
       9             :    use mpi
      10             : #endif
      11             : CONTAINS
      12           0 :    SUBROUTINE mpi_bc_potden(fmpi,stars,sphhar,atoms,input,vacuum ,noco,potden,nococonv)
      13             : 
      14             :    USE m_types
      15             :    USE m_constants
      16             :    IMPLICIT NONE
      17             : 
      18             :    TYPE(t_mpi),INTENT(IN)        :: fmpi
      19             :    TYPE(t_input),INTENT(IN)      :: input
      20             :    TYPE(t_vacuum),INTENT(IN)     :: vacuum
      21             :    TYPE(t_stars),INTENT(IN)      :: stars
      22             :    TYPE(t_sphhar),INTENT(IN)     :: sphhar
      23             :    TYPE(t_atoms),INTENT(IN)      :: atoms
      24             :    TYPE(t_noco),INTENT(IN)       :: noco
      25             :     
      26             :    TYPE(t_potden),INTENT(INOUT)  :: potden
      27             :    TYPE(t_nococonv),INTENT(INOUT),optional :: nococonv
      28             : 
      29             :    INTEGER :: n, ierr
      30             :    LOGICAL :: l_nocoAlloc, l_denMatAlloc, l_vaczAlloc, l_pw_wAlloc
      31             : 
      32             : #ifdef CPP_MPI
      33             : 
      34           0 :    CALL MPI_BCAST(potden%iter,1,MPI_INTEGER,0,fmpi%mpi_comm,ierr)
      35           0 :    CALL MPI_BCAST(potden%potdenType,1,MPI_INTEGER,0,fmpi%mpi_comm,ierr)
      36             : 
      37           0 :    l_nocoAlloc = .FALSE.
      38           0 :    l_denMatAlloc = .FALSE.
      39           0 :    l_vaczAlloc = .FALSE.
      40           0 :    l_pw_wAlloc = .FALSE.
      41           0 :    IF(fmpi%irank.EQ.0) THEN
      42           0 :       IF (ALLOCATED(potden%mmpMat)) l_denMatAlloc = .TRUE.
      43           0 :       IF (ALLOCATED(potden%vac)) l_vaczAlloc = .TRUE.
      44           0 :       IF (ALLOCATED(potden%pw_w)) l_pw_wAlloc = .TRUE.
      45             :    END IF
      46           0 :    CALL MPI_BCAST(l_nocoAlloc,1,MPI_LOGICAL,0,fmpi%mpi_comm,ierr)
      47           0 :    CALL MPI_BCAST(l_denMatAlloc,1,MPI_LOGICAL,0,fmpi%mpi_comm,ierr)
      48           0 :    CALL MPI_BCAST(l_vaczAlloc,1,MPI_LOGICAL,0,fmpi%mpi_comm,ierr)
      49           0 :    CALL MPI_BCAST(l_pw_wAlloc,1,MPI_LOGICAL,0,fmpi%mpi_comm,ierr)
      50           0 :    IF((fmpi%irank.NE.0).AND.l_denMatAlloc) THEN
      51           0 :       IF(.NOT.ALLOCATED(potden%mmpMat)) THEN
      52           0 :          ALLOCATE(potDen%mmpMat(-lmaxU_const:lmaxU_const,-lmaxU_const:lmaxU_const,&
      53           0 :                                 MAX(1,atoms%n_u+atoms%n_hia),MERGE(3,input%jspins,any(noco%l_unrestrictMT).OR.noco%l_mperp)))
      54             :       END IF
      55             :    END IF
      56             : 
      57           0 :    n = stars%ng3 * SIZE(potden%pw,2)
      58           0 :    CALL MPI_BCAST(potden%pw,n,MPI_DOUBLE_COMPLEX,0,fmpi%mpi_comm,ierr)
      59             : 
      60           0 :    n = size(potden%mt)
      61           0 :    CALL MPI_BCAST(potden%mt,n,MPI_DOUBLE_PRECISION,0,fmpi%mpi_comm,ierr)
      62             : 
      63           0 :    IF (l_pw_wAlloc) THEN
      64           0 :       n = stars%ng3 * SIZE(potden%pw_w,2)
      65           0 :       CALL MPI_BCAST(potden%pw_w,n,MPI_DOUBLE_COMPLEX,0,fmpi%mpi_comm,ierr)
      66             :    END IF
      67             : 
      68           0 :    IF (l_vaczAlloc) THEN
      69           0 :       n = vacuum%nmzd * stars%ng2 * 2 * SIZE(potden%vac,4)
      70           0 :       CALL MPI_BCAST(potden%vac,n,MPI_DOUBLE_COMPLEX,0,fmpi%mpi_comm,ierr)
      71             :    END IF
      72             : 
      73           0 :    IF (l_denMatAlloc) THEN
      74           0 :       n = SIZE(potden%mmpMat,1) * SIZE(potden%mmpMat,2) * SIZE(potden%mmpMat,3) * SIZE(potden%mmpMat,4)
      75           0 :       CALL MPI_BCAST(potden%mmpMat,n,MPI_DOUBLE_COMPLEX,0,fmpi%mpi_comm,ierr)
      76             :    END IF
      77             : 
      78           0 :    IF (present(nococonv)) THEN
      79           0 :      CALL MPI_BCAST(nococonv%alph, size(nococonv%alph), MPI_DOUBLE_PRECISION, 0, fmpi%mpi_comm, ierr)
      80           0 :      CALL MPI_BCAST(nococonv%beta, size(nococonv%beta), MPI_DOUBLE_PRECISION, 0, fmpi%mpi_comm, ierr)
      81           0 :      CALL MPI_BCAST(nococonv%alphprev, size(nococonv%alph), MPI_DOUBLE_PRECISION, 0, fmpi%mpi_comm, ierr)
      82           0 :      CALL MPI_BCAST(nococonv%betaprev, size(nococonv%beta), MPI_DOUBLE_PRECISION, 0, fmpi%mpi_comm, ierr)
      83             :    ENDIF
      84             : #endif
      85             : 
      86           0 :    END SUBROUTINE mpi_bc_potden
      87             : END MODULE m_mpi_bc_potden

Generated by: LCOV version 1.14