Commit b0cbfe32 authored by Daniel Wortmann's avatar Daniel Wortmann

Merge branch 'develop' of iffgit.fz-juelich.de:fleur/fleur into develop

Conflicts:
	juDFT/time.F90
parents 56779a71 e3a0aa19
......@@ -66,32 +66,32 @@ pages:
- triggers
- web
#build-pgi:
# image: iffregistry.fz-juelich.de/fleur/fleur:pgi
# stage: build-pgi
# cache:
# paths:
# - build.debug
# script:
# - cd /builds/fleur/fleur; ./configure.sh -d AUTO ; cd build.debug; make
# only:
# - schedules
# - triggers
# - web
build-pgi:
image: iffregistry.fz-juelich.de/fleur/fleur:pgi
stage: build-pgi
cache:
paths:
- build.pgi
script:
- cd /builds/fleur/fleur; ./configure.sh -l pgi ; cd build.pgi; make
only:
- schedules
- triggers
- web
#test-pgi:
# image: iffregistry.fz-juelich.de/fleur/fleur:pgi
# stage: test-pgi
# cache:
# paths:
# - build.debug
# script:
# - cd /builds/fleur/fleur/build.debug;ctest
# only:
# - schedules
# - web
# - triggers
test-pgi:
image: iffregistry.fz-juelich.de/fleur/fleur:pgi
stage: test-pgi
cache:
paths:
- build.pgi
script:
- cd /builds/fleur/fleur/build.pgi;ctest
only:
- schedules
- web
- triggers
build-intel-static:
......
......@@ -25,4 +25,11 @@
FLEUR_INCLUDEDIR="$FLEUR_INCLUDEDIR $ELPA_MODULES"
fi
#MAGMA
if [ $MAGMADIR ]
then
CLI_USE_MAGMA=1
FLEUR_LIBDIR="$FLEUR_LIBDIR $MAGMALIB $MKLROOT/lib/intel64"
FLEUR_INCLUDEDIR="$FLEUR_INCLUDEDIR $MAGMADIR/include $MKLROOT/include"
fi
......@@ -27,7 +27,11 @@ CONTAINS
TYPE(t_atoms),INTENT(IN) :: atoms
TYPE(t_lapw),INTENT(IN) :: lapw
TYPE(t_tlmplm),INTENT(IN) :: td
REAL,INTENT(IN) :: fj(:,0:,:,:),gj(:,0:,:,:)
#if defined CPP_GPU
REAL,MANAGED,INTENT(IN) :: fj(:,:,:,:),gj(:,:,:,:)
#else
REAL,INTENT(IN) :: fj(:,0:,:,:),gj(:,0:,:,:)
#endif
! .. Scalar Arguments ..
INTEGER, INTENT (IN) :: n
COMPLEX :: chi_one,chi(2,2)
......
hdf5_version=1.10.3
if [ ! -r CMake-hdf5-${hdf5_version} ]
if [ ! -r CMake-hdf5-${hdf5_version}_${FC} ]
then
#Get the file with the code
curl -LO "https://github.com/MRedies/hdf5-mirror/raw/master/CMake-hdf5-${hdf5_version}.tar.gz"
......@@ -10,7 +10,8 @@ then
fi
tar xzf CMake-hdf5-${hdf5_version}.tar.gz
cd CMake-hdf5-${hdf5_version}
mv CMake-hdf5-${hdf5_version} CMake-hdf5-${hdf5_version}_${FC}
cd CMake-hdf5-${hdf5_version}_${FC}
#copy options.cmake to adjust settings for compilation
cp ../HDF5options.cmake .
#Compile&test (This will take a while)
......@@ -20,7 +21,7 @@ then
make install
cd ..
else
cd CMake-hdf5-${hdf5_version}
cd CMake-hdf5-${hdf5_version}_${FC}
fi
#Store the installation location
FLEUR_LIBDIR="$PWD/HDF_Group/HDF5/${hdf5_version}/lib $FLEUR_LIBDIR"
......
libxc_version=4.2.1
if [ ! -d libxc-${libxc_version} ]
if [ ! -d libxc-${libxc_version}_${FC} ]
then
#Get the file with the code
curl --connect-timeout 10 -LO "https://github.com/MRedies/libxc-mirror/raw/master/libxc-${libxc_version}.tar.gz"
......@@ -10,13 +10,14 @@ then
fi
tar xzf libxc-${libxc_version}.tar.gz
cd libxc-${libxc_version}
mv libxc-${libxc_version} libxc-${libxc_version}_${FC}
cd libxc-${libxc_version}_${FC}
#Compile&test (This will take a while)
./configure --prefix=$PWD/INSTALL_DIR
make -j
make install
else
cd libxc-${libxc_version}
cd libxc-${libxc_version}_${FC}
fi
#Store the installation location
FLEUR_LIBDIR="$PWD/INSTALL_DIR/lib $FLEUR_LIBDIR"
......
......@@ -23,17 +23,28 @@ MODULE m_types_mae
END TYPE t_forcetheo_mae
CONTAINS
SUBROUTINE mae_init(this,theta_s,phi_s)
SUBROUTINE mae_init(this,cell,sym,theta_s,phi_s)
USE m_calculator
USE m_socsym
USE m_types
IMPLICIT NONE
CLASS(t_forcetheo_mae),INTENT(INOUT):: this
TYPE(t_cell),INTENT(IN) :: cell
TYPE(t_sym),INTENT(IN) :: sym
CHARACTER(len=*),INTENT(INOUT) :: theta_s,phi_s
INTEGER::n
LOGICAL::error(sym%nop)
CALL evaluateList(this%theta,theta_s)
CALL evaluateList(this%phi,phi_s)
IF (SIZE(this%phi).NE.SIZE(this%theta)) CALL &
judft_error("Lists for theta/phi must have the same length in MAE force theorem calculations")
DO n=1,SIZE(this%phi)
CALL soc_sym(sym%nop,sym%mrot,this%theta(n),this%phi(n),cell%amat,error)
IF (ANY(error)) CALL judft_error("Force theory choice of SOC-SQA breaks symmetry")
END DO
ALLOCATE(this%evsum(SIZE(this%phi)))
this%evsum=0
END SUBROUTINE mae_init
......
......@@ -1789,7 +1789,7 @@ input%preconditioning_param = evaluateFirstOnly(xmlGetAttributeValue('/fleurInpu
ALLOCATE(t_forcetheo_mae::forcetheo)
SELECT TYPE(forcetheo)
TYPE IS(t_forcetheo_mae) !this is ok, we just allocated the type...
CALL forcetheo%init(lString,nString)
CALL forcetheo%init(cell,sym,lString,nString)
END SELECT
ENDIF
!spin-spiral dispersion
......
......@@ -133,6 +133,13 @@ SUBROUTINE writeBasis(input,noco,kpts,atoms,sym,cell,enpara,vTot,vCoul,vx,mpi,DI
ALLOCATE (flo(atoms%jmtd,2,atoms%nlod))
!-------------------------write potential--------------------
IF(input%gw==1) THEN
CALL writePotential(stars,vacuum,atoms,cell,sphhar,input,sym,oneD,POT_ARCHIVE_TYPE_TOT_const,vTot%iter,vTot,vTot%pw_w)
CALL writePotential(stars,vacuum,atoms,cell,sphhar,input,sym,oneD,POT_ARCHIVE_TYPE_COUL_const,vCoul%iter,vCoul,vCoul%pw_w)
CALL writePotential(stars,vacuum,atoms,cell,sphhar,input,sym,oneD,POT_ARCHIVE_TYPE_X_const,vx%iter,vx,vx%pw_w)
END IF
l_real=sym%invs.AND..NOT.noco%l_noco
! check if z-reflection trick can be used
......@@ -434,6 +441,7 @@ SUBROUTINE writeBasis(input,noco,kpts,atoms,sym,cell,enpara,vTot,vCoul,vx,mpi,DI
version = 1
filename = 'eig_gw.hdf'
IF(input%gw==2) THEN
INQUIRE(FILE=TRIM(ADJUSTL(filename)),EXIST=l_exist)
IF(l_exist) THEN
......@@ -630,10 +638,6 @@ SUBROUTINE writeBasis(input,noco,kpts,atoms,sym,cell,enpara,vTot,vCoul,vx,mpi,DI
CALL h5gclose_f(jspGroupID, hdfError)
END DO
CALL h5fclose_f(fileID, hdfError)
!-------------------------write potential--------------------
CALL writePotential(stars,vacuum,atoms,cell,sphhar,input,sym,oneD,POT_ARCHIVE_TYPE_TOT_const,vTot%iter,vTot,vTot%pw_w)
CALL writePotential(stars,vacuum,atoms,cell,sphhar,input,sym,oneD,POT_ARCHIVE_TYPE_COUL_const,vCoul%iter,vCoul,vCoul%pw_w)
CALL writePotential(stars,vacuum,atoms,cell,sphhar,input,sym,oneD,POT_ARCHIVE_TYPE_X_const,vx%iter,vx,vx%pw_w)
END IF
......
......@@ -16,7 +16,7 @@ MODULE m_juDFT_time
IMPLICIT NONE
! List of different timers
PRIVATE
INTEGER, PARAMETER :: max_subtimer = 5 ! blocks of subtimers are allocated in this size
INTEGER, PARAMETER :: max_subtimer = 5 ! blocks of subtimers are allocated in this size
REAL :: min_time = 0.02 ! minimal time to display in output (part of total)
LOGICAL :: l_debug !write out each start& stop of timer
REAL :: debugtimestart = -1.0
......@@ -350,8 +350,7 @@ CONTAINS
USE m_judft_usage
IMPLICIT NONE
LOGICAL, INTENT(IN), OPTIONAL::stdout
INTEGER :: fn, irank = 0
LOGICAL :: l_out
INTEGER :: irank = 0
CHARACTER(len=:), allocatable :: json_str
#ifdef CPP_MPI
INCLUDE "mpif.h"
......@@ -361,47 +360,31 @@ CONTAINS
if (l_mpi) CALL MPI_COMM_RANK(MPI_COMM_WORLD, irank, err)
#endif
IF (.NOT. ASSOCIATED(globaltimer)) RETURN !write nothing if no timing recorded
l_out = .FALSE.
IF (PRESENT(stdout)) l_out = stdout
IF (l_out) THEN
fn = 6
ELSE
IF (irank > 0) RETURN
fn = 2
OPEN (2, FILE='juDFT_times', STATUS="replace")
ENDIF
globaltimer%time = cputime() - globaltimer%starttime
globaltimer%starttime = cputime()
WRITE (fn, "('Total execution time: ',i0,'sec')") INT(globaltimer%time)
CALL add_usage_data("Runtime", globaltimer%time)
CALL priv_writetimes_longest(globaltimer, fid=fn)
WRITE (fn, "('Total execution time: ',i0,'sec, minimal timing printed:',i0,'sec')") &
INT(globaltimer%time), INT(min_time*globaltimer%time)
IF (irank == 0) THEN
globaltimer%time = cputime() - globaltimer%starttime
globaltimer%starttime = cputime()
WRITE (6, "(//,'Total execution time: ',i0,'sec')") INT(globaltimer%time)
CALL add_usage_data("Runtime", globaltimer%time)
CALL priv_writetimes_longest(globaltimer, fid=6)
WRITE (6, "('Total execution time: ',i0,'sec, minimal timing printed:',i0,'sec')") &
INT(globaltimer%time), INT(min_time*globaltimer%time)
CALL priv_writetimes(globaltimer, 1, 6)
#ifdef CPP_MPI
IF (l_mpi) THEN
CALL MPI_COMM_SIZE(MPI_COMM_WORLD, isize, err)
WRITE (fn, *) "Program used ", isize, " PE"
ENDIF
#endif
CALL priv_writetimes(globaltimer, 1, fn)
WRITE (fn, *)
WRITE (fn, *) "-------------------------------------------------"
WRITE (fn, *)
WRITE (fn, *) "Total timings:"
min_time = 0.0
CALL priv_writetimes(globaltimer, 1, fn)
FLUSH(fn)
IF (.NOT. l_out) CLOSE (2)
json_str = ""
call priv_genjson(globaltimer, 1, json_str)
open(32, file="juDFT_times.json")
write (32,"(A)") json_str
close(32)
json_str = ""
call priv_genjson(globaltimer, 1, json_str)
open(32, file="juDFT_times.json")
write (32,"(A)") json_str
close(32)
ENDIF
END SUBROUTINE writetimes
! writes all times to out.xml file
......
......@@ -138,7 +138,7 @@ CONTAINS
#else
!Send using curl
call execute_command_line(&
'curl -m 5 -X POST -H "Content-Type: application/json" -d @usage.json https://docker.iff.kfa-juelich.de/fleur-usage-stats/',&
'curl --output /dev/null -m 5 -X POST -H "Content-Type: application/json" -d @usage.json https://docker.iff.kfa-juelich.de/fleur-usage-stats/',&
exitstat=ierr(1), cmdstat=ierr(2))
if(all(ierr == 0)) then
write (*,*) "Usage data send using curl: usage.json"
......
......@@ -66,9 +66,10 @@ CONTAINS
#ifndef CPP_OLDINTEL
ALLOCATE(vTot%pw_w,mold=vTot%pw)
#else
ALLOCATE( vTot%pw_w(size(vTot%pw,1),size(vTot%pw,2)) )
ALLOCATE( vTot%pw_w(size(vTot%pw,1),size(vTot%pw,2)))
#endif
ALLOCATE(vCoul%pw_w(SIZE(den%pw,1),1))
ALLOCATE(vCoul%pw_w(SIZE(vCoul%pw,1),size(vCoul%pw,2)))
vCoul%pw_w = CMPLX(0.0,0.0)
CALL workDen%init(stars,atoms,sphhar,vacuum,noco,input%jspins,0)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment